date | accepted | updates | status | |
---|---|---|---|---|
December 2019 |
true |
|
active |
Proposed by Ólafur Páll Geirsson, Twitter, December 4th 2019.
This is a proposal to prioritize the completion of SCP-11. To reduce the scope of SCP-11, this proposal suggests to focus only contributing JSR-45 support to the Scala 2 compiler.
JSR-45 is an approved specification that establishes standardized tools for correlating Java byte code to source code of languages other than the Java programming language. For example, the Kotlin compiler uses JSR-45 to improve the developer experience when working with debugging tools and code coverage tools.
Tools in the Scala community that could benefit from JSR-45 include:
- IntelliJ Scala debugger.
- Metals once the upcoming debugging support is released.
- Code coverage tools that operate on byte code such as intellij-coverage and JaCoCo.
The end goal of this proposal is to fix issue scala/scala-dev#3. The Scala Center is expected to collaborate with the Scala compiler team to ensure that the JSR-45 implementation is well tested, documented and comprehensive (handles cases like inlined functions).
The Scala Center should collaborate with the Dotty compiler team to ensure that Scala 3 will also support JSR-45. Since the work on JSR-45 will mostly happen in the compiler backend, it's likely that large parts of the implementation for Scala 2 can be reused for Scala 3.
Six full-time engineer months to implement JSR-45 support in the Scala 2 compiler.
On the condition that the initial implementation has been completed and released, additional six part-time engineering months for maintenance and support.
It would be nice to make progress on this project sometime within the year of 2020.