0.8 Release

JDK 21+ support, configuration improvements and more
release

Almost two seasons ago, Penna the 0.7 branch began and now, 289 commits later, a new and even more exciting chapter begins. Version 0.8 is soon released with exciting features and a great deal of improvement!

A breath of fresh JDK

Following the recent release of JDK 22, Penna 0.8 is bumping its JDK requirement to 21. Why? Well, we should stick to LTS versions as our requirement baselines and we shouldn’t wait long with old versions. Furthermore, so many fantastic features were released since JDK 17 that it doesn’t make sense to refrain from using them, right?

With this change, many methods are benefiting from the enhanced switch pattern-matching and the new yaml configuration module uses Virtual Threads for the file watcher.

Improved MDC implementation

Continuing on the MDC work, a new and more flexible structure is in place. It is very well performing, but even more importantly, it fixes a few bugs that have shown up in the previous implementation.

Configuration restructuring

Up until this version, the configuration logic would follow the principle of a providing an interface with a dynamically discoverable concrete implementation which would be bound to the internal logger storage.

This had a few flaws, caused dummy implementations to exist and provided very little to no benefit.

This new version improves significantly the structure by splitting the responsibilities between the configuration manager and the configuration providers.

Consider subscribing to my polar page where I’ll post an in-depth explanation of this refactoring if you’re interested.

Development mode is gone

The short-lived module, penna-dev is removed as of this version. It had two potential benefits, which were providing more readable logs in development, but that is much better handled by tools like fblog. Also, it allowed for tests to change configuration during runtime, which is now much better handled by the new configuration code.

Final words

It has been really a fantastic journey and I can only thank the experience so far. Penna is still a very small and unknown project, sure, but it brings me so much joy while still pushing me to be a better developer and maintainer. I can only hope one day this project will bring others as much benefit, either through a good developer experience, through its performance characteristics or through the lightweight nature of this project. Open source software and more broadly, the open wide web filled with knowledge has allowed me to have a career, sustain my family and live a relatively good life. I wish Penna helps me repay all that.

Back to Penna, I don’t know what will come of exciting during this 0.8.x branch. Hopefully we’ll (finally) land the native marker support. If you have any suggestions or thoughts, don’t refrain from opening an issue or starting a discussion. I’d really appreciate your feedback!

sponsor
Penna is independently developed. Consider supporting it