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, 02 Dec 2025 11:39:05 +0100	[thread overview]
Message-ID: <m2a501goc6.fsf@mac-03220211.irisa.fr> (raw)

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

Hello

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

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

avro-simple, an OCaml implementation of Apache Avro
Sunsetting of DkML distribution
opam 2.5.0 is out!
Transient emacs command for dune
Slipshow!
Two open roles at Tarides: Compiler Engineer and VP of Software Engineering
RFSM version 2.2
Alice v0.2.0, now with LSP
Gendarme, a modular marshalling library
FUN OCaml is live on YouTube and Twitch
Other OCaml News
Old CWN


avro-simple, an OCaml implementation of Apache Avro
═══════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-avro-simple-an-ocaml-implementation-of-apache-avro/17528/1>


Tim McGilchrist announced
─────────────────────────

  I’ve been building a library for Apache Avro called [avro-simple]. It
  is an OCaml implementation of [Apache Avro] with codec-based design,
  schema evolution support, and container file format.

  The key principles for this library are:
  • *Value-centric design*: Manual codec construction using combinators
     (no code generation required)
  • *Pure OCaml*: No external C dependencies for core functionality
  • *Schema evolution*: Built-in support for reading data with different
     schemas
  • *Container files*: Full support for Avro Object Container File
     format
  • *Compression*: Multiple compression codecs (null, deflate, snappy,
     zstandard) with compression plugins
  • *Streaming*: Memory-efficient block-level streaming for large files
  • *Type-safe*: Codec-enforced types with composable combinators

  This compares to [ocaml-avro] which uses code generation based on JSON
  schemas and is missing some of the schema evolution features.

  I'm mainly using this for reading and writing Avro container files,
  however it should be possible to integrate with [ocaml-kafka] if you
  use Kafka. The performance is reasonable so far, 1.4 times slower than
  the fastest Rust based library I could find and I haven't really tried
  to optimise it yet. HEAPs faster than the official Apache Avro
  libraries in Python.

  There are a few other places I think I can improve the performance and
  memory usage, but it should be quite usable for small to medium sized
  files. Enjoy :slight_smile:


[avro-simple] <https://github.com/tmcgilchrist/avro-simple>

[Apache Avro] <https://avro.apache.org/docs/1.11.1/specification/>

[ocaml-avro] <https://github.com/c-cube/ocaml-avro>

[ocaml-kafka] <https://github.com/didier-wenzek/ocaml-kafka>


Sunsetting of DkML distribution
═══════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-sunsetting-of-dkml-distribution/17530/1>


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

  DkML, the Windows-friendly distribution of OCaml, is being
  sunset. DkML was launched to get Windows + OCaml off life-support when
  an earlier Windows distribution was retired. Mission accomplished. And
  thanks to OCSF for the support in the early years!

  Existing users: Official end-of-life for the distribution will be
  *12/31/2026*. 1 year and 1 month from this posting the distribution
  binaries, C libraries and overlay repositories will no longer be
  hosted. Please use the native Windows support from opam!

  To be clear, the Windows *distribution* is the following two products
  which will disappear:

  • *dkml-installer*: This is the Windows installer available through
     `winget' (<https://winstall.app/apps/Diskuv.OCaml>). *I’ll withdraw
     it from winget soon; that won’t affect existing users.*
  • *setup-dkml*: This is the GitHub/GitLab CI for MSVC.

  In contrast, the following products are much broader than Windows, are
  actively maintained, and will *_not be sunset_*:

  • /dkml-compiler/ and /dkml-base-compiler/. These have patches for
    [Android] and [bytecode].
  • /MlFront/ and /dk/. This is the build and scripting system; more on
    that in upcoming announcements.


[Android]
<https://discuss.ocaml.org/t/ann-simplified-android-cross-compiler-with-dkml/15407>

[bytecode]
<https://discuss.ocaml.org/t/a-hybrid-32-bit-64-bit-abi-bx32-avoid-input-value-integer-too-large-etc/16995>


opam 2.5.0 is out!
══════════════════

  Archive: <https://discuss.ocaml.org/t/ann-opam-2-5-0-is-out/17538/1>


Kate announced
──────────────

  Hi everyone,

  We're happy to announce the release of opam 2.5.0 and encourage all
  users to upgrade.

  *Note*: the following section will recap the various major changes in
   opam `2.5.0' for anyone who haven't already read the previous
   pre-release announcements. For those who did, note that nothing
   changed between `2.5.0~beta1' and the final `2.5.0'.


