Skip to content

Latest commit

 

History

History
60 lines (44 loc) · 2.12 KB

022-jsr-45.md

File metadata and controls

60 lines (44 loc) · 2.12 KB
date accepted updates status
December 2019
true
Not yet completed, but work has been done. Given time the goal is still to complete (April 2022)
active

SCP-022: Completing SCP-11: implement JSR-45 for improved Scala debugging experience

Proposer

Proposed by Ólafur Páll Geirsson, Twitter, December 4th 2019.

Abstract

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.

Proposal

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.

Cost

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.

Timescales

It would be nice to make progress on this project sometime within the year of 2020.