Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Alan Schmitt <alan.schmitt@polytechnique.org>
To: "lwn" <lwn@lwn.net>, caml-list@inria.fr
Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News
Date: Tue, 10 Jun 2025 15:36:40 +0200	[thread overview]
Message-ID: <m2bjqvlnvb.fsf@petitepomme.net> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of June 03 to 10,
2025.

Table of Contents
─────────────────

Portable External Dependencies for Dune Package Management
Semgrep is hiring OCaml developers to work on the static analysis engine
Elpe, a config-as-code build system written in OCaml+Rust
Dune dev meeting
Other OCaml News
Old CWN


Portable External Dependencies for Dune Package Management
══════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/portable-external-dependencies-for-dune-package-management/16767/1>


Steve Sherratt announced
────────────────────────

  Dune lock directories record the names of any system packages needed
  to build projects or their dependencies. We've recently changed how
  this works in the interest of portability.


Background on `depexts' in Opam
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  A system package, or external dependency, or `depext' as I'll refer to
  them from now on, is a non-Opam package which must be installed in
  order for some Opam package to be built or for code in a package to be
  executed at runtime. These packages must be installed by the system
  package manager, or by some other non-Opam means such as manually
  building and installing the package from source. Common types of
  `depext' are build tools such as the `pkg-config' command, often run
  to determine linker flags while building a package, or shared
  libraries such as `libgtk', which an OCaml project might link against
  to create GUIs.

  Opam usually installs `depexts' automatically. Opam knows how to
  invoke many different system package managers (such as `apt' or
  `pacman'), so when installing a package with `depexts' Opam can run
  the commands appropriate to the current system to install the required
  packages using the system's package manager. For this to work, Opam
  needs to know the name of the package within the package repository
  appropriate to the current system, and these names can vary from
  system to system. For example the `pkg-config' command is in a package
  named simply `pkg-config' in the `apt' package manager on
  Ubuntu/Debian systems, whereas in the third-party `homebrew' package
  manager on MacOS it's in a package named `pkgconf'. In order to
  determine the right package name for the current system, the package
  metadata for Opam packages with `depexts' contains a list of all the
  different known package names along with the conditions under which
  that name is correct. Here is that list for the `conf-pkg-config' Opam
  package:
  ┌────
  │ depexts: [
  │   ["pkg-config"] {os-family = "debian" | os-family = "ubuntu"}
  │   ["pkgconf"] {os-distribution = "arch"}
  │   ["pkgconf-pkg-config"] {os-family = "fedora"}
  │   ["pkgconfig"] {os-distribution = "centos" & os-version <= "7"}
  │   ["pkgconf-pkg-config"] {os-distribution = "mageia"}
  │   ["pkgconfig"] {os-distribution = "rhel" & os-version <= "7"}
  │   ["pkgconfig"] {os-distribution = "ol" & os-version <= "7"}
  │   ["pkgconf"] {os-distribution = "alpine"}
  │   ["pkg-config"] {os-distribution = "nixos"}
  │   ["pkgconf"] {os = "macos" & os-distribution = "homebrew"}
  │   ["pkgconfig"] {os = "macos" & os-distribution = "macports"}
  │   ["pkgconf"] {os = "freebsd"}
  │   ["pkgconf-pkg-config"] {os-distribution = "rhel" & os-version >= "8"}
  │   ["pkgconf-pkg-config"] {os-distribution = "centos" & os-version >= "8"}
  │   ["pkgconf-pkg-config"] {os-distribution = "ol" & os-version >= "8"}
  │   ["system:pkgconf"] {os = "win32" & os-distribution = "cygwinports"}
  │   ["pkgconf"] {os-distribution = "cygwin"}
  │ ]
  └────


`depexts' in Dune
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Dune doesn't install `depexts' automatically as the Dune developers
  are a little nervous about running commands that would modify the
  global system state. This may change at some point, but for now Dune
  only provides support for listing the names of `depexts', leaving it
  up to the user to install them as they see fit.

  The `dune show depexts' command can be used to list the `depexts' of a
  project. For that command to work the project must have a lock
  directory. Here's an example of listing the `depexts' of a project:
  ┌────
  │ $ dune pkg lock
  │ ...
  │ $ dune show depexts
  │ libao
  │ libffi
  │ pkgconf
  │ sdl2
  └────

  I ran these commands on a Mac with homebrew installed, so the package
  names are from the homebrew package repo. Each package listed there is
  one of the `depexts' of a package whose lockfile appears in the
  project's lock directory. Let's look at how this information is
  stored. Using `pkg-config' as an example:
  ┌────
  │ $ cat dune.lock/conf-pkg-config.pkg
  │ (version 4)
  │ 
  │ (build
  │  (run pkgconf --version))
  │ 
  │ (depexts pkgconf)
  └────

  The relevant part for us is the `depexts' field. The current released
  version of Dune only stores the package's `depexts' for the system
  where `dune pkg lock' was run. The command `dune show depexts' simply
  concatenates the `depexts' fields from each lockfile in the lock
  directory.

  When thinking about portable lock directories I always like to imagine
  what the experience would be using Dune for a project where the lock
  directory is checked into version control. I frequently switch between
  using two different machines for development - one running Linux and
  the other running MacOS. If I was to check in the lock directory I
  just generated on my Mac, and then check it out on Linux and continue
  development, `dune show depexts' would show me a list of packages for
  the wrong system!


Portable `depexts' in Dune
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  To make `depexts' portable, one's first instinct might be to use the
  same approach as taken with the `depends' field outlined [here],
  listing the `depexts' for each platform for which the solver was
  run. Indeed such a change was added to the Dune Developer Preview when
  we first introduced portable lock directories, however we quickly
  realized a problem.

  The `depends', `build', and `install' fields of a package rarely vary
  between OS distribution. It's reasonably common for those fields to be
  different on different OSes, but very rare for them to also be
  different on different OS _distributions_. As such, it's expected that
  users will elect to solve their projects for each common OS, but there
  would be little value in solving projects for each OS distro. In fact
  solving for multiple distros would slow down solving and bloat the
  lock directory, and users would somehow need to come up with a
  definitive list of distros to solve for.

  _But_ the `depexts' field is highly-dependent on the OS distro since
  package names are specific to the package repository for a particular
  distro. Recall that the `depexts' field in Opam package metadata lists
  package names along with the conditions under which that package name
  should be used, e.g.:
  ┌────
  │ ["pkg-config"] {os-family = "debian" | os-family = "ubuntu"}
  │ ["pkgconf"] {os-distribution = "arch"}
  │ ["pkgconf-pkg-config"] {os-family = "fedora"}
  │ ["pkgconfig"] {os-distribution = "centos" & os-version <= "7"}
  └────
  These conditions almost always involve the name of the OS distro, and
  to make matters worse they also sometimes involve the OS _version_, as
  packages can change their names between different versions of the same
  OS. Evaluating these conditions at solve time for platforms with no
  distro or version specified tends to result in lockfiles with _no_
  `depexts' at all, since all the conditions evaluate to `false'.

  The use case we have in mind for `depexts' in Dune is that a user will
  solve their project coarsely, usually just for each common OS with no
  consideration for distribution or version. Then when they run `dune
  show depexts', the `depexts' will be listed using names appropriate to
  the current machine. This means Dune needs to store enough metadata
  about `depexts' to compute system-specific `depext' names at a later
  time. This means storing the same names and conditions as are
  currently stored in Opam files, and deferring evaluation of the
  conditions until as late as possible, such as right when `dune show
  depexts' is run.

  The latest version of the Dune Developer Preview does just this;
  translating the `depexts' field from each package's Opam file into a
  Dune-friendly S-expression. After this change, the `depexts' field of
  `conf-pkg-config''s lockfile is:
  ┌────
  │ $ cat dune.lock/conf-pkg-config.4.pkg
  │ ...
  │ (depexts
  │  ((pkg-config)
  │   (or_absorb_undefined_var
  │    (= %{os_family} debian)
  │    (= %{os_family} ubuntu)))
  │  ((pkgconf)
  │   (= %{os_distribution} arch))
  │  ((pkgconf-pkg-config)
  │   (= %{os_family} fedora))
  │  ((pkgconfig)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} centos)
  │    (<= %{os_version} 7)))
  │  ((pkgconf-pkg-config)
  │   (= %{os_distribution} mageia))
  │  ((pkgconfig)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} rhel)
  │    (<= %{os_version} 7)))
  │  ((pkgconfig)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} ol)
  │    (<= %{os_version} 7)))
  │  ((pkgconf)
  │   (= %{os_distribution} alpine))
  │  ((pkg-config)
  │   (= %{os_distribution} nixos))
  │  ((pkgconf)
  │   (and_absorb_undefined_var
  │    (= %{os} macos)
  │    (= %{os_distribution} homebrew)))
  │  ((pkgconfig)
  │   (and_absorb_undefined_var
  │    (= %{os} macos)
  │    (= %{os_distribution} macports)))
  │  ((pkgconf)
  │   (= %{os} freebsd))
  │  ((pkgconf-pkg-config)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} rhel)
  │    (>= %{os_version} 8)))
  │  ((pkgconf-pkg-config)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} centos)
  │    (>= %{os_version} 8)))
  │  ((pkgconf-pkg-config)
  │   (and_absorb_undefined_var
  │    (= %{os_distribution} ol)
  │    (>= %{os_version} 8)))
  │  ((system:pkgconf)
  │   (and_absorb_undefined_var
  │    (= %{os} win32)
  │    (= %{os_distribution} cygwinports)))
  │  ((pkgconf)
  │   (= %{os_distribution} cygwin)))
  └────

  That's a 1:1 translation of the `depexts' field from
  `conf-pkg-config''s Opam file. There's enough information there so
  that the appropriate package name can be computed on demand rather
  than just at solve time.

  This bring us a step closer to a world where Dune users can check
  their lock directories into version control with confidence that their
  builds are reproducible across different platforms. To try out the
  latest version of the Dune Developer Preview, go to
  [preview.dune.build].


[here]
<https://ocaml.org/changelog/2025-05-19-portable-lock-directories-for-dune-package-management>

[preview.dune.build] <https://preview.dune.build/>


Semgrep is hiring OCaml developers to work on the static analysis engine
════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/job-remote-semgrep-is-hiring-ocaml-developers-to-work-on-the-static-analysis-engine/16771/1>


iago announced
──────────────

  Semgrep is an application security company focused on detecting and
  remediating vulnerabilities. The static analysis engine is primarily
  written in OCaml. We are looking for a senior software engineer to
  join the Code team, where we focus on first-party code vulnerability
  and secrets scanning.

  The ideal candidate has experience building program analysis tooling
  or code scanners (perhaps in a research context).

  Both on-site and remote work are OK.

  If this sounds interesting to you, see our job posting at [Senior
  Program Analysis Engineer, Code].

  Let me know if you have any questions!


[Senior Program Analysis Engineer, Code]
<https://job-boards.greenhouse.io/semgrep/jobs/4752361007>


Elpe, a config-as-code build system written in OCaml+Rust
═════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/elpe-a-config-as-code-build-system-written-in-ocaml-rust/16783/1>


pmeunier announced
──────────────────

  I just released the first version of Elpe, a build system designed as
  a blend of Nix and Ubuntu.

  It uses OCaml for the frontend, and communicates with a Rust backend
  via gRPC.

  [Blog post about it]


[Blog post about it] <https://pijul.org/posts/2025-06-08-elpe>


Dune dev meeting
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-dune-dev-meeting/14994/31>


Etienne Marais announced
────────────────────────

  Hello :vulcan_salute: The next Dune Dev Meeting will be tomorrow on
  *Wednesday, June, 11th at 16:00 CEST*. This is going to be a
  one-hour-long meeting.

  Whether you are a maintainer, a regular contributor, a new joiner or
  just curious, you are welcome to join: these discussions are opened!
  The goal of these meetings is to provide a place to discuss the
  ongoing work together and synchronize with the Dune developers :+1:

  The agenda is available on the [meeting dedicated page]. Feel free to
  add more items in it.

  • Meeting link: [zoom]
  • Calendar event: [google calendar]
  • Wiki with information and previous notes: [dune wiki on GitHub]


[meeting dedicated page]
<https://github.com/ocaml/dune/wiki/dev-meeting-2025-06-11>

[zoom]
<https://us06web.zoom.us/j/85096877776?pwd=cWNhU1dHQ1ZNSjZuOUZCQ0h2by9Udz09>

[google calendar]
<https://calendar.google.com/calendar/u/0/embed?src=c_5cd698df6784e385b1cdcdc1dbca18c061faa96959a04781566d304dc9ec7319@group.calendar.google.com>

[dune wiki on GitHub] <https://github.com/ocaml/dune/wiki>


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

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

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

  • [Opam Health Check: or How we Got to 90+% of Packages Building with
    Dune Package Management]
  • [Peer-Programming in Modern OCaml with ChatGPT and Gemini]
  • [CEOS Project Kick-Off: Using Satellites to Survey the Earth]
  • [Progress in OCaml docs]
  • [The week that was - 2025 w21]
  • [Build Meetup - Jane Street London]


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

[Opam Health Check: or How we Got to 90+% of Packages Building with Dune
Package Management]
<https://tarides.com/blog/2025-06-05-opam-health-check-or-how-we-got-to-90-of-packages-building-with-dune-package-management>

[Peer-Programming in Modern OCaml with ChatGPT and Gemini]
<https://soap.coffee/~lthms/posts/PeerProgrammingWithLLMs.html>

[CEOS Project Kick-Off: Using Satellites to Survey the Earth]
<https://tarides.com/blog/2025-05-30-ceos-project-kick-off-using-satellites-to-survey-the-earth>

[Progress in OCaml docs]
<https://jon.recoil.org/blog/2025/05/docs-progress.html>

[The week that was - 2025 w21]
<https://www.dra27.uk/blog/week-that-was/2025/05/24/wtw-21.html>

[Build Meetup - Jane Street London]
<https://www.dra27.uk/blog/misc/2025/05/23/build-event.html>


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: 26809 bytes --]

             reply	other threads:[~2025-06-10 13:36 UTC|newest]

Thread overview: 244+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 13:36 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-06-03  9:19 Alan Schmitt
2025-05-27  9:22 Alan Schmitt
2025-05-20 11:52 Alan Schmitt
2025-05-13  9:40 Alan Schmitt
2025-05-06  7:24 Alan Schmitt
2025-04-29  8:39 Alan Schmitt
2025-04-22 11:50 Alan Schmitt
2025-04-15  9:51 Alan Schmitt
2025-04-08 13:14 Alan Schmitt
2025-04-01  9:12 Alan Schmitt
2025-03-25  8:06 Alan Schmitt
2025-03-18 10:18 Alan Schmitt
2025-03-11 15:00 Alan Schmitt
2025-03-04 14:01 Alan Schmitt
2025-02-25 10:36 Alan Schmitt
2025-02-18 14:33 Alan Schmitt
2025-02-11  7:17 Alan Schmitt
2025-02-04 12:05 Alan Schmitt
2025-01-28 13:24 Alan Schmitt
2025-01-21 15:47 Alan Schmitt
2025-01-14  8:20 Alan Schmitt
2025-01-07 17:26 Alan Schmitt
2024-12-31  8:03 Alan Schmitt
2024-12-24  8:55 Alan Schmitt
2024-12-17 13:05 Alan Schmitt
2024-12-10 13:48 Alan Schmitt
2024-12-03 14:44 Alan Schmitt
2024-11-26  8:30 Alan Schmitt
2024-11-19  6:52 Alan Schmitt
2024-11-12 15:00 Alan Schmitt
2024-11-05 13:22 Alan Schmitt
2024-10-29 13:30 Alan Schmitt
2024-10-22 12:42 Alan Schmitt
2024-10-15 13:31 Alan Schmitt
2024-10-08 10:56 Alan Schmitt
2024-10-01 13:37 Alan Schmitt
2024-09-24 13:18 Alan Schmitt
2024-09-17 14:02 Alan Schmitt
2024-09-10 13:55 Alan Schmitt
2024-09-03  8:24 Alan Schmitt
2024-08-27  9:02 Alan Schmitt
2024-08-20  9:29 Alan Schmitt
2024-08-13 13:21 Alan Schmitt
2024-08-06  9:00 Alan Schmitt
2024-07-30 13:26 Alan Schmitt
2024-07-23 13:30 Alan Schmitt
2024-07-16  6:24 Alan Schmitt
2024-07-09  9:19 Alan Schmitt
2024-07-02  7:30 Alan Schmitt
2024-06-25 13:58 Alan Schmitt
2024-06-18 13:05 Alan Schmitt
2024-06-11 15:04 Alan Schmitt
2024-06-04 13:26 Alan Schmitt
2024-05-28  9:07 Alan Schmitt
2024-05-21 13:07 Alan Schmitt
2024-05-14 13:25 Alan Schmitt
2024-05-07  7:30 Alan Schmitt
2024-04-30  7:22 Alan Schmitt
2024-04-23 12:17 Alan Schmitt
2024-04-16 12:00 Alan Schmitt
2024-04-09  9:15 Alan Schmitt
2024-04-02 14:31 Alan Schmitt
2024-03-26  6:32 Alan Schmitt
2024-03-19 15:09 Alan Schmitt
2024-03-12 10:31 Alan Schmitt
2024-03-05 14:50 Alan Schmitt
2024-02-27 13:53 Alan Schmitt
2024-02-20  9:12 Alan Schmitt
2024-02-13  8:42 Alan Schmitt
2024-02-06 15:14 Alan Schmitt
2024-01-30 14:16 Alan Schmitt
2024-01-23  9:45 Alan Schmitt
2024-01-16 10:01 Alan Schmitt
2024-01-09 13:40 Alan Schmitt
2024-01-02  8:59 Alan Schmitt
2023-12-26 10:12 Alan Schmitt
2023-12-19 10:10 Alan Schmitt
2023-12-12 10:20 Alan Schmitt
2023-12-05 10:13 Alan Schmitt
2023-11-28  9:09 Alan Schmitt
2023-11-21  7:47 Alan Schmitt
2023-11-14 13:42 Alan Schmitt
2023-11-07 10:31 Alan Schmitt
2023-10-31 10:43 Alan Schmitt
2023-10-24  9:17 Alan Schmitt
2023-10-17  7:46 Alan Schmitt
2023-10-10  7:48 Alan Schmitt
2023-10-03 13:00 Alan Schmitt
2023-09-19  8:54 Alan Schmitt
2023-09-12 13:21 Alan Schmitt
2023-09-05  9:00 Alan Schmitt
2023-08-29 13:04 Alan Schmitt
2023-08-22  9:20 Alan Schmitt
2023-08-15 16:33 Alan Schmitt
2023-08-08  8:53 Alan Schmitt
2023-08-01  7:13 Alan Schmitt
2023-07-25  8:45 Alan Schmitt
2023-07-11  8:45 Alan Schmitt
2023-07-04  9:18 Alan Schmitt
2023-06-27  8:38 Alan Schmitt
2023-06-20  9:52 Alan Schmitt
2023-06-13  7:09 Alan Schmitt
2023-06-06 14:22 Alan Schmitt
2023-05-30 15:43 Alan Schmitt
2023-05-23  9:41 Alan Schmitt
2023-05-16 13:05 Alan Schmitt
2023-05-09 11:49 Alan Schmitt
2023-05-02  8:01 Alan Schmitt
2023-04-25  9:25 Alan Schmitt
2023-04-18  8:50 Alan Schmitt
2023-04-11 12:41 Alan Schmitt
2023-04-04  8:45 Alan Schmitt
2023-03-28  7:21 Alan Schmitt
2023-03-21 10:07 Alan Schmitt
2023-03-14  9:52 Alan Schmitt
2023-03-07  9:02 Alan Schmitt
2023-02-28 14:38 Alan Schmitt
2023-02-21 10:19 Alan Schmitt
2023-02-14  8:12 Alan Schmitt
2023-02-07  8:16 Alan Schmitt
2023-01-31  6:44 Alan Schmitt
2023-01-24  8:57 Alan Schmitt
2023-01-17  8:37 Alan Schmitt
2022-11-29 14:53 Alan Schmitt
2022-09-27  7:17 Alan Schmitt
2022-09-20 14:01 Alan Schmitt
2022-09-13  8:40 Alan Schmitt
2022-08-23  8:06 Alan Schmitt
2022-08-16  8:51 Alan Schmitt
2022-08-09  8:02 Alan Schmitt
2022-08-02  9:51 Alan Schmitt
2022-07-26 17:54 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-02-04  8:47 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:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

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

  git send-email \
    --in-reply-to=m2bjqvlnvb.fsf@petitepomme.net \
    --to=alan.schmitt@polytechnique.org \
    --cc=caml-list@inria.fr \
    --cc=lwn@lwn.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* 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