OCaml Weekly News

Previous Week Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of March 19 to 26, 2024.

Table of Contents

The Flambda2 Snippets, by OCamlPro

OCamlPro announced

Greetings Cameleers,

Today, we are excited to share with you a first glance at some redactional work that has been brewing behind at the scenes at OCamlPro for quite a some time now!

We are starting a series of blogposts on the Flambda2 project. The goals are plenty, one of them being to give all readers an idea of the inner workings of this great piece of software, 10 years of research & development in the making.

The first two episodes are rather special to the series:

  • Episode 0 gives context and broader information on both the Flambda2 Optimising Compiler project, and the series of blogposts itself.
  • Episode 1, on the other hand, steps right into the subject at hand and covers some of the foundational design decisions of this compiler.

We await your feedback below, and hope that you will enjoy reading these posts, and all ensuing ones!

Kind regards, The OCamlPro Team

Eio 1.0: First major release

Sudha Parimala announced

I'm happy to announce the release of Eio 1.0, its first major release. Eio started as an experimental effects-based library by the same team that was working on Multicore OCaml. We did not initially plan on upstreaming effects with OCaml 5.0. However, thanks to the efforts from the multicore team and OCaml core developers, effect handlers shipped with OCaml 5.0 (making it one of the first mainstream languages to do so). This presented the opportunity to develop effect-based concurrency libraries for OCaml, and Eio was the first of the lot..

Find more about the journey of Eio in this post – Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml

This is the beginning of the journey towards effect-based schedulers! We are keen to hear from you all to shape up what would be Eio 2.0.

If you're looking to get started with Eio, the README is a good place to start. Additionally, @talex5's video introduction, and tutorial to port your Lwt applications to Eio serve as good primers.

I'd like to thank all the contributors for their work and users for their thoughtful feedback. As always, happy to hear feedback about Eio.

Happy hacking!

ppx_minidebug 1.3.0: toward a logging framework

Lukasz Stafiniak announced

Happy to announce ppx_minidebug 1.5.0. It should soon propagate to the opam repository. Two new features since 1.4.0:

  • [%log_entry header_string; body...] syntax to explicitly create log subtrees without polluting with source location information. Note that if you want the source location you could always do let _for_debug : type... = body... in....
  • Minimalistic flame graphs. Example:

    ce80302bd2abf9dbefd401cd7297184da0fa2ad6_2_1380x414.png

    (Note that the output is very configurable, e.g. by default the at elapsed time information is not printed.)

Academic OCaml Users Testimonials!

Claire Vandenberghe announced

Are you an academic user of OCaml?

By sharing your testimonial, you're not only showcasing your expertise and experience but also contributing to the OCaml community.

Your insights can help prospective users understand the academic value of OCaml and inspire them to explore its potential further.

Your testimonial will be featured on our academic user page, inspiring others to explore OCaml's potential.

Tell us:

  1. Your name and academic affiliation.
  2. A brief description of how you’ve used OCaml in your academic endeavors.
  3. Your thoughts on the benefits and challenges of using OCaml.

Thanks

OCaml.org Team

UnixJunkie then replied

Some years ago, I wrote a testimonial in an invited paper:

Chemoinformatics and structural bioinformatics in OCaml https://jcheminf.biomedcentral.com/articles/10.1186/s13321-019-0332-0

Volunteers for ICFP 2024 Artifact Evaluation Committee (AEC)

Benoît Montagu announced

Dear all,

We are looking for motivated people to be members of the ICFP 2024 Artifact Evaluation Committee (AEC). Students, researchers and people from the industry or the free software community are all welcome. The artifact evaluation process aims to improve the quality and reproducibility of research artifacts for ICFP papers. In case you want to nominate someone else (students, colleagues, etc.), please send them the nomination form.

Nomination form: https://forms.gle/KJAjtDzhm5VLxjVf9

Deadline for nominations: Mon April 8th 2024

For more information, see the AEC webpage: https://icfp24.sigplan.org/track/icfp-2024-artifact-evaluation

The primary responsibility of committee members is to review the artifacts submitted corresponding to the already conditionally accepted papers in the main research track. In particular, run the associated tool or benchmark, check whether the results in the paper can be reproduced, and inspect the tool and the data.

We expect evaluation of one artifact to take about a full day. Each committee member will receive 2 to 3 artifacts to review.

All of the AEC work will be done remotely/online. The AEC will work in June, with the review work happening between June 5th and July 5th.

Come join us in improving the quality of research in our field!

Best, the Artifact Evaluation chairs: Quentin Stiévenart and Benoît Montagu

First beta release for OCaml 5.2.0

octachron announced

Nearly two months after the first alpha release, the release of OCaml 5.2.0 is drawing near.

We have thus released a first beta version of OCaml 5.2.0 to help you update your softwares and libraries ahead of the release (see below for the installation instructions).

Compared to the alpha release, this beta contains a majority of runtime system fixes, and a handful of other fixes across many subsystems.

Overall, the opam ecosystem looks in a good shape for the first beta release. Most core development tools support OCaml 5.2.0 or have compatibility patch under review (for odoc and ocamlformat), and you can follow the last remaining wrinkles on the opam readiness for 5.2.0 meta-issue.

