Welcome to the Multicore OCaml development wiki! The goal of Multicore OCaml is to add shared memory multicore parallelism to OCaml. The sidebar has links to design/implementation notes. Below is a collection of resources elsewhere on the web relating to Multicore OCaml development.
- Multicore OCaml memory model, Jun 2018: Describes the memory model for multicore OCaml programs. This memory model is much simpler than existing language memory models such as Java or C/C++11 without sacrificing performance.
- Concurrent System Programming with Effect Handlers, Feb 2018: Using effect handler for writing concurrent programs that interacts with the operating system.
- Effective concurrency with Algebraic Effects, May 2015: A gentle introduction to concurrency story of Multicore OCaml.
- Pearls of Algebraic Effects and Handlers, May 2015: More examples illustrating the power of algebraic effects and handlers abstraction.
- Multicore OCaml, OCaml workshop, Sep 2014.
- Multicore Runtime, March 2014: Initial design document for multicore OCaml. The GC design mostly remains the same.
- A deep dive into Multicore OCaml GC, June 2017.
- Reagents: Lock-free programming for the masses, Aug 2016. (video).
- Arrows and Reagents, Mar 2016.
- Concurrent & Multicore OCaml: A deep dive, Jan 2016.
- Effective Concurrency with Algebraic Effects, OCaml workshop, Sep 2015.
- Multicore OCaml, OCaml workshop, Sep 2014. (video).
- Aeio: Asynchronous effect-based IO.
- effects-examples: A collection of algebraic effects and handlers examples.
- Reagents: A composable lock-free synchronization library for Multicore OCaml.
OCaml-effects: OCaml with support for (unchecked) algebraic effects and handlers. Multicore OCaml story is composed of two parts: concurrency (through algebraic effects and handlers) and parallelism (through domains and a new multicore GC).
OCaml-effectsis vanilla OCaml with algebraic effects but without parallelism support.