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