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=qce689yi; 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]) by plum.tunbury.org (Postfix) with ESMTP id 4C1AA4009A for ; Tue, 14 Jul 2026 07:16:17 +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=JRf8ukBXpA0hIdAS0OpV1TNtRB8xdcTf4y1uheX6vho=; b=qce689yi1gKv9TaDx7NwkoDwiG5zKrNKLXNVDmMJ2rfdZjs367FiTBlD NsMOyYPZo7nrUqi5+DPtCkBX9loSnbgKiGePXQrHA15Rl8YS0OBeqI+v8 0YttoRqEcj/9BKihcqfY7pzJ8NH9fUKcN6ZOymvZWCH0qVjAxYayQNhhp Q=; X-CSE-ConnectionGUID: SeYvE0pwT1yuPwSRVy6nOQ== X-CSE-MsgGUID: 9Z56u7DaQ2WpeFwyU9w4jA== 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 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.25,163,1779141600"; d="asc'?scan'208,217";a="286213893" Received: from prod-sympa-app.inria.fr ([128.93.162.27]) by mail2-relais-roc.national.inria.fr with ESMTP; 14 Jul 2026 09:16:17 +0200 Received: by prod-sympa-app.inria.fr (Postfix, from userid 990) id 48ECC81C94; Tue, 14 Jul 2026 09:16:17 +0200 (CEST) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by prod-sympa-app.inria.fr (Postfix) with ESMTP id 1376781C7B for ; Tue, 14 Jul 2026 09:16:08 +0200 (CEST) X-CSE-ConnectionGUID: ZYeqt0khSY6VBxtO2NX+hw== X-CSE-MsgGUID: higVqor8Rx6bXtL25NkMEg== IronPort-SDR: 6a55e237_bCC8eaKghS+CTULecAFU47AA9jNBUUef0mvlLxpSGOVikJr K8/kOygGRcwcBZgJNEEk6baoT4uGY0cPX4r5Cpw== X-ThreatScanner-Verdict: Negative X-IPAS-Result: =?us-ascii?q?A0FhAAC34FVqhSIeaIFRCR0BAQEBCQESAQUFAYF+BgELA?= =?us-ascii?q?YE8gQQbAW5fGRoHCEkDhFWDT4UriHmcSYFVFIFBGwYQBwEDAQgFLgEVCgECB?= =?us-ascii?q?AEBAQIBAgGEfgKNTgIfBgEEMgcOAQIEAwIDAQEBAQEBAQEBAQELAQEBBAEBA?= =?us-ascii?q?QIBAQIEAwEBAQECEAEBAQFASYZPDYJFGThxgSUBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECBAgBgScKEwEBOBgjAxQHAwIRA?= =?us-ascii?q?TUDARMBEhqCaAGCIAICTwMEAQwGQJ5/m0R6gTKBAYIMAQEGgQhMAgUPL9oYg?= =?us-ascii?q?WAJAwaBTQGBV4QZgk8PDQEqSWoCAQKEUIRBJw+BVUSBFYF9fW+CYQIBAYEyC?= =?us-ascii?q?gEBBkcJgyWCaoImgQyBcgaBSAUZJoEFg3uBTYcmgWYDWSwBVRMXCwcFXoEIA?= =?us-ascii?q?yovLW4yHYEjPhc0WBsHBYEdgVSBA4R3Ix8DOX+BMHVKeS1qEheBUoIWgQoDC?= =?us-ascii?q?209NxQbjDEQIQ2BMmIXD4FcFQ5AMC8uAQoRCgYgAi4IIyAZNAMBQAYLCwIHD?= =?us-ascii?q?ZJzJgIjBwN0jmeDVp8mNAeEIIFgBgyJCYEmlgeEBI0UhwOSUSKYZiOJXoEvg?= =?us-ascii?q?W9rjTGIKQaFWYFvBS6BXDMaMEOCZwlHHA+OCxYJGYNggT6DGjvJKUI1AgEBC?= =?us-ascii?q?jEHAgcPAoVrAQGMCC0FgUwBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 IronPort-HdrOrdr: A9a23:diLEu6k4ODEY3cPv7LtihtAi5FzpDfIT3DAbv31ZSRFFG/Fw9v re/sjzsCWf5Qr5N0tApTntAsW9qBDnhP1ICOsqXYtKNTOO0ACVxepZg7cKrQeOJwTOssZjkY 1gf6J9BNCYNykese/KpC+iHZIFyNmDmZrY4ts2Ik0dKT1XVw== X-Talos-CUID: =?us-ascii?q?9a23=3ALXB0VWps4JYylQZGHZTx7ALmUfIUf2TBlHTQGH7?= =?us-ascii?q?mN0x5VJrPb2/T+Lwxxg=3D=3D?= X-Talos-MUID: 9a23:fQJnVAWQOdyWX3Tq/D/tiw97M9042bTwAnARtc9bncqhGCMlbg== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.25,163,1779141600"; d="asc'?scan'208,217";a="286213805" X-IronPort-Outbreak-Status: No, level 0, Unknown - Unknown X-MGA-submission: =?us-ascii?q?MDGyvqq8zeiug9RAQajxIrxrxaGPD06fHsiNa0?= =?us-ascii?q?P0aMGDBCcafk3TlmMGV7ofs+RHsM1WDEnNkHZ234epcaIngsMbDeFovD?= =?us-ascii?q?M0hrZF9T9+75MJ6HCMbhA0PnMKmlpgIHa5gTqbZCWdroxStMNOIK6fxe?= =?us-ascii?q?OZskEL4FXtHNdukfnh1KtXyw=3D=3D?= Received: from mx1.polytechnique.org ([129.104.30.34]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jul 2026 09:16:07 +0200 Received: from TM.mfr-f.local (lstlambert-656-1-123-74.w80-14.abo.wanadoo.fr [80.14.173.74]) (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 E2F551A40E; Tue, 14 Jul 2026 09:16:06 +0200 (CEST) From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 14 Jul 2026 09:16:04 +0200 Message-ID: MIME-Version: 1.0 Content-Type: multipart/signed; boundary="===-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" X-AV-Checked: ClamAV using ClamSMTP at svoboda.polytechnique.org (Tue Jul 14 09:16:07 2026 +0200 (CEST)) X-Spam-Flag: Unsure, tests=bogofilter, spamicity=0.472887, queueID=12ECF1A45F 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: 19545 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: multipart/mixed; boundary="=-=-=" --=-=-= Content-Type: multipart/alternative; boundary="==-=-=" --==-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hello Here is the latest OCaml Weekly News, for the week of July 07 to 14, 2026. 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 opam 2.5.2 ocaml-wire: a Binary wire format DSL with EverParse 3D output Caqti 3.0.0 ocgtk 0.1: OCaml bindings for GTK 4 (preview release) Old CWN opam 2.5.2 =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: Kate 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 Hi everyone, opam 2.5.2 is now available. This release is fixing: =E2=80=A2 a security issue ([OSEC-2026-10]) =E2=80=A2 a regression from 2.5.1 preventing cross-compiled packages that= use dune from installing properly ([ocaml/dune#14393]) We invite everyone to upgrade to 2.5.2 as soon as possible. If you depend on the older opam package of your preferred distribution, maintainers of distributions such as Debian Stable have been notified and we expect backporting of the relevant fixes to be available there very soon. You can read our [blog post] for relevant links and details. [OSEC-2026-10] [ocaml/dune#14393] [blog post] Try it! =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C The upgrade instructions are unchanged: For Unix systems =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --v= ersion 2.5.2" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 or from PowerShell for Windows systems =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.o= rg/install.ps1) } -Version 2.5.2" =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 Please report any issues to the [bug-tracker]. Happy hacking, <> <> The opam team <> <> :camel: [bug-tracker] ocaml-wire: a Binary wire format DSL with EverParse 3D output =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=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, Thomas Gazagnaire 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=E2=94=80=E2=94=80= =E2=94=80 I'm happy to announce that `ocaml-wire' 1.0.0 is now on opam, installable with `opam install wire'. This release brings a round of robustness fixes and API cleanups to the previous version (hence the 1.0.0 tag). It also adds a lot of differential testing between the OCaml parsers/serialisers and the generated verified C parsers. Both are run on randomly generated schemas and random input bytes, and the test checks that they agree on what they accept or reject, and on the values they decode. Wherever they disagreed there was a bug, and those all seem to be fixed now. But how can these be interpreted as signed integers or floats? Is this left to the layers above? EverParse 3D has no signed or floating-point types, only unsigned integers, so to the C validator an int8 is a UINT8 and a float64 is a UINT64. The OCaml decoder does the reinterpretation, two's complement for the signed types and IEEE 754 for the floats, and for a plain field both sides accept every bit pattern. A constraint on the field (that the user would have added via the DSL) has to survive that projection. A signed ordering constraint has to be rewritten through the two's-complement identity before it reaches the C validator, because a naive unsigned comparison disagrees on bytes with the sign bit set (byte 200 is the signed value -56, accepted by OCaml and rejected by the naive C bound). Float finiteness (`is_finite', `is_nan') compiles to a test on the exponent bits, and a float ordering constraint, which has no faithful unsigned form, is rejected up front. The differential fuzzing is what surfaced those sign-bit disagreements and all of this has been hardened between 0.9 and 1.0. Zero-copy reads got safer too. `Codec.validate' now enforces every check `Codec.decode' does (enum membership, bounds, padding, `where' clauses), so validating untrusted input before a batch of zero-copy `Codec.get' calls no longer trusts bytes the decoder would have rejected (again, caught thanks to differential testing). The generated `.3d' files also turned out to be quite readable as protocol descriptions, and a whole codec family now projects to a single .3d that doubles as a spec and compiles to a standalone verified C parser with no FFI. The TCP/IP stack is a good one to compare: the [OCaml definitions] and the [generated 3d file]. [OCaml definitions] [generated 3d file] Caqti 3.0.0 =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: Petter A. Urkedal 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 I am happy to announce the release of [Caqti] 3.0.0. This release bundles some breaking changes including switching to hierarchical modules. The Caqti 3 API is mainly a reorganization of the `caqti.template' preview library and some remaining modules from the Caqti 2 API. Release notes: =E2=80=A2 The `caqti' library now holds the Caqti 3 API and `caqti.classi= c' contains a Caqti 2 compatibility wrapper. Users of the Caqti 2 API must now add `caqti.classic' to their link lines. Early adopters of the Caqti 3 API must replace `caqti.template' with `caqti' and adjust some module paths. Switching to the new API is recommended, but may be done incrementally for existing applications. =E2=80=A2 Fixed initial comma when formatting rows, affecting `Caqti_type.pp_value' (Caqti 2) and `Caqti.Template.Row.pp' (Caqti 3). =E2=80=A2 Put on hold deprecation of the `caqti-dynload' package due to [= issue #140]. =E2=80=A2 Foreign key constraints are now enabled for SQLite by default. It's good if opam-released projects add `caqti.classic' to their link lines before their next release (or switch API) and raise the lower bound on caqti to 2.3.0 (cf [the previous announcement]) if necessary. [Caqti] [issue #140] [the previous announcement] ocgtk 0.1: OCaml bindings for GTK 4 (preview release) =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=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, Chris Armstrong 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=E2=94=80 *ocgtk 0.1-preview2 is now available on opam* This release significantly increases the amount of generated functionality, covering the vast majority of classes snd methods available in it=E2=80=99s generated libraries (GTK, Gio, Pango, Cairo, GD= K, GDKpixbuf, Graphene) Notable changes =E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2= =95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C =E2=97=8A Extended Signals support Signsls with multiple parameters and non boolean return parameters are now supported, giving coverage to about 2/3 of supported signal types =E2=97=8A GValue support GValue is now properly supported as a prerequisite for proper signals support =E2=97=8A Extended primitives support Full coverage of integer types, list types, better array handling, GError mapping to result types and better GObject equality and hashing. All extend the coverage of supported methods that can be generated. =E2=97=8A Memory management A significant effort has gone into hunting down memory management bugs, especially with boxed record types, which now use a consistent GLib mechanism for handling references to them. =E2=97=8A Extended operating system and compiler versions support Most dependencies of ocgtk have been removed as they were only necessary for code generation, allowing us to extend support to Windows (MSYS2 only) and Ocaml versions going back to 4.14. =E2=97=8A Other improvements =E2=80=A2 Better handling of mutually dependent classes and interfaces by shortening their internal module name =E2=80=A2 constructor generation for classes: with this, we can do away w= ith aliasing classes at the top level, presenting only their class types and constructors, also making unused code elimination better and reducing compilation bottlenecks The next release will focus on improved API documentation generation and gaps in record support and other primitives (constants, functions, callbacks, etc). 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 July 07 to 14, 2026.

opam 2.5.2

Kate announced

Hi everyone,

opam 2.5.2 is now available. This release is fixing:

  • a security issue (OSEC-2026-10)
  • a regression from 2.5.1 preventing cross-compiled packages that use dun= e from installing properly (ocaml/dune#14393)

We invite everyone to upgrade to 2.5.2 as soon as possible.

If you depend on the older opam package of your preferred distribution, mai= ntainers of distributions such as Debian Stable have been notified and we e= xpect backporting of the relevant fixes to be available there very soon.

You can read our blog p= ost for relevant links and details.

Try it!

The upgrade instructions are unchanged:

For Unix systems

bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.=
5.2"

or from PowerShell for Windows systems

Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/insta=
ll.ps1) } -Version 2.5.2"

Please report any issues to the bug-tracker.

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

ocaml-wire: a Binary wire format DSL with EverParse 3D output<= /h2>

Continuing this thread, Thomas Gazagnaire announced

I'm happy to announce that ocaml-wire 1.0.0 is now on opam, in= stallable with opam install wire.

This release brings a round of robustness fixes and API cleanups to the pre= vious version (hence the 1.0.0 tag). It also adds a lot of differential tes= ting between the OCaml parsers/serialisers and the generated verified C par= sers. Both are run on randomly generated schemas and random input bytes, an= d the test checks that they agree on what they accept or reject, and on the= values they decode. Wherever they disagreed there was a bug, and those all= seem to be fixed now.

But how can these be interpreted as signed integers or floats? Is this left= to the layers above?

EverParse 3D has no signed or floating-point types, only unsigned integers,= so to the C validator an int8 is a UINT8 and a float64 is a UINT64. The OC= aml decoder does the reinterpretation, two's complement for the signed type= s and IEEE 754 for the floats, and for a plain field both sides accept ever= y bit pattern. A constraint on the field (that the user would have added vi= a the DSL) has to survive that projection. A signed ordering constraint has= to be rewritten through the two's-complement identity before it reaches th= e C validator, because a naive unsigned comparison disagrees on bytes with = the sign bit set (byte 200 is the signed value -56, accepted by OCaml and r= ejected by the naive C bound). Float finiteness (is_finite, is_nan) compiles to a test on the exponent bits, and a float ord= ering constraint, which has no faithful unsigned form, is rejected up front= . The differential fuzzing is what surfaced those sign-bit disagreements an= d all of this has been hardened between 0.9 and 1.0.

Zero-copy reads got safer too. Codec.validate now enforces eve= ry check Codec.decode does (enum membership, bounds, padding, = where clauses), so validating untrusted input before a batch o= f zero-copy Codec.get calls no longer trusts bytes the decoder= would have rejected (again, caught thanks to differential testing).

The generated .3d files also turned out to be quite readable a= s protocol descriptions, and a whole codec family now projects to a single = .3d that doubles as a spec and compiles to a standalone verified C parser w= ith no FFI. The TCP/IP stack is a good one to compare: the OCam= l definitions and the generated 3d file.

Caqti 3.0.0

Petter A. Urkedal announced

I am happy to announce the release of Caqti 3.0.0. This release bundles some breaking chang= es including switching to hierarchical modules. The Caqti 3 API is mainly = a reorganization of the caqti.template preview library and som= e remaining modules from the Caqti 2 API.

Release notes:

  • The caqti library now holds the Caqti 3 API and caqt= i.classic contains a Caqti 2 compatibility wrapper. Users of the Caqti 2 API must now add caqti.classic to their link lines. Early adopters of = the Caqti 3 API must replace caqti.template with caqti and adjust some module paths. Switching to the new API is recommended, but may be done incrementally for existing applications.
  • Fixed initial comma when formatting rows, affecting Caqti_type.pp_value (Caqti 2) and Caqti.Template.Row.pp<= /code> (Caqti 3).
  • Put on hold deprecation of the caqti-dynload package due to issue #140<= /a>.
  • Foreign key constraints are now enabled for SQLite by default.

It's good if opam-released projects add caqti.classic to their= link lines before their next release (or switch API) and raise the lower b= ound on caqti to 2.3.0 (cf the previous announcement) if necessary.

ocgtk 0.1: OCaml bindings for GTK 4 (preview release)

Continuing this thread, Chris Armstrong announced

ocgtk 0.1-preview2 is now available on opam

This release significantly increases the amount of generated functionality,= covering the vast majority of classes snd methods available in it=E2=80=99= s generated libraries (GTK, Gio, Pango, Cairo, GDK, GDKpixbuf, Graphene)

Notable changes

  • Extended Signals support

    Signsls with multiple parameters and non boolean return parameters are now = supported, giving coverage to about 2/3 of supported signal types

  • GValue support

    GValue is now properly supported as a prerequisite for proper signals suppo= rt

  • Extended primitives support

    Full coverage of integer types, list types, better array handling, GError m= apping to result types and better GObject equality and hashing. All extend = the coverage of supported methods that can be generated.

  • Memory management

    A significant effort has gone into hunting down memory management bugs, esp= ecially with boxed record types, which now use a consistent GLib mechanism = for handling references to them.

  • Extended operating system and compiler version= s support

    Most dependencies of ocgtk have been removed as they were only necessary fo= r code generation, allowing us to extend support to Windows (MSYS2 only) an= d Ocaml versions going back to 4.14.

  • Other improvements
    • Better handling of mutually dependent classes and interfaces by shorten= ing their internal module name
    • constructor generation for classes: with this, we can do away with alia= sing classes at the top level, presenting only their class types and constr= uctors, also making unused code elimination better and reducing compilation= bottlenecks

    The next release will focus on improved API documentation generation and ga= ps in record support and other primitives (constants, functions, callbacks,= etc).

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.

--==-=-=-- --=-=-=-- --===-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQFvBAEBCABZFiEE6lXof/BsSVW56ZmGBA0KO07S5ccFAmpV4jQbFIAAAAAABAAO bWFudTIsMi41KzEuMTIsMCwzHxxhbGFuLnNjaG1pdHRAcG9seXRlY2huaXF1ZS5v cmcACgkQBA0KO07S5ceoOwgAmfFIFtxAECEzOfs6YsCjYPpCD+SnWH2Oe7GNNj1S 21EBYUL62S92Og7xC4nxLr+eHD5gvdW6iPRwlfEZPkeuFlnvK2ulzi3PWx/VgMms CABLHpRsVNUh+9YMA/I1K+H6FZBQSsUbyjXYmH6ujaKDwdqcdeu6XeBeSl3y8vSJ 00tgb7Zlv6xY3JEpfVr7179XksvR6oRyffGhBFOkhh8Zv+tTUSBebT2KRUOSMyUP jHGz4pMNhHvg5MPKOGRVEMNyOQMCOwwbf/rTZ81zkawOMCaTU2cw7r7++F7VOxMT vp31Jyz+ylIneNfUcN/jXJD3VYrfmyUd45pQqSsIInyMAg== =ZksO -----END PGP SIGNATURE----- --===-=-=--