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, 30 Jun 2026 15:25:21 +0200 [thread overview]
Message-ID: <m2y0fwgny6.fsf@mac-03220211.irisa.fr> (raw)
[-- Attachment #1.1.1: Type: text/plain, Size: 27584 bytes --]
Hello
Here is the latest OCaml Weekly News, for the week of June 23 to 30,
2026.
Table of Contents
─────────────────
New release of Sek
Js_of_ocaml / Wasm_of_ocaml 6.4
Ocsipersist 2.1.0: type-safe persistent references with Deriving
Modular explicits in pre-OCaml 5.5
LRgrep 0.9: Better syntax errors for OCaml and Menhir
Static Analysis for OCaml
new releases: Merlin 5.8 and OCaml-LSP 1.27.0 with support for OCaml 5.5
duras 2.1.1 — daily notes as plain text files
Software Engineer at LexiFi (Paris)
Owebview : OCaml binding to the webview library
OCaml Runtime Meeting: Mon, July 6 @ 10:00 UTC (10:00 London/Cambridge, 11:00 Paris, 7pm Sydney)
Old CWN
New release of Sek
══════════════════
Archive: <https://discuss.ocaml.org/t/new-release-of-sek/18281/1>
François Pottier announced
──────────────────────────
We are pleased to announce a new release of [Sek], a library that
offers efficient ephemeral (mutable) and persistent (immutable)
/sequence/ data structures, plus efficient conversions between these
two forms.
This new release introduces optimizations that speed up several
operations, including random access (`get', `set'), splitting, and
concatenation. For details, please see the [change log].
┌────
│ opam update && opam install sek
└────
Happy hacking, Arthur Charguéraud & François Pottier.
[Sek] <https://gitlab.inria.fr/fpottier/sek>
[change log]
<https://gitlab.inria.fr/fpottier/sek/-/blob/master/CHANGES.md?ref_type=heads>
François Pottier later added
────────────────────────────
Let me add this link to [the documentation].
[the documentation]
<https://cambium.inria.fr/~fpottier/sek/doc/sek/Sek/>
Js_of_ocaml / Wasm_of_ocaml 6.4
═══════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-js-of-ocaml-wasm-of-ocaml-6-4/18282/1>
Hhugo announced
───────────────
I'm pleased to announce the joint release of *js_of_ocaml* and
*wasm_of_ocaml 6.4.0*.
Js_of_ocaml is a compiler from OCaml bytecode to JavaScript. It makes
it possible to run pure OCaml programs in JavaScript environments like
browsers and Node.js.
Wasm_of_ocaml is a compiler from OCaml bytecode to WebAssembly. It is
highly compatible with js_of_ocaml, so you can compile your programs
with wasm_of_ocaml instead of js_of_ocaml and experience overall
better performance.
Most significant changes since version 6.3:
Toolchain
╌╌╌╌╌╌╌╌╌
• *OCaml 5.5.0 support*.
• *OxCaml support*.
wasm_of_ocaml
╌╌╌╌╌╌╌╌╌╌╌╌╌
• *WASI 0.1 support* — target standalone WASI runtimes (wasmtime and
friends), no JavaScript host required.
• *Dynlink and toplevel support* — the OCaml toplevel now runs on the
Wasm backend.
• An *alternative effects backend* based on the [Stack Switching
proposal].
• *Pure-Wasm zstd and BLAKE2b* — unmarshalling compressed values and
`Digest.BLAKE2{512,256,128}' no longer need the JavaScript shims,
so they work under WASI too.
• The legacy `num' library now works on Wasm (the `nat' primitives
were no-op stubs).
[Stack Switching proposal]
<https://github.com/WebAssembly/stack-switching>
Library — new web APIs
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• *`Promise' module* — type-safe bindings to JS promises, with *Lwt
interop* (`Js_of_ocaml_lwt.Promise.{to_lwt,of_lwt}') and
Promise-typed `Dom_html' bindings.
• *`Fetch' + `Abort' modules* — the Fetch API with typed
`AbortController~/~AbortSignal' cancellation.
• *`Dom_svg' aligned with SVG 2*, the *popover API*,
*`Intl.RelativeTimeFormat'*, a new *`Performance' module*,
additional `Console' bindings, and many more `Dom_html' bindings.
Bug fixes
╌╌╌╌╌╌╌╌╌
• A large number of bug fixes across the compiler, runtime, library
bindings, and PPX.
⚠️ Breaking changes
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
A few changes are source-incompatible — mostly to fix incorrect
bindings and behavior — and may require updating existing code. See
the [migration guide].
See the [documentation] and the [full changelog].
[migration guide]
<https://github.com/ocsigen/js_of_ocaml/wiki/Upgrade-from-6.3.0-to-6.4.0>
[documentation] <https://ocsigen.org/js_of_ocaml/>
[full changelog]
<https://github.com/ocsigen/js_of_ocaml/blob/master/CHANGES.md>
Vincent Balat then added
────────────────────────
We released Eliom 12.1 at the same time, bringing compatibility with
both js_of_ocaml 6.4 and OCaml 5.5.
Ocsipersist 2.1.0: type-safe persistent references with Deriving
════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-ocsipersist-2-1-0-type-safe-persistent-references-with-deriving/18283/1>
Vincent Balat announced
───────────────────────
[Ocsipersist] 2.1.0 is out. Persistent references, stores and tables
can now be serialised with `Deriving_Json' instead of `Marshal': the
data is human-readable in the database and stable across OCaml
versions. The new API is fully backward compatible, and Ocsipersist
works as a standalone library for any OCaml program (no Eliom or
Ocsigen Server required).
┌────
│ type user = { name : string; age : int } [@@deriving json]
│
│ (* a persistent reference, stored as readable JSON *)
│ let visits = Ocsipersist.Ref_json.ref ~persistent:"visits" [%json: int] 0
│
│ let count_visit () =
│ let%lwt n = Ocsipersist.Ref_json.get visits in
│ Ocsipersist.Ref_json.set visits (n + 1)
└────
Full announcement:
<https://ocsigen.org/blog/posts/ocsipersist-2.1.0.html>
[Ocsipersist] <https://ocsigen.org/ocsipersist/>
Modular explicits in pre-OCaml 5.5
══════════════════════════════════
Archive:
<https://inbox.ci.dev/caml-list/6d5f115c-866d-4cc0-a102-73657778a0e2@inria.fr/T/>
oleg said
─────────
One of the notable features of the just announced OCaml 5.5 are
module-dependent functions, a.k.a. modular explicits. It is a welcome
addition: it lets us express higher-ranked types in the simplest way,
and is particularly good for typed tagless-final code.
It should be mentioned however that modular explicits could be done
before, with little or no hassle. Perhaps there is merit to remind of
that old trick~– especially because it works also with statically
unknown modules (which are out of scope for OCaml 5.5 modular
explicits).
As the running example we re-use the pretty-printing example in the
OCaml 5.5 announcement (hereafter, Ann55).
We start however with a simpler example: pretty-printing a set
generated by the `Set.Make' functor. The example follows the pattern
of the pp_map function from Ann55. It is simpler than printing a map
because it involves no higher-rank types.
┌────
│ let pp_set (type a s)
│ (module M: Set.S with type elt = a and type t = s)
│ (pp_elt:Format.formatter->a->unit) (ppf:Format.formatter) (set:s) =
│ if M.is_empty set then Format.fprintf ppf "ø" else
│ let pp_sep ppf () = Format.fprintf ppf ",@ " in
│ Format.fprintf ppf "@[{@ %a@ }@]"
│ (Format.pp_print_seq ~pp_sep pp_elt) (M.to_seq set)
└────
It is almost literally the pp_map example from Ann55, with set
substituted for map. The main difference is type annotations. This is
not a bug: I insist on writing signatures or explicit type annotations
for all top-level definitions (except, perhaps, the most trivial).
The annotations could be simplified if we introduce
┌────
│ type ('e,'s) set = (module Set.S with type elt = 'e and type t = 's)
│ type 'a printer = Format.formatter->'a->unit
└────
The example then reads
┌────
│ let pp_set : type e s. (e,s) set -> e printer -> s printer =
│ fun (module M) pp_elt ppf set -> (* ... as before ... *)
└────
The signature tells at a glance what pp_set is doing (which is one of
the benefits of signatures: it is not just for, and not mainly for,
the compiler.)
We can use pp_set just like pp_map was used in the Ann55 example:
┌────
│ module String_set = Set.Make(String)
│
│ let () =
│ let m = String_set.of_list ["Zero"; "Zero"; "One"; "Un"] in
│ let pp_str = Format.pp_print_string in
│ Format.printf "%a@." (pp_set (module String_set) pp_str) m
└────
Our rendition of modular explicits extends beyond statically known
modules like String_set. For example,
┌────
│ (* Abstract set of elements of types 'e. The implementation is abstract *)
│
│ type 'e aset = (module Set.S with type elt = 'e)
│
│ let f : unit -> int aset = fun () ->
│ if Random.bool () then
│ (module Set.Make(Int))
│ else
│ (module Set.Make(struct type t = int
│ let compare x y = - Int.compare x y end))
└────
The function f randomly returns one of two distinct Set
implementations (the Set.t types are not compatible). As an
application, we print a list of integers as a set (automatically
sorting and removing duplicates):
┌────
│ let print_as_set : type a. a aset -> a printer -> a list printer =
│ fun (module M) pp ppf lst ->
│ pp_set (module M) pp ppf (M.of_list lst)
│
│ let _ = Format.printf "%a@."
│ (print_as_set (f ()) Format.pp_print_int) [1;2;3;1]
└────
The result is indeed either "{ 1, 2, 3 }" or "{ 3, 2, 1 }", depending
on how die is cast.
Let us now tackle the pp_map example from Ann55. It is challenging
because of the higher-rank type of the map type 'a Map.S.t.
It is tempting to define the module type as
┌────
│ type ('k,'v,'m) map =
│ (module Map.S with type key = 'k and type 'a t = 'm constraint 'a = 'v)
└────
Alas, it doesn't work:
┌────
│ 2 | (module Map.S with type key = 'k and type 'a t = 'm constraint 'a = 'v)
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
│ Error: Syntax error: invalid package type: parametrized types are not supported
└────
Package types and their `with' constraints come with many
restrictions, which is deeply unfortunate.
We have to resort to an encoding:
┌────
│ module type maps = sig
│ include Map.S
│ type v
│ type mt
│ val of_mt : mt -> v t
│ val to_mt : v t -> mt
│ end
│ type ('k,'v,'m) map =
│ (module maps with type key = 'k and type v = 'v and type mt = 'm)
└────
One should mention that this is a strictly more general type of maps:
it supports specialized implementations for particular combination of
keys and values (e.g., if 'v is bool, we can use Set as the underlying
structure.)
The pretty-printer of maps is the same as in the Ann55, with two
additions: two occurrences of M.of_t.
┌────
│ let pp_map : type k v m. (k,v,m) map -> k printer -> v printer -> m printer =
│ fun (module M) pp_key pp_v ppf set ->
│ if M.is_empty (M.of_mt set) then Format.fprintf ppf "ø" else
│ let pp_sep ppf () = Format.fprintf ppf ",@ " in
│ let pp_binding ppf (k,v) = Format.fprintf ppf "@[%a@ =@ %a@]" pp_key k pp_v v
│ in
│ Format.fprintf ppf "@[{@ %a@ }@]"
│ (Format.pp_print_seq ~pp_sep pp_binding) (M.to_seq (M.of_mt set))
└────
It applies to statically *unknown* modules however, unlike pp_map in
Ann55
┌────
│ type ('k,'v) amap = (module maps with type key = 'k and type v = 'v)
│
│ let string_map : type a. unit -> (string,a) amap = fun () ->
│ (module struct
│ include Map.Make(String)
│ type v = a
│ type mt = v t
│ let of_mt = Fun.id
│ let to_mt = Fun.id
│ end)
│
│ let () =
│ let md = string_map () in
│ let module M = (val (md : (string,int) amap)) in
│ let m = M.of_list ["Zero", 0; "One", 1] in
│ let pp_str = Format.pp_print_int in
│ Format.printf "%a@."
│ (pp_map (module M) Format.pp_print_string pp_str) (M.to_mt m)
└────
I should mention that the functions like to_mt come naturally in case
of tagless-final interpreters: these are the observation functions.
For example:
┌────
│ module type lc = sig
│ type 'a repr
│ val int : int -> int repr
│ val lam : ('a repr -> 'b repr) -> ('a -> 'b) repr
│ val app : ('a -> 'b) repr -> ('a repr -> 'b repr)
│ type obst
│ type obs
│ val observe : obst repr -> obs
│ end
│
│ type ('a,'obs) lc = (module (lc with type obs = 'obs and type obst = 'a))
│
│ let ex1 : type obs. (int,obs) lc -> obs = fun (module M) -> let open M in
│ let t1 = app (lam (fun x -> x)) (int 1)
│ in observe t1
└────
In conclusion, it would be great if one day the restrictions on
package types were relaxed.
Olivier Nicole asked and Samuel Vivien replied
──────────────────────────────────────────────
Thanks for pointing this out. Does this mean that modular
explicits, strictly speaking, bring no additional
expressivity but only a simpler way to do these things? Or
are there programs that could be expressed with modular
explicits but not with constrained module types?
Indeed. Modular explicit does not add any expressiveness to the
language (and does not impact the soundness of the type system). Every
program that can be written using modular explicits could have been
written with a functor encoded as a first-class module.
We presented this encoding in section 1.5 of this paper about modular
explicits : <https://hal.science/hal-05428136/document>
LRgrep 0.9: Better syntax errors for OCaml and Menhir
═════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/lrgrep-0-9-better-syntax-errors-for-ocaml-and-menhir/18286/1>
Frédéric Bour announced
───────────────────────
Hi everyone,
I've just released *LRgrep 0.9*, a tool to customize the error
messages of Menhir-generated LR parsers by reasoning about failure
paths.
The goal is to move from generic "Syntax error at line X" messages to
more intuitive diagnostics that point to the actual root cause. For
example, if you accidentally put a semicolon in a local-let chain:
┌────
│ let x = 5;
│
│ let y = 6
│
│ let z = 7
│ ^^^
│ Error: Expecting 'in' to complete local-let binding.
│ Hint: this might be due to the semicolon line 1, character 9
└────
Without LRgrep, OCaml typically reports only a syntax error on the
subsequent `let' binding. The customized parser can identify that the
semicolon is the likely culprit.
*How you can help (feedback wanted!)*
I am looking for users to help stress-test the current specifications
and identify where error messages are still lacking.
1. *If you use OCaml:* I've patched the compiler to use LRgrep. Please
try it via opam: `opam switch create 5.4.1+lrgrep' *Please report
cases where the error messages are confusing or where you would
like to see a more helpful hint.*
2. *If you use Menhir:* Give LRgrep a try on your own grammars if you
want to customize error messages.
‣ [General Examples]
‣ [OCaml Error Specifications]
Integration with Merlin is also coming soon ([PR #2072]).
Huge thanks to @fpottier, @jmid, Tarides, and Jane Street for their
support.
Happy testing!
[General Examples] <https://github.com/fpottier/lrgrep-example>
[OCaml Error Specifications]
<https://github.com/let-def/lrgrep/blob/main/examples/ocaml/parser/errors.lrgrep>
[PR #2072] <https://github.com/ocaml/merlin/pull/2072>
Static Analysis for OCaml
═════════════════════════
Archive:
<https://discuss.ocaml.org/t/blog-static-analysis-for-ocaml/18287/1>
fantazio announced
──────────────────
Hi all,
I wrote a short (and slightly opinionated) piece on the state of
static analysis tooling for OCaml. The goal is to provide an overview
of available tools, works in progress, and missing pieces. Let me know
if there is a static analysis tool you use that is not mentioned, or
if you wish one existed.
Thanks!
<https://fantazio.eu/articles/static_analysis_ocaml.html>
new releases: Merlin 5.8 and OCaml-LSP 1.27.0 with support for OCaml 5.5
════════════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-new-releases-merlin-5-8-and-ocaml-lsp-1-27-0-with-support-for-ocaml-5-5/18293/1>
vds announced
─────────────
I am glad to announce new releases of Merlin and OCaml-LSP 🧙 !
Merlin is an editor service that provides modern IDE features for
OCaml and OCaml-LSP is a frontend for Merlin that speaks with LSP
clients.
There are a few bug fixes in these but the main feature is the stable
support for OCaml 5.5.
Full changelogs:
• <https://github.com/ocaml/merlin/blob/main/CHANGES.md#merlin-58>
• <https://github.com/ocaml/ocaml-lsp/blob/master/CHANGES.md#1270>
duras 2.1.1 — daily notes as plain text files
═════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-duras-2-1-1-daily-notes-as-plain-text-files/18299/1>
Sergiy Duras announced
──────────────────────
*duras* is a command-line tool for daily notes stored as plain text
files (`YYYY/MM/YYYY-MM-DD.dn'). No database, no daemon, no
background services.
v2.1.1 adds `duras build', which converts a note collection to a
static HTML website. 7,300 notes in \~220ms, single-threaded, no
caching. Notes use [sigline] format — a plain-text structured notation
where the leading character of each line declares its type.
• Source: <https://codeberg.org/duras/duras>
• Install: `opam install duras'
• Man page: `man duras'
[sigline] <https://codeberg.org/duras/sigline>
Software Engineer at LexiFi (Paris)
═══════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/job-software-engineer-at-lexifi-paris/18304/1>
Nicolas Ojeda Bar announced
───────────────────────────
Dear all,
[LexiFi] is hiring! We are looking for a full-time Software Engineer
to join our core development team.
We are particularly interested in candidates with a strong programming
background, for example through previous industrial experience,
contributions to open-source projects, or substantial personal
projects.
LexiFi has been using OCaml for more than 25 years—we were the first
software company to build our products on OCaml—and we still implement
the vast majority of our stack in OCaml. If you're excited about using
OCaml to solve real-world industrial problems, we would love to hear
from you.
<https://www.lexifi.com/careers/software_engineer/>
Work at LexiFi spans a wide range of projects across multiple
domains. We also remain actively engaged with the OCaml community and
strive to give back in various ways, including funding community
projects, helping maintain the OCaml compiler and other open-source
projects, and participating in conferences.
If you have any questions, please don't hesitate to reach out to me,
either here or privately.
Cheers, Nicolas
[LexiFi] <https://www.lexifi.com/>
Owebview : OCaml binding to the webview library
═══════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/owebview-ocaml-binding-to-the-webview-library/18305/1>
Korkorran announced
───────────────────
Hi everyone! 👋
I'd like to share a small project I've been working on: *owebview*, a
set of OCaml bindings for [webview].
[webview] <https://github.com/webview/webview>
What is webview?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
[webview] is a tiny, cross-platform library for building desktop GUIs
using the operating system's built-in web engine — WebKit on macOS,
WebKitGTK on Linux, and WebView2 on Windows. Instead of shipping a
whole browser like Electron, you reuse the system one, so your apps
stay small. You create a window, point it at some HTML (or a URL), and
you can call back and forth between the page's JavaScript and your
host language.
[webview] <https://github.com/webview/webview>
The gap owebview fills
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
What makes webview really appealing is its ecosystem: it already has
bindings in a *lot* of languages — Go (the reference one), Rust,
Python, C#, Nim, Zig, and many more. As far as I could tell, though,
there wasn't one for *OCaml*.
owebview is an attempt to fill that gap: a thin binding that lets you
drive webview directly from OCaml, with a native bridge between the
page's JavaScript and your OCaml functions.
What it looks like
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
A complete app is about ten lines:
┌────
│ let () =
│ let w = Webview.create () in
│ Webview.set_title w "My first owebview app";
│ Webview.set_size w \~width:480 \~height:320 Webview.Hint_none;
│ Webview.set_html w
│ {|<!doctype html>
│ <html><body style="font-family: system-ui; text-align: center">
│ <h1>Hello from OCaml 👋</h1>
│ </body></html>|};
│ Webview.run w;
│ Webview.destroy w
└────
And you can expose OCaml functions to the page — here `window.add(a,
b)' returns a JavaScript Promise resolved from OCaml:
┌────
│ Webview.bind w "add" (fun id req ->
│ let result =
│ match Scanf.sscanf_opt req "\[%d,%d\]" (fun a b -> a + b) with
│ | Some n -> string_of_int n
│ | None -> "null"
│ in
│ Webview.return w id \~error:false \~result)
└────
Try it
╌╌╌╌╌╌
┌────
│ # Run the bundled example
│ git clone https://github.com/korkorran/owebview.git
│ cd owebview
│ dune exec examples/hellowv.exe
│
│ # Or pin it into your own project
│ opam pin add owebview https://github.com/korkorran/owebview.git
└────
Then just add `(libraries owebview.webview)' to your dune file. The
`webview.h' header is vendored, and the platform-specific C++ flags
are detected at build time (via `pkg-config' on Linux), so there's
nothing to wire up by hand.
Honest status & a request
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
This is a *compact binding / starting point*, not a complete library
yet: some pieces (`unbind', `dispatch', full binding memory
management) are intentionally left out for now.
It's also developed and tested mainly on **macOS**. I'd love feedback
from people running it on **Linux distributions** — does it compile,
do the opam `depexts' resolve, does the `webkit2gtk-4.1' backend
behave on your distro?
Issues and PRs are very welcome.
Repository: <https://github.com/korkorran/owebview>
Thanks for reading — happy to hear thoughts, suggestions, and
especially Linux build reports!
OCaml Runtime Meeting: Mon, July 6 @ 10:00 UTC (10:00 London/Cambridge, 11:00 Paris, 7pm Sydney)
════════════════════════════════════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ocaml-runtime-meeting-mon-july-6-10-00-utc-10-00-london-cambridge-11-00-paris-7pm-sydney/18312/1>
Tim McGilchrist announced
─────────────────────────
The next OCaml Runtime Meeting is Monday July 6th (2026-07-06) at
10:00 UTC (10:00 London/Cambridge, 11:00 Paris, 7pm Sydney). The
agenda notes are here <https://hackmd.io/@tmcgilchrist/S1RtObvWGe>
email tim@tarides.com if you want a calendar invite.
Approximately every month we have an informal meeting between OCaml
developers with a focus on the language runtime/garbage collector. The
meetings are for sharing understanding and ideas, not for formal
planning purposes. They are open to any interested developer.
Previous meeting notes available in
<https://github.com/ocaml/subsystem-meetings>
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: 60816 bytes --]
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 568 bytes --]
next reply other threads:[~2026-06-30 13:25 UTC|newest]
Thread overview: 299+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-30 13:25 Alan Schmitt [this message]
-- strict thread matches above, loose matches on Subject: below --
2026-06-23 10:07 Alan Schmitt
2026-06-16 10:51 Alan Schmitt
2026-06-09 7:39 Alan Schmitt
2026-06-02 9:01 Alan Schmitt
2026-05-26 7:36 Alan Schmitt
2026-05-19 8:52 Alan Schmitt
2026-05-12 7:28 Alan Schmitt
2026-05-05 9:35 Alan Schmitt
2026-04-28 7:59 Alan Schmitt
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=m2y0fwgny6.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