2020 will see the release of Scala 3, a new implementation of the Scala compiler which will introduce a number of significant enhancements over Scala 2, and is the definitive future of the language.
So we are entering a period of transition for Scala, but keeping on top of the many new features of Scala 3, understanding its more subtle design improvements, and handling the consequences of its implementation details will be a challenge, as well as an opportunity, for Scala programmers.
The comprehensive test suites of the Scala 2 and 3 compilers serve as empirical evidence of the behavior of each compiler over a broad, living corpus of code. *Next Generation Scala* has been developed by methodically identifying the behavioral differences in each test, and categorizing them into a comprehensive syllabus for learning Scala 3.
Appreciating the details of Scala 3 demands someone already intimately familiar with Scala, and Jon Pretty's thorough understanding of the language, built through working closely with it for fifteen years, combined with his experience of developing and teaching Advanced Type Mechanics, gives him a uniquely privileged perspective on Scala 3.
The course lasts sixteen hours, spread across two days. The first day focuses on learning the new features and enhancements Scala 3 brings, and will be accessible to a wide audience. The second day explores more deeply the differences between the two compilers, and is targetted towards Scala developers with a view to migrating code.
Note that, due to the scope and complexity of macros, they are not covered by *Next Generation Scala*, though they may be included in a later version of the course.