If you find any bugs, please report them on OCaml's issue tracker.

Currently, the release is planned for the end of April or the beginning of May.

If you are interested in full list of features and bug fixes of the new OCaml version, the updated change log for OCaml 5.2.0 is available on GitHub.

Installation Instructions

The base compiler can be installed as an opam switch with the following commands on opam 2.1:

opam update
opam switch create 5.2.0~beta1

The source code for the alpha is also available at these addresses:

  • Fine-Tuned Compiler Configuration

    If you want to tweak the configuration of the compiler, you can switch to the option variant with:

    opam update
    opam switch create <switch_name> ocaml-variants.5.2.0~beta1+options <option_list>
    

    where option_list is a space-separated list of ocaml-option-* packages. For instance, for a flambda and no-flat-float-array switch:

    opam switch create 5.2.0~beta1+flambda+nffa ocaml-variants.5.2.0~beta1+options
    ocaml-option-flambda ocaml-option-no-flat-float-array
    

    All available options can be listed with opam search ocaml-option.

Changes since the first alpha

  • Runtime System Fixes
    • #12875, #12879, #12882: Execute preemptive systhread switching as a delayed pending action. This ensures that one can reason within the FFI that no mutation happens on the same domain when allocating on the OCaml heap from C, consistently with OCaml 4. This also fixes further bugs with the multicore systhreads implementation. (Guillaume Munch-Maccagnoni, bug reports and suggestion by Mark Shinwell, review by Nick Barnes and Stephen Dolan)
    • #12876: Port ThreadSanitizer support to Linux on POWER (Miod Vallat, review by Tim McGilchrist)
    • #12678, #12898: free channel buffers on close rather than on finalization (Damien Doligez, review by Jan Midtgaard and Gabriel Scherer, report by Jan Midtgaard)
    • #12915: Port ThreadSanitizer support to Linux on s390x (Miod Vallat, review by Tim McGilchrist)
    • #12914: Slightly change the s390x assembly dialect in order to build with Clang's integrated assembler. (Miod Vallat, review by Gabriel Scherer)
    • #12897: fix locking bugs in Runtime_events (Gabriel Scherer and Thomas Leonard, review by Olivier Nicole, Vincent Laviron and Damien Doligez, report by Thomas Leonard)
    • #12860: Fix an assertion that wasn't taking into account the possibility of an ephemeron pointing at static data. (Mark Shinwell, review by Gabriel Scherer and KC Sivaramakrishnan)
    • #11040, #12894: Silence false data race observed between caml_shared_try_alloc and oldify. Introduces macros to call tsan annotations which help annotate a ~~happens before'' relationship. (Hari Hara Naveen S and Olivier Nicole, review by Gabriel Scherer and Miod Vallat)
    • #12919: Fix register corruption in caml_callback2_asm on s390x. (Miod Vallat, review by Gabriel Scherer)
    • #12969: Fix a data race in caml_darken_cont (Fabrice Buoro and Olivier Nicole, review by Gabriel Scherer and Miod Vallat)
  • Standard Library Fix
    • #12677, #12889: make Domain.DLS thread-safe (Gabriel Scherer, review by Olivier Nicole and Damien Doligez, report by Vesa Karvonen)
  • Type System Fix
    • #12924, #12930: Rework package constraint checking to improve interaction with immediacy (Chris Casinghino and Florian Angeletti, review by Florian Angeletti and Richard Eisenberg)
  • Compiler User-Interface Fix
    • #12971, #12974: fix an uncaught Ctype.Escape exception on some invalid programs forming recursive types. (Gabriel Scherer, review by Florian Angeletti, report by Neven Villani)
  • Build System Fixes
    • #12198, #12321, #12586, #12616, #12706, #13048: continue the merge of the sub-makefiles into the root Makefile started with #11243, #11248, #11268, #11420 and #11675. (Sébastien Hinderer, review by David Allsopp and Florian Angeletti)
    • #12768, #13030: Detect mingw-w64 coupling with GCC or LLVM, detect clang-cl, and fix C compiler feature detection on macOS. (Antonin Décimo, review by Miod Vallat and Sébastien Hinderer)
    • #13019: Remove linking instructions for the Unix library from threads.cma (this was done for threads.cmxa in OCaml 3.11). Eliminates warnings from new lld when using threads.cma of duplicated libraries. (David Allsopp, review by Nicolás Ojeda Bär)
    • #12758, #12998: Remove the Marshal.Compression flag to the Marshal.to_* functions. The compilers are still able to use ZSTD compression for compilation artefacts. This is a forward port and clean-up of the emergency fix that was introduced
  • Compiler Internals Fix
    • #12389, #12544, #12984, +#12987: centralize the handling of metadata for compilation units and artifacts in preparation for better unicode support for OCaml source files. (Florian Angeletti, review by Vincent Laviron and Gabriel Scherer)

Other OCaml News

Old CWN

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 archives.

If you also wish to receive it every week by mail, you may subscribe to the caml-list.