You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is a follow-on project to Guillem Bartrina I Moreno's master thesis "Lexical Delimited Continuations for Scala 3". The project aims to make continuations supported natively in Scala JS (and possibly also other Scala platforms).
Continuations or coroutines enable many important programming techniques. Examples are direct-style generators or futures. Support for continuations is increasingly widespread, but they are so far missing in Javascript or older JVM runtimes. Guillem Bartrina's recent master thesis developed techniques to implement continuations efficiently by source code rewriting. It opens the route to a practical and backwards compatible implementation of continuations. One new aspect of these techniques is their integration with Scala's capture checker. The capture checker can predict possible suspension points and this can be used to bound the amount of code that needs to be expanded for suspensions.
The aim of the projects proposed in this issue is to take Guillem's very promising work and make it generally usable in Scala.JS and possibly also Scala on JVM or Scala Native implementations. To get there we have to address the issues in the following list. They are roughly ordered in terms of dependencies, where earlier issues should be worked on first.
Prepare a version of the standard library that is compiled by Scala 3 and that can be used as a basis for further work.
Make all parts of the standard library suspendable by compiling them with the existing continuations plugin. So far only collections were compiled in this way.
Develop an API of the capture checker that can be queried by the continuations plugin.
Measure typical codesize increase. Preliminary data look quite reasonable, but this needs to be explored further.
If necessary, develop compilation techniques that lead to more compact code for methods with multiple suspension points.
Benchmark runtime performance against other solutions (Loom, Scala Native, js_of_Ocaml).
Explore implementing the continuations transform as part of the global optimizer of Scala.JS. This might lead to smaller code sizes and more efficiency.
The project can be broken into several semester projects or master's theses.
The text was updated successfully, but these errors were encountered:
This is a follow-on project to Guillem Bartrina I Moreno's master thesis "Lexical Delimited Continuations for Scala 3". The project aims to make continuations supported natively in Scala JS (and possibly also other Scala platforms).
Continuations or coroutines enable many important programming techniques. Examples are direct-style generators or futures. Support for continuations is increasingly widespread, but they are so far missing in Javascript or older JVM runtimes. Guillem Bartrina's recent master thesis developed techniques to implement continuations efficiently by source code rewriting. It opens the route to a practical and backwards compatible implementation of continuations. One new aspect of these techniques is their integration with Scala's capture checker. The capture checker can predict possible suspension points and this can be used to bound the amount of code that needs to be expanded for suspensions.
The aim of the projects proposed in this issue is to take Guillem's very promising work and make it generally usable in Scala.JS and possibly also Scala on JVM or Scala Native implementations. To get there we have to address the issues in the following list. They are roughly ordered in terms of dependencies, where earlier issues should be worked on first.
The project can be broken into several semester projects or master's theses.
The text was updated successfully, but these errors were encountered: