Upcoming paper in OOPSLA: Higher Level Effect Handlers in C++
High-Level Type-Safe Effect Handlers in C++
DAN GHICA, Huawei Research, UK
SAM LINDLEY, The University of Edinburgh, UK
MARCOS MAROÑAS BRAVO, Huawei Research, UK
MACIEJ PIRÓG, Huawei Research, UK
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 type- and memory-safe C++ library for effect handlers with a high-level, objectoriented 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 circumstances even outperforms state-of-the-art approaches such as C++20 coroutines and the libmprompt library for multiprompt delimited control.