Effect Handlers for the Masses
summary
First Java implementation of algebraic effect handlers: a library plus a bytecode toolchain that performs a type-selective CPS bytecode transform (preserves JVM method signatures), implements multi-prompt delimited continuations by managing a separate heap stack and frame slicing, and exposes handlers as ordinary Java classes so effects appear as Java interfaces/capabilities. Demo enumerates nondeterminism (coin flips) by capturing continuations and invoking them multiple times; handlers map results into Optional or List. Uses Java 8 lambdas and invokedynamic; performance is competitive with existing JVM continuation languages. Ongoing work: prevent capability leakage that currently causes runtime errors.
AI-written summary · about
chapters (13)
- 0:00Intro
- 2:26Effect Handlers for Java
- 4:12Example: Drunk Coin Flipping
- 8:13Effect Handler Implementations
- 9:54The Design of the Effekt Library
- 10:42Architectural Overview of Java Effekt
- 12:04Replacing the JVM Stack
- 13:18CPS Translation - Saving Function Local State
- 14:44Effect Handlers in Java
- 15:37Effect Modularization (Handler Passing)
- 16:52Effect Modularization (Composition)
- 17:37Modularity Benefits
- 19:49Conclusions








