Blog

  • I have been working recently on making equality tests using == and != safer in Scala. This has led to a Language Enhancement Proposal which I summarize in this blog.

  • The Dotty project is a platform to develop new technology for Scala tooling and to try out concepts of future Scala language versions. Its compiler is a new design intended to reflect the lessons we learned from work with the Scala compiler. A clean redesign today will let us iterate faster with new ideas in the future.

    Today we reached an important milestone: the Dotty compiler can compile itself, and the compiled compiler can act as a drop-in for the original one. This is what one calls a bootstrap.

  • For most of us, the change of the year is an occasion for thinking about what we missed doing last year and where we want to improve. I decided there are a couple of things where I would like to do better in 2016 than in 2015. The first is that I would like to do more blogging and writing in general. I have been pretty silent for most of the last year. This was mostly caused by the fact that I had been heads down to work on DOT, Scala's foundations, and dotty, the new Scala compiler platform we are working on. It's been a lot of work, but we are finally getting good results. DOT now has a mechanized proof of type soundness and the dotty compiler can now compile itself as well as large parts of Scala's standard library.

  • In my last blog post I introduced DOT, a minimal calculus that underlies much of Scala. DOT is much more than an academic exercise, because it gives us guidelines on how to design a sound type system for full Scala.

  • I just made the first pull request to add implicit function types to Scala. I am pretty excited about it, because - citing the explanation of the pull request - "This is the first step to bring contextual abstraction to Scala". What do I mean by this?

  • What do you get if you boil Scala on a slow flame and wait until all incidental features evaporate and only the most concentrated essence remains? After doing this for 8 years we believe we have the answer: it's DOT, the calculus of dependent object types, that underlies Scala.