# Multicore OCaml: August 2021

**URL:** <https://discuss.ocaml.org/t/multicore-ocaml-august-2021/8484>\
**Category:** Community\
**Tags:** multicore, multicore-monthly\
**Created:** [September 13, 2021, 9:41am UTC](https://discuss.ocaml.org/t/multicore-ocaml-august-2021/8484 "2021-09-13T09:41:29Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![avsm](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ocaml.org/avsm/32/6_2.png) [@avsm](https://discuss.ocaml.org/u/avsm)\
**Post date:** [September 13, 2021, 9:41am UTC](https://discuss.ocaml.org/t/multicore-ocaml-august-2021/8484/1 "2021-09-13T09:41:29Z")

</div>

# Multicore OCaml: August 2021

Welcome to the August 2021 [Multicore OCaml](https://github.com/ocaml-multicore/ocaml-multicore) monthly report! The following update and the [previous updates](https://discuss.ocaml.org/tag/multicore-monthly) have been compiled by me, @ctk21, @kayceesrk and @shakthimaan. This month’s update is a bit quieter as August is also a period of downtime in Europe (and our crew in India also took well-deserved time off), but we all participated in the [online OCaml Workshop](https://discuss.ocaml.org/t/ocaml-workshop-2021-live-stream/8366) which was held virtually this year, so there are plenty of videos to watch!

The multicore effort is all on track for integration into OCaml 5.0 early next year, with the core team currently organising the upstreaming code review strategy over the coming winter months. Meanwhile, there are some blog posts and videos from the OCaml Workshop which give more detailed updates on both domains-parallelism and effects.

- **Adapting the OCaml ecosystem for Multicore OCaml**
  - _This talk covers how our community can adapt to the forthcoming OCaml 5.0 with parallelism._
  - [Blog post 1](http://segfault.systems/blog/2021/adapting-to-multicore/), [Blog post 2](https://tarides.com/blog/2021-08-26-tarides-engineers-to-present-at-icfp-2021)
  - [Video](https://watch.ocaml.org/videos/watch/629b89a8-bbd5-490d-98b0-d0c740912b02)

- **Parafuzz coverage guided Property Fuzzing for Multicore OCaml programs**
  - _We develop ParaFuzz, an input and concurrency fuzzing tool for Multicore OCaml programs. ParaFuzz builds on top of Crowbar which combines AFL-based grey box fuzzing with QuickCheck and extends it to handle parallelism._
  - [Video](https://watch.ocaml.org/videos/watch/c0d591e0-91c9-4eaa-a4d7-c4f514de0a57)

- **Experiences with Effects**
  - _The multicore branch of OCaml adds support for effect handlers. In this talk, we report our experiences with effects, both from converting existing code, and from writing new code._
  - [Video](https://watch.ocaml.org/videos/watch/74ece0a8-380f-4e2a-bef5-c6bb9092be89)

As always, the Multicore OCaml updates are listed first, which are then followed by the updates from the Ecosystem libraries and Sandmark benchmarking.

## Multicore OCaml

- [ocaml-multicore/ocaml-multicore#632](https://github.com/ocaml-multicore/ocaml-multicore/issues/632)  
Str module multi domain safety

- [ocaml-multicore/ocaml-multicore#633](https://github.com/ocaml-multicore/ocaml-multicore/issues/633)  
Error building 4.12.0+domains with no-flat-float-arrays

- [ocaml-multicore/ocaml-multicore#634](https://github.com/ocaml-multicore/ocaml-multicore/issues/634)  
Strange type errors from merlin (This expression has type string/1)

- [ocaml-multicore/ocaml-multicore#624](https://github.com/ocaml-multicore/ocaml-multicore/issues/624)  
core v0.14: test triggers a segfault in the GC

- [ocaml-multicore/ocaml-multicore#573](https://github.com/ocaml-multicore/ocaml-multicore/pull/573)  
Backport trunk safepoints PR to multicore

## Ecosystem

### Ongoing

- [ocaml-multicore/parallel-programming-in-multicore-ocaml#10](https://github.com/ocaml-multicore/parallel-programming-in-multicore-ocaml/pull/10)  
Edited for flow/syntax/consistency

- [ocaml-multicore/retro-httpaf-bench#15](https://github.com/ocaml-multicore/retro-httpaf-bench/pull/15)  
Optimise Go code

- [ocaml-multicore/ocaml-uring#37](https://github.com/ocaml-multicore/ocaml-uring/issues/37)  
`poll_add` test hangs on s390x

- [ocaml-multicore/domainslib#37](https://github.com/ocaml-multicore/domainslib/issues/37)  
parallel\_map

- [ocaml-multicore/domainslib#39](https://github.com/ocaml-multicore/domainslib/pull/39)  
Add a fast path in parallel scan

- [ocaml-multicore/domainslib#40](https://github.com/ocaml-multicore/domainslib/pull/40)  
Parallel map

### Completed

- [ocaml-multicore/retro-httpaf-bench#13](https://github.com/ocaml-multicore/retro-httpaf-bench/pull/13)  
Update EIO for performance improvements, multiple domains

- [ocaml-multicore/ocaml-uring#36](https://github.com/ocaml-multicore/ocaml-uring/pull/36)  
Update to cstruct 6.0.1

- [ocaml-multicore/domainslib#41](https://github.com/ocaml-multicore/domainslib/pull/41)  
Use the master branch in the link to usage examples

- The Multicore OCaml concurrency bug detection tool named [ParaFuzz](https://github.com/ocaml-multicore/parafuzz) is now available in GitHub as Free/Libre and Open Source Software.

- Tezos is a proof-of-stake distributed consensus platform designed to evolve, and is written in OCaml. The version of the [Tezos](https://github.com/ocaml-multicore/tezos) daemon that now runs on Multicore OCaml is also available in GitHub as a work-in-progress fork.

#### Eio

The `eio` library provides an effects-based parallel IO stack for  
Multicore OCaml.

##### Completed

- [ocaml-multicore/eio#68](https://github.com/ocaml-multicore/eio/pull/68)  
Add eio\_luv backend

- [ocaml-multicore/eio#72](https://github.com/ocaml-multicore/eio/pull/72)  
Add non-deterministic to abstract domain socket test

- [ocaml-multicore/eio#73](https://github.com/ocaml-multicore/eio/pull/73)  
Work-around for `io_uring` bug reading from terminals

- [ocaml-multicore/eio#74](https://github.com/ocaml-multicore/eio/pull/74)  
Don’t crash when receiving a signal

- [ocaml-multicore/eio#75](https://github.com/ocaml-multicore/eio/pull/75)  
Add Eio.Stream

- [ocaml-multicore/eio#76](https://github.com/ocaml-multicore/eio/pull/76)  
Link to some eio examples

- [ocaml-multicore/eio#77](https://github.com/ocaml-multicore/eio/pull/77)  
Disable opam file generation due to dune bug

- [ocaml-multicore/eio#79](https://github.com/ocaml-multicore/eio/pull/79)  
Initial edits for consistency, formatting and clarity

## Benchmarking

### Sandmark

- [ocaml-bench/sandmark#251](https://github.com/ocaml-bench/sandmark/pull/251)  
Update dependencies to work with 4.14.0+trunk

- We are continuing to integrate and test building of 4.12.0 OCaml  
variants with Sandmark-2.0 with `current-bench` for both sequential  
and parallel benchmarks.

Our thanks to all the OCaml users, developers and contributors in the  
community for their valuable time and support to the project. Stay  
safe!

## Acronyms

- GC: Garbage Collector
- GDB: GNU Project Debugger
- HTTP: Hypertext Transfer Protocol
- ICFP: International Conference on Functional Programming
- IO: Input/Output
- PR: Pull Request
- OPAM: OCaml Package Manager
- VM: Virtual Machine

---

_[View the full topic](https://discuss.ocaml.org/t/multicore-ocaml-august-2021/8484)._
