• v1-alpha4 6ee1dc8e12

    v1-alpha4
    All checks were successful
    build-and-test / test (push) Successful in 1m58s
    build-and-test / build (push) Successful in 2m13s
    build-and-test / generate-javadoc (push) Successful in 2m19s
    Pre-release

    JeremyStarTM 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 to windowing 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 access
    • EngineState.EARLY_STARTUP
    • InitLogger class, which is responsible for providing a simple logging infrastructure when the normal one isn't available
    • PrintStreamService class, which provides PrintStreams for printing log messages
    • Java version check
    • safety shutdown hook, which ensures the engine is shut down properly even when Runtime#exit or System#exit is called
    • the Logger now supports printing newlines nicely
    • ListFormatter's functionality has finally been implemented. It only took three months
    • EngineInformation#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 to Miscellaneous
    • @SuppressWarnings("unused") from almost everything (why was this even in the source from day one?!)
    • the UnexpectedThrowableException has been yeeted. Why not use Exception or Throwable instead, it works just as fine
    • removed the OpenGL and Vulkan subsystems as the graphics subsystem is now the windowing 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 separate LoggingThread 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 the windowing 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), though DependencyResolver#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
  • v1-alpha3 949655b020

    v1-alpha3 Pre-release

    JeremyStarTM 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/or git.properties file(s) as Gradle (and likely other build systems) overwrite a dependencies' file when it collides with a file from the project.
    Downloads
  • v1-alpha2 34f61211d3

    v1-alpha2 Pre-release

    JeremyStarTM 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 Events 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 in Miscellaneous (a0a89d2f3c)
    • update-deps documentation makefile task
    • %stacktrace_all crashhandler placeholder
    • very friendly crash message for users and developers (6c0244053b)
    • escape \ support for ShortcodeParserSkeleton (b9d4196b8b)
    • Math class + moved Miscellaneous#padNumbers to new class (e787680e8c)
    • missing LogOrigin placeholder to logger's temporary placeholders (5187b37e53)
    • ShutdownHandlers, 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 in ShortcodeParserSkeleton (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 with v (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 into ClasspathHelper 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 Placeholders with ones which can actually take in arguments (ccc6c31cc9)
    • require throwable in UnexpectedThrowableException 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 uses StringBuilder instead of String 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 and CodePart, now allowing for more customization & better code quality (f383261ed9)
    • annotation order (f383261ed9, a261d7914e)
    • replaced Engine#shuttingDown with solid EngineState/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
  • v1-alpha1 5998f55786

    v1-alpha1 Pre-release

    JeremyStarTM 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 and COPYING)
    • 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 and LinkedHashMap
    • 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
  • v1-alpha0 51e0f84c3f

    v1-alpha0 Pre-release

    JeremyStarTM 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