What’s new? Some highlights:
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • :high_speed_train: Speedup opam update up to 70%. Thanks to
    [@arozovyk], `opam update' now load opam file incrementally, only
    parsing the files that have changed since the last time you called
    `opam update'. Before that, opam files in opam repositories were all
    loaded after an update if there was any change. The performance
    improvement of this change thus depends on how often you call `opam
    update' and what type of repository and OS you are using. ([#5824])

  • :spiral_shell: Improved shell integration. A number of users have
    been hitting issues with opam's shell integration where parts of a
    previous environment was kept in the current environment, causing a
    number of issues. These can be triggered by, for example, nuking
    your opam root directory (by default `~/.opam' or
    `%LocalAppData%\opam'). For this particular case we are still
    working on a fix, but many other users have reported similar issues
    without nuking their root directory and in that case we believe to
    have fixed the majority of issues. ([dbuenzli/topkg#142], [#4649],
    [#5761])

  • :spiral_shell:² We've also changed the default file to which `opam
    init' writes the opam shell integration to be `.bashrc' instead of
    the previous `.profile' or `.bash_profile' when `bash' is detected.
    Doing it this way prevents some issues with existing `.profile'
    files that source the `.bashrc' file and causing an infinity loop
    when opam asks users to make sure to source their `.bashrc' file
    into their `.profile' file. ([#5819], [#4201], [#3990])

  • :shield: The opam install script now installs an appropriate
    `apparmor' profile on systems configured with `apparmor' (this is
    enabled by default on Ubuntu). This change is not strictly speaking
    related to this release as it is deployed for every
    versions. ([#5968]).

  • :ocean: Many more UI additions and improvements, bug fixes, …


  :open_book: You can read our [blog post] for more information about
  these changes and more, and for even more details you can take a look
  at the [release note] or the [changelog].


[@arozovyk] <https://github.com/arozovyk>

[#5824] <https://github.com/ocaml/opam/issues/5824>

[dbuenzli/topkg#142] <https://github.com/dbuenzli/topkg/issues/142>

[#4649] <https://github.com/ocaml/opam/issues/4649>

[#5761] <https://github.com/ocaml/opam/issues/5761>

[#5819] <https://github.com/ocaml/opam/issues/5819>

[#4201] <https://github.com/ocaml/opam/issues/4201>

[#3990] <https://github.com/ocaml/opam/issues/3990>

[#5968] <https://github.com/ocaml/opam/issues/5968>

[blog post] <https://opam.ocaml.org/blog/opam-2-5-0/>

[release note] <https://github.com/ocaml/opam/releases/tag/2.5.0>

[changelog] <https://github.com/ocaml/opam/blob/2.5.0/CHANGES>


Try it!
╌╌╌╌╌╌╌

  The upgrade instructions are unchanged:

  For Unix systems
  ┌────
  │ bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.5.0"
  └────
  or from PowerShell for Windows systems
  ┌────
  │ Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.5.0"
  └────
  Please report any issues to the [bug-tracker].

  Happy hacking, <> <> The opam team <> <> :camel:


[bug-tracker] <https://github.com/ocaml/opam/issues>


Transient emacs command for dune
════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-transient-emacs-command-for-dune/17539/1>


Paul-Elliot announced
─────────────────────

  Hello!

  :tada: On the behalf of everyone who has contributed to a training set
  for an LLM by writing something on the internet, I'm happy to announce
  the release of [`dune-transient'], an emacs transient command to drive
  dune! :tada:

  When invoked with `M-x dune-transient', it opens a first panel:

  <https://raw.githubusercontent.com/panglesd/dune-transient/refs/heads/main/main_panel.png>

  Some keys provide direct access to common workflows. Pressing B will
  open a subsequent panel allowing you to build your very own command in
  the transient way:

  <https://raw.githubusercontent.com/panglesd/dune-transient/refs/heads/main/build_panel.png>

  Now that you know the gist of the tool, let me quote an important part
  of the README^[This text was written by me so it's acceptable to
  publish it here!]:

        It was built entirely by an AI. I was only in charge of
        copy-pasting various bits of inscrutable text from one
        place to the other.

        As a consequence, I'm afraid this project cannot accept
        contributions made by humans. We need to wait a bit before
        humans are reliable enough. You are however welcome to
        open PR, provided both the PR text and the code in it has
        been written by an AI, without human review.

        If you find it useful, you are welcome to use it, even if
        you are not 100% an AI.

  You've been warned!


[`dune-transient'] <https://github.com/panglesd/dune-transient>


Slipshow!
═════════

  Archive: <https://discuss.ocaml.org/t/ann-slipshow/16337/16>


Paul-Elliot announced
─────────────────────

  I'm back!


Slipshow 0.7.0: The Slipshow of Dorian Gray
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  It's with guilty pleasure that I announce the new [release] of
  Slipshow 0.7.0: The Slipshow of Dorian Gray, on [opam].

  ┌────
  │ $ opam update
  │ $ opam upgrade slipshow
  └────

  This release contains a handful of bugfixes. But the highlight of the
  changelog is an experimental support for recording and replaying
  annotations!

  [Peek 2025-11-26 13-25]

  The gif above was made using the new feature. You can also [view it
  live]. If you want an example of a more interesting use of the feature
  than a picture of me grow old, you can also see [this
  presentation]. You can also find the doc [here].

  The exclusive feature, that might not be obvious above, is that once
  you've recorded a series of strokes, you can edit it. For instance,
  here is the timeline for this [presentation]:

  <https://us1.discourse-cdn.com/flex020/uploads/ocaml/original/2X/0/05f6493543d78b90cc6b53c17bbcc520bbb399d2.png>

  You can see it live and edit it by pressing `Shift + R' in the
  presentation, and selecting one of the recording in the dropdown on
  the bottom left.

  However experimental this is, I can't wait to see what kind of good
  and bad uses it can have for your presentations. Please post them
  here!

  Thanks a lot to [NLNet] for their invaluable [support].

  And before the changelog, an exclusive information relevant to OCaml
  users! The drawing edition UI, and actually the whole drawing
  mechanism, is made using Functional Reactive Programming, in
  particular with @let-def's [brr-lwd] library! As always, I'd like to
  say thank you to the developers of open source libraries, you are so
  great.

  Here are the release notes:


[release] <https://github.com/panglesd/slipshow/releases/tag/v0.7.0>

[opam] <https://github.com/ocaml/opam-repository/pull/28970>

[Peek 2025-11-26 13-25]
<https://github.com/user-attachments/assets/256df6f7-d28c-4bd5-9962-f8044373d066>

[view it live] <https://choum.net/panglesd/gray.html#0>

[this presentation] <https://choum.net/panglesd/hb.html#0>

[here]
<https://slipshow.readthedocs.io/en/stable/record-and-replay.html>

[presentation] <https://choum.net/panglesd/hb.html#0>

[NLNet] <https://nlnet.nl/>

[support] <https://nlnet.nl/project/Slipshow/>

[brr-lwd] <https://github.com/let-def/lwd>


BREAKING CHANGES!
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  • I removed support for the "setext" headings: Underlining a title
    with dashes will no longer make a title. Sorry for breaking a
    standard, but that messes too much with the `---' separator. Replace
    it with atx headings: `# This is a title'.
  • A bug in the carousel was fixed, breaking the workaround. If you
    used `+2' to go to the next meaningful page, you can now change
    that, either to `+1' or to `all'.
  • The semantics of `focus' and `unfocus' was changed. Before, you had
    to unfocus as many times as you focused. Now, you have to unfocus
    only once.
  • If you find any migration problem, please open an issue and I'll
    help for the migration!


Compiler
╌╌╌╌╌╌╌╌

  • Embed Liberation Sans fonts (and use them) (#150)
  • Fix missing favicon (which was missing since speaker view) (#150)
  • Fix changing step number from speaker note does not update serve
    mode state (#154)
  • Fix blank lines considered as elements in carousel (#170)
  • Allow to specify port in `slipshow serve' with `-p' or `--port'
    (#176)
  • Fix link with no content in block raising a syntax error (#180)
  • Remove support for Setext headings (#178)


Engine
╌╌╌╌╌╌

  • Allow to record and replay strokes (#187)
  • Fix speaker note scrolling (#150)
  • Fix script undos recovery when script execution fails (#150)
  • Hide paused/unrevealed elems also for mouse (#150)
  • Don't execute scripts when computing toc (#150)
  • Mute medias in speaker view (#152)
  • Use the [perfect-freehand] library to generate strokes. (#151)
  • Fix order of execution of actions (`center' after `enter') (#171)
  • Fix pauses not being scoped in slides (#179)
  • Fix exiting not where it should (#179)
  • Fix `unfocus' behavior to match the docs (#179)
  • Fix wrong position bug on custom dimensions (#182)
  • Fix infinitely jiggling autoresizing (#187)
  • Fix not being able to draw outside of inner presentation (#187)
  • Fix permanent fast-moving bug (#187)


[perfect-freehand] <https://github.com/steveruizok/perfect-freehand>


Two open roles at Tarides: Compiler Engineer and VP of Software Engineering
═══════════════════════════════════════════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/two-open-roles-at-tarides-compiler-engineer-vp-of-software-engineering/17541/1>


Thomas Gazagnaire announced
───────────────────────────

  Hi all,

  Tarides’ mission is to help make OCaml mainstream. We work across the
  stack: contributing upstream to the compiler, maintaining ecosystem
  tooling, and supporting organisations that rely on OCaml in
  production. Our work ranges from training and team extensions to full
  product development. For instance, Tarides recently spun off
  [Parsimoni] which builds software-defined satellite systems using a
  platform based on MirageOS (in OCaml) and Unikraft. We also
  collaborate with companies that already operate large OCaml codebases,
  such as Jane Street and Semgrep, supporting them on targeted projects
  and long-term initiatives.

  To sustain this breadth of activity, we are opening two roles on
  <https://tarides.com/careers/>.


[Parsimoni] <https://parsimoni.co>

*Compiler Engineer*
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The compiler team at Tarides has been central to major changes in
  OCaml over the past years, including the design and integration of the
  multicore runtime and effect handlers in OCaml 5. Beyond that
  milestone, the team continues to shape the evolution of the language
  and its runtime: improving the OCaml/WASM toolchain, refining the
  behavior of OCaml 5 programs under load, and exploring new directions
  for the type system and tooling. The role suits someone who enjoys
  language implementation, runtime internals, and the practical
  constraints of deploying OCaml in production environments (especially
  performance).

  Details:
  <https://jobs.world.luccasoftware.com/tarides-com/compiler-engineer-a384e70c-cd83-4c82-9cdb-a2ab121329a7>


*VP of Software Engineering*
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  As our projects and teams have grown, we are looking for a VP of
  Software Engineering to guide the group of team leads across
  Tarides. The role involves structuring delivery, keeping teams aligned
  with the technical roadmap, and maintaining a clear interface between
  engineering and the rest of the company. It is a VP-level position,
  but experienced team leads or engineering managers who are ready to
  step into a wider leadership role should consider applying.


  Details:
  <https://jobs.world.luccasoftware.com/tarides-com/vp-of--software-engineering-ad64996f-0d3c-4991-8af9-6b7f0e943faf>

  If you would like to discuss either post or want more context about
  current projects, feel free to reach out.

  Best, Thomas


Thomas Gazagnaire later added
─────────────────────────────

  And now a third one, to improve the OCaml runtime's performance and
  create a successor to venerable [sandmark].


[sandmark] <https://github.com/ocaml-bench/sandmark >

Runtime Systems Engineer
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  The multicore work merged in OCaml 5.0 introduced native support for
  scalable concurrency and shared-memory parallelism. Its design
  combines effect handlers for expressing structured concurrent
  workflows, a concurrent garbage collector aimed at responsive
  networked applications, and a modular memory model that supports local
  reasoning without sacrificing performance. With these foundations now
  in the mainline compiler, Tarides is helping partners migrate their
  systems to OCaml 5.

  This third role focuses on the practical side of that transition:
  developing tooling to understand runtime behaviour, maintaining
  benchmarks that guide runtime improvements, and collaborating on
  future directions for the scheduler and GC. It is well-suited to
  someone who wants to work on the boundary between research-grade
  runtime design and the realities of large OCaml deployments.

  Details:
  <https://jobs.world.luccasoftware.com/tarides-com/runtime-systems-engineer-14f4aa23-9a0d-4d66-88b6-4f5805e70166>


RFSM version 2.2
════════════════

  Archive: <https://discuss.ocaml.org/t/ann-rfsm-version-2-2/17544/1>


jserot announced
────────────────

  It’s my pleasure to announce the availability of version `2.2' of the
  `RFSM' language and compiler.

  `RFSM' is a domain specific language for describing, simulating and
  generating code from *reactive finite state machines*.

  From a description of a system composed of a set of reactive FSMs, the
  `RFSM' compiler can generate

  • graphical description of the system in the `.dot' format
  • execution traces in the `.vcd' file format
  • code in `C', `SystemC' and `VHDL' for simulation or implementation
    on a target platform

  The most significant change since version 2.0 is the introduction of a
  *server mode* allowing the compiler to be called on fragments of
  code. This feature is used by the [Grasp] application, a graphical
  front-end to `RFSM' (superseding the previous `Rfsm-Light'
  application).

  `RFSM' is available from this [GH page] or as an [OPAM package].

  Comments, feedbacks and bug reports welcome !


[Grasp] <https://github.com/jserot/grasp>

[GH page] <https://github.com/jserot/rfsm>

[OPAM package] <https://opam.ocaml.org/packages/rfsm/>


Alice v0.2.0, now with LSP
══════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-alice-v0-2-0-now-with-lsp/17550/1>


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

  I'm happy to announce the release of [Alice v0.2.0]. Alice is a
  radical, experimental OCaml build system, package manager, and
  toolchain manager for Windows and Unix-based OSes. Its goal is to
  allow anyone to program in OCaml with as little friction as possible.

  The main new addition is support for LSP. Alice now generates some
  additional files that can be interpreted by OCaml-LSP/Merlin. To use
  OCaml-LSP in an Alice project, make sure to configure your editor to
  start the LSP server with the command `ocamllsp
  --fallback-read-dot-merlin' and install `dot-merlin-reader' (either by
  running `alice tools install' or from the `dot-merlin-reader' opam
  package).

  See [this page] for more info on setting up LSP for Alice projects.

  Alice has gotten slightly easier to install. There's now a package in
  the [WinGet] repository so Windows users can install Alice by running:
  ┌────
  │ winget install OCaml.Alice
  └────

  There's also a Homebrew tap for Alice, so macOS users can install
  Alice by running:
  ┌────
  │ brew install alicecaml/homebrew-tap/alice
  └────
  The [Install page] has an interactive OS picker that displays install
  instructions for the current OS by default.


[Alice v0.2.0] <https://www.alicecaml.org/blog/alice-v0-2-0/>

[this page] <https://www.alicecaml.org/lsp/>

[WinGet]
<https://learn.microsoft.com/en-us/windows/package-manager/winget/>

[Install page] <https://www.alicecaml.org/install/>


Gendarme, a modular marshalling library
═══════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/ann-gendarme-a-modular-marshalling-library/17551/1>


Benjamin Somers announced
─────────────────────────

  Hi everyone!

  This is my first post on this forum, and I’m pleased to present
  [Gendarme], a generic-but-opinionated library to marshal and unmarshal
  OCaml data types in a variety of formats.


[Gendarme] <https://opam.ocaml.org/packages/gendarme/>

Why a new library?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  OCaml has a few libraries in the `ppx_deriving' family, like the
  famous [`ppx_deriving_yojson'], allowing to very conveniently generate
  marshallers and unmarshallers for OCaml types. However, two elements
  didn’t suit me in this approach:

  • These libraries pollute the namespace quite a bit when we start
    combining them (*e.g.* when developing user-facing apps that allow
    ingesting several serialization formats);
  • Adding support for a new format is hard and requires some PPX
    expertise most OCaml users don’t have.


[`ppx_deriving_yojson']
<https://opam.ocaml.org/packages/ppx_deriving_yojson/>


How the project is born
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  When discovering the Go language, I was pleasantly surprised by how
  easy it was to marshal and unmarshal structs with simple annotations,
  and wanted a similar hassle-free mechanism in OCaml. I also wanted to
  learn about GADTs, as I never had found any use for them in my
  projects before.  This project was originally named `Marshal', but a
  module of the same name already exists in the standard
  library. “Gendarme” is one way to translate “Marshal” in French.


What’s particular about Gendarme?
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌

  Gendarme is a modular, extendable, PPX-heavy marshaller and
  unmarshaller based on type witnesses, supporting various data formats
  (CSV, JSON, TOML, YAML). The curious reader may find **way more**
  information on [the project’s repository], but here’s the gist:

  ┌────
  │ [%%marshal.load Yojson]
  │ 
  │ type t = { t_foo: int list [@json "foo"];
  │            t_bar: t list [@json "bar"] } [@@marshal]
  │ type u = t * int [@@marshal]
  │ 
  │ let v = ({ t_foo = [1; 2]; t_bar = [{ t_foo = [3; 4]; t_bar = [] }] }, 3)
  │ 
  │ let json = [%encode.Json] ~v u
  │ (*
  │ val json : string = "[{\"foo\":[1,2],\"bar\":[{\"foo\":[3,4],\"bar\":[]}]},3]"
  │ *)
  └────

  Annotating a type `my_type' with `[@@marshal]' and providing the
  required additional data (such as field names in the case of records)
  builds a witness value `my_type' of type `my_type Gendarme.ty' that
  tells Gendarme how to marshal and unmarshal values.

  Currently, [only a subset of OCaml core types are supported], but
  generic support gets improved as the need appears in my personal and
  professional projects.

  Gendarme was written both with users (application and library
  developers) and developers (people developing new Gendarme encoders)
  in mind. If your target format is able to encode objects/records
  (optional but nice to have), lists/arrays, and supports arbitrarily
  nesting them, then writing a new encoder requires writing **at most**
  100 lines of what is essentially pattern-matching cases to tell
  Gendarme what to do with your data (see for example [the code for
  `gendarme-ezjsonm']). Each encoder is heavily tested, and most of the
  encoders that we ship have more lines of code for tests than for their
  actual logic.

  This is a very quick introduction, but if you are interested in this
  project, head over to [its README] to learn more! I’m obviously happy
  to answer any questions you may have.


[the project’s repository] <https://github.com/bensmrs/gendarme>

[only a subset of OCaml core types are supported]
<https://github.com/bensmrs/gendarme/tree/main?tab=readme-ov-file#supported-ocaml-types>

[the code for `gendarme-ezjsonm']
<https://github.com/bensmrs/gendarme/tree/main/lib/json-ezjsonm>

[its README] <https://github.com/bensmrs/gendarme/blob/main/README.md>


FUN OCaml is live on YouTube and Twitch
═══════════════════════════════════════

  Archive:
  <https://discuss.ocaml.org/t/fun-ocaml-is-live-on-youtube-and-twitch/17254/5>


Continuing this thread, Sabine Schmaltz announced
─────────────────────────────────────────────────

  FUN OCaml talks are now uploaded to [FUN OCaml's watch.ocaml.org
  channel]:

  <https://watch.ocaml.org/c/funocaml/videos>

  ETA: still transcoding :sweat_smile: but due to appear any moment


[FUN OCaml's watch.ocaml.org channel]
<https://watch.ocaml.org/c/funocaml/videos>


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

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

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

  • [Keeping your branch up-to-date]
  • [The AI French Connection to the Practice of Science]
  • [OCaml 5.4 native Arm32 branch]
  • [Bringing Emacs Support to OCaml's LSP Server with `ocaml-eglot']
  • [Advent of FPGA — A Jane Street Challenge]
  • [Four Ps for Building Massive Collective Knowledge Systems]


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

[Keeping your branch up-to-date]
<https://www.tunbury.org/2025/12/01/github-actions/>

[The AI French Connection to the Practice of Science]
<https://anil.recoil.org/notes/entente-cordiale>

[OCaml 5.4 native Arm32 branch]
<https://www.tunbury.org/2025/11/27/ocaml-54-native/>

[Bringing Emacs Support to OCaml's LSP Server with `ocaml-eglot']
<https://tarides.com/blog/2025-11-27-bringing-emacs-support-to-ocaml-s-lsp-server-with-ocaml-eglot>

[Advent of FPGA — A Jane Street Challenge]
<https://blog.janestreet.com/advent-of-fpga-challenge-2025/>

[Four Ps for Building Massive Collective Knowledge Systems]
<https://anil.recoil.org/notes/principles-for-collective-knowledge>


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

             reply	other threads:[~2025-12-02 10:39 UTC|newest]

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