-
> Clojurescript for frontend, Rust for portability
If Clojure and Rust work well for you, more power to you. But at least in theory, you could very well use just Scala for these purposes
Scala can compile to JS https://www.scala-js.org/ if you target frontend.
And if you want portability, you can compile a Scala program with GraalVM's native-image and statically link everything with musl libc https://www.graalvm.org/latest/reference-manual/native-image...
And if you want both frontend and portability everywhere, Scala will soon have a support for compiling to WASM (with WASI, etc) https://github.com/scala-wasm/scala-wasm/ (to be integrated into Scala.js after developed)
-
Sevalla
Deploy and host your apps and databases, now with $50 credit! Sevalla is the PaaS you have been looking for! Advanced deployment pipelines, usage-based pricing, preview apps, templates, human support by developers, and much more!
-
> Clojurescript for frontend, Rust for portability
If Clojure and Rust work well for you, more power to you. But at least in theory, you could very well use just Scala for these purposes
Scala can compile to JS https://www.scala-js.org/ if you target frontend.
And if you want portability, you can compile a Scala program with GraalVM's native-image and statically link everything with musl libc https://www.graalvm.org/latest/reference-manual/native-image...
And if you want both frontend and portability everywhere, Scala will soon have a support for compiling to WASM (with WASI, etc) https://github.com/scala-wasm/scala-wasm/ (to be integrated into Scala.js after developed)
-
-
- Highly concurrent, fiber-based apps using Scala and Ox (http://ox.softwaremill.com)
-
Type system makes a huge difference especially things like refined types:
https://github.com/Iltotore/iron
Shifts entire classes of errors to compile time.
-
Graal
GraalVM compiles Java applications into native executables that start instantly, scale fast, and use fewer compute resources 🚀
Plenty,
Up to Java 21,
https://advancedweb.hu/a-categorized-list-of-all-java-and-jv...
Remaining ones until Java 24, released last week,
https://www.infoworld.com/article/2335077/jdk-22-the-new-fea...
https://www.infoworld.com/article/2336682/jdk-23-the-new-fea...
https://www.infoworld.com/article/3491404/jdk-24-the-new-fea...
Additionally, commercial AOT compilers have taken a big hit, as two great options are now freely available,
https://www.graalvm.org (Basically LLVM, but in Java)
https://eclipse.dev/openj9/docs/aot
With them there is also the rise of AOT friendly frameworks like Quarkus and Micronaut.
-
> 1) The language is too unstable
Thankfully not anymore. They got their act together and have been maintaining compatibility since Scala 3.0.0 has been released in May 2021, which is almost 4 years and counting.
https://github.com/scala/scala3/releases/tag/3.0.0
Scala 3.x is to remain compatible for the whole 3.x series (think of semantic versioning). There's no Scala 4 (breaking with Scala 3) in sight.
Also, Scala 3 and Scala 2.13 JARs are also compatible with each other, which helped with the transition.
> 2) The tooling around it is not the best
sbt may not be good. But Mill is much better than either Maven or Gradle. Especially Gradle. Bleep is also promising.
Scalafmt is widely used and liked. Scalafix -- the linter/fixer -- is used a bit less, but still of a good quality.
-
InfluxDB
InfluxDB – Built for High-Performance Time Series Workloads. InfluxDB 3 OSS is now GA. Transform, enrich, and act on time series data directly in the database. Automate critical tasks and eliminate the need to move data externally. Download now.
-
> If anyone care to share their experience with GraalVM's native-image, I'd be interested in hearing that.
The main issue is if you are using reflection, which needs metadata adding to describe it so the necessary metadata is included in the image. Some libraries already have it built in, and there are tools to help.
For building, https://github.com/sbt/sbt-assembly supports native Image.
-
Just as context for anyone curious:
Scala is even more "powerful" than TS or Rust as it has real HKT (higher-kinded types), and for example Effect.TS needs to emulate/simulate it.
https://github.com/Effect-TS/effect/blob/main/packages/effec...