sbt-native-image
scala-3-lazy-reflective-access
Our great sponsors
sbt-native-image | scala-3-lazy-reflective-access | |
---|---|---|
5 | 1 | |
245 | 0 | |
1.2% | - | |
3.4 | 1.7 | |
5 months ago | over 2 years ago | |
Scala | Scala | |
- | - |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
sbt-native-image
-
Scala.js AWS Lambda, using Scala 3
Take a look at sbt-native-image or sbt-native-packager for building the native image.
-
GraalVM native-image with Scala 3 reflection hell
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:
-
Is Scala and Play Framework dying?
Sbt plugin: https://github.com/scalameta/sbt-native-image
-
Native Image Compilation for A Purely Functional Example Application
IIRC, the sbt-native-image plugin can abstract that away, too: https://github.com/scalameta/sbt-native-image#nativeimagerunagent https://github.com/scalameta/sbt-native-image
-
SBT error when running package application: java.lang.RuntimeException: No main class detected.
Assembly, however, has some disadvantages so you may also want to look into other alternatives like sbt-native-packager. You may even want to produce a binary using sbt-native-image (which uses GraalVM under the hood) so your users do not need to install anything at all, not even a JRE.
scala-3-lazy-reflective-access
-
GraalVM native-image with Scala 3 reflection hell
Here is the sample code, based on the http4s g8 template: https://github.com/taig/scala-3-lazy-reflective-access
What are some alternatives?
sbt-native-packager - sbt Native Packager
zio-microservice - ZIO-powered microservices via HTTP and other protocols.
sbt-assembly - Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)
LogoRRR - A simple and straightforward log viewer that displays the events of interest in a clear and concise visual manner so that you can identify them faster.
aws-sdk-scalajs-facade - A complete set of Scala.js type facade for aws-sdk-js
Finatra - Fast, testable, Scala services built on TwitterServer and Finagle
feral - Feral cats are homeless, feral functions are serverless
tapir - Declarative, type-safe web endpoints library
dotty - The Scala 3 compiler, also known as Dotty.
text-draw - A text console drawing application with few simple commands
Distribution - The Javascript ecosystem for Scala.js!