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, 28 Apr 2026 09:59:30 +0200 [thread overview]
Message-ID: <m28qa7ecrh.fsf@mac-03220211.irisa.fr> (raw)
[-- Attachment #1.1.1: Type: text/plain, Size: 21187 bytes --]
Hello
Here is the latest OCaml Weekly News, for the week of April 21 to 28,
2026.
Table of Contents
─────────────────
Closing Old Bugs With Tests: A Dune Contribution Story
ocaml-wire: a Binary wire format DSL with EverParse 3D output
valkey: modern Valkey client for OCaml 5 + Eio, on opam
UnifiedScript_{Std,Top} - literate testing
openrouter_api: An OpenRouter client library
Call for presentations: Caml in the Capital II
Old CWN
Closing Old Bugs With Tests: A Dune Contribution Story
══════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/closing-old-bugs-with-tests-a-dune-contribution-story/18008/1>
Robin Bate Boerop announced
───────────────────────────
I recently started contributing to Dune with no prior familiarity with
the code base. One thing I found rewarding was closing old issues —
some filed as far back as 2018 — and I wanted to share the approach I
used.
The Method: Close With a Test
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
Many open issues describe behaviour that has already been fixed, or
behaviour that is working correctly but was never verified with a
test. My approach: write a cram test that demonstrates the expected
behaviour, link the PR to the issue with `fixes #NNNN', and let the
merge close the issue automatically.
This has several advantages over simply closing an issue with a
comment like "this works now":
• *It's verifiable.* Anyone can read the test and see exactly what
behaviour is being asserted. There's no argument about whether the
issue is truly resolved.
• *It prevents regressions.* If the behaviour breaks again in the
future, the test fails. The issue doesn't silently reopen — the CI
catches it.
• *It grows the test suite.* Every closed issue leaves behind a test
that documents a real-world scenario someone cared about.
• *It respects the reporter.* Someone took the time to file the
issue. A test that captures their concern is a better
acknowledgement than a drive-by close.
After a few weeks of contributing test PRs and bug fixes, I was given
triager and then maintainer status on the project. This let me close
issues directly when they were clearly resolved, and merge my own test
PRs. Before that, the existing maintainers merged them on my behalf.
Honestly, I regret closing issues where I could have used this method
but didn't. The method is much superior to simply adding to a GitHub
discussion about the bug and then closing the issue.
Issues I Helped Close
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
Here's an accounting of what I helped close, grouped by what it took:
◊ Confirmed resolved; closed directly
These issues described problems that no longer existed on main. In
some cases I confirmed this myself, in others someone else had already
verified it. As a triager/maintainer I was able to close them:
• [#1974] — `@all' target doesn't interact well with `(include_subdirs
...)' (filed 2019)
• [#3173] — Can't promote into a directory starting with underscore
(filed 2020)
• [#3805] — No such file or directory when `DUNE_BUILD_DIR' is set
during test (filed 2020)
• [#8242] — Very slow emacs compilation buffer updates (filed 2023)
• [#10360] — `executables_implicit_empty_intf' expects dune >= 2.9 but
was only added in 3.0 (filed 2024)
[#1974] <https://github.com/ocaml/dune/issues/1974>
[#3173] <https://github.com/ocaml/dune/issues/3173>
[#3805] <https://github.com/ocaml/dune/issues/3805>
[#8242] <https://github.com/ocaml/dune/issues/8242>
[#10360] <https://github.com/ocaml/dune/issues/10360>
◊ Closed with a test PR
These issues were resolved by writing a test that demonstrates the
correct behaviour. No code changes were needed — the test itself
closed the issue:
• [#2370] — `.h' files copied to `_build' without foreign stubs (filed
2019, test: [#14172])
• [#3362] — Cannot use `%{lib:...}' in the `flags' stanza (filed 2020,
test: [#14146])
• [#3484] — Promoting over a running binary (filed 2020, test:
[#14173])
• [#11110] — Libexec site install doesn't set executable bit (filed
2024, test: [#14171])
[#2370] <https://github.com/ocaml/dune/issues/2370>
[#14172] <https://github.com/ocaml/dune/pull/14172>
[#3362] <https://github.com/ocaml/dune/issues/3362>
[#14146] <https://github.com/ocaml/dune/pull/14146>
[#3484] <https://github.com/ocaml/dune/issues/3484>
[#14173] <https://github.com/ocaml/dune/pull/14173>
[#11110] <https://github.com/ocaml/dune/issues/11110>
[#14171] <https://github.com/ocaml/dune/pull/14171>
◊ Closed with a test and a code fix
These required both a test and a code change to resolve:
• [#878] — `dune subst' adds duplicate version field in opam (filed
2018, fix: [#14136])
• [#2445] — dune sends SIGKILL without prior SIGTERM (filed 2019,
fixes: [#14170], [#14224])
• [#3916] — Duplicate bounds in autogenerated opam files (filed 2020,
fix: [#14175])
• [#6148] — `root_module' generates duplicate module definition (filed
2022, fix: [#14135])
• [#9757] — `dune runtest' doesn't execute byte-only inline tests
(filed 2024, fix: [#14174])
• [#10707] — Missing menhir lower bound in generated opam files (filed
2024, fix: [#14168])
• [#11002] — opam file generation error-prone (filed 2024, fix:
[#14136])
• [#11106] — Redundant dune version constraint in opam files (filed
2024, fix: [#14175])
• [#12007] — `dune build @ocaml-index' builds too many files (filed
2025, partially fixed with [#14137])
• [#14089] — Incremental builds with `(wrapped (transition ...))'
broken (filed 2026, test: [#14088], fix: [#14090])
[#878] <https://github.com/ocaml/dune/issues/878>
[#14136] <https://github.com/ocaml/dune/pull/14136>
[#2445] <https://github.com/ocaml/dune/issues/2445>
[#14170] <https://github.com/ocaml/dune/pull/14170>
[#14224] <https://github.com/ocaml/dune/pull/14224>
[#3916] <https://github.com/ocaml/dune/issues/3916>
[#14175] <https://github.com/ocaml/dune/pull/14175>
[#6148] <https://github.com/ocaml/dune/issues/6148>
[#14135] <https://github.com/ocaml/dune/pull/14135>
[#9757] <https://github.com/ocaml/dune/issues/9757>
[#14174] <https://github.com/ocaml/dune/pull/14174>
[#10707] <https://github.com/ocaml/dune/issues/10707>
[#14168] <https://github.com/ocaml/dune/pull/14168>
[#11002] <https://github.com/ocaml/dune/issues/11002>
[#11106] <https://github.com/ocaml/dune/issues/11106>
[#12007] <https://github.com/ocaml/dune/issues/12007>
[#14137] <https://github.com/ocaml/dune/pull/14137>
[#14089] <https://github.com/ocaml/dune/issues/14089>
[#14088] <https://github.com/ocaml/dune/pull/14088>
[#14090] <https://github.com/ocaml/dune/pull/14090>
What I Learned
╌╌╌╌╌╌╌╌╌╌╌╌╌╌
*Writing tests is a good way to learn about a code base.* Each test
forced me to understand how a feature actually works — not the
architecture in the abstract, but the concrete behaviour in specific
scenarios. The understanding compounded.
*Dune's cram tests make this easy.* Each test is a self-contained
shell script with expected output, checked into the repo as a `.t'
file. The barrier to writing a test is low, which is exactly what you
want when your goal is to close issues by testing them. This
occasionally backfired by being "too easy" - when I wrote tests to
which maintainers objected because I had not done so in a
Dune-idiomatic way; but this was still net positive for sure.
*Consistent presence matters.* I contributed nearly every day over
several weeks. I think that this helped maintainers feel that I was
"present" - that efforts that they made to help me were investments;
so they were less prone to holding back reviews.
ocaml-wire: a Binary wire format DSL with EverParse 3D output
═════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-ocaml-wire-a-binary-wire-format-dsl-with-everparse-3d-output/18009/1>
Thomas Gazagnaire announced
───────────────────────────
I'm happy to announce the release of `ocaml-wire 0.9.0' to opam!
`ocaml-wire' is a set of combinators to describe binary protocols in
OCaml. "Binary" as in fixed-layout: sizes and shapes are mostly known
up front, so you're reading fields at known offsets rather than
parsing a free-form grammar (like in Menhir). There are already many
good binary parser frameworks in OCaml – here's what's different in
`ocaml-wire':
• The central data structure is EverParse's [3D grammar]. The OCaml
combinators describe a 3D structure. Following [Daniel's tagged
final encoding approach], you build a codec that describes a struct
and how to serialise/deserialise it from an OCaml value.
• Which means every description can compile down to a .3d file and
from there to C via EverParse – and the generated C compiles cleanly
with `-std=c99 -Wall -Werror'. So you could, in theory (I haven't
pushed on this too far for now), build and link a complex stack as
an standalone, external C parser whose memory safety, single-pass
behaviour, and conformance to the 3D spec are proven in F*(EverParse
doesn't give you serialisers, unfortunately).
• If you prefer, you can still use the OCaml parsers/verifiers, which
have been made reasonably fast (i.e. no extra allocations on the hot
path), and as they are streaming codecs you can just read or write a
single field of the structure without parsing the whole thing. They
also compile trivially to JavaScript via `js_of_ocaml', if you need
to parse the same format in the browser.
A small example – a packet with two nibble-wide fields, a big-endian
length, and a variable-size payload whose length is read from the
Length field:
┌────
│ open Wire
│
│ type packet = { version : int; flags : int; length : int; payload : string }
│
│ let f_version = Field.v "Version" (bits ~width:4 U8)
│ let f_flags = Field.v "Flags" (bits ~width:4 U8)
│ let f_length = Field.v "Length" uint16be
│ let f_payload = Field.v "Payload" (byte_array ~size:(Field.ref f_length))
│
│ let codec =
│ let open Codec in
│ v "Packet" (fun version flags length payload -> { version; flags; length; payload })
│ [ f_version $ (fun p -> p.version);
│ f_flags $ (fun p -> p.flags);
│ f_length $ (fun p -> p.length);
│ f_payload $ (fun p -> p.payload) ]
└────
`Field.ref f_length' is the dependent-size bit: the payload's length
comes from the `f_length' field read earlier in the same struct. That
same codec value is what you hand to `Everparse.schema' to get the 3D
file out, and what backs `Codec.get' / `Codec.set' for streaming field
access from OCaml. `ocaml-wire' also ships the infrastructure for
generating FFI stubs and for differential testing to make sure the
verified C and hand-written OCaml parsers agree. So far they seem to
:-)
You can read more about it here:
<https://gazagnaire.org/blog/2026-03-31-ocaml-wire.html>.
To try it: `opam install wire'
Feedback very welcome [on the issue tracker] (or bellow)!
[3D grammar]
<https://project-everest.github.io/everparse/3d.html#language-reference>
[Daniel's tagged final encoding approach]
<https://github.com/dbuenzli/jsont/blob/main/paper/soup.pdf>
[on the issue tracker] <https://github.com/parsimoni-labs/ocaml-wire>
valkey: modern Valkey client for OCaml 5 + Eio, on opam
═══════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-valkey-modern-valkey-client-for-ocaml-5-eio-on-opam/18010/1>
Avi Fenesh announced
────────────────────
Hi everyone,
I wanted to share that `valkey' 0.2.0 is now on opam:
• opam: <https://opam.ocaml.org/packages/valkey/valkey.0.2.0/>
• Repo and Getting Started:
<https://github.com/avifenesh/ocaml-valkey/blob/main/docs/getting-started.md>
The main thing I wanted with this project was to focus on the current
Valkey stack with the newer OCaml stack.
So `valkey' is built around:
• OCaml 5
• Eio-native direct-style concurrency
• RESP3 only
• Modern Valkey features and real cluster behavior
A few parts I'm happy with:
• Cluster support with a strong focus on durability and high
availability: topology refresh, periodic background refresh, `MOVED'
/ `ASK' / `CLUSTERDOWN' handling, replica-aware reads, AZ-aware
routing, and failover-aware sharded pub/sub replay
• connection/runtime behavior: circuit breaker, reconnect handling,
keepalive, TLS, and optional separation between socket I/O and
parsing via `Eio.Domain_manager', so one side of the system does not
block the other
• batch support: scatter-gather across slots, atomic single-slot flows
with `WATCH' / `MULTI' / `EXEC', multi-slot helpers, and in `0.2.0'
also WATCH guards for read-modify-write CAS plus cross-slot
`pfcount_cluster'
• command surface: typed helpers across a pretty broad set of
commands, `Client.custom' /~custom_multi~ for custom commands and
multi-node execution, and named commands so you can register command
templates once and reuse them later
• scripting: local script caching and optimistic `EVALSHA' handling
with automatic fallback/retry on `NOSCRIPT', so callers don't need
to manage that flow themselves
There is also already a pretty good amount of validation around it:
integration tests, property tests, fuzzing, chaos testing, examples,
and guides.
Performance-wise, it also came out pretty nicely: in several scenarios
it gets to 90%+ of the C reference client.
┌────
│ opam update
│ opam install valkey eio_main
└────
Current next steps on the roadmap are things like:
• client-side caching
• connection pools / blocking pools
• `IAM' + `mTLS'
• Valkey module support (JSON, search, bloom)
If there's a feature people care about, I'd be very happy to
reprioritize the roadmap around real interest.
I'd also really love feedback from the OCaml community on the API,
ergonomics, docs, and general design.
I'm very familiar with the Valkey world, but OCaml is more of a side
fun for me than my daily language, so feedback from people who really
live in the OCaml ecosystem is especially valuable to me.
If you try it, I'd love to hear what you think.
UnifiedScript_{Std,Top} - literate testing
══════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-unifiedscript-std-top-literate-testing/18013/1>
jbeckford announced
───────────────────
I am pleased to introduce the `UnifiedScript_Std' and
`UnifiedScript_Top' packages. Unified scripts are a way to write tests
and documentation simultaneously. Cram tests and [MDX scripts] are
both similar to unified scripts, but unified scripts aren't tied to
Markdown (MDX) or tied to POSIX shell commands (cram tests).
Examples:
• /Markdown example/: Here are the zillions of tests from `ocaml-re'
converted into Markdown: [ocaml-re/EXAMPLES.md]. Custom OCaml REPL
printers are used so that many of the tests are printed as Markdown
tables. /aside: Wouldn't it be nice if tests you are already writing
became documentation? That was a 4 year follow-up to
<https://discuss.ocaml.org/t/what-are-the-biggest-reasons-newcomers-give-up-on-ocaml/10958/13?u=jbeckford>/
• /`.ml' example/: The following is a snippet from [a regular OCaml
`.ml' module] where the `(* ... *)' comments are OCaml REPL toplevel
responses maintained by the unified tools.
┌────
│ let lyrics =
│ "Everybody step to the left."
│ (* val lyrics : string = "Everybody step to the left." *)[@ocamlformat "disable"]
│
│ let (_ : string) =
│ Printf.sprintf "Now let's sing: %s" lyrics
│ (* - : string = "Now let's sing: Everybody step to the left." *)[@ocamlformat "disable"]
└────
Docs are at [dk/docs/UNIFIED_SCRIPTS.md] (of course generated by the
unified tools).
Install the tools with:
┌────
│ opam pin add UnifiedScript_Std https://gitlab.com/dkml/build-tools/MlFront/-/releases/permalink/latest/downloads/MlFront.tar.gz
│ opam pin add UnifiedScript_Top https://gitlab.com/dkml/build-tools/MlFront/-/releases/permalink/latest/downloads/MlFront.tar.gz
└────
After feedback I'll release them officially to opam. I would like
feedback overall and also specifically on the [agent skill that
converts expect tests to unified tests].
[MDX scripts] <https://github.com/realworldocaml/mdx>
[ocaml-re/EXAMPLES.md]
<https://github.com/jonahbeckford/ocaml-re/blob/7dbfc446bd594303add00f443bdea206b08511c2/EXAMPLES.md>
[a regular OCaml `.ml' module]
<https://gitlab.com/dkml/build-tools/MlFront/-/blob/374bbac77003cd8cee56f0664cec974aa314c648/src/UnifiedScript_Top/plainmodule.ml>
[dk/docs/UNIFIED_SCRIPTS.md]
<https://github.com/diskuv/dk/blob/ffa130a1dbefcd134b0d15f112fd6d6c99dc0fc8/docs/UNIFIED_SCRIPTS.md>
[agent skill that converts expect tests to unified tests]
<https://github.com/jonahbeckford/ocaml-re/blob/make-literate-tests/.claude/skills/make-literate-tests/SKILL.md>
openrouter_api: An OpenRouter client library
════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-openrouter-api-an-openrouter-client-library/18016/1>
mt_caret announced
──────────────────
I'm happy to announce the first version (v0.0.1) of `openrouter_api',
a library for querying large language models via OpenRouter, a service
which provides access to a variety of models under a unified API.
• opam: <https://opam.ocaml.org/packages/openrouter_api/>
• GitHub: [https://github.com/mt-caret/openrouter-ocaml]
• docs:
<https://mt-caret.github.io/openrouter-ocaml/openrouter_api/index.html>
I've been using this library in my personal projects whenever I want
to integrate an AI model, and I've found it quite useful; I hope
others will find it useful as well. Issues and contributions are
welcome.
[https://github.com/mt-caret/openrouter-ocaml]
<https://github.com/mt-caret/openrouter-ocaml>
Call for presentations: Caml in the Capital II
══════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/call-for-presentations-caml-in-the-capital-ii/17959/2>
Continuing this thread, Sacha Ayoun announced
─────────────────────────────────────────────
Date and location have been confirmed! June 3rd at the Jane Street
office!! I have updated the post.
We're still open for presentation proposals as well!
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 #1.1.2: Type: text/html, Size: 35500 bytes --]
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 568 bytes --]
next reply other threads:[~2026-04-28 7:59 UTC|newest]
Thread overview: 290+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-28 7:59 Alan Schmitt [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-04-21 9:34 Alan Schmitt
2026-04-14 9:50 Alan Schmitt
2026-04-07 9:32 Alan Schmitt
2026-03-31 6:10 Alan Schmitt
2026-03-24 9:58 Alan Schmitt
2026-03-17 14:39 Alan Schmitt
2026-03-10 13:30 Alan Schmitt
2026-03-03 13:54 Alan Schmitt
2026-02-24 13:36 Alan Schmitt
2026-02-17 13:47 Alan Schmitt
2026-02-10 10:36 Alan Schmitt
2026-02-03 10:04 Alan Schmitt
2026-01-27 12:41 Alan Schmitt
2026-01-20 9:19 Alan Schmitt
2026-01-13 8:27 Alan Schmitt
2026-01-06 13:14 Alan Schmitt
2025-12-30 9:33 Alan Schmitt
2025-12-23 11:00 Alan Schmitt
2025-12-16 13:30 Alan Schmitt
2025-12-09 15:04 Alan Schmitt
2025-12-02 10:39 Alan Schmitt
2025-11-25 13:49 Alan Schmitt
2025-11-18 14:01 Alan Schmitt
2025-11-11 9:49 Alan Schmitt
2025-11-04 13:21 Alan Schmitt
2025-10-28 13:30 Alan Schmitt
2025-10-21 9:17 Alan Schmitt
2025-10-14 9:56 Alan Schmitt
2025-10-07 12:22 Alan Schmitt
2025-09-30 13:12 Alan Schmitt
2025-09-23 13:23 Alan Schmitt
2025-09-16 11:52 Alan Schmitt
2025-09-09 12:30 Alan Schmitt
2025-09-02 12:23 Alan Schmitt
2025-08-26 12:34 Alan Schmitt
2025-08-19 12:20 Alan Schmitt
2025-08-12 15:32 Alan Schmitt
2025-08-05 8:17 Alan Schmitt
2025-07-29 9:36 Alan Schmitt
2025-07-22 12:07 Alan Schmitt
2025-07-15 17:14 Alan Schmitt
2025-07-08 12:45 Alan Schmitt
2025-07-01 11:16 Alan Schmitt
2025-06-24 14:02 Alan Schmitt
2025-06-17 6:44 Alan Schmitt
2025-06-10 13:36 Alan Schmitt
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=m28qa7ecrh.fsf@mac-03220211.irisa.fr \
--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