Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
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.