Rsc
Reasonable Scala compiler (also known as Rsc) is an experimental Scala compiler focused on compilation speed. This project is developed by the Language Tools team at Twitter.
Rsc is not a fork, but a reimplementation of the Scala compiler. We believe that a performance-oriented rewrite will provide a unique perspective on compilation costs introduced by various Scala features and idioms - something that is currently very hard to quantify in existing compilers.
With Rsc, our mission is to complement official compilers and assist with their evolution through our experiments. We are aiming to discover actionable insight into Scala compiler architecture and language design that will help compiler developers at Lightbend and EPFL to optimize their compilers for the benefit of the entire Scala community.
Goals
- Dramatically improve Scala compilation performance
- Study compilation time overhead of various Scala features
- Identify a subset of Scala that can be compiled with reasonable speed
- Facilitate knowledge transfer to other Scala compilers
Non-goals
- Full backward compatibility (consider Lightbend Scala instead)
- New language features (consider Dotty and Typelevel Scala instead)
- Improvements to the type system (consider Dotty and Typelevel Scala instead)
- Runtime performance (will be addressed independently)
Status
- We expanded the supported subset of Scala and are now using Twitter Util in our experiments.
- We implemented support for loading dependencies based on the SemanticDB format provided by Scalameta.
- Our prototype outliner can compute signatures of public and protected definitions and save them in the ScalaSignature format that enables interoperability with the Scala compiler.
- In the future, we will proceed with development according to our roadmap.
Documentation
Credits
Our project is inspired by the work of Martin Odersky, Grzegorz Kossakowski and Denys Shabalin. Martin inspiringly showed that in this day and age it is still possible to write a Scala compiler from scratch. Greg unexpectedly demonstrated that compiling Scala can be blazingly fast. Denys shockingly revealed that Scala apps can have instant startup time.