caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Alan Schmitt <>
To: "lwn" <>, "cwn"  <>,,
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 04 Feb 2020 09:47:45 +0100	[thread overview]
Message-ID: <> (raw)

[-- Attachment #1: Type: text/plain, Size: 16468 bytes --]


Here is the latest OCaml Weekly News, for the week of January 28 to
February 04, 2020.

Table of Contents

Multicore OCaml: January 2020 update
Use Case for Ephemerons?
`json-data-encoding' version 0.8 (was `ocplib-json-typed')
Developer position at Abacus Medicine, Copenhagen
Camlp5 version 7.11 release (4.10 compatibility)

Multicore OCaml: January 2020 update


Anil Madhavapeddy announced

  Welcome to the January 2020 news update from the Multicore OCaml team!
  We're going to summarise our activites monthly to highlight what we're
  working on throughout this year. This update has kindly been assembled
  by @shakthimaan and @kayceesrk.

  The most common question we get is how to contribute to the overall
  multicore effort. As I [noted last year], we are now in the process of
  steadily upstreaming our efforts to mainline OCaml. Therefore, the
  best way by far to contribute is to test for regressions or
  opportunities for improvements in the patches that are outstanding in
  the main OCaml repository.

  A secondary benefit would be to review the PRs in the [multicore
  repository], but those tend to be more difficult to evaluate
  externally as they are being spotted as a result of stress testing at
  the moment. A negative contribution would be to raise discussion of
  orthogonal features or new project management mechanisms – this takes
  time and effort to reply to, and the team has a very full plate
  already now that the upstreaming has begun. We don't want to prevent
  those discussions from happening of course, but would appreciate if
  they were directed to the general OCaml bugtracker or another thread
  on this forum.

  We'll first go over the OCaml PRs and issues, then cover the multicore
  repository and our Sandmark benchmarking infrastructure. A new
  initiative to implement and test new parallel algorithms for Multicore
  OCaml is also underway.

[noted last year]

[multicore repository]


◊ Ongoing

  • [ocaml/ocaml#9082] Eventlog tracing system

    Eventlog is a proposal for a new tracing facility for OCaml runtime
    that provides metrics and counters, and uses the Binary Trace Format
    (CTF). The next step to get this merged is to incubate the tracing
    features in separate runtime variant, so it can be selected at
    application link time.

  • [ocaml/ocaml#8984] Towards a new closure representation

    A new layout for closures has been proposed for traversal by the
    garbage collector without the use of a page table. This is very much
    useful for Multicore OCaml and for performance improvements. The PR
    is awaiting review from other developers, and can then be rebased
    against trunk for testing and merge.

  • [ocaml-multicore/ocaml-multicore#187] Better Safe Points

    A patch to regularly poll for inter-domain interrupts to provide
    better safe points is actively being reviewed. This is to ensure
    that any pending interrupts are notified by the runtime system.

  • Work is underway on improving the marshaling (runtime/extern.c) in
    upstream OCaml to avoid using GC mark bits to represent visitedness,
    and to use a hash table (addrmap) implementation.

  [ocaml/ocaml#9082] <>

  [ocaml/ocaml#8984] <>


◊ Completed

  The following PRs have been merged to upstream OCaml trunk:

  • [ocaml/ocaml#8713] Move C global variables to a dedicated structure

    This PR moves the C global variables to a "domain state"
    table. Every domain requires its own table of domain local
    variables, and hence this is required for Multicore runtime.

    This uncovered a number of [compatability issues] with the C header
    files, which were all included in the recent OCaml 4.10.0+beta2
    release via the next item.

  • [ocaml/ocaml#9253] Move back `caml_*' to thematic headers

    The `caml_*' definitions from runtime/caml/compatibility.h have been
    moved to provide a compatible API for OCaml versions 4.04 to
    4.10. This change is also useful for Multicore domains that have
    their own state.

  [ocaml/ocaml#8713] <>

  [compatability issues] <>

  [ocaml/ocaml#9253] <>

Multicore OCaml

  The following PRs have been merged into the Multicore OCaml trees:

  • [ocaml-multicore/ocaml-multicore#275] Fix lazy behaviour for

    A `caml_obj_forward_lazy()' function is implemented to handle lazy
    values in Multicore Ocaml.

  • [ocaml-multicore/ocaml-multicore#269] Move from a global
    `pools_to_rescan' to a domain-local one

    During stress testing, a segmentation fault occurred when a pool was
    being rescanned while a domain was allocating in to it. The rescan
    has now been moved to the domain local, and hence this situation
    will not occur again.

  • [ocaml-multicore/ocaml-multicore#268] Fix for a few space leaks

    The space leaks that occurred during domain spawning and termination
    when performing the stress tests have been fixed in this PR.

  • [ocaml-multicore/ocaml-multicore#272] Fix for DWARF CFI for
    non-allocating external calls

    The entry to `caml_classify_float_unboxed' caused a corrupted
    backtrace, and a fix that clearly specifies the boundary between
    OCaml and C has been provided.

  • An effort to implement a synchronized minor garbage collector for
    Multicore OCaml is actively being researched and worked
    upon. Benchmarking for a work-sharing parallel stop-the-world branch
    against multicore trunk has been performed along with clearing
    technical debt, handling race conditions, and fixing segmentation
    faults. The C-API reversion changes have been tested and merged into
    the stop-the-world minor GC branch for Multicore OCaml.






  • The [Sandmark] performance benchmarking infrastructure has been
    improved for backfilling data, tracking branches and naming

  • Numerical parallel benchmarks have been added to the Multicore

  • An [Irmin] macro benchmark has been included in Sandmark. A test for
    measuring Irmin's merge capabilities with Git as its filesystem is
    being tested with different read and write rates.

  • Work is also underway to implement parallel algorithms for N-body,
    reverse-complement, k-nucleotide, binary-trees, fasta,
    fannkuch-redux, regex-redux, Game of Life, RayTracing, Barnes Hut,
    Count Graphs, SSSP and from the MultiMLton benchmarks to test on
    Multicore OCaml.

[Sandmark] <>

[Irmin] <>


  • A chapter on Parallel Programming in Multicore OCaml is being
    written and an early draft will be made available to the community
    for their feedback. It is based on Domains, with examples to
    implement array sums, Pi approximation, and trapezoidal rules for
    definite integrals.


  • API: Application Programming Interface
  • CTF: Common Trace Format
  • CFI: Call Frame Information
  • DWARF: Debugging With Attributed Record Formats
  • GC: Garbage Collector
  • PR: Pull Request
  • SSSP: Single Source Shortest Path

Nicolas Tollenaere asked

  If I may ask a question, I am curious about the status of integration
  of effects into the type system. According to this page
  original plan was to merge an untyped version of effect, before it was
  decided to integrate them into the system. I have seen this
  presentation of leo white on this matter
  <> along
  with this one <> (from
  2016). My understanding was that, at the time of the last
  presentation, there was still some theoretical issues to be solved
  (although the speaker did not seem too worried about finding some way
  around eventually). I have no idea about the current status of the
  project. Reading your post it seems that you are now in an integration
  phase (PR reviews and all) that would imply that you're done with
  (most) theoretical questions. But that could either mean that you are
  integrating an untyped version of effects (and the type system is let
  for future development) or that you have indeed settled on a
  design. Which one is it ? Anyway, thanks for the post and the work in
  general, this project seems awesome (even if I did not dive into it
  too much until now)

Anil Madhavapeddy replied

  Good question; our current focus in getting the runtime components
  upstreamed (the "Domains" API) and some of the mechanisms that could
  be used by an effect system.  We haven't yet settled on a final design
  for an effect extension to OCaml, but the general preference is to
  skip integrating an untyped effect system if a typed version lands in
  the right timescales. This will happen after all the runtime pieces
  are upstreamed, which will allow everyone to use multicore parallelism
  via the lower-level Domains API.

Use Case for Ephemerons?

  Archive: <>

Continuing this old thread, Yawar Amin said

  [Here's another use] (disclaimer: this is my project).

  What's happening here is that I'm using an 'ephemeral cache' (i.e. a
  cache backed by an ephemeron hash table, [here]) to store subscribers
  to a 'topic', i.e. a pub-sub bus. You get a subscription token when
  you subscribe to a topic, and part of that token is the cache key. The
  cache is 'ephemeral' so as soon as the subscription token goes out of
  scope, it and its corresponding subscription (concretely, the stream
  and its push function) are automatically deleted from the cache.

  Hence, there's no 'unsubscribe' or 'close topic' functionality–it's
  assumed that you want to unsubscribe if you let the subscription token
  go out of scope.

[Here's another use]


`json-data-encoding' version 0.8 (was `ocplib-json-typed')


Raphaël Proust announced

  I'm happy to announce that Nomadic Labs is now in charge of the
  development, maintenance and release of `json-data-encoding' – the
  library previously known as `ocplib-json-typed'. Even though we are
  changing to a more descriptive name, we are maintaining continuity of
  version numbers. As a result, this is an announce for the version

  The library `json-data-encoding' lets you define encodings for a given
  OCaml type, and use that encoding to encode values of that type into
  JSON or decode JSON into values of that type. The library supports
  multiple JSON backends: `Ezjsonm', `Yojson', native browser
  representation (for `js_of_ocaml', via the package
  `json-data-encoding-browser') and `BSON' (via the package

  It is available via `opam' (`opam install json-data-encoding') and
  hosted on <>

  Changes from the version v0.7 include:
  • extensive tests using `Crowbar' (adapted from similar tests on
    `data-encoding' originally by @gasche)
  • minor documentation improvements
  • improved self documentation capabilities for unions' cases (work by
  • improved schema equality (work by @rbardou)

Developer position at Abacus Medicine, Copenhagen


mokn announced

  Abacus Medicine has an open developer position. We do parallel
  distribution of medicine in EU and for that we have developed a system
  to handle the trading. A part of this system is developed in OCaml.

  Unfortunately the job description is only in danish, but we do accept
  applications in english: [Job description]

[Job description]

Camlp5 version 7.11 release (4.10 compatibility)


Chet Murthy announced

  New release 7.11 of Camlp5. Compatible with all OCaml versions >=
  4.00.0, latest OCaml version 4.10+beta2 included.

  Main improvement: compatible with 4.10's blank module names and
  generative functors.

  Home page, including downloading and documentation at:


  N.B. I'm new to helping out with camlp5, so might have made some
  mistakes; any users who find problems should contact me either
  directly, or (better) thru issues on
  <> and I'll be sure to get
  right on it.

  N.B.#2: There are still lots of gaps between current Ocaml, and
  Camlp5's support; I'm working on fixing that, and there'll soon be a
  release that brings camlp5 as up-to-date as possible with Ocaml.


  If you happen to miss a CWN, you can [send me a message] and I'll mail
  it to you, or go take a look at [the archive] or the [RSS feed of the

  If you also wish to receive it every week by mail, you may subscribe

  [Alan Schmitt]

[send me a message] <>

[the archive] <>

[RSS feed of the archives] <>

[online] <>

[Alan Schmitt] <>

[-- Attachment #2: Type: text/html, Size: 29138 bytes --]

             reply	other threads:[~2020-02-04  8:47 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-04  8:47 Alan Schmitt [this message]
2020-02-05  7:12 ` [Caml-list] General description of Multicore OCaml? David MENTRÉ
2020-02-05  7:40   ` Sivaramakrishnan KC
2020-02-08 10:27     ` David MENTRÉ
  -- strict thread matches above, loose matches on Subject: below --
2022-07-26 17:54 [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Alan Schmitt
2022-07-19  8:58 Alan Schmitt
2022-07-12  7:59 Alan Schmitt
2022-07-05  7:42 Alan Schmitt
2022-06-28  7:37 Alan Schmitt
2022-06-21  8:06 Alan Schmitt
2022-06-14  9:29 Alan Schmitt
2022-06-07 10:15 Alan Schmitt
2022-05-31 12:29 Alan Schmitt
2022-05-24  8:04 Alan Schmitt
2022-05-17  7:12 Alan Schmitt
2022-05-10 12:30 Alan Schmitt
2022-05-03  9:11 Alan Schmitt
2022-04-26  6:44 Alan Schmitt
2022-04-19  5:34 Alan Schmitt
2022-04-12  8:10 Alan Schmitt
2022-04-05 11:50 Alan Schmitt
2022-03-29  7:42 Alan Schmitt
2022-03-22 13:01 Alan Schmitt
2022-03-15  9:59 Alan Schmitt
2022-03-01 13:54 Alan Schmitt
2022-02-22 12:43 Alan Schmitt
2022-02-08 13:16 Alan Schmitt
2022-02-01 13:00 Alan Schmitt
2022-01-25 12:44 Alan Schmitt
2022-01-11  8:20 Alan Schmitt
2022-01-04  7:56 Alan Schmitt
2021-12-28  8:59 Alan Schmitt
2021-12-21  9:11 Alan Schmitt
2021-12-14 11:02 Alan Schmitt
2021-11-30 10:51 Alan Schmitt
2021-11-16  8:41 Alan Schmitt
2021-11-09 10:08 Alan Schmitt
2021-11-02  8:50 Alan Schmitt
2021-10-19  8:23 Alan Schmitt
2021-09-28  6:37 Alan Schmitt
2021-09-21  9:09 Alan Schmitt
2021-09-07 13:23 Alan Schmitt
2021-08-24 13:44 Alan Schmitt
2021-08-17  6:24 Alan Schmitt
2021-08-10 16:47 Alan Schmitt
2021-07-27  8:54 Alan Schmitt
2021-07-20 12:58 Alan Schmitt
2021-07-06 12:33 Alan Schmitt
2021-06-29 12:24 Alan Schmitt
2021-06-22  9:04 Alan Schmitt
2021-06-01  9:23 Alan Schmitt
2021-05-25  7:30 Alan Schmitt
2021-05-11 14:47 Alan Schmitt
2021-05-04  8:57 Alan Schmitt
2021-04-27 14:26 Alan Schmitt
2021-04-20  9:07 Alan Schmitt
2021-04-06  9:42 Alan Schmitt
2021-03-30 14:55 Alan Schmitt
2021-03-23  9:05 Alan Schmitt
2021-03-16 10:31 Alan Schmitt
2021-03-09 10:58 Alan Schmitt
2021-02-23  9:51 Alan Schmitt
2021-02-16 13:53 Alan Schmitt
2021-02-02 13:56 Alan Schmitt
2021-01-26 13:25 Alan Schmitt
2021-01-19 14:28 Alan Schmitt
2021-01-12  9:47 Alan Schmitt
2021-01-05 11:22 Alan Schmitt
2020-12-29  9:59 Alan Schmitt
2020-12-22  8:48 Alan Schmitt
2020-12-15  9:51 Alan Schmitt
2020-12-01  8:54 Alan Schmitt
2020-11-03 15:15 Alan Schmitt
2020-10-27  8:43 Alan Schmitt
2020-10-20  8:15 Alan Schmitt
2020-10-06  7:22 Alan Schmitt
2020-09-29  7:02 Alan Schmitt
2020-09-22  7:27 Alan Schmitt
2020-09-08 13:11 Alan Schmitt
2020-09-01  7:55 Alan Schmitt
2020-08-18  7:25 Alan Schmitt
2020-07-28 16:57 Alan Schmitt
2020-07-21 14:42 Alan Schmitt
2020-07-14  9:54 Alan Schmitt
2020-07-07 10:04 Alan Schmitt
2020-06-30  7:00 Alan Schmitt
2020-06-16  8:36 Alan Schmitt
2020-06-09  8:28 Alan Schmitt
2020-05-19  9:52 Alan Schmitt
2020-05-12  7:45 Alan Schmitt
2020-05-05  7:45 Alan Schmitt
2020-04-28 12:44 Alan Schmitt
2020-04-21  8:58 Alan Schmitt
2020-04-14  7:28 Alan Schmitt
2020-04-07  7:51 Alan Schmitt
2020-03-31  9:54 Alan Schmitt
2020-03-24  9:31 Alan Schmitt
2020-03-17 11:04 Alan Schmitt
2020-03-10 14:28 Alan Schmitt
2020-03-03  8:00 Alan Schmitt
2020-02-25  8:51 Alan Schmitt
2020-02-18  8:18 Alan Schmitt
2020-01-28 10:53 Alan Schmitt
2020-01-21 14:08 Alan Schmitt
2020-01-14 14:16 Alan Schmitt
2020-01-07 13:43 Alan Schmitt
2019-12-31  9:18 Alan Schmitt
2019-12-17  8:52 Alan Schmitt
2019-12-10  8:21 Alan Schmitt
2019-12-03 15:42 Alan Schmitt
2019-11-26  8:33 Alan Schmitt
2019-11-12 13:21 Alan Schmitt
2019-11-05  6:55 Alan Schmitt
2019-10-15  7:28 Alan Schmitt
2019-09-03  7:35 Alan Schmitt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).