Our great sponsors
-
The reason seems to be Scala 3's new encoding for lazy vals, where a reflective access to a variable called bitmap takes place. To demonstrate this, I took the http4s g8 template, set it up with Scala 3.1.0, added sbt native-image, started the nativeImageRunAgent and ran a single request against GET /joke. After stopping the server, the native-image run agent generated the reflective configs that are required for this path of execution. Comparing the generated Scala 2.13 with the Scala 3 configs, yields a bloated version for Scala 3 that contains these additional rules:
-
scala-3-lazy-reflective-access
Showcase of GraalVM native-image's configuration bloating up with Scala 3
Here is the sample code, based on the http4s g8 template: https://github.com/taig/scala-3-lazy-reflective-access
-
SonarLint
Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.
-
See https://github.com/lampepfl/dotty/issues/13985, maybe the graalvm reflection config format could be enriched to support wildcards if it doesn't already?