Effect Handler Oriented Programming
Effect handlers allow programmers to define, customise, and compose a range of crucial programming features ranging from concurrency to probability, inside the programming language. EHOP will develop a radical new programming paradigm called Effect Handler Oriented Programming (or EHOP for short). EHOP will empower software developers to build modular interactive software, enabling the development of safe, secure, and reliable applications. As well as developing the theory and practice of effect handler oriented programming, EHOP will add effect handlers to systems as diverse as WebAssembly, the new target language for the web, and Hack, the language in which the Facebook app is written.
EHOP is led by Sam Lindley at The University of Edinburgh and is funded by a £1.45M UKRI Future Leaders Fellowship (MR/T043830/1) between February 2021 and January 2025.
PhD positions
If you are interested in applying for a PhD relating to EHOP then contact Sam Lindley.People
Core team
Project partners
Visiting researchers
Papers
-
-
Effect handlers for C via coroutines
In the proceedings of OOPSLA 2024.
-
Effect handlers for C via coroutines
-
-
Oxidizing OCaml with modal memory management
In the proceedings of ICFP 2024.
-
Oxidizing OCaml with modal memory management
-
-
Asymptotic speedup via effect handlers
In the Journal of Functional Programming (ICFP 2020 special issue) 34:e5, April 2024.
-
Asymptotic speedup via effect handlers
-
- Bringing the WebAssembly standard up to speed with SpecTec
- In the proceedings of PLDI 2024.
-
- The functional essence of imperative binary search trees
- In the proceedings of PLDI 2024.
-
- Behavioural types for heterogeneous systems
- In the proceedings of PLACES 2024.
-
- Asymptotic speedup via effect handlers
- In the Journal of Functional Programming (ICFP 2020 special issue) 34:e5, April 2024.
-
- Scoped effects as parameterized algebraic theories
- In the proceedings of ESOP 2024.
-
- Soundly handling linearity
- In the proceedings of POPL 2024.
-
- Continuing WebAssembly with effect handlers
- In the proceedings of OOPSLA 2023.
-
- Structural subtyping as parametric polymorphism
- In the proceedings of OOPSLA 2023.
-
- Separating sessions smoothly
- In LMCS, Volume 19, Issue 3, July 2023
-
- High-level effect handlers in C++
- In the proceedings of OOPSLA 2022.
-
- Constraint-based type inference for FreezeML
- In the proceedings of ICFP 2022.
-
- Separating sessions smoothly
- In the proceedings of CONCUR 2021.
- [extended version]
-
- Handler calculus
- Extended abstract. Presented at HOPE 2021.
-
- Composing UNIX with effect handlers: A case study in effect handler oriented programming
- Extended abstract. Presented at ML Family Workshop 2021.
Theses
-
- Implementing UNIX with effect handlers
- Undergraduate thesis, School of Informatics, The University of Edinburgh, 2024.
-
- Complete and easy type inference for first-class polymorphism
- PhD thesis, School of Informatics, The University of Edinburgh, 2023.
-
- Concrete sheaf models of higher-order recursion
- PhD thesis, Department of Computer Science, University of Oxford, 2023.
-
- Foundations for programming and implementing effect handlers
- PhD thesis, School of Informatics, The University of Edinburgh, 2021.
Talks
-
- Effect handler oriented programming
- Nanyang Technical University Singapore, November 2024
-
- Soundly handling linearity
- POPL 2024, January 2024
- University of Bristol, October 2023
- EHOP workshop, July 2023
-
- An algebraic theory of named threads (work in progress)
- GALOP workshop, January 2024
-
- Scoped effects as parameterized algebraic theories
- Invited talk at the Directions and Perspectives in the λ-calculus workshop, January 2024
- SPLS, November 2023
-
- Status update on WasmFX implementation in Wasmtime
- WebAssembly Stack Switching Subgroup, December 2023
-
- Structural subtyping as parametric polymorphism
- OOPSLA 2023, October 2023
-
- Tracking linear continuations for effect handlers
- Huawei-Edinburgh Joint Lab Workshop, June 2023
- SPLS, March 2023
-
- High-level effect handlers in C++
- OOPSLA 2022
- Huawei Edinburgh Joint Lab Workshop, January 2023
-
- Asymptotic Speedup via Effect Handlers
- FATA seminar, December 2022
-
- WasmFX: Structured Stack Switching via Effect Handlers in WebAssembly
- Wasm Research Day, October 2022
- Huawei Edinburgh Joint Lab Workshop, January 2023
-
- Effect handler oriented programming
- Huawei strategy and technology workshop, September 2022
-
- Concrete categories and higher-order recursion (With applications including probability, differentiability, and full abstraction)
- LICS, August 2022
-
- Effect handlers for WebAssembly
- Formal Wasm Meeting 2022, Newton Institute, Cambridge
-
- Effect handler oriented programming
- SPLV 2022
-
- Effect handlers for WebAssembly
- MFPS 2022 (invited talk)
-
- Effect handler oriented programming
- OPLSS 2022 (summer school course)
-
- On the expressive power of types
- TYPES 2022 (invited talk)
-
- Composing UNIX with Effect Handlers: An Introduction to Effect Handler Oriented Programming
- Microsoft Research, Redmond, WA, USA, May 26, 2022
- Huawei Research Centre, Zurich, Switzerland, October 13, 2022.
-
- Effect Handler Oriented Programming
- Huawei-Edinburgh Joint Lab, December 10, 2021
-
- Handlers.Js: Compiling Effect Handlers to JavaScript
- Tarides, November 16, 2021
-
- Wasm with typed continuations continued
- Wasm Stacks Subgroup, November 1, 2021
-
- WasmFX: Typed Continuations in Wasm
- SPLS October 2021
-
- Typed Continuations: A Basis for Stack-switching in Wasm
- Wasm Stacks Subgroup, September 20, 2021
-
- Handler Calculus
- Dagstuhl Seminar 21292
- HOPE 2021
-
- Composing UNIX with Effect Handlers: A Case Study in Effect Handler Oriented Programming
- Dagstuhl Seminar 21292
- ML Family Workshop 2021
Posters
-
- Session-typed effect handlers (work in progress)
- Student Research Competition of POPL 2024, January 2024
- 3rd place in the graduate category.
Events
- EHOP Workshop (July 2023)
- Dagstuhl seminar 21372: Behavioural Types: Bridging Theory and Practice (September 2021)
- Dagstuhl seminar 21292: Scalable Handling of Effects (July 2021)
Links
- Frank: an effect handler-oriented programming language
- Links: a functional programming language for the web, including effect handlers
- WasmFX: an extension of Wasm with effect handlers
- Effects bibliography: a curated collection of papers and other resources related to the theory and practice of computational effects
- Effects rosetta stone: polyglot effect handler examples
- Effect handers bench: polyglot effect handler benchmarks