| Unfortunately, I slowly got frustrated reading the what's coming for Scala 3. * True intersections and union types -- use them sometimes, not something you can't live without though. * Trait parameters -- slightly easier life for OOP, ok I guess. * Function types and implicit function types -- right, will make your code even harder to read (subjective). * Generic tuples -- again, I can't remember we ever had problems with tuples in Scala. * Opaque types -- another small OOP improvement. * Type lambdas -- I've never seen them used. * Erased parameters -- probably useful if it improves performance even at the cost of readability right? * Enums -- finally something practical, good. And that's all about major changes in Scala 3. Ah, yes, we get a new compiler. Are you excited? These changes look like a quarterly release than a major version shift. Now, imagine a project manager who's estimating the migration downtime for Scala 2 for the sake of the above. |
Opaque types are not a "small OOP improvement", they finally bring zero-cost newtypes to Scala, superseding value classes. Now you can finally ensure that object Ids, people's names, meters, feet, and degrees Celsius all have different types - without any extra boxing at runtime.
Your list is also missing typeclass derivation, which is going to be a fantastic quality of life improvement. Yes, even for people who don't care about what a typeclass is.
This is a point I want to stress the most, I think. Features like type lambdas, or libraries like Shapeless - they can possibly be extremely beneficial to you even if you don't use them directly in your code. Ask your nearby Haskell programmers about the virtues of `deriving (Eq, Ord)` and they'll talk your ear off. And that's before they even get to things like `deriving (FromJSON, ToJSON)`. Don't have a Haskell programmer nearby? It's ok, ask a Rust programmer about Serde instead. Typeclass derivation is just such a massive, massive feature to have in your language's repertoire.