-
v1-alpha4
released this
2024-09-05 01:53:14 +02:00 | 9 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 | 105 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 | 107 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 | 233 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 | 338 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