-
v1-alpha8
released this
2024-11-09 15:53:29 +01:00 | 6 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be wyverns! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
This release overhauled major parts of the engine with faster, better and more organized replacements. Some things may be broken, especially in regard to the new
FileAccess
class. Most stuff should work fine however.✨ Highlights ✨
FileAccess
class for much simpler file and directory access- logging infrastructure was completely reworked (see below)
- initialization process got fully rewritten and is now more organized
Added
- custom rendering code can now be injected (
6f8d190d6f
,ffcf4604a4
) FileAccess
class (ed1c8b9d3e
,2730aa0f61
)%engine_version_codename%
placeholder (c533a06148
)logFeatures
configuration setting (7c0b7e1e90
)
Removed
initialForceDisableClasspathScanning
,loggerEnableNewlineSupport
,loggerImmediateShutdown
andloggerTemplate
configuration settings (c533a06148
,7c0b7e1e90
,dde8972feb
)- all traces of the old
ShortcodeConverter
name (7c0b7e1e90
,7cf9a4f418
)
Changed
- Windows created using GLFW are now initialized without an API (
c2028cfa33
) - the GLFW subsystem is no longer strongly encapsulated (
6f8d190d6f
) Window#render
is no longer invoked after window creation (e42ac8a08e
)- all exceptions can now be theoretically thrown by
Engine#<init>
(d3a01c2c66
) - rewrote the entire logging infrastructure (
7c0b7e1e90
,5021f2cc35
,c533a06148
)- logging is now significantly faster
- no longer relies on the
PlaceholderEngine
- more modular internally
- much more organized code
- able to log even during early engine initialization
- much more detailed crash reporting
- "normal" and asynchronous logging classes are now separated
- passing
issuerClass
,issuerOrigin
andissuerMetadata
is no longer required (data is now pulled from the stack)
- rewrote the engine initialization process (does not require any code changes,
c533a06148
) JvmInformation#getArguments
now returns anImmutableArrayList
- moved
InternalShutdownEngineEvent
from thebase.internal.event
to thebase.event
package (ea93d12151
) - updated Docusaurus from 3.5.2 to 3.6.0 (
a6a41f5cec
) - overhauled parts of the documentation (
6425442c25
) slf4j-compat
'sCompatibilityLogger
passes the original class now (7c0b7e1e90
)- all configuration settings prefixed with
logger
are now prefixed withlog
(7c0b7e1e90
) - updated all dependencies (
d12206b925
)
Fixed
- API documentation issues, as usual
- warning log call breaking the
javadocAll
task (d1d8e305ed
)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha7
released this
2024-10-16 13:34:50 +02:00 | 29 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
Welcome to this small bugfix release, released just one day after
v1-alpha6
.✨ Highlights ✨
sosengine.windowing.debugFrames
is now applied correctly (inversed boolean flag)GlfwWindow#setIcons
's logging is now a bit less annoying
Added
nothing
Removed
nothing
Changed
GlfwWindow#setIcons
's logging is now a bit less annoying (6d7701a7c3
)
Fixed
sosengine.windowing.debugFrames
applied incorrectly (f6c99b66e8
)Window#icons
type (f6c99b66e8
,665ea05041
)- corrected package structure inside GLFW subsystem (
294ec217ea
)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha6
released this
2024-10-15 13:59:15 +02:00 | 36 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
Three weeks! The engine has been refactored a bit and is generally a bit safer and better around the edges now. Be prepared to do some search-and-replace across your codebase.
✨ Highlights ✨
- rename package
de.staropensource.sosengine
intode.staropensource.engine
recursively notification
subsystem
Added
Vec4i
,Vec4f
andVec4d
classes (f81d27060a
)Color
class (26294b3fa0
,46b52173fd
)- experimental support for adding icons to a window (
1e6fa79716
) notification
subsystem, for sending and receiving notifications inside the application (bed5811b70
,cdde093b31
)- proper LWJGL initialization failure handling (
2cf769b599
)
Removed
- access to
de.staropensource.engine.windowing.glfw.implementable
package (9922c672f6
) - unused methods inside
GlfwWindow
class (3bd6a26e59
) ShortcodeParser
debug logging andsosengine.base.debugShortcodeConverter
setting (9d19dd8b57
)
Changed
- renamed package
de.staropensource.sosengine
intode.staropensource.engine
recursively (02aa744098
) - mark all arrays as
@NotNull
(dd4ebcd88a
,25a944baf4
) - renamed internal
LogLevel
class intoLogLevelEvent
class (5e829771a7
) final
ize classes and methods- update Gradle wrapper (
a77794b105
) - rename
errorShortcodeConverter
setting intoerrorShortcodeParser
(0d5f19ee31
,8456e92a52
) - lower logging level of delta time and frame count messages (
10e3b26ac0
) - change type of
Window#windows
variable from@NotNull Set<@NotNull Window>
to@NotNull List<@NotNull Window>
(b3ef38b6be
) - reorganized
build.gradle
build scripts (6cd38377b2
,8a52e991fd
,f4019455cc
) README.md
files (2d558f8482
)- documentation (
281e7db708
) - maven repository URL is now
https://mvn.staropensource.de/engine
instead ofhttps://mvn.staropensource.de/sosengine
(643bda6c28
) - many classes are now initialized using static
initialize
methods instead of their constructors
Fixed
- Javadoc, as usual
TestBase
engine initialization (a0fdfd2722
)- exception handling during engine initialization phase (
2f0bc19e7c
) - engine initialization errors (
2f0bc19e7c
) glfw
subsystem not respecting aWindow
'sisRendering
flag (7a7da3729c
)windowing
subsystem not respecting thesosengine.windowing.debugFrames
setting (10e3b26ac0
)Window.Builder#setMonitor
method being private (175b0248d9
)- engine initializing itself during subsystem initialization (
cdd68833cb
)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- rename package
-
v1-alpha5
released this
2024-09-22 14:05:17 +02:00 | 72 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
This is a small-ish but breaking release.
✨ Highlights ✨
- disabling reflective classpath scanning
- crash fixes
Added
- empty
de.staropensource.sosengine.dynamic
package for various purposes (45f02bdd5a
) - static
Tristate#toTristate
method (a9cfc8c810
) - support for disabling reflective classpath scanning (
0fbfe8f4e3
) - support for manually declaring events (
0fbfe8f4e3
) - support for manually declaring subsystems to load (
0fbfe8f4e3
) - initialization error warning about Substrate VM (GraalVM native-image) incompatibility (
a00fdea6f5
,a9125c9bea
,b675a5ffb2
, it's insane that it took three commits to implement a silly message) -Xlog:gc
to JVM arguments for logging garbage collection (only affectstestapp
,b26517958a
)
Removed
- code duplication in configuration classes (
54b7b9a695
) EventHelper#logCall
, inlined it intoEventHelper#invokeAnnotatedMethods
(c473c27298
)
Changed
- all classes inside the
slf4j-compat
subsystem are nowfinal
(f96584ccd9
) Tristate#toBoolean
method is no longer static (5766072fd7
)- dependencies not directly required by
testapp
are now marked asruntimeOnly
instead ofimplementation
(a3ea583e41
) - shortened width of API documentation comments in
EngineConfiguration
(0fed87328a
) - renamed configuration setting
sosengine.base.optimizeSubsystemInitialization
intososengine.base.initialPerformSubsystemInitialization
(3d3f21e217
)
Fixed
- the usual API documentation and code comments stuff
- API documentation for
testing
looking weird due to the missing Javadoc filestheme.css
andoverview.html
(dffd24d8bb
) - copyright header regex (IntelliJ IDEA,
a870cbe11b
) - crash in crash reporter (
b49ff9a569
) - fixed exception class
InvalidMethodSignature
not being suffixed withException
(class is now namedInvalidMethodSignatureException
,c14e34cd81
) - crashes not shutting down the engine (
ebbc1778ae
)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha4
released this
2024-09-05 01:53:14 +02:00 | 97 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
.... what? It has been two months again? Wow, time flies fast. Anyway, here's the fifth alpha release!
✨ Highlights ✨
- internal engine access
- rewritten
DependencyResolver#resolve
method, which now works properly - no busy-waiting anymore! all threads now call
Thread#onSpinWait
- renamed the
graphics
subsystem towindowing
including GLFW, removed OpenGL and Vulkan APIs
Added
- cool Forgejo stuff: Issue templates and working CI/CD
- option which now fails javadoc generation when a warning is issued
EngineInternals
class, which allows access to internal parts of the engine with the ability to restrict accessEngineState.EARLY_STARTUP
InitLogger
class, which is responsible for providing a simple logging infrastructure when the normal one isn't availablePrintStreamService
class, which providesPrintStream
s for printing log messages- Java version check
- safety shutdown hook, which ensures the engine is shut down properly even when
Runtime#exit
orSystem#exit
is called - the
Logger
now supports printing newlines nicely ListFormatter
's functionality has finally been implemented. It only took three monthsEngineInformation#getJavaSource
and#getJavaTarget
methods, which provide the java version of the source code and what version it was compiled against respectively- ability to control test execution. See the README
Removed
StackTraceParser
. It's functionality has been migrated toMiscellaneous
@SuppressWarnings("unused")
from almost everything (why was this even in the source from day one?!)- the
UnexpectedThrowableException
has been yeeted. Why not useException
orThrowable
instead, it works just as fine - removed the
OpenGL
andVulkan
subsystems as thegraphics
subsystem is now thewindowing
subsystem - unused
CompatibilityLogger#log
method
Changed
- copyright notice in source files
- removed classpath exception
- packages were moved (for example,
sosengine.classes
->sosengine.implementable
) - renamed logger implementations to logging adapters
- moved logging thread code out of the
Logger
class into the separateLoggingThread
class - testing infrastructure into separate gradle subproject
- testing infrastructure can now be downloaded via maven and used by projects using the engine
- moved shutdown handlers to new
EngineInternals
class - renamed some classes to more meaningful names
- the
UnmetDependenciesException
class now uses@NotNull List<@NotNull String>
instead of@NotNull Map<@NotNull DependencyVector, @NotNull String
for storing unmet dependency errors - all threads no longer busy wait, but instead call
Thread#onSpinWait
, which allows the CPU to do other stuff while our thread is sleeping - the logging thread can now be restarted
- rewrote how the
Logger
replaces placeholders - tests now work a bit differently, see
TestBase
before the testing infrastructure move - updated the "Javadoc" and "Welcome" documentation pages
- renamed the
graphics
subsystem to thewindowing
subsystem including GLFW
Fixed
- the ansi shortcode converter no longer toggles attributes
DependencyResolver
jank. It now works and resolves dependencies properly (which was a nightmare to implement), thoughDependencyResolver#getOrder
still does not work (will likely work in the next one or two alpha releases)- multiple shutdowns running in parallel. A simple check was enough for that
- inaccurate
VersioningSystem#compare
API documentation - of course, API documentation. Every release, period
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha3 Pre-release
released this
2024-08-03 17:17:50 +02:00 | 193 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
This release just fixed an engine-breaking bug which I was unable to catch ever since the first commit. It has been fixed now. If you (are weird and) want to use older engine versions and it fails to compile, perform the same changes as done in this release.
✨ Highlights ✨
- fixed one engine-breaking bug
Added
nothing
Removed
nothing
Changed
nothing
Fixed
- engine crashes when the application chooses to bundle it's own
gradle.properties
and/orgit.properties
file(s) as Gradle (and likely other build systems) overwrite a dependencies' file when it collides with a file from the project.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha2 Pre-release
released this
2024-08-01 03:18:15 +02:00 | 195 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.Preface
After about three weeks of development, the next engine release is ready to be published!
In this release, major parts of the engine have been overhauled. From code and Javadoc comments, code itself, to classes and even whole packages. Almost everything has been touched.
Have fun developing 🌟
✨ Highlights ✨
- complete logging infrastructure revamp
- extended Graphics API (still highly experimental though)
Added
- basic reflection support (
97a0218bf6
) - configuration setting for disabling automatic subsystem initialization (
85bff3b14d
) - proper color validation inside
ShortcodeParserSkeleton
, independent of Jansi (31b1a2d199
) SubsystemClass#getName()
(bffe68c015
)- subsystem initialization time measurement (
bffe68c015
) run/
directories to.gitignore
(ca0274bbb1
)v
character to%engine_version%
placeholder (b17d354a9b
)- Javadoc and source JAR file upload to Maven (
10abe1d3f0
) ParserException
(0c626cc995
)- missing
package-info.java
files (bd6cc73a94
,a3849f1813
) ImmutableHashSet
(85e6cd69de
)Miscellaneous#onMainThread
method (bf7a450be5
)- GLFW subsystem, for Graphics APIs using GLFW
toString
method override for all vector data types for a nicer display (55091d3cd1
,a07dc6db84
)clone
method to all vector data types (2f963e86ef
)- a way for
Event
s to pass arguments to@EventListeners
without having to implement custom code (simply by using the already existing way) (2469e124bd
) Tristate#toBoolean
method (67909e9cc3
)- boolean,
Tristate
and integer conversion methods inMiscellaneous
(a0a89d2f3c
) update-deps
documentation makefile task%stacktrace_all
crashhandler placeholder- very friendly crash message for users and developers (
6c0244053b
) - escape
\
support forShortcodeParserSkeleton
(b9d4196b8b
) Math
class + movedMiscellaneous#padNumbers
to new class (e787680e8c
)- missing
LogOrigin
placeholder to logger's temporary placeholders (5187b37e53
) ShutdownHandler
s, now allowing for shutdown sequence customization (f0c19010d9
)- more documentation for
CrashHandler#processCrashContent
, which was missing for a long time due to lazyness (1a56f42287
)
Removed
- jOOR dependency (
5697522641
) <negative>
tag inShortcodeParserSkeleton
(31b1a2d199
)- Gradle plugin version information (
EngineConfiguration
and placeholders) (38c5f0e5b9
) - Lombok and Jetbrains Annotations dependency version information (
EngineConfiguration
and placeholders) (3c09713867
) - nuked the Vulkan subsystem (00a3017c1ef47b8891334849df9eccea0d99314)
- unused or unnecessary dependencies in OpenGL and Vulkan subsystems
Changed
- all
@since
tags inside Javadoc comments are now prefixed withv
(e65c3e2662
) IncompatibleVersioningSystemException
is now optional (dd7bc714b9
)- many packages and classes have been renamed and/or moved
- visibility of certain fields inside
DependencyVector
(8470d37f37
) - renamed class
ReflectionScanningHelper
intoClasspathHelper
and made it non-internal (050befbb73
) - Javadoc comments of almost all modules and packages and of many classes, methods and fields
- crash report content (
4752dd6918
,5cb8350a41
,611d4b823e
) - replaced ridgid
Placeholder
s with ones which can actually take in arguments (ccc6c31cc9
) - require
throwable
inUnexpectedThrowableException
to be@NotNull
instead of@Nullable
(3964512979
) - entire Graphics and OpenGL subsystems, we won't bother including every single change to these two subsystems here
- moved ANSI-related classes into separate ANSI subsystem (
9dc0f549d4
) - all platform threads will now be put into the engine's own thread group (
ef40c04877
) ShortcodeParserSkeleton#parse
now usesStringBuilder
instead ofString
internally, thus boosting performance (e5f7b0e580
)- V-Sync is now controlled globally instead of per-window (
4f9154f5fc
) - made some classes, fields and methods
final
(7f324090c1
) README.md
- documentation
- revamped entire logging infrastructure, removed
LogIssuer
andCodePart
, now allowing for more customization & better code quality (f383261ed9
) - annotation order (
f383261ed9
,a261d7914e
) - replaced
Engine#shuttingDown
with solidEngineState
/Engine#state
system (bd70b17236
)
Fixed
UnresolvedDependenciesException
(0c77f50609
)- Jansi build dependency (
0ce24d677f
) - typos
- log message order when debugging events (
f3acca7456
) - broken and half-working shutdown logic (
86e85356ba
) - some events not being cached on startup (
5909a948b5
) - unit tests (
cbf434ed45
) Logger#loggingThread
automatically starting up and shutting down when unused/needed (c984974252
)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha1 Pre-release
released this
2024-07-11 23:45:08 +02:00 | 321 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.✨ Highlights ✨
- automatic subsystem initialization
Added
- classpath exception to license (see
LICENSE
andCOPYING
) module-info.java
files (JPMS)- a custom Javadoc theme!
- unit tests
- automatic subsystem initialization
- dependency resolution (ordering is still experimental though)
- versioning systems (for comparing versions of works)
- more thread safety (
synchronized
) - engine git information (
EngineInformation
) - exceptions
- methods for getting memory and processor information (
JvmInformation
) - ability to crash the engine by not crashing it (maybe misleading, tl;dr you can now declare a throwable as handled and it will print the crash message but will not halt the application)
- more logger implementations (
de.staropensource.sosengine.base.logging.implementations
) Tristate
data type- immutable variants of
ArrayList
,LinkedList
,HashMap
andLinkedHashMap
- log message exclusion with rules (
LogRule
) - documentation
Removed
- removed
EngineInformation#getInstance
(class is now a utility class)
Changed
- many, many, many small things
- structure of packages
- API documentation (javadoc)
- made the logger asynchronous (configurable of course)
- the shortcode parser is now abstract
- mark stub
ListFormatter
as experimental
Fixed
- Javadoc generation issues (after
module-info.java
introduction)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v1-alpha0 Pre-release
released this
2024-06-15 22:58:24 +02:00 | 426 commits to develop since this release⚠️ This is an experimental release. Stuff may break unexpectedly or contain bugs. Here be dragons! ⚠️
Breaking changes are marked in bold, important changes are marked in italic.✨ Highlights ✨
Everything.
Added
- core engine code
- SLF4J compatibility subsystem
- WIP
graphics
subsystem - WIP OpenGL Graphics API subsystem
- Stub Vulkan Graphics API subsystem
Removed
nothing
Changed
nothing
Fixed
nothing
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads