The Dotty experimental compiler for Scala now bootstraps
infoq.com
infoq.com
E.g. Scala 2.10 Introduced a lot of interesting features like string formatting s"Hello $name!".
Scala 2.11 offered minimal improvements, for me just compilation time improvements and better incremental compilation. I don't see anything exciting on 2.12 roadmap.
It looks like Scala compiler is very complex machinery, few key people left: http://www.slideshare.net/extempore/keynote-pnw-scala-2013 and Typesafe doesn't monetize compiler itself, so it focus on building ecosystem around it (e.g. Akka).
It is. Odersky is spending most of his time on Dotty these days and he doesn't seem that interested in Scala any more, except when he's obligated to talk about it at keynotes (and he tends to talk more about Dotty there anyway). Despite the grandiose plans of possibly back porting Dotty features to Scala at some point in the distant future, Scala has been in maintenance mode for a couple of years now and with more and more people leaving the core team, it's probably going to stay this way.
Such a missed opportunity.
Such a missed opportunity.
As for the new things, they are mainly library-based and compiler plugins, so the scalac compiler remains stable, and new features are self-supporting. Some examples:
* Scala.js (http://www.scala-js.org/)
* Scala.meta (https://github.com/scalameta/scalameta)
* Pickers and spores (https://speakerdeck.com/heathermiller/on-pickles-and-spores-...)
* Scala offheap (https://github.com/densh/scala-offheap)
* RRBVector (https://github.com/nicolasstucki/scala-rrb-vector)
* ScalaBlitz (https://scala-blitz.github.io/)
* Miniboxing (http://scala-miniboxing.org)
Also, I should mention the theoretical work on the DOT type system, which is a sound and more expressive type system to be used for the Scala programming language (compatible with the old type system, as it's more expressive, but also sound -- disallowing any incorrect code).
Regarding Typesafe, they took over releases and maintenance, and did a good job at that. Yet Martin Odersky himself and his team at EPFL are the main drivers for innovation, including dotty and all the projects listed above (which were all developed at EPFL, see http://lamp.epfl.ch).
I'm so excited by Rust's memory management, but Scala just have so many nice features, especially in multithreading. I hope Rust will catch up, eventually.
ATM it compiles a subset of scala, but the plan is to make it compile everything and then still provide support for further plt research/scala features.
Their readme[0] and initial announcement[1] are as much details as I know of.
[0] https://github.com/lampepfl/dotty [1] https://groups.google.com/forum/m/#!msg/scala-internals/6HL6...
First of, congrats to the Dotty team -- this is an important (first) milestone! One of our next shared goals is making the Scala standard library cross-compile on Scala and Dotty, by the way.
I'm personally more excited about Scala 2.12, though! The new compilation schemes for lambdas and traits are much more efficient in many ways (bytecode size, runtime performance and binary compatibility) than the old one, forced on us by Java 6's limitations. Both schemes were prototyped in dotc and developed in parallel, as part of our ongoing effort in aligning Scala with Dotty (actual convergence is still years away -- in the mean time, Scala versions will gradually adopt ideas that are proven in Dotty).
As always, evolving the language carefully is a feature in itself! (I understand it may seem too slow to some, but most users are happy with this pace, we think.) We have a responsibility to our fast-growing user base to not pull a Scala 2.10 every 18 months ;-) We will, however, keep moving forward, as witnessed by the ongoing deprecation & modularization in the standard library. Eventually, deprecated features will be removed, even...
Happy programming!
The Go compiler is fast because it does very little. It doesn't do much optimisation and Go is not a very sophisticated language and so does not require much of it's compiler. It is not comparable to the Scala or Dotty compilers.
> Dotty, a platform aimed to develop new technology for Scala tooling as well as try out new concepts for future Scala versions, has reached bootstrap status. This means that its compiler is written in Dotty and can compile itself, thus providing a drop-in replacement for the original one
I would imagine that self-hosting is fairly minor aspect of being a drop-in replacement of exising software compared to backwards compatibility.