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, 09 Dec 2025 16:04:51 +0100	[thread overview]
Message-ID: <m2jyyvzofg.fsf@mac-03220211.irisa.fr> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of December 02 to 09,
2025.

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

editors dev-meeting: 15th of December about the `ocaml.nvim' plugin
Mosaic - A Modern Terminal User Interface Framework for OCaml (Early Preview)
Making html_of_jsx ~10x faster
Tyre - type-safe regular expressions 1.0
Porting an OxCaml Project to Dune Package Management
Other OCaml News
Old CWN


editors dev-meeting: 15th of December about the `ocaml.nvim' plugin
═══════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-editors-dev-meeting-15th-of-december-about-the-ocaml-nvim-plugin/17559/1>


Charlène_Gros announced
───────────────────────

  Hi!

  We are organizing the next public dev meeting about editors for OCaml!

  It will take place on December 15th at 5 pm.

  The focus will be on the new NeoVim plugin for OCaml, which adds extra
  features to the classical `lspconfig' for standard LSP support, to
  provide all of the Merlin features in Neovim.

  We will explore why having this type of plugin is beneficial for
  maintaining OCaml editor tools, and we will dive into the codebase to
  understand how it works and see what happens in Neovim.

  For the agenda:

  • A tour-de-table to allow the participants who wish to do so to
    present themselves and mention issues / PRs they are interested in.

  • Talk and Q&A

  • Discuss issues and pull requests that were tagged in advance or
    mentioned during the tour-de-table.

  Feel free to join!

  Meeting link: <https://meet.google.com/qxr-zxge-fvg>


Mosaic - A Modern Terminal User Interface Framework for OCaml (Early Preview)
═════════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-mosaic-a-modern-terminal-user-interface-framework-for-ocaml-early-preview/17572/1>


Thibaut Mattio announced
────────────────────────

  I'm excited to share an early preview of [Mosaic], a modern terminal
  user interface framework for OCaml.


[Mosaic] <https://github.com/tmattio/mosaic>

What is Mosaic?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Mosaic is a high-level framework for building terminal user interfaces
  in OCaml. It provides a TEA (The Elm Architecture) runtime with a
  CSS-compatible flexbox layout engine and a rich set of composable
  components. It handles text shaping (styling, wrapping, selection),
  focus and event bubbling, z-ordering, and responsive layout.

  Under the hood, it builds on two libraries that can also be used
  independently:

  • *Matrix*: a terminal runtime focused on performance and modern
     protocols. Highlights: near-zero-allocation diffed rendering,
     immediate- mode API, Kitty keyboard, SGR/URXVT/X10 mouse, bracketed
     paste, focus tracking, inline/alt/split display modes, and built-in
     debug overlay/frame dumps. It also provides a virtual terminal
     emulator (VTE) and pseudo-terminal (PTY) management subsystems.
  • *Toffee*: a CSS-compatible layout engine. It's a port of Rust’s
     [Taffy] with Flexbox, CSS Grid, and Block layout;
     gap/padding/borders/titles; and layout caching for efficiency.


[Taffy] <https://github.com/DioxusLabs/taffy>


Why Mosaic?
╌╌╌╌╌╌╌╌╌╌╌

  Terminal UIs are seeing a renaissance. Tools like Claude Code and
  OpenCode have gotten people excited about what can be built in the
  terminal and the TUI community is gaining momentum in other
  ecosystems.

  OCaml has had LambdaTerm and Notty for terminal graphics for years,
  but there's been a gap when it comes to performance and high-level
  abstractions for building complex UIs.

  Mosaic aims to fill that gap by providing Matrix as a solid terminal
  foundation, and building a high-level TEA framework with layout and
  components on top.

  On a personal side, I'm building Mosaic to power the two projects I'm
  currently working on:

  • It will be the basis for a TUI dashboard for monitoring model
    training in [Raven]. We're starting an [Outreachy] internship to
    build this out this Monday.
  • It powers Spice, the upcoming OCaml coding agent I announced at
    [FunOCaml 2025].


[Raven] <https://github.com/raven-ml/raven>

[Outreachy] <https://www.outreachy.org/>

[FunOCaml 2025] <https://www.youtube.com/watch?v=BAvXqd0QeVM>


Try It Now
╌╌╌╌╌╌╌╌╌╌

  The libraries aren't on opam yet, but you can try them today:

  *Option 1: Pin from GitHub*

  ┌────
  │ opam pin add https://github.com/tmattio/mosaic.git
  └────

  *Option 2: Build from source*

  ┌────
  │ git clone https://github.com/tmattio/mosaic
  │ cd mosaic
  │ opam install . --deps-only
  │ dune build
  └────

  Then run some examples:

  ┌────
  │ # Interactive Game of Life (ported from Notty examples)
  │ dune exec ./matrix/examples/02-life/main.exe
  │ 
  │ # Particles simulation with multiple display modes
  │ dune exec ./matrix/examples/14-particles/main.exe
  │ 
  │ # High-level TEA counter
  │ dune exec ./mosaic/examples/01-counter/main.exe
  └────

  Have a look at the examples directories ([Matrix] and [Mosaic]) for
  more demos to explore!

  As a bonus, we also have more complete demos for both projects:

  • A graphical terminal emulator built with Matrix:
    <https://github.com/tmattio/mosaic/tree/main/matrix/examples/x-emulator>
  • A dashboard app built with Mosaic:
    <https://github.com/tmattio/mosaic/tree/main/mosaic/examples/x-dashboard>


[Matrix] <https://github.com/tmattio/mosaic/tree/main/matrix/examples>

[Mosaic] <https://github.com/tmattio/mosaic/tree/main/mosaic/examples>


Quick Examples
╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ Mosaic: The Elm Architecture

  Mosaic follows TEA for building declarative UIs:

  ┌────
  │ open Mosaic_tea
  │ 
  │ type msg = Increment | Decrement | Quit
  │ 
  │ let init () = (0, Cmd.none)
  │ 
  │ let update msg model =
  │   match msg with
  │   | Increment -> (model + 1, Cmd.none)
  │   | Decrement -> (model - 1, Cmd.none)
  │   | Quit -> (model, Cmd.quit)
  │ 
  │ let view model =
  │   box ~align_items:Center ~justify_content:Center
  │     ~size:{ width = pct 100; height = pct 100 }
  │     [
  │       box ~flex_direction:Column ~align_items:Center ~gap:(gap 1)
  │         ~border:true ~padding:(padding 2) ~title:"Counter"
  │         [
  │           text ~content:(Printf.sprintf "Count: %d" model) ();
  │           text ~content:"Press + or - to change, q to quit" ();
  │         ];
  │     ]
  │ 
  │ let subscriptions _model =
  │   Sub.on_key (fun ev ->
  │       match (Mosaic_ui.Event.Key.data ev).key with
  │       | Char c when Uchar.equal c (Uchar.of_char '+') -> Some Increment
  │       | Char c when Uchar.equal c (Uchar.of_char '-') -> Some Decrement
  │       | Char c when Uchar.equal c (Uchar.of_char 'q') -> Some Quit
  │       | Escape -> Some Quit
  │       | _ -> None)
  │ 
  │ let () = run { init; update; view; subscriptions }
  └────


◊ Matrix: Low-Level Power

  For direct terminal control, Matrix provides an immediate-mode API:

  ┌────
  │ open Matrix
  │ 
  │ let () =
  │   run
  │     ~on_render:(fun _ctx ->
  │       Image.(
  │         string "Hello from Matrix!" |> bg Color.blue |> pad ~l:2 ~t:1))
  │     ~on_input:(fun ctx -> function
  │       | Key { key = Escape; _ } -> quit ctx
  │       | _ -> ())
  │     ()
  └────


Coming Soon: TUI for ML Training
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  We're starting an [Outreachy] internship to build a TUI for monitoring
  model training with [Raven], the scientific computing ecosystem for
  OCaml. It will provide a [TensorBoard] experience in the terminal,
  built entirely with Mosaic.

  A good example of what we're aiming to build is Wandb's newly released
  TUI:

  <https://us1.discourse-cdn.com/flex020/uploads/ocaml/optimized/2X/1/1a0303418fba64bb4a168e4ae1488592d3cb96c0_2_1380x814.jpeg>


[Outreachy] <https://www.outreachy.org/>

[Raven] <https://github.com/raven-ml/raven>

[TensorBoard] <https://www.tensorflow.org/tensorboard>


Mosaic vs Notty
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Notty is the current go-to terminal UI library for OCaml, with a
  well-designed declarative image API. Mosaic sits a level above: it’s a
  TEA runtime with flexbox layout, rich components, focus/event
  bubbling, and diffed rendering via Matrix. In scope, Notty is closer
  to Matrix (the terminal infrastructure under Mosaic) than to Mosaic
  itself.

  Matrix covers the low-level rendering, modern terminal protocols, and
  immediate-mode API that Notty doesn’t. For a detailed Matrix vs Notty
  comparison, see our [comparison table].


[comparison table]
<https://github.com/tmattio/mosaic/tree/main/matrix#matrix-vs-notty>


Acknowledgements
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Mosaic stands on the shoulders of great work:

  • [Bubble Tea] - inspiration for the high-level TEA runtime and app
    structure.
  • [Notty] - Matrix's declarative Image API is directly copied from
    Notty's to provide a familiar interface for OCaml users.
  • [OpenTUI] - the biggest influence on Mosaic UI internals (render
    tree, text buffer, events, selection). Mosaic's UI internals have
    been rewritten to mirror OpenTUI's following its release, if you're
    working in TypeScript, I can't recommend it enough, it's a fantastic
    piece of engineering.
  • [Rich] and [Textual] - for ideas on rich text, diagnostics, and
    polished terminal UX.


[Bubble Tea] <https://github.com/charmbracelet/bubbletea>

[Notty] <https://github.com/pqwy/notty/>

[OpenTUI] <https://github.com/sst/opentui/>

[Rich] <https://github.com/Textualize/rich/>

[Textual] <https://github.com/Textualize/textual>


Feedback Welcome
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  This is an early preview. APIs are stabilizing but may change. I'd
  love your feedback on:

  • API ergonomics
  • Missing components or features you need
  • Performance on your terminal
  • Bugs (please open issues!)

  Give it a try and let me know what you think!


Making html_of_jsx ~10x faster
══════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/making-html-of-jsx-10x-faster/17579/1>


David Sancho announced
──────────────────────

  Hello ocamlers,

  I wrote a blog post about some optimizations I made in [html_of_jsx]

  <https://sancho.dev/blog/making-html-of-jsx-10x-faster>

  I wanted to share it since those tricks are only possible at the
  preprocess stage, and a library would fall short. html_of_jsx is a
  small library that is used in a few places, but also a playground for
  server-reason-react (a bigger project).

  Anyway, I'm still getting used to share some of the long forms of
  content, so feel free to give me some feedback/corrections or ask any
  question.


[html_of_jsx] <https://github.com/davesnx/html_of_jsx/>


Tyre - type-safe regular expressions 1.0
════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-tyre-type-safe-regular-expressions-1-0/17584/1>


Emile Trotignon announced
─────────────────────────

  I am happy to announce the release of [Tyre] 1.0.

  This release makes big changes to the typing: there is a whole host of
  far more practical combinators allowing you to write code like in a
  parser combinator library :

  ┌────
  │ let url =
  │   let+ scheme = opt (const Http (str "http") <|> const Https (str "http") <* str "://") 
  │   and+ host = rep_any
  │   and+ port = opt (str ":" *> pos_int)
  │   and+ path = list (str "/" *> rep_any)
  │   in
  │   (scheme, host, port, path)
  └────
  (this is not a correct url parser by any means, its just to give an
  idea of how you can use this lib)

  This does not allow you to use `eval', because only one direction of
  the conversion is given (there is no code to convert from a url
  tuple). However in the cases where you don't need `eval' this is far
  easier to write. The difference is typed, you can't get runtime error
  by calling eval on the wrong regex.

  There are also convencience changes such as charset and the
  `matched_string' function, that reduce the need to insert `Re' bits in
  your regexp.

  Here is the full changelog:

  • Introduce charsets: contrary to `Re', they have a different type
    from regex.
  • Type the difference between regexps that can be evaluated reversed
    and the ones that cannot: `(evaluable, 'a) Tyre.t' and
    `(non_evaluable, 'a) Tyre.t'.
  • Introduce alias `type pattern' for `(non_evaluable, 'a) Tyre.t'.
  • Introduce `val lift : ('a -> string) -> 'a pattern -> ('e, 'a) t' to
    transform a pattern into an expression by giving an explicit
    conversion function.  Also `liftpp' that does the same with better
    performance by using `Format'.
  • Introduce `val unlift : (evaluable, 'a) t -> 'a pattern'.
  • Introduce `val either: ('e, 'a) Tyre.t -> ('e, 'b) Tyre.t -> ('e,
    ('a, 'b) Either.t) Tyre.t'.
  • Change the type of `alt' to `(_, 'a) t -> (_, 'a) t -> 'a
    pattern'. Previous users of `alt' should switch to `either'.
  • Introduce `~val alt_eval: ('a -> [~Left | ~Right]) -> ('e, 'a) t ->
    ('e, 'a) t -> ('e, 'a) t~' This has flat typing but is compatible
    with `eval'.
  • Operators: `<|>' is `alt', `<||>' is `either'.
  • Introduce `val map : ('a -> 'b) -> (_, 'a) t -> 'b pattern' and its
    corresponding operators: `let+' and `<$>'.
  • Introduce `(and+)' which is an alias of `seq'.
  • Introduce `val app: ('e, 'a -> 'b) t -> ('e, 'a) t -> 'b pattern'
    and its corresponding operator `<*>'
  • Introduce `val matched_string : (_, 'a) t -> (_, string) t' that
    discards the computed value and just return the string that was
    matched.
  • Drop dependency on `Result' library. Stdlib is now used.
  • Introduce `val rep_charset: Charset.t -> (_, string) t', and
    shortcut `val rep_any: (_, string) t'.


[Tyre] <https://github.com/Drup/tyre/>


Porting an OxCaml Project to Dune Package Management
════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/blog-porting-an-oxcaml-project-to-dune-package-management/17582/1>


Sudha Parimala announced
────────────────────────

  I recently worked on porting the [OxCaml tutorial] to build with Dune
  Package Management. What was initially anticipated as a
  straightforward change ended up uncovering a few issues and requiring
  several patches. I wrote about the experience here:
  <https://tensors.ink/posts/oxcaml-dune-pkg>. Any questions or feedback
  welcome!


[OxCaml tutorial] <https://github.com/oxcaml/tutorial-icfp25>


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

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

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

  • [ICFP 2025: Looking Back at the Biggest Functional Programming
    Conference of the Year]
  • [Foundational AI for Ecosystem Resilience workshop]
  • [Tile Server]
  • [A Vision for OCaml in the AI Era - Thibaut Mattio - FUN OCaml 2025]


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

[ICFP 2025: Looking Back at the Biggest Functional Programming
Conference of the Year]
<https://tarides.com/blog/2025-12-04-icfp-2025-looking-back-at-the-biggest-functional-programming-conference-of-the-year>

[Foundational AI for Ecosystem Resilience workshop]
<https://anil.recoil.org/notes/foundational-ecosystem-workshop>

[Tile Server] <https://www.tunbury.org/2025/12/02/tessera-stac/>

[A Vision for OCaml in the AI Era - Thibaut Mattio - FUN OCaml 2025]
<https://watch.ocaml.org/videos/watch/b959eeaf-e8c1-48e4-9d16-f8084a7bdda9>


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

             reply	other threads:[~2025-12-09 15:05 UTC|newest]

Thread overview: 270+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-09 15:04 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
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=m2jyyvzofg.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