The unfortunate thing about the downfall of corporate #scala was that #scala3 was actually pretty good. By the time it finally arrived companies didn't want to migrate.
"We’re happy to announce the release of Scala Native. Scala Native 0.4.16 is yet another maintenance release backporting changed from the 0.5.0-SNAPSHOT branch. This version introduces support for using Scala Native with JDK 21 and introduces bug fixes to the runtime. It also fixes severe performance problems when using java.nio.MappedByteBuffers."
Any Finagle users here? My com is looking at forking the project (Twitter isn't maintaining it anymore, and we want #scala3 support). Is someone else in this situation? #scala#finagle
Out of the Alt-JS languages I've played with, #Scala.js seems to be the best.
Given it's probably not widely adopted, its maturity is surprising. E.g., ScalablyTyped can convert TypeScript definitions, and actually works. Interop is good. And the compiler is, dare I say it, pretty fast compared to 2–3 years ago. Scala 3 also helps. E.g., it has untagged unions, just like TypeScript.
I'm surprised that it's in better shape than #KotlinJS, for all its multi-platform marketing.
In a narrow sense, that's because instances get passed around as values. By comparison, Haskell devs talk about sometimes preferring “dictionary passing style” instead of typeclasses. In Scala, it's the same thing.
Ofc, Scala can't really force global uniqueness, AKA “coherence”, which is important for making data structures reusable & ensuring the correctness of operations on that data…
But the coherence you get (in lexical scope, or due to global visibility rules) is good enough.
Scala 3 also has type classes as first-class in a broader sense.
We now have better syntax, e.g., for defining extension methods meant for type classes, or for auto-derivation. And defining auto-derivation logic doesn't involve macros, most of the time.
If you want macros, the meta-programming abilities in Scala are quite nice. What I like is that much is possible using just simple inline definitions w/ compile-time reflection, no AST manipulation or quoted code required.
I still can't wrap my head around the #Lichess chess server being built in Scala 3 and using Typelevel libraries, in an #FP style. This chess server is insanely popular.
> Banana-RDF contains a more general library to work with RDF from Scala. It allows different underlying implementations like Jena and Sesame. A long term project will be to unify our work with that library.
For the last 2 weeks I've been trying to play a little with #scala3, migrated an old exercise I did from scala 2 to it. It's painful to use intellij in its current state, even using the eap plugin version or wtv it is. Seriously considering putting things back into scala 2, at least that works as expected in the IDE.
Problems include not autocompleting things, taking long time to show methods available, not showing inferred types, variables and types marked as not use when they are, etc...
but it remains such a beautiful, fun language. i really enjoy #scala3 it's true there are some real tooling hassles (please give me a good emacs mode). you lose time. but you can express things so cleanly and concisely.
there are tensions between what "industry" wants and an impulse to experiment. a lot of us were drawn to scala because it challenges us, keeps us learning. it never wanted to be #golang. i don't think it should try now.