• Stars
    star
    763
  • Rank 57,609 (Top 2 %)
  • Language
    OCaml
  • License
    Other
  • Created about 9 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Multicore OCaml

πŸ“’ Note πŸ“’

Multicore OCaml project has now been merged into OCaml πŸŽ‰. This repository is no longer developed or maintained. Please follow the updates at the OCaml Github repository.

Citation

If you are citing this work in an academic paper, please cite the ICFP 2020 paper "Retrofitting Parallelism onto OCaml": https://dl.acm.org/doi/10.1145/3408995


Branch trunk Branch 4.14 Branch 4.13 Branch 4.12

Github CI Build Status (trunk branch) Github CI Hygiene Status (trunk branch) AppVeyor Build Status (trunk branch)

Github CI Build Status (4.14 branch) AppVeyor Build Status (4.14 branch)

TravisCI Build Status (4.13 branch) AppVeyor Build Status (4.13 branch)

TravisCI Build Status (4.12 branch) AppVeyor Build Status (4.12 branch)

README

Overview

OCaml is a functional, statically-typed programming language from the ML family, offering a powerful module system extending that of Standard ML and a feature-rich, class-based object system.

OCaml comprises two compilers. One generates bytecode which is then interpreted by a C program. This compiler runs quickly, generates compact code with moderate memory requirements, and is portable to many 32 or 64 bit platforms. Performance of generated programs is quite good for a bytecoded implementation. This compiler can be used either as a standalone, batch-oriented compiler that produces standalone programs, or as an interactive REPL system.

The other compiler generates high-performance native code for a number of processors. Compilation takes longer and generates bigger code, but the generated programs deliver excellent performance, while retaining the moderate memory requirements of the bytecode compiler. The native-code compiler currently runs on the following platforms:

Tier 1 (actively maintained) Tier 2 (maintained when possible)

x86 64 bits

Linux, macOS, Windows, FreeBSD

NetBSD, OpenBSD

x86 32 bits

Linux, Windows

FreeBSD, NetBSD, OpenBSD

ARM 64 bits

Linux, macOS

FreeBSD

ARM 32 bits

Linux

FreeBSD, NetBSD, OpenBSD

Power 64 bits

Linux

Power 32 bits

Linux

RISC-V 64 bits

Linux

IBM Z (s390x)

Linux

Other operating systems for the processors above have not been tested, but the compiler may work under other operating systems with little work.

All files marked "Copyright INRIA" in this distribution are Copyright Β© 1996-2021 Institut National de Recherche en Informatique et en Automatique (INRIA) and distributed under the conditions stated in file LICENSE.

Installation

See the file INSTALL.adoc for installation instructions on machines running Unix, Linux, macOS, WSL and Cygwin. For native Microsoft Windows, see README.win32.adoc.

Documentation

The OCaml manual is distributed in HTML, PDF, and Emacs Info files. It is available at

Availability

The complete OCaml distribution can be accessed at

Keeping in Touch with the Caml Community

There is an active and friendly discussion forum at

The OCaml mailing list is the longest-running forum for OCaml users. You can email it at

You can subscribe and access list archives via the Web interface at

An alternative archive of the mailing list is also available at

There also exist other mailing lists, chat channels, and various other forums around the internet for getting in touch with the OCaml and ML family language community. These can be accessed at

In particular, the IRC channel #ocaml on Libera has a long history and welcomes questions.

Bug Reports and User Feedback

Please report bugs using the issue tracker at https://github.com/ocaml/ocaml/issues

To be effective, bug reports should include a complete program (preferably small) that exhibits the unexpected behavior, and the configuration you are using (machine type, etc).

For information on contributing to OCaml, see HACKING.adoc and CONTRIBUTING.md.

Separately maintained components

Some libraries and tools which used to be part of the OCaml distribution are now maintained separately. Please use the issue trackers at their respective new homes:

More Repositories

1

ocaml-effects-tutorial

Concurrent Programming with Effect Handlers
OCaml
642
star
2

eio

Effects-based direct-style IO for multicore OCaml
OCaml
509
star
3

effects-examples

Examples to illustrate the use of algebraic effects in Multicore OCaml
OCaml
403
star
4

parallel-programming-in-multicore-ocaml

Tutorial on Multicore OCaml parallel programming with domainslib
OCaml
277
star
5

ocaml5-tutorial

A hands-on tutorial on the new parallelism features in OCaml 5
OCaml
193
star
6

saturn

Lock-free data structures for multicore OCaml
OCaml
173
star
7

domainslib

Parallel Programming over Domains
OCaml
161
star
8

awesome-multicore-ocaml

A collection of libraries, experiments and ideas relating to OCaml 5 (multicore + effects)
141
star
9

reagents

Reagents for multicore OCaml
OCaml
126
star
10

kcas

Software Transactional Memory for OCaml
OCaml
91
star
11

meio

Monitor Eio programs
OCaml
76
star
12

ocaml-uring

Bindings to io_uring for OCaml
OCaml
62
star
13

multicore-opam

OPAM repo for OCaml multicore development
53
star
14

picos

Interoperable effects based concurrency
OCaml
51
star
15

multicoretests

PBT testsuite and libraries for testing multicore OCaml
OCaml
36
star
16

lwt_eio

Use Lwt libraries from within Eio
OCaml
33
star
17

eventlog-tools

Tools for the runtime tracing in OCaml 4.11.0 and higher
OCaml
31
star
18

multicore-talks

Repository containing slides and examples from the 2020 OCaml Workshop talk on "Parallelising your OCaml code with Multicore OCaml"
TeX
30
star
19

dscheck

Experimental model checker for testing concurrent algorithms
OCaml
29
star
20

ocaml-iomux

Io multiplexers bindings for ocaml (poll/kqueue/epoll and so on)
OCaml
27
star
21

retro-httpaf-bench

Benchmarking environment for http servers
Jupyter Notebook
21
star
22

icfp-2023-eio-tutorial

Lwt to Eio tutorial
OCaml
20
star
23

ocaml-tsan

Race detection in OCaml using the ThreadSanitizer runtime analysis.
OCaml
20
star
24

par_incr

Parallel version of incremental library
OCaml
19
star
25

ocaml-iocp

OCaml bindings to Windows' IOCP API
OCaml
17
star
26

hdr_histogram_ocaml

C
12
star
27

tezos

Tezos running on Multicore OCaml
OCaml
12
star
28

multicore-ocaml-verify

Verifying bits of Multicore OCaml implementation
Makefile
11
star
29

multicore-magic

Low-level multicore utilities for OCaml
OCaml
11
star
30

domain-local-await

A scheduler independent blocking mechanism
OCaml
11
star
31

eio-trace

Trace visualisation tool for Eio programs
OCaml
10
star
32

parafuzz

Property-based grey-box fuzzing for Multicore OCaml
OCaml
9
star
33

backoff

Exponential backoff mechanism
OCaml
9
star
34

eio_js

Eio for JavaScript environments
OCaml
7
star
35

multicore-bench

Framework for benchmarking on multiple cores on current-bench
OCaml
7
star
36

docs

Docs
5
star
37

thread-table

A lock-free thread-safe integer keyed hash table
OCaml
4
star
38

domain-local-timeout

A scheduler independent timeout mechanism
OCaml
3
star
39

dwarf_validator

Tool for validating wellformedness of DWARF unwind information
Python
3
star
40

eio_browser

Eio backend for the browser
OCaml
3
star
41

single-use-event

A scheduler agnostic blocking mechanism
OCaml
1
star