4 ms·
Amazing!!! Great to see Scala improving at such a fast pace! I'm especially excited about union/intersection types. I think we could all witness how well they
by valenterry 5y ago
Amazing!!! Great to see Scala improving at such a fast pace!
I'm especially excited about union/intersection types. I think we could all witness how well they work out in typescript and I believe that every language with the concept of subtyping should have this feature. It is one of the things that make working in a statically typed language feel much more dynamic/lightweight without giving up on safety guarantees.
- KajMagnus 5y agoAmazing! That's the word that popped up in my mind too. Scala 3 is my on shared 1st place favorite language Union/intersection types — indeed, I use all the time, in Typescript. And Opaque Types looks lovely too. All across my code base, I have type aliases like "UserId" or "PageId" or "PostNr" or "DraftNr" etc, and it'll be nice that this can now be type safe for real, not just type aliases. (Just waiting for opaque types to arrive to Typescript too.)
- geodel 5y agoFrom their blog: > After 8 years of work, 28,000 commits, 7,400 pull requests, 4,100 closed issues – Scala 3 is finally out. Since the first commit on December 6th 2012... I mean it is lot of work for sure. But is it such a fast pace?
- valenterry 5y agoIt is. Scala does not use semver. The last major release was 2.13.0, not 2.0.0. That's a bit confusing I guess. What that means is, they haven't just added some features, they redesigned/rewrote to language from ground up to simplify it and make formally sound. I actually don't know any other language that does that (though I'm sure there are others, maybe Haskell is one of them). In addition, a lot of features are very impactful and unprecedented, such as match types. To me, for a mainstream language (even though a smaller one), it certainly feels fast pasted.
- dtech 5y agothey switched to semver starting with Scala 3. They intend to remain compatible throughout 3.x.
- darksaints 5y agoThere's some weird history there. For most of the project's existence, Scala 3 was known as Dotty. It was basically a research project, and it was recognized from the beginning that it was a different language than Scala, largely due to the type system semantics...the goal being a formally defined, fully sound type system (Scala had some edge cases that made it not sound, even if it was more sound than most languages). However, the language resembled Scala, was created by the same person, had some cool capabilities that a lot of Scala users longed for, and it was a chance to "start over" with some of the more questionable design decisions that had been made previously, so there was a lot of questions and pressure to make it Scala 3. So it was decided to no longer treat Dotty as a second language, but rather to find a path to migrate the existing Scala ecosystem to this new language. This transitioned the project from a relatively slow-paced research language into a full fledged and funded project with an urge for engineering not just tool and ecosystem compatibility, but also bytecode compatibility with Scala. So for most of those 8 years, there was no objective but to create a better language than Scala. Then very rapidly (maybe the last two years), it went from "this is a completely new language" to "these language ideas will be incorporated into Scala 3", to "this will actually become Scala 3 and we're working on a transition path". And from the perspective of someone who was aware of Dotty and a regular user of Scala, that felt like an extremely fast transition. Especially for a language that took years to make much smaller changes in the past (2.10->2.11->2.12 felt like an eternity).
- eweise 5y agoNot sure that's correct. I remember going to a talk around 2013 with Odersky and got the impression that dotty would be the future scala.
- darksaints 5y agoLooked it up, the official announcement that it would become Scala 3 happened in 2018. https://www.scala-lang.org/blog/2018/04/19/scala-3.html https://www.scala-lang.org/blog/2018/04/19/scala-3.html You can dig through the git history of the readme for Dotty, it's actually pretty enlightening how Odersky's perception of it has evolved over time. For example, in 2014 he referred to dotty as an experimental compiler for a dialect of scala. https://github.com/lampepfl/dotty/commit/6a42d32181bd7b8639f717c20de5009c06141727#diff-b335630551682c19a781afebcf4d07bf978fb1f8ac04c6bf87428ed5106870f5 https://github.com/lampepfl/dotty/commit/6a42d32181bd7b8639f...