[Caml-list] Attn: Development Editor, Latest OCaml Weekly News

Alan Schmitt
2024-03-26T07:11:12Z

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

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
Eio 1.0: First major release
ppx_minidebug 1.3.0: toward a logging framework
Academic OCaml Users Testimonials!
Volunteers for ICFP 2024 Artifact Evaluation Committee (AEC)
First beta release for OCaml 5.2.0
Other OCaml News
Old CWN

The Flambda2 Snippets, by OCamlPro
══════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/blog-the-flambda2-snippets-by-ocamlpro/14331/1>

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

[Episode 0]
<https://ocamlpro.com/blog/2024_03_18_the_flambda2_snippets_0/>

[Episode 1]
<https://ocamlpro.com/blog/2024_03_19_the_flambda2_snippets_1/>

Eio 1.0: First major release
════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-eio-1-0-first-major-release/14334/1>

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!

[Eio 1.0] <https://github.com/ocaml-multicore/eio/releases/tag/v1.0>

[ Eio 1.0 Release: Introducing a new Effects-Based I/O Library for
OCaml]
<https://tarides.com/blog/2024-03-20-eio-1-0-release-introducing-a-new-effects-based-i-o-library-for-ocaml/>

[README] <https://github.com/ocaml-multicore/eio/blob/main/README.md>

[video introduction] <https://watch.ocaml.org/w/1k1T919WGXoT4tjnRZEmMd>

[tutorial to port your Lwt applications to Eio]
<https://github.com/ocaml-multicore/icfp-2023-eio-tutorial>

ppx_minidebug 1.3.0: toward a logging framework
═══════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/ann-ppx-minidebug-1-3-0-toward-a-logging-framework/14213/3>

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:

<https://global.discourse-cdn.com/business7/uploads/ocaml/optimized/2X/c/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!
══════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/academic-ocaml-users-testimonials/14338/1>

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)
════════════════════════════════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/volunteers-for-icfp-2024-artifact-evaluation-committee-aec/14355/1>

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
══════════════════════════════════

Archive:
<https://discuss.ocaml.org/t/first-beta-release-for-ocaml-5-2-0/14356/1>

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

[opam readiness for 5.2.0 meta-issue]
<https://github.com/ocaml/opam-repository/issues/25182>

[OCaml's issue tracker] <https://github.com/ocaml/ocaml/issues>

[on GitHub] <https://github.com/ocaml/ocaml/blob/5.2/Changes>

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:

• [GitHub]
• [OCaml archives at Inria]

[GitHub] <https://github.com/ocaml/ocaml/archive/5.2.0-beta1.tar.gz>

[OCaml archives at Inria]
<https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~beta1.tar.gz>

◊ 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)

[#12875] <https://github.com/ocaml/ocaml/issues/12875>

[#12879] <https://github.com/ocaml/ocaml/issues/12879>

[#12882] <https://github.com/ocaml/ocaml/issues/12882>

[#12876] <https://github.com/ocaml/ocaml/issues/12876>

[#12678] <https://github.com/ocaml/ocaml/issues/12678>

[#12898] <https://github.com/ocaml/ocaml/issues/12898>

[#12915] <https://github.com/ocaml/ocaml/issues/12915>

[#12914] <https://github.com/ocaml/ocaml/issues/12914>

[#12897] <https://github.com/ocaml/ocaml/issues/12897>

[#12860] <https://github.com/ocaml/ocaml/issues/12860>

[#11040] <https://github.com/ocaml/ocaml/issues/11040>

[#12894] <https://github.com/ocaml/ocaml/issues/12894>

[#12919] <https://github.com/ocaml/ocaml/issues/12919>

[#12969] <https://github.com/ocaml/ocaml/issues/12969>

◊ Standard Library Fix

• [#12677], [#12889]: make Domain.DLS thread-safe (Gabriel Scherer,
review by Olivier Nicole and Damien Doligez, report by Vesa
Karvonen)

[#12677] <https://github.com/ocaml/ocaml/issues/12677>

[#12889] <https://github.com/ocaml/ocaml/issues/12889>

◊ 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)

[#12924] <https://github.com/ocaml/ocaml/issues/12924>

[#12930] <https://github.com/ocaml/ocaml/issues/12930>

◊ 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)

[#12971] <https://github.com/ocaml/ocaml/issues/12971>

[#12974] <https://github.com/ocaml/ocaml/issues/12974>

◊ 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

[#12198] <https://github.com/ocaml/ocaml/issues/12198>

[#12321] <https://github.com/ocaml/ocaml/issues/12321>

[#12586] <https://github.com/ocaml/ocaml/issues/12586>

[#12616] <https://github.com/ocaml/ocaml/issues/12616>

[#12706] <https://github.com/ocaml/ocaml/issues/12706>

[#13048] <https://github.com/ocaml/ocaml/issues/13048>

[#11243] <https://github.com/ocaml/ocaml/issues/11243>

[#11248] <https://github.com/ocaml/ocaml/issues/11248>

[#11268] <https://github.com/ocaml/ocaml/issues/11268>

[#11420] <https://github.com/ocaml/ocaml/issues/11420>

[#11675] <https://github.com/ocaml/ocaml/issues/11675>

[#12768] <https://github.com/ocaml/ocaml/issues/12768>

[#13030] <https://github.com/ocaml/ocaml/issues/13030>

[#13019] <https://github.com/ocaml/ocaml/issues/13019>

[#12758] <https://github.com/ocaml/ocaml/issues/12758>

[#12998] <https://github.com/ocaml/ocaml/issues/12998>

◊ 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)

[#12389] <https://github.com/ocaml/ocaml/issues/12389>

[#12544] <https://github.com/ocaml/ocaml/issues/12544>

[#12984] <https://github.com/ocaml/ocaml/issues/12984>

[#12987] <https://github.com/ocaml/ocaml/issues/12987>

Other OCaml News
════════════════

>From the ocaml.org blog
───────────────────────

Here are links from many OCaml blogs aggregated at [the ocaml.org
blog].

• [Eio 1.0 Release: Introducing a new Effects-Based I/O Library for
OCaml]
• [CPS Representation and Foundational Design Decisions in Flambda2]
• [The Flambda2 Snippets, Episode 0 ]

[the ocaml.org blog] <https://ocaml.org/blog/>

[Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml]
<https://tarides.com/blog/2024-03-20-eio-1-0-release-introducing-a-new-effects-based-i-o-library-for-ocaml>

[CPS Representation and Foundational Design Decisions in Flambda2]
<https://ocamlpro.com/blog/2024_03_19_the_flambda2_snippets_1>

[The Flambda2 Snippets, Episode 0 ]
<https://ocamlpro.com/blog/2024_03_18_the_flambda2_snippets_0>

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

[Alan Schmitt]

[send me a message] <mailto:alan.schmitt@polytechnique.org>

[the archive] <https://alan.petitepomme.net/cwn/>

[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>

[caml-list] <https://sympa.inria.fr/sympa/info/caml-list>

[Alan Schmitt] <https://alan.petitepomme.net/>

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