This is an idea proposed in 2024 as a Cambridge Computer Science Part II project, and is currently being worked on by Sky Batchelor. It is supervised by Patrick Ferris and Anil Madhavapeddy as part of the OCaml Labs project.
Most existing uses of effect handlers perform synchronous execution of handled
effects. Xie et al proposed a traverse
handler for parallelisation of
independent effectful computations whose effect handlers are outside the
parallel part of the program. The paper [1] gives a sample implementation as a
Haskell library with an associated λp calculus that formalises the parallel
handlers. This project aims to:
traverse
handler in OCaml 5, using single-shot handlers [2]traverse
Domain_pool
[3] on a many core machine (ranging from 8--128 cores)Parallel Algebraic Effect Handlers describes the traverse
effect
Retrofitting effect handlers onto OCaml, PLDI 2021 describes how the effect system in OCaml works.
↩︎︎EIO is a high-performance direct-style IO library we have been developing for OCaml.
↩︎︎