Lexical Effect Handlers
The focus of this project is to study how to integrate the programming abstraction of effect handlers into general purpose programming languages.
We investigate:
- the integration with object-oriented programming and and explore the interaction with other modularity features,
- novel approaches to guarantee effect safety with the goal to make them more approachable by working programmers, as well as
- various implementation techniques and their impact on performance.
Lexical Handlers
Much like variables can be scoped lexically or dynamically, the same applies to effect handlers.
Traditionally, like exceptions, effect handlers are scoped dynamically. Dynamic handlers are expressive, but can result in unintended behavior, such as accidental handling an effect.
In contrast, we base our research in this area on lexical effect handlers. Like lexically scoped variables, lexical effect handlers enable lexical reasoning about where an effect is handled. Implementing lexical handlers in terms of capability passing also facilitates efficient implementations.
The Effekt Language Family
We designed and implemented various languages with support for effect handlers and delimited control. Each language explores a different aspect of the design space.
Effekt (Standalone Language)
Scala Effekt (Library Embedding)
Java Effekt (Library Embedding)
Collaborators
Jonathan Brachthäuser (University of Tübingen)
Philipp Schuster (University of Tübingen)
Klaus Ostermann (University of Tübingen)
Publications
Effects, Capabilities, and Boxes: From Scope-based Reasoning to Type-based Reasoning and Back
by Jonathan Immanuel Brachthäuser, Philipp Schuster, Edward Lee, and Aleksander Boruch-Gruszecki
In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), 2022.
Learn More
From Capabilities to Regions: Enabling Efficient Compilation of Lexical Effect Handlers
by Marius Müller, Philipp Schuster, Jonathan Lindegaard Starup, Klaus Ostermann, and Jonathan Immanuel Brachthäuser
In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), 2023.
Learn More
What You See Is What You Get: Practical Effect Handlers in Capability-Passing Style
by Jonathan Immanuel Brachthäuser
In Ernst Denert Award for Software Engineering 2020. Springer International Publishing, 2022.
Learn More
Effekt: Capability-Passing Style for Type- and Effect-Safe, Extensible Effect Handlers in Scala
by Jonathan Immanuel Brachthäuser, Philipp Schuster, and Klaus Ostermann
In Journal of Functional Programming 30: , 2020.
Learn More
Compiling Effect Handlers in Capability-Passing Style
by Philipp Schuster, Jonathan Immanuel Brachthäuser, and Klaus Ostermann
In Proceedings of the International Conference on Functional Programming (ICFP). ACM Press, 2020.
Learn More
Effect Handlers, Evidently
by Ningning Xie, Jonathan Immanuel Brachthäuser, Daniel Hillerström, Philipp Schuster, and Daan Leijen
In Proceedings of the International Conference on Functional Programming (ICFP). ACM Press, 2020.
Learn More
Effekt: Lightweight Effect Polymorphism for Handlers (Technical Report)
by Jonathan Immanuel Brachthäuser, Philipp Schuster, and Klaus Ostermann
Technical report. University of Tübingen, Germany, 2020.
Learn More
Effects as Capabilities: Effect Handlers and Lightweight Effect Polymorphism
by Jonathan Immanuel Brachthäuser, Philipp Schuster, and Klaus Ostermann
In Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA). ACM Press, 2020.
Learn More
Design and Implementation of Effect Handlers for Object-Oriented Programming Languages
by Jonathan Immanuel Brachthäuser
PhD thesis. University of Tübingen, Germany, 2020.
Learn More
Programming with Implicit Values, Functions, and Control
by Jonathan Immanuel Brachthäuser and Daan Leijen
Technical report MSR-TR-2019-7. Microsoft Research, 2019.
Learn More
Zero-cost Effect Handlers by Staging (Technical Report)
by Philipp Schuster, Jonathan Immanuel Brachthäuser, and Klaus Ostermann
Technical report. University of Tübingen, Germany, 2019.
Learn More
Effect Handlers for the Masses
by Jonathan Immanuel Brachthäuser, Philipp Schuster, and Klaus Ostermann
In Proc. ACM Program. Lang. 2(OOPSLA). Association for Computing Machinery, 2018.
Learn More
Towards Naturalistic EDSLs using Algebraic Effects
by Jonathan Immanuel Brachthäuser
In Workshop for Domain Specific Languages, Design and Implementation (DSLDI), 2017.
Learn More
Effekt: Extensible Algebraic Effects in Scala (Short Paper)
by Jonathan Immanuel Brachthäuser and Philipp Schuster
In Proceedings of the International Symposium on Scala. ACM Press, 2017.
Learn More