Skip to content

v2.3.0 - GraalVM and Scala 3 Support

Compare
Choose a tag to compare
@ivantopo ivantopo released this 21 Oct 10:28
· 176 commits to master since this release

GraalVM

This is the first Kamon release that can be used in applications that target native images with GraalVM 🎉

There was a non-trivial amount of work under the hood to ensure we are not starting any threads on static initializers, and ensuring that everything that requires a thread is delayed until Kamon.init(...) is called, and it works! All the core APIs, the Status Page, and all the reporters are now available to native image users.

The main driver for this change was bringing support for Quarkus, and that's where we are going next! Creating a quarkus extension for Kamon is going to be a bit more challenging than we expected, particularly because we can't use automatic instrumentation in there. Also, Quarkus encourages using SmallRye Context Propagation, but Kamon has its own Context Propagation mechanism in place. It will be a fun ride :).. Join our Discord server if you want to participate on that adventure.

Scala 3

Starting on this release, we are also publishing the Core, Status Page, and Reporter artifacts for Scala 3! We still need to put some work on publishing all of our instrumentation for Scala 3. If you want to give a hand, check out #1064 as a starting point.


New Features

  • Support for Scala 3 was brought up by @dpsoft, building on the work started by @bplommer. Thanks a lot for this contribution!
  • GraalVM Native Image support was contributed by @ivantopo via #1055

Fixes

  • cassandra: Guard against unknown query formats in the Cassandra client instrumentation. Reported as #1058 and fixed by @ivantopo via c5ac1ea.
  • akka-http: Handle sub-route rejections on the path matchers instrumentation. Thanks very much to @seglo for providing a reproducible for the issue via #1063. Fixed by @ivantopo on that same #1063 PR.

Deprecation Removals

  • We completely removed the Scala Future Chaining instrumentation that was deprecated in v2.1.21. This included a few deprecated functions for creating Spans with the old instrumentation, and a tiny bit of instrumentation for Akka HTTP's FastFuture that is no longer necessary. Those instrumentation pieces were already disabled since v2.2.0, and shouldn't be missed at all after the upgrade. Full diff here: 39191f8.