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, 30 Apr 2024 09:22:57 +0200	[thread overview]
Message-ID: <m2r0enmi0e.fsf@mac-03220211.irisa.fr> (raw)

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

Hello

Here is the latest OCaml Weekly News, for the week of April 23 to 30,
2024.

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

OCANNL 0.3.1: a from-scratch deep learning (i.e. dense tensor optimization) framework
I roughly translated Real World OCaml's Async concurrency chapter to eio
Using Property-Based Testing to Test OCaml 5
OCaml Backtraces on Uncaught Exceptions, by OCamlPro
OCaml Users on Windows: Please share your insights on our user survey
Graphql_jsoo_client 0.1.0 - library for GraphQL clients using WebSockts
dream-html 3.0.0
DkCoder 0.2 - Scripting in OCaml
Ocaml-protoc-plugin 6.1.0
Other OCaml News
Old CWN


OCANNL 0.3.1: a from-scratch deep learning (i.e. dense tensor optimization) framework
═════════════════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-ocannl-0-3-1-a-from-scratch-deep-learning-i-e-dense-tensor-optimization-framework/14492/8>


Lukasz Stafiniak announced
──────────────────────────

  Third time the charm. OCANNL 0.3.3 is out now. I might need to change
  the name of the project, because of the lint warnings: Possible name
  collision with packages 'OCADml', 'ocal', 'ocaml'?


I roughly translated Real World OCaml's Async concurrency chapter to eio
════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/i-roughly-translated-real-world-ocamls-async-concurrency-chapter-to-eio/14548/1>


Dennis Dang announced
─────────────────────

  Repo at
  <https://github.com/dangdennis/rwo-eio/blob/main/lib/rwo_eio.ml>

  I was inspired by Taride's [Make an Eio version of the Async examples
  in Real World OCaml] to translate the Async examples to eio to test
  out eio's concurrency story.  Warning, it's a rough translation. I
  hardly know OCaml and eio as well as I know my day-job languages
  :smile: .

  There are still a few examples I haven't figured out.
  1. I don't know how to implement [`copy_blocks']. In [this section],
     the example uses an intermediate buffer of some sorts to then copy
     from reader to writer. For now, I've left that intermediate buffer
     out.
  2. I can't find an `interrupt' option in `cohttp-eio' as well as
     `choice' and `choose'. The book explains that cohttp-async can
     cancel http requests via an `interrupt' ([see section]).
  3. For [`log_delays'], I have yet to solve how to await my own `every'
     ticker such that I can await its completion and then log the timer
     at the end.


[Make an Eio version of the Async examples in Real World OCaml]
<https://github.com/tarides/hackocaml/issues/9>

