From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Authentication-Results: plum.tunbury.org; dkim=pass (1024-bit key; unprotected) header.d=inria.fr header.i=@inria.fr header.a=rsa-sha256 header.s=dc header.b=IJn8vT1P; dkim-atps=neutral Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=192.134.164.83; helo=mail2-relais-roc.national.inria.fr; envelope-from=caml-list-owner@inria.fr; receiver=tunbury.org Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by plum.tunbury.org (Postfix) with ESMTPS id 41FA7400A7 for ; Tue, 30 Dec 2025 09:33:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=from:to:date:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=ZtXXp7yjPu7/NWqRY/quI9mR7xgkvFwRFdmoClOaYsI=; b=IJn8vT1PN++Enmx9QEeryxwC/XCZRHMLUY8W+pt46MzNojJXPUin0BZ+ XeJ3wtdmN9zRTBdblyfU3CUnSCuEbg/LlCpAo8N2rsc9RcHeihBeZKBh/ M94uMGejLKWhAw6Z5BEyV1sYeqNfnFCAkwvS4Q6zx3AUjieXGH9UtSRpl c=; X-CSE-ConnectionGUID: ajCAmowBQsqgL/YWaWCF4Q== X-CSE-MsgGUID: DxM7ImSCQZ2cAhxcsBusnQ== Authentication-Results: mail2-relais-roc.national.inria.fr; dkim=none (message not signed) header.i=none; spf=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@prod-sympa-app.inria.fr Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 128.93.162.27 as permitted sender) identity=mailfrom; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="caml-list-owner@inria.fr"; x-conformance=spf_only; x-record-type="v=spf1"; x-record-text="v=spf1 include:mailout.safebrands.com a:basic-mail.safebrands.com a:basic-mail01.safebrands.com a:basic-mail02.safebrands.com ip4:128.93.142.0/24 ip4:192.134.164.0/24 ip4:128.93.162.160 ip4:128.93.162.3 ip4:128.93.162.88 ip4:89.107.174.7 mx ~all" Received-SPF: None (mail2-relais-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@prod-sympa-app.inria.fr) identity=helo; client-ip=128.93.162.27; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@prod-sympa-app.inria.fr"; x-conformance=spf_only X-IronPort-AV: E=Sophos;i="6.21,188,1763420400"; d="scan'208,217";a="256319581" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 30 Dec 2025 10:33:25 +0100 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 04FCD813BB; Tue, 30 Dec 2025 10:33:25 +0100 (CET) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id A9AB8806A0 for ; Tue, 30 Dec 2025 10:33:15 +0100 (CET) X-CSE-ConnectionGUID: LdGzepajSuuJz3m6nXjDsg== X-CSE-MsgGUID: b5Txs2vPQyqfqxyLSqq8Xg== IronPort-SDR: 69539c5a_tqUZvLgD8T0Nh/wY4F8KYc1xgPMYjOeUiErmRaXjr5RFkef qgNXxmlFKClq3bk/DUY9wUK98lL3UF9CJb5S3Pw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0G8AwCam1NpdyIeaIFaHgEBCxIMg01bKRoBZgZfMwcIS?= =?us-ascii?q?YRYg08Ijh2cSIFpgUIYCxUBAwENLgEOEQECBAEBAwECAYUAAoxpAh8GAQQ0E?= =?us-ascii?q?wECBAEBAQEDAgMBAQEBAQEBAQENAQEFAQEBAgEBAgQGAQIQAUNJhk8NgkUZO?= =?us-ascii?q?HGBJQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QIECAGBJwoTAQE4GCMDEAQBBgMCEQE1FwESGoJpgiACAk8DBAEMBpRmm016g?= =?us-ascii?q?TKBAYIMAQEGgQg+AgELAgUYJtoPgRpMCYFNhW6CShsBKklrAQKESYQ7AicPg?= =?us-ascii?q?VVEgRWCKFFvgX5MFwIBAQGBIxgBAU0JgyWCaYImehQdhgJ4iQIGigCBRCIDJ?= =?us-ascii?q?jMsAVUTFwsHBV6BCAMqLy1uMh2BIz4Xc4EUg0kfaA8GgRGDUYkGD4legQUDC?= =?us-ascii?q?209NxQblRJcKSWBNi8OOAgNCCc+EwEpAlAIDjUZNDcSAQsNLQOSVyizATQHh?= =?us-ascii?q?B+BXgYMiQiBJpYHhVulECKYZCKJXl1JCYFva5VghViBfyM8gSAzGjAiIYJnC?= =?us-ascii?q?UYcD44hgTQBAwSCRIEBPYMaO7hiQjUCAQE4AgcBCgEBAwmFRR0BAYwILQWBS?= =?us-ascii?q?wEB?= IronPort-PHdr: A9a23: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 y0e4oUQTViBi4HO+Uipg6BU+DFSzY887A== IronPort-Data: A9a23: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 VUIqat4rI1XhKI//QuMu5KYJf3BgA7S8g== IronPort-HdrOrdr: A9a23:RG/M6aFRWkXNePBopLqEi8eALOsnbusQ8zAXPidKKSC9E/b4qy nAppsmPHPP5Qr5O0tKpTnoAsDpfZryz/RICOIqU4tKMjOLhFeV X-Talos-CUID: 9a23:nh0mlGxu5VIAZ+RWByjRBgUwFu83f2XUzkzNPm2qUmM3To2XZUSfrfY= X-Talos-MUID: 9a23:4PHREAsib3IuDDAFA82njmxeJNwy/ZyXGVkDiIUXn/KdLHxANGLI X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.21,188,1763420400"; d="scan'208,217";a="134734715" X-MGA-submission: =?us-ascii?q?MDGmLixm58PgOgP141vgdah4UhiRAHroKWBLc5?= =?us-ascii?q?pRq9tnuhz+OuK3rt8jkf3U/smpXpfV8CdSuMPJolCGYsupXs2vdhzwjT?= =?us-ascii?q?h8EWnSH8pspYtwZ4AGSBLIjH642lLHvaaF1PTB9vhx800jrhBluvJ0JZ?= =?us-ascii?q?BaTvzjNXSM7NdrvaPFXEVjPw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Dec 2025 10:33:14 +0100 Received: from TM.local (unknown [82.66.240.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ssl.polytechnique.org (Postfix) with ESMTPSA id 991D318130; Tue, 30 Dec 2025 10:33:13 +0100 (CET) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 30 Dec 2025 10:33:12 +0100 Message-ID: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=-=-=" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Dec 30 10:33:13 2025 +0100 (CET)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.497443, queueID=B61001A31F X-Org-Mail: alan.schmitt.1995@polytechnique.org Subject: [Caml-list] Attn: Development Editor, Latest OCaml Weekly News Reply-To: Alan Schmitt X-Loop: caml-list@inria.fr X-Sequence: 19420 Errors-To: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of December 23 to 30, 2025. Table of Contents =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Release of pacomb 1.4 Raven Dev Meetings Frontmatter_extractor.0.1 QCheck 0.90: The Great Renaming Other OCaml News Old CWN Release of pacomb 1.4 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Christophe Raffalli announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80 Dear camlers, I am pleased to announce the release of pacomb 1.4. Pacomb is a library + ppx to write grammars. It support: self extensible grammars, ambiguous grammars (with merge), late rejection of rule via raising exception from action code, priority and others. Is it relatively fast because it is compiled to efficient combinators. More details are available in the [git page] and the [documentation]. As teaser, the usual calculator example: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 (* The three levels of priorities *) =E2=94=82 type p =3D Atom | Prod | Sum =E2=94=82=20 =E2=94=82 let%parser rec =E2=94=82 (* This includes each priority level in the next one *) =E2=94=82 expr p =3D Atom < Prod < Sum =E2=94=82 (* all other rules are selected by their priority l= evel *) =E2=94=82 ; (p=3DAtom) (x::FLOAT) =3D>= x =E2=94=82 ; (p=3DAtom) '(' (e::expr Sum) ')' =3D>= e =E2=94=82 ; (p=3DProd) (x::expr Prod) '*' (y::expr Atom) =3D>= x*.y =E2=94=82 ; (p=3DProd) (x::expr Prod) '/' (y::expr Atom) =3D>= x/.y =E2=94=82 ; (p=3DSum ) (x::expr Sum ) '+' (y::expr Prod) =3D>= x+.y =E2=94=82 ; (p=3DSum ) (x::expr Sum ) '-' (y::expr Prod) =3D>= x-.y =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Here is a list of the main changes from 1.3: =E2=80=A2 Add a "not charset combinator" for regexp `\[!...\]', it is dis= tinct from `\[^...\]' as it parses nothing. =E2=80=A2 File was not closed by Grammar.parse_file in case of parse error =E2=80=A2 New Grammar.set_debug_merge to allow debugging ambiguous gramma= rs (report by Matthieu Lemerre) =E2=80=A2 Compatibility with latest ocaml and ppxlib =E2=80=A2 Travis action to check compilation =E2=80=A2 Various documentation fix Possible roadmap for future version: =E2=80=A2 1.5 : integrate a lexical entry for ocaml code with call back f= or specific {xxx| =E2=80=A6 |xxx}. This is code existing in simple_httpd= =E2=80=99s chaml parser (equivalent to php but in cocaml), that I wish to integrate in pacomb. =E2=80=A2 2.0 : rewrite the combinators with algebraic effects. The seman= tics will be much better than the current implementation using references. Cheers, Christophe [git page] [documentation] Raven Dev Meetings =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90 Archive: Continuing this thread, Thibaut Mattio announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 We'll be skipping the dev meeting on the 29th for the holidays, so the next Raven dev meeting will be on *Monday, January 5, 2026, at 10:00 AM CET (2:30 PM IST)*. Link: Frontmatter_extractor.0.1 =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Mikhail announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80 Hi there! :waving_hand: I am writing again about my new library, which I must create, because there is simply no alternative available. [Frontmatter_extractor] is a small library that extracts the front matter section of a text file. It is commonly used in static content generators (blog engines, etc), such as those that convert Markdown files into HTML or other formats. *Example of usage* =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 let some_text =3D {| =E2=94=82 --- =E2=94=82 title: "My First Blog Post" =E2=94=82 date: 2025-12-1 =E2=94=82 --- =E2=94=82=20 =E2=94=82 Hello! It's just some text... =E2=94=82 |};; =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Extract frontmatter as plain text. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 # Frontmatter_extractor.of_string some_text;; =E2=94=82=20 =E2=94=82 - : Frontmatter_extractor.extracted =3D =E2=94=82 {Frontmatter_extractor.matter =3D =E2=94=82 Some "\ntitle: \"My First Blog Post\"\ndate: 2025-12-1\n"; =E2=94=82 body =3D "\n\nHello! It's just some text...\n"} =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Extract the front matter as parsed YAML values. The yaml library needs to be installed. =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 # Frontmatter_extractor_yaml.of_string_exn some_text;; =E2=94=82=20 =E2=94=82 - : Frontmatter_extractor_yaml.extracted =3D =E2=94=82 {Frontmatter_extractor_yaml.attrs =3D =E2=94=82 Some =E2=94=82 (`O [("title", `String "My First Blog Post"); ("date", `Stri= ng "2025-12-1")]); =E2=94=82 body =3D "\n\nHello! It's just some text...\n"} =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 *P.S.* It's not fully tested, but it's usable as a first version. [Frontmatter_extractor] QCheck 0.90: The Great Renaming =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95= =90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90= =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 Archive: Continuing this thread, Jan Midtgaard announced =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80= =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Version 0.91 of the QCheck packages is now available: This release adds [ocamlmig] annotations to most of the renamed combinators, in an attempt to ease migration for users. From my experiments so far, these work pretty well and allowed me to port [multicoretests] with little effort. Thanks to @raphael-proust for the suggestion and @v-gb for a nice tool! :folded_hands: Happy migration and testing! :smiley: [ocamlmig] [multicoretests] Other OCaml News =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2= =95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 >>From the ocaml.org blog =E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2= =94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94= =80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Here are links from many OCaml blogs aggregated at [the ocaml.org blog]. =E2=80=A2 [AoAH Day 25: Claude OCaml Marketplace for all your festive cod= ing needs] =E2=80=A2 [AoAH Day 24: Tuatara, an evolving Atom aggregator that mutates] =E2=80=A2 [AoAH Day 23: Unpac unifies git branching with package manageme= nt] =E2=80=A2 [AoAH Day 22: Assembling monorepos for agentic OCaml developmen= t] =E2=80=A2 [AoAH Day 21: Complete dynamic HTML5 validation in OCaml and the browser] [the ocaml.org blog] [AoAH Day 25: Claude OCaml Marketplace for all your festive coding needs] [AoAH Day 24: Tuatara, an evolving Atom aggregator that mutates] [AoAH Day 23: Unpac unifies git branching with package management] [AoAH Day 22: Assembling monorepos for agentic OCaml development] [AoAH Day 21: Complete dynamic HTML5 validation in OCaml and the browser] Old CWN =E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90=E2=95=90 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] [the archive] [RSS feed of the archives] [caml-list] [Alan Schmitt] --=-=-= Content-Type: text/html; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable OCaml Weekly News

OCaml Weekly News

Previous Week<= /a> Up Next Week

Hello

Here is the latest OCaml Weekly News, for the week of December 23 to 30, 20= 25.

Release of pacomb 1.4

Christophe Raffalli announced

Dear camlers, I am pleased to announce the release of pacomb 1.4.=20

Pacomb is a library + ppx to write grammars. It support: self extensible gr= ammars, ambiguous grammars (with merge), late rejection of rule via raising= exception from action code, priority and others. Is it relatively fast bec= ause it is compiled to efficient combinators. More details are available in= the git page and the documentation.

As teaser, the usual calculator example:

(* T=
he three levels of priorities *)
type p =3D Atom | Prod | Sum

let%parser rec
     (* This includes each priority lev=
el in the next oneexpr p =3D Atom < Prod &l=
t; Sum
            (* <=
span style=3D"color: #8f6f4a; font-style: italic;">all other rules are sele=
cted by their priority level *)
            ; (p=3DAtom) (x::FLOAT)                        =3D> x
            ; (p=3DAtom) '(' (e::=
expr Sum) ')'             =3D> e
            ; (p=3DProd) (x::expr Prod) '*' (y::expr Atom) =3D>=
 x*.y
            ; (p=3DProd) (x::expr Prod) '/' (y::expr Atom) =3D>=
 x/.y
            ; (p=3DSum ) (x::expr Sum ) '+' (y::expr Prod) =3D>=
 x+.y
            ; (p=3DSum ) (x::expr Sum ) '-' (y::expr Prod) =3D>=
 x-.y

Here is a list of the main changes from 1.3:

  • Add a "not charset combinator" for regexp \[!...\], it is = distinct from \[^...\] as it parses nothing.
  • File was not closed by Grammar.parse_file in case of parse error
  • New Grammar.set_debug_merge to allow debugging ambiguous grammars (repo= rt by Matthieu Lemerre)
  • Compatibility with latest ocaml and ppxlib
  • Travis action to check compilation
  • Various documentation fix

Possible roadmap for future version:

  • 1.5 : integrate a lexical entry for ocaml code with call back for speci= fic {xxx| =E2=80=A6 |xxx}. This is code existing in simple_httpd=E2=80=99s = chaml parser (equivalent to php but in cocaml), that I wish to integrate in= pacomb.
  • 2.0 : rewrite the combinators with algebraic effects. The semantics wil= l be much better than the current implementation using references.

Cheers,

Christophe

Raven Dev Meetings

Continuing this thread, Thibaut Mattio announced

We'll be skipping the dev meeting on the 29th for the holidays, so the next= Raven dev meeting will be on Monday, January 5, 2026, at 10:00 AM CET (= 2:30 PM IST).

Link: https://meet.google.= com/giw-bsdy-sjf

Frontmatter_extractor.0.1

Mikhail announced

Hi there! :waving_hand:=20

I am writing again about my new library, which I must create, because there= is simply no alternative available.

Frontmatter_ext= ractor is a small library that extracts the front matter section of a = text file. It is commonly used in static content generators (blog engines, = etc), such as those that convert Markdown files into HTML or other formats.

Example of usage

let some_text =3D =
{|
---
title: "My First Blog Post"
date: 2025-12-1
---

Hello! It's just some text...
|};;

Extract frontmatter as plain text.

# Frontmatter_extractor.of_string some_text;;

- : Frontmatter_extracto=
r.extracted =3D
{Frontmatter_extractor.<=
/span>matter =3D
  Some "\ntitle: \"My First Blog Post\"\ndate: 2025-12-1\n";
 body =3D "\n\nHello! It's just some text..=
.\n"}

Extract the front matter as parsed YAML values. The yaml library needs to b= e installed.

# Frontmatter_extractor_yaml.of_string_exn some_text;;

- : Frontmatter_extracto=
r_yaml.extracted =3D
{Frontmatter_extractor_y=
aml.attrs =3D
  Some
   (`O [("title", `String "My First Blog Post"); ("date", `String =
"2025-12-1")]);
 body =3D "\n\nHello! It's just some text..=
.\n"}

P.S.

It's not fully tested, but it's usable as a first version.

QCheck 0.90: The Great Renaming

Continuing this thread, Jan Midtgaard announced

Version 0.91 of the QCheck packages is now available:

https://git= hub.com/c-cube/qcheck/releases/tag/v0.91

This release adds ocamlmig= annotations to most of the renamed combinators, in an attempt to ease migr= ation for users. From my experiments so far, these work pretty well and all= owed me to port multicoretests with little effort. Thanks to @raphael-proust for the= suggestion and @v-gb for a nice tool! :folded_hands:=20

Happy migration and testing! :smiley:

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 loo= k at the archive or the <= a href=3D"https://alan.petitepomme.net/cwn/cwn.rss">RSS feed of the archive= s.

If you also wish to receive it every week by mail, you may subscribe to the= caml-list.

--=-=-=--