• 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