• v1-alpha8 d12206b925

    v1-alpha8
    All checks were successful
    build-and-test / test (push) Successful in 1m26s
    build-and-test / generate-javadoc (push) Successful in 1m32s
    build-and-test / build (push) Successful in 1m34s
    Pre-release

    JeremyStarTM 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

    Removed

    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 and issuerMetadata 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 an ImmutableArrayList
    • moved InternalShutdownEngineEvent from the base.internal.event to the base.event package (ea93d12151)
    • updated Docusaurus from 3.5.2 to 3.6.0 (a6a41f5cec)
    • overhauled parts of the documentation (6425442c25)
    • slf4j-compat's CompatibilityLogger passes the original class now (7c0b7e1e90)
    • all configuration settings prefixed with logger are now prefixed with log (7c0b7e1e90)
    • updated all dependencies (d12206b925)

    Fixed

    • API documentation issues, as usual
    • warning log call breaking the javadocAll task (d1d8e305ed)
    Downloads
  • v1-alpha7 6d7701a7c3

    v1-alpha7
    All checks were successful
    build-and-test / generate-javadoc (push) Successful in 1m34s
    build-and-test / test (push) Successful in 1m33s
    build-and-test / build (push) Successful in 1m37s
    Pre-release

    JeremyStarTM 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

    Downloads
  • v1-alpha6 643bda6c28

    v1-alpha6
    All checks were successful
    build-and-test / test (push) Successful in 1m2s
    build-and-test / build (push) Successful in 1m8s
    build-and-test / generate-javadoc (push) Successful in 1m14s
    Pre-release

    JeremyStarTM 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 into de.staropensource.engine recursively
    • notification subsystem

    Added

    Removed

    • access to de.staropensource.engine.windowing.glfw.implementable package (9922c672f6)
    • unused methods inside GlfwWindow class (3bd6a26e59)
    • ShortcodeParser debug logging and sosengine.base.debugShortcodeConverter setting (9d19dd8b57)

    Changed

    • renamed package de.staropensource.sosengine into de.staropensource.engine recursively (02aa744098)
    • mark all arrays as @NotNull (dd4ebcd88a, 25a944baf4)
    • renamed internal LogLevel class into LogLevelEvent class (5e829771a7)
    • finalize classes and methods
    • update Gradle wrapper (a77794b105)
    • rename errorShortcodeConverter setting into errorShortcodeParser (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 of https://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 a Window's isRendering flag (7a7da3729c)
    • windowing subsystem not respecting the sosengine.windowing.debugFrames setting (10e3b26ac0)
    • Window.Builder#setMonitor method being private (175b0248d9)
    • engine initializing itself during subsystem initialization (cdd68833cb)
    Downloads
  • v1-alpha5 38d8deefa7

    v1-alpha5
    All checks were successful
    build-and-test / test (push) Successful in 1m30s
    build-and-test / build (push) Successful in 1m36s
    build-and-test / generate-javadoc (push) Successful in 1m35s
    Pre-release

    JeremyStarTM 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 affects testapp, b26517958a)

    Removed

    • code duplication in configuration classes (54b7b9a695)
    • EventHelper#logCall, inlined it into EventHelper#invokeAnnotatedMethods (c473c27298)

    Changed

    • all classes inside the slf4j-compat subsystem are now final (f96584ccd9)
    • Tristate#toBoolean method is no longer static (5766072fd7)
    • dependencies not directly required by testapp are now marked as runtimeOnly instead of implementation (a3ea583e41)
    • shortened width of API documentation comments in EngineConfiguration (0fed87328a)
    • renamed configuration setting sosengine.base.optimizeSubsystemInitialization into sosengine.base.initialPerformSubsystemInitialization (3d3f21e217)

    Fixed

    • the usual API documentation and code comments stuff
    • API documentation for testing looking weird due to the missing Javadoc files theme.css and overview.html (dffd24d8bb)
    • copyright header regex (IntelliJ IDEA, a870cbe11b)
    • crash in crash reporter (b49ff9a569)
    • fixed exception class InvalidMethodSignature not being suffixed with Exception (class is now named InvalidMethodSignatureException, c14e34cd81)
    • crashes not shutting down the engine (ebbc1778ae)
    Downloads
  • 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 | 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 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 | 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/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 | 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 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 | 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 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 | 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