sbt-native-image
Distribution
Our great sponsors
sbt-native-image | Distribution | |
---|---|---|
5 | 1 | |
245 | 255 | |
1.2% | 0.4% | |
3.4 | 7.9 | |
5 months ago | 8 months ago | |
Scala | ||
- | MIT License |
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.
Distribution
-
Scala.js AWS Lambda, using Scala 3
You can use https://github.com/ScalablyTyped/Distribution to generate types from AWS SDK for Typescript. Don't know how does it work with Scala 3, though.
What are some alternatives?
sbt-native-packager - sbt Native Packager
sn-bindgen - Scala 3 native binding generator + libclang facade
zio-microservice - ZIO-powered microservices via HTTP and other protocols.
aws-sdk-scalajs-facade - A complete set of Scala.js type facade for aws-sdk-js
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.
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
scala-3-lazy-reflective-access - Showcase of GraalVM native-image's configuration bloating up with Scala 3
dotty - The Scala 3 compiler, also known as Dotty.