Abstract
Effect handlers allow the programmer to implement computational effects, such as custom error handling, various forms of lightweight concurrency, and dynamic binding, inside the programming language. We introduce cpp-effects, a C++ library for effect handlers with a typed high-level, object-oriented interface. We demonstrate that effect handlers can be successfully applied in imperative systems programming languages with manual memory management. Through a collection of examples, we explore how to program effectively with effect handlers in C++, discuss the intricacies and challenges of the implementation, and show that despite its limitations, cpp-effects performance is competitive and in some cases even outperforms state-of-the-art approaches such as C++20 coroutines and the libmprompt library for multiprompt delimited control.
Original language | English |
---|---|
Article number | 183 |
Number of pages | 29 |
Journal | Proceedings of the ACM on Programming Languages |
Volume | 6 |
Issue number | OOPSLA2 |
DOIs | |
Publication status | Accepted/In press - 1 Sep 2022 |
Event | Conference on Object-Oriented Programming Systems, Languages, and Applications 2022 - Auckland, New Zealand Duration: 5 Dec 2022 → 10 Dec 2022 |
Keywords
- Effect handlers
- algebraic effects
- lightweight concurrency
- context switching