5 ms·
I personally really like how this release turned out. Tons of polish, cleanup, simplification, and performance work. Basically tackling the core problems with
by lihaoyi 7y ago
I personally really like how this release turned out. Tons of polish, cleanup, simplification, and performance work.
Basically tackling the core problems with the language, with minimal feature creep or additional complexity (I must admit to contributing to that creep in a small way)
- lmm 7y agoI guess there's always "one more feature", but to me it feels like Scala stopped frustratingly just short of getting the language design right. Partial type application is frustratingly cumbersome. For the last 3 releases or so - which is what, 6 years of language development? - people have been using the kind-projector plugin to the point that it's now pretty much entrenched. Any kind of built in solution - even if it were just bundling kind-projector into the compiler - would have been better for the ecosystem in terms of things like good compilation errors (which experienced users don't notice, but can be a major pain for newcomers). The situation for enums is even worse, with what must be a dozen competing libraries/macros/..., none of which manages to be as nice as Java's "enum" (to the extent that I actually write enums in Java when writing Scala). I get that everyone has their own preferences, but even if the solution was just to adopt the Java solution directly (but allow writing the body in Scala) that would be a huge advance from where we currently are. I love Scala but I really wish the developers had solved these two cases before, effectively, freezing development of new language features for 5 years and counting.
- lihaoyi 7y agow.r.t. type lambdas and enums, AFAIK they’re working on it. See https://contributors.scala-lang.org/t/announcing-dotty-0-16-0-rc3/3397/2 https://contributors.scala-lang.org/t/announcing-dotty-0-16-...
- pas 7y agoScala seems to be lacking sponsors and contributors. Since 2018-01-01 according to GitHub only 44 people committed to scala/scala. (Which naturally follows a power-law distribution, so half of those people only have one or a few commits.) And it's similar for the lampepfl/dotty repo (since 2018-01-01: 52 people, <10 active contributors) whereas the problem space is vast, the compiler is very intricate and brittle, the tasks at hand are many, and the language is complex, so trying any solution takes a lot of time and serious reviewing effort to try to make sure it doesn't cause any unintended problems. And at the same time there are a lot of actively maintained libraries/frameworks/tools, but the overlap of the maintainers of those with the compiler maintainers is significant. So all in all it's not surprising that things are not progressing super fast.
- vvillena 7y agoScala 3 (known in its prototype phase as Dotty) will solve lots of the issues you describe. The language is reevaluating how some of its features are used in practice, and lots of common use cases that now are a bit clunky will be streamlined. Other issues like better compiler errors and nicer tooling are being worked on. Both Scala and SBT have advanced a lot on that regard, and I'm eager to see what's next.
- lmm 7y agoI'm aware. It was just frustrating to see two major releases (five years and counting) focused on things that weren't an issue for me (indeed "Java 8 support" was actually a regression from my point of view, as it means my code doesn't work on Android any more). At one point there was a fork that was offering some more valuable features ("-Zirrefutable-patterns" was a huge help in some of my code) which I would've wanted to try to contribute to, but then it disappeared all of a sudden with all references to it vanishing, as if via some back-room deal. (It's possible that there's a better explanation in some of the meeting videos that have started being published; in principle that's a great move,but I'm not able to follow videos and there have never been any written transcripts/minutes available (I have asked))