Announcing Dotty 0.17.0-RC1 – new implicit scoping rules and more

Greetings! With this post, we are proud to announce the 17th release of Dotty. With this release, we are making steady progress on the metaprogramming capabilities of Scala 3. Also, implicit scoping rules have seen a rework and a bunch of organizational changes took place.

This release serves as a technology preview that demonstrates new language features and the compiler supporting them.

Dotty is the project name for technologies that are being considered for inclusion in Scala 3. Scala has pioneered the fusion of object-oriented and functional programming in a typed setting. Scala 3 will be a big step towards realising the full potential of these ideas. Its main objectives are to

You can learn more about Dotty on our website.

This is our 17th scheduled release according to our 6-week release schedule.

What’s new in the 0.17.0-RC1 technology preview?

New implicit scoping rules

We aim to make the implicit scoping rules clean and intuitive. In this release, the scoping rules were refactored to facilitate this goal. As specified in the code documentation:

The implicit scope of a type tp is the smallest set S of object references (i.e. TermRefs with Module symbol) such that:

You can learn more from PR #6832.

Metaprogramming

We are making steady progress developing metaprogramming features. The highlights for this release are:

2.12 build removed from the CI tests

2.12 build is removed from the test suite. The 2.12 build compiled and tested the Dotty compiler with the Scala 2.12 compiler. This means that, even though Dotty is bootstrapped (i.e. capable of compiling itself), we were not able to use any of the new Dotty features in the Dotty codebase since these features would not compile with Scala 2.12. The decision to abstain from using the new features was made to give us the time to see if something goes wrong with the bootstrap and the ability to revert to Scala 2.12 if it becomes necessary.

The removal of 2.12 build marks the stage in Dotty's life when we start to actively use new Dotty features in our code base, making it incompatible with Scala 2.

Other changes

There were some organizational and infrastructural changes worth mentioning.

Let us know what you think!

If you have questions or any sort of feedback, feel free to send us a message on our Gitter channel. If you encounter a bug, please open an issue on GitHub.

Contributing

Thank you to all the contributors who made this release possible!

According to git shortlog -sn --no-merges 0.16.0-RC3..0.17.0-RC1 these are:

   119  Martin Odersky
   103  Nicolas Stucki
    38  Liu Fengyun
    33  Guillaume Martres
    33  Sara Alemanno
    17  Anatolii
    10  Aggelos Biboudis
     6  Miles Sabin
     5  Anatolii Kmetiuk
     4  Olivier Blanvillain
     4  Robert Stoll
     3  odersky
     2  Dale Wijnand
     2  Timothée Floure
     2  Rodrigo Fernandes
     2  James Thompson
     2  Steven Heidel
     1  Stéphane MICHELOUD
     1  bishabosha
     1  noti0na1
     1  Daniel Reigada
     1  Haemin Yoo
     1  Bunyod
     1  Deon Taljaard
     1  Ondra Pelech
     1  Jon Pretty

If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved! Head to our Getting Started page for new contributors, and have a look at some of the good first issues. They make perfect entry points into hacking on the compiler.

We are looking forward to having you join the team of contributors.

Library authors: Join our community build

Dotty now has a set of widely-used community libraries that are built against every nightly Dotty snapshot. Currently this includes ScalaPB, algebra, scalatest, scopt and squants. Join our community build to make sure that our regression suite includes your library.