[`copy_blocks']
<https://github.com/dangdennis/rwo-eio/blob/a666d8aaaed0884218d706f94b6babeed85debea/lib/rwo_eio.ml#L88>

[this section]
<https://dev.realworldocaml.org/concurrent-programming.html>

[see section]
<https://dev.realworldocaml.org/concurrent-programming.html>

[`log_delays']
<https://github.com/dangdennis/rwo-eio/blob/a666d8aaaed0884218d706f94b6babeed85debea/lib/rwo_eio.ml#L348>


Using Property-Based Testing to Test OCaml 5
════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/blog-using-property-based-testing-to-test-ocaml-5/14550/1>


Jan Midtgaard announced
───────────────────────

  Here's a blog post about how we have been using property-based testing
  to test OCaml 5:
  <https://tarides.com/blog/2024-04-24-under-the-hood-developing-multicore-property-based-tests-for-ocaml-5/>


OCaml Backtraces on Uncaught Exceptions, by OCamlPro
════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/blog-ocaml-backtraces-on-uncaught-exceptions-by-ocamlpro/14551/1>


OCamlPro announced
──────────────────

  Here's another one of our heads up about our latest blog release!

  Today's topic is about an unintentionally hidden feature of the OCaml
  dev environmment: [backtraces on uncaught exception]!

  We believe this will be old news to the veteran OCaml devs but could
  be of much use to the newer Cameleers out there!

  Hopefully, you will learn a thing or two from reading this short
  article, we welcome all feedback in this very thread, thank you for
  reading!


[backtraces on uncaught exception]
<https://ocamlpro.com/blog/2024_04_25_ocaml_backtraces_on_uncaught_exceptions/>


OCaml Users on Windows: Please share your insights on our user survey
═════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ocaml-users-on-windows-please-share-your-insights-on-our-user-survey/14554/1>


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

  Do you use OCaml on Windows? We want to hear from you! Participate in
  our user survey to share your experiences with the OCaml development
  environment on Windows. Your feedback is important in helping us
  understand the current pain points and identify areas for
  improvement. Whether you're a seasoned OCaml developer or just
  starting out, your input can make a significant difference.

  Please sign up here <https://forms.gle/SxRvNaEZXgedxrnR9>, and we'll
  reach out to you.


Graphql_jsoo_client 0.1.0 - library for GraphQL clients using WebSockts
═══════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/graphql-jsoo-client-0-1-0-library-for-graphql-clients-using-websockts/14557/1>


Hans Ole Rafaelsen announced
────────────────────────────

  I'm glad to announce the release of graphql_jsoo_client.

  This is the client side implementation of the [GraphQL over WebSocket
  Protocol]. It is mainly intended for use with Dream, which implements
  the server side. This library supports writing client code in Ocaml,
  that will run in the browser.

  It can be found [here].


[GraphQL over WebSocket Protocol]
<https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md>

[here] <https://github.com/hansole/graphql_jsoo_client>


dream-html 3.0.0
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-dream-html-3-0-0/14013/8>


Yawar Amin announced
────────────────────

  [ANN] dream-html 3.4.1

  Add 'livereload' support ie automatically reloading the page in the
  browser when the Dream server restarts. Useful to run with dune's
  watch mode for a fast dev cycle.

  This is adapted from Dream's own livereload middleware but with a
  slightly different approach. Full details in the module documentation:
  <https://yawaramin.github.io/dream-html/dream-html/Dream_html/Livereload/>

  Why reimplement this? It seems that Dream's built-in livereload needs
  to parse the HTML markup, find its `head' tag, and dynamically inject
  the reloader `script' inside. Since parsing HTML can be pretty tricky
  and potentially buggy, I decided to manually add the script in the
  `head' tag as a strong-typed dream-html `node':

  ┌────
  │ head [] [
  │   ...
  │   Livereload.script;
  │   ...
  │ ]
  └────


DkCoder 0.2 - Scripting in OCaml
════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/dkcoder-0-2-scripting-in-ocaml/14560/1>


jbeckford announced
───────────────────

  I'm happy to announce the second release of DkCoder, an OCaml
  scripting tool.

  The first release was about /install ease/: a couple clicks and four
  (4) minutes later you and your Windows and macOS users can start
  scripting. All users, including glibc-based Linux desktop users, can
  also use their Unix shells or Windows PowerShell. OCaml does *not*
  need to be pre-installed. Just copy and paste two lines (you'll see
  some in this post) and your script is running and your project is
  editable with OCaml LSP.

  This second release is about /technical ease/. The three "big" ideas
  in this release are:

  • You don't write build files. If that sounds like `/bin/sh' that is
    intentional.
  • Almost every OCaml file is a script you can run. If that sounds like
    how Python scripts are almost indistinguishable from Python modules,
    that is intentional.
  • Almost every OCaml file can be referenced with a fully-qualified
    name. If that sounds like Java packages that is intentional.

  Here are some examples:

  1. (*one of my own scripts*) The incomplete but growing DkCoder
     documentation is written in a script:
     <https://diskuv.com/dksdk/coder/2024-intro-scripting/>. /The
     documentation is a side-effect of running tests./

     In a Unix shell or in PowerShell, the following will a) run tests
     using [tezt], b) collect outputs, c) generate HTML documentation,
     and then d) serve the doc page on a [tiny_httpd] webserver for a
     quick preview:

     ┌────
     │ git clone --branch V0_2 https://gitlab.com/diskuv/samples/dkcoder/DkHelloScript.git
     │ 
     │ ./DkHelloScript/dk DkRun_V0_2.Run -- DkHelloScript_Std.Y33Article --serve
     └────

     The following will print mixed Markdown/HTML that I can render and
     publish with a static site generator to a website:

     ┌────
     │ ./DkHelloScript/dk DkRun_V0_2.Run -- DkHelloScript_Std.Y33Article --doc --doc-format markdown
     └────

  2. (*someone else's*) The Bogue demo game Snoke written by @sanette
     was "ported" to DkCoder. /The port did not change a single line of
     the original code/. I did re-arrange the directory structure
     (recall that there is a Java-like package mechanism underneath
     DkCoder) and I did add an extra `.ml' file. Run:

     ┌────
     │ git clone --branch V0_2 https://gitlab.com/diskuv/samples/dkcoder/SanetteBogue.git
     │ 
     │ ./SanetteBogue/dk DkRun_V0_2.Run -- SanetteBogue_Snoke.Snoke
     └────

  The remaining items for DkCoder before a 1.x release: auto-downloading
  remote libraries (mostly done), meta/codegen tools (in progress),
  conditional compilation (in design), and a security policy (in
  design).

  But right now DkCoder is at a reasonable enough point that I can now
  recommend using it for your own scripts. With the usual caveats that
  this is a 0.x release.

  /I'd like some feedback, especially on pain points and missing
  must-have features./


[tezt] <https://v3.ocaml.org/p/tezt/latest>

[tiny_httpd] <https://v3.ocaml.org/p/tiny_httpd/latest>

Tech Details (if interested)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Very simplistically, DkCoder is a high-level build system that
  transparently manages lower-level build systems (today that is Dune).
  I think (?) DkCoder is the first build system to use [the `codept'
  OCaml dependency analyzer]. Huge huge thanks to @octachron for that
  tool.

  The rather boring driver pipeline is:

  1. Seed a "universe" of modules with the single `.ml' file the user
     wants to run from the `./dk' CLI, or seed with all the `.ml' files
     if run through OCaml LSP.
  2. Let `codept' analyse any module references inside the current
     universe. Any *missing modules* are located and added to the
     universe. Rinse and repeat until there is a closed universe with no
     more missing module references.
  3. Generate and/or incrementally update the build files. Each `.ml'
     file is mapped to a single OCaml `.cma' library.
  4. Run the chosen build tool (ie. Dune) and execute the code.

  What does that pipeline give us? Even in this early 0.2 release you
  get some unusual benefits:

  • Step 2: The *missing modules* can be created implicitly. The Snoke
    game has font, image and sound assets. By using `Tr1Assets.LocalDir'
    in the code DkCoder automatically creates a module that has all the
    assets (think [ocaml-crunch]). If a script does not need the assets,
    the `codept' analysis knows it doesn't use `Tr1Assets', and the
    assets won't waste time getting built.
  • Step 3: The *one-to-one .ml/.cma correspondence* means DkCoder can
    apply a unique set of compiler flags to each `.ml' file. You get the
    Java-like package structure by opening a unique set of modules per
    `.ml' with `-open' flags (nit: I also used implicitly created
    directory modules to let you navigate the packages in your source
    code).
  • Step 4: You can take the generated `dune-project' and `dune' files,
    tweak them and run them outside of DkCoder. /That means you are not
    locked into DkCoder!/ You can alternatively do what I did with
    Snoke: make your project compatible with both regular dune
    (/ocamlbuild/etc.) and DkCoder. Either way, you only need to deal
    with two issues that arise from DkCoder's bytecode compilation and
    prebuilt C libraries: a) build C dependencies yourself, and b) tell
    Dune to switch from bytecode mode to native code mode. If you are a
    mildly experienced Linux/OCaml user who understands the terms
    "opam", "pkg-config", "depexts", and "dune-configurator", this is a
    low bar.

  Script references:
  • [https://gitlab.com/diskuv/samples/dkcoder/DkHelloScript.git]
  • [https://gitlab.com/diskuv/samples/dkcoder/SanetteBogue.git]


[the `codept' OCaml dependency analyzer]
<https://discuss.ocaml.org/t/local-open-seems-to-confuse-dunes-dependency-cycle-detector/9529/2?u=jbeckford>

[ocaml-crunch] <https://v3.ocaml.org/p/crunch/latest>

[https://gitlab.com/diskuv/samples/dkcoder/DkHelloScript.git]
<https://gitlab.com/diskuv/samples/dkcoder/DkHelloScript.git>

[https://gitlab.com/diskuv/samples/dkcoder/SanetteBogue.git]
<https://gitlab.com/diskuv/samples/dkcoder/SanetteBogue.git>


Ocaml-protoc-plugin 6.1.0
═════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-ocaml-protoc-plugin-6-1-0/14566/1>


Anders Fugmann announced
────────────────────────

  I'm happy to announce the release of [Ocaml-protoc-plugin] version
  6.1.0 Ocaml-protoc-pluginis a plugin for google's protobuf compiler
  (`protoc') that generates an idomatic ocaml mapping and
  (de-)serialization functions based on .proto files. The library aims
  to be 100% compliant implementation of the protobuf specification.

  The 6.1.0 (and 6.0.0) release introduces Json serialization and
  deserialization based on protobuffers guidelines and the ability to
  copy comments from .proto into ocaml generated code for improved
  documentation as well as numerous bug fixes and other improvements.

  *Full changelog since release 5.0.0*


[Ocaml-protoc-plugin]
<https://github.com/andersfugmann/ocaml-protoc-plugin>

6.1.0: 2024-04-25
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • Fix name resolution leading to wrongly mapped names
  • Fix codegen bug causing the plugin to reject valid protobuf
  • Add preliminary support for melange though disabling eager
    evaluation of serialize and deserialize functions when not using
    native or bytecode backends
  • Fix missing cflags when compiling test c stub
  • Make Map tests compatible with older versions of protoc
  • Fix negative integer test failues due to a bug in older versions of
    protobuf (google) c lib


6.0.0: 2024-04-13
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

◊ New features

  • Implement json serialization and deserialization (#5)
  • Support special json mapping for google types (#9)
  • Add deprecation annotations for deprecated fields, services etc (#8)
  • Add option to prefix generated files with their package name
  • Copy documentation from proto files into generated ocaml bindings


◊ Bug fixes

  • Fix file output name if files contains a '-'
  • Resolve bug for Request/Response module aliases leading to
    generating uncompilable code. (#21)
  • Fix codegen bug for messages without fields and setting
    singleton_records = true (#20)
  • In Services, the package field is now correctly set to None if the
    service if not defined in a package scope (#24)


◊ Misc changes

  • Unify serialization and deserialization spec and optimize oneof
    handling
  • Simplify types used in code generation to improve readaility
  • *Replace `val name': unit -> string' with `val name: unit -> string'
     which will only return the full protobuf name
  • Optimize merge functions by applying eager evaluation
  • Change signature of `to_proto'' to return unit and not a writer

  (`*' indicates breaking change)


◊ Notes

  `Message.name': unit -> string' has been renamed to `Message.name:
    unit -> string', and is now contains the fully qualified protobuf
    message name. Before the name was the ocaml module name of the
    message.

  `Service.Message' signature has been deprecated and replaced with
  `Spec.Message' signature. `Service.Message' is now an alias for
  `Spec.Message' and will be removed in future releases.


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

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

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

  • [OCaml Backtraces on Uncaught Exceptions]
  • [Under the Hood: Developing Multicore Property-Based Tests for OCaml
    5]


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

[OCaml Backtraces on Uncaught Exceptions]
<https://ocamlpro.com/blog/2024_04_25_ocaml_backtraces_on_uncaught_exceptions>

[Under the Hood: Developing Multicore Property-Based Tests for OCaml 5]
<https://tarides.com/blog/2024-04-24-under-the-hood-developing-multicore-property-based-tests-for-ocaml-5>


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

             reply	other threads:[~2024-04-30  7:23 UTC|newest]

Thread overview: 236+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-30  7:22 Alan Schmitt [this message]
  -- strict thread matches above, loose matches on Subject: below --
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-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=m2r0enmi0e.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