3 ms·
There'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 fr
by darksaints 5y ago
There'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...
- eweise 5y ago"the work on Dotty over the last 5 years was intended to explore what a new Scala could look like"
- darksaints 5y agoThat doesn't read to you like it was intended to be a new language?
- eweise 5y agoI take it to mean a new version of Scala.
- valenterry 5y agoFor me it sounds like neither. More of "we make this condensed core, based on Scala - and if we are lucky and it turns out that the current Scala core can be made sound easily, then it will become Scala 3, else it will be a completely separate language". E.g. if it would have turned out that you can't make implicits sound, then I doubt that dotty would have become Scala 3. With existential types however, they decided to remove this feature (which is a bit sad imho) and sacrifice it to make dotty become Scala 3.