The causality project
Causality
is a framework to write executable interpreters of programming language that are causal, ie. describing the causal relationships between actions instead of the possible sequential execution of a program (traces). This is extremely important in this day and age as programs are rarely executed in order: both compilers and processors perform reordering executions. Distributed systems might also not be able to preserve some sequential order of programs to improve performance.
The main component of the framework is an OCaml library implementing a monad for true concurrent operations:
Quick demo: Start by exploring the causal behaviours of OCaml programs, extended with concurrency (Project page).
Quick Start: Install
Causality
and write your first causal interpreter !Tutorial: Write a shared-memory interpreter: Write a causal interpreter for an imperative program with shared-memmory (with sequential consistent semantics)
Manual of the library for more advanced description of the possibilities of the library.
Any questions? Feel free to contact me.