0.9 Release

Native markers, Y2k38 protection & tidying
release

Version 0.9 is here, not too fancy, not too loud — just quiet and chill. A testament to Penna’s maturity, performance, and commitment to its values.

Penna native Marker factory

This - I think - was the last thing Penna needed to fully, officially, completely support slf4j. Not that it is truly needed. But, there’s some small benefit of controlling all the implementation as we can make sure not to skip any optimizations, nor to including a potentially insecure implementation. Also, because it is fun :)

So, as of 0.9, Penna ships with its own MarkerFactory implementation.

Y2k38 hardening

I wrote about it a while ago and it’s now included in this release. Penna was never broken here, but this version tightens things up — and gives us peace of mind for the year 2038 (and beyond).

Housekeeping

Of course some small under-the-hood tidying have happened, most notably, the never-really-used counter field was removed.

(0.9.1) sneaking - MDC Fix

Right after I published the version I noticed an interesting pattern in kotlin’s coroutines, which work by passing the MDC Context across the threads running the coroutine. This causes, eventually, the MDC to receive an empty context, which was then logging an empty MDC map. This is now fixed and no empty MDC is logged.

Final words

Penna is starting to feel mature and stable — which is fantastic… and maybe a little bittersweet.

The early days of exploration and discovery were a lot of fun. But now? Things mostly “just work.”

There’s still plenty of room to explore, of course — logging is a surprisingly deep rabbit hole — but as the recent release cadence suggests, I haven’t had much spare time to chase wild ideas.

That said, if you’re using Penna and feel like contributing, I’d love to have your help.

You can support the project (or me directly) at GitHub Sponsors. ❤️

sponsor
Penna is independently developed. Consider supporting it