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=k5jOqmLP; dkim=fail reason="signature verification failed" (1024-bit key; secure) header.d=polytechnique.org header.i=@polytechnique.org header.a=rsa-sha256 header.s=svoboda header.b=srJLnJHe; 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 C26E248E48 for ; Tue, 24 Dec 2024 08:55:25 +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=Y4U18lVXT8ITSfmAihMOszdfXQETL+XD7UWRZHBbOc4=; b=k5jOqmLPfX7qYUauvqSqFgCC0Drl2iztQj/ME7iq181doKFoQ8P6/SiZ GPBAQ8208YTukN2ctS8O6s1Ce01NlE87qV8ybdZBgU9L8t33DHqRVHfaW z1+yma88xHaPvNAW4uxvMzGR8OxRuNMfz3gQsvIkGPTzLBmzGCtnOjYre o=; Received-SPF: Pass (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr designates 128.93.162.160 as permitted sender) identity=mailfrom; client-ip=128.93.162.160; 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@sympa.inria.fr) identity=helo; client-ip=128.93.162.160; receiver=mail2-relais-roc.national.inria.fr; envelope-from="caml-list-owner@inria.fr"; x-sender="postmaster@sympa.inria.fr"; x-conformance=spf_only Authentication-Results: mail2-relais-roc.national.inria.fr; spf=Pass smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (body hash did not verify [final]) header.i=@polytechnique.org X-IronPort-AV: E=Sophos;i="6.12,259,1728943200"; d="scan'208,217";a="200638738" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 24 Dec 2024 09:55:25 +0100 Received: by sympa.inria.fr (Postfix, from userid 20132) id B6477E0077; Tue, 24 Dec 2024 09:55:24 +0100 (CET) Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 04E74E0077 for ; Tue, 24 Dec 2024 09:55:18 +0100 (CET) IronPort-SDR: 676a76f4_zWt6p+gkAaRZDbmSwgIwcA6N3pWEr7j7aT0pr4Yvo3lU/vp hrldyJbJO7Hu/lvuD9qhHsXtzgyx9cmDB5UVjYA== X-IPAS-Result: =?us-ascii?q?A0H0BwBedWpngSIeaIFCGBaCRgKBP1soGQFdBlozBwhIh?= =?us-ascii?q?FaDT44fgRaBKgGPDIp4gnsDGDkRAwEDAQ0uAQwGAQIEAQEDAQIBhQACim4CH?= =?us-ascii?q?wYBBDMGDgECBAEBAQEDAgMBAQEBAQEQAQEFAQEBAgEBAgQGAQIQAQE9BUmFe?= =?us-ascii?q?w1JAQEECwGBai0kcWEEAwYGAQEBAQEBAQEBJwEBAQEBAQEBAQEBAQEBAQEBA?= =?us-ascii?q?QEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQECDAGBHgEIBAYTAQE4GCMDBwkEA?= =?us-ascii?q?QYDAhEBNRcBEhQGgg9Zgh9FAwQBDAaTGJp4BAFOen8zgQGCDAEBBoEIPgIBC?= =?us-ascii?q?wICAwEOCSUB1zeCT4EaSglBgQeFa4JJGgEFJUhqAoRIhDwnD4FVRIEVgihKB?= =?us-ascii?q?2+CPwsXAgEBWgI9IwEBAggHPAmDJYJpgiMXgmeCbD9NgW+CD4M0ElSBWYNYH?= =?us-ascii?q?R0vRoEPWYEvjGWBRyIDJjMsAVUTFwsHBWGBEgMuNjGDYIECOYIRaUk6Ag0CN?= =?us-ascii?q?oIgJFiCTYNZgT+EYYRWhhuCF4IWggkdQAMLbT03FBudHQEJNEYBRoJ2CSYOP?= =?us-ascii?q?gEBFRswAgEXBA8BBwMJCA4BASACLAIIDjIDKgYGFxUGAQEDBQYfCwYFLQIDk?= =?us-ascii?q?j8SEBUDKgN0kiKeEYEKNAeEHYFdBgyJBYEklXuEBIFXiy6HAJJJIphZIoI1h?= =?us-ascii?q?yVdSAmBbh5MhR2QNggYhTaBfSSBSQwHMxowIiGCZwlGHA+IIYYMFoNYgT6BJ?= =?us-ascii?q?oF1O4I+rxBCNQIBATgCBwEKAQEDCYVFHQEBgwSCF4QwAQECJAyBSwEB?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 w== IronPort-HdrOrdr: A9a23:vRqnsKN7fXn+e8BcTvyjsMiBIKoaSvp037BL7TETdfUxSKalfq +V8sjzuSWYtN9zYhEdcLK7WZVoKEm0nfVICOIqUotKMjOLhEKYaKlcqaHizzfjFyCWzJ8+6Y 5QN45kBpnVBVh+5PyKhDVQ/uxQpeW6zA== X-Talos-CUID: 9a23:CShCGGPvUmK0Xu5DQTlD1WxIBOsfc0bGzV3tEXWfE2lnYejA X-Talos-MUID: 9a23:qS1JzAXYgxYZbyzq/DnFizBSF5ZD2o63CmlVipQo4dmOHAUlbg== X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.12,259,1728943200"; d="scan'208,217";a="200638708" X-MGA-submission: =?us-ascii?q?MDH+w3HCLUafS4eN5DXGe0fgJfAWFfL+oc/POD?= =?us-ascii?q?st69p8zHEVv+h453TBlP67Bi56aw+HixFAviUqLr+VOIUL9YBPm266Yp?= =?us-ascii?q?NflveUZA+3olcvP0iJrvDyLdMmKEtdgfy7hOIXN114lu/gcEUCZl38gj?= =?us-ascii?q?kmrdunLcmv5shEuds0WEYCMg=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; 24 Dec 2024 09:55:16 +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 593FC5649C0; Tue, 24 Dec 2024 09:55:14 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=polytechnique.org; s=svoboda; t=1735030514; bh=v/73chKPdyGruPfLaLsr/SKrfJvE6kOvl46OdUQn7vo=; h=From:To:Subject:Date:Message-ID; b=srJLnJHeqRETkSlHz/uWJq7c1tpswuYD+NIMbN7oaRcCYNjnAgRWjb8+OECEE8K9K B7rK7FaBrp4WLgICsTQb/u9wBkrsg7MEiDOxBWgyJAyXG2OPaygPH/gD3vRGjzDxob TvUd72IXHdBlXycpt6NptPDMVOm2OFuGmItjYWdo= From: Alan Schmitt To: "lwn" , caml-list@inria.fr Date: Tue, 24 Dec 2024 09:55: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 24 09:55:15 2024 +0100 (CET)) X-Spam-Flag: No, tests=bogofilter, spamicity=0.271758, queueID=9FAE75649C7 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: 19238 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 17 to 24, 2024. 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 dream-html and pure-html Dune 3.17 First release candidate of OCaml 5.3.0 Pragmatic Category Theory | Part 3: Associativity ocaml-stk, xtmpl, stog, ocaml-css, ocaml-ldp, higlo and chamo MirageOS on OCaml 5 Dune dev meeting Other OCaml News Old CWN dream-html and pure-html =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: Yawar Amin 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 [ANN] dream-html 3.8.0 Happy to announce some added power to the form decoding functionality. Three main things: 1. Added [Dream_html.form] and [query] helper functions to wrap extracting the data directly from the Dream request and decoding it correspondingly from the body or query. 2. Added the (monadic) chaining operator [Dream_html.Form.( let* )] and [ok] and [error] helpers to allow sophisticated sequential decoding where decoding of some fields depend on others. 3. Added optional parameters to constrain [typed decoding] of values eg `int ~min:0' will succeed the decode if the value is an integer _and_ at least 0. Also added [unix_tm] type decoder to decode timestamps into `Unix.tm' structs (not timezone-aware). The last [example] on the page shows a fairly sophisticated form decoder which requires an `id' field and _one or more of_ the fields `days', `weeks', `months', and `years', and fails if at least one is not provided. Enjoy :slight_smile: [Dream_html.form] [query] [Dream_html.Form.( let* )] [ok] [error] [typed decoding] [unix_tm] [example] Dune 3.17 =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: Etienne Marais 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 The Dune team is happy to announce the release of Dune `3.17.1'! :camel: This patch release includes some bug fixes. To reduce computing time, it does not build `.cmxs' files anymore when the `(no_dynlink)' stanza is used. This change also corrects the semantic of the `(no_dynlink)' stanza which was building `.cmxs' files even if it did not install them. Now, it does not build nor install them. If you encounter a problem with this release, you can report it on the [ocaml/dune] repository. [ocaml/dune] Changelog =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 Fixed =E2=80=A2 When a library declares `(no_dynlink)', then the `.cmxs' file f= or it is no longer built. (#11176, @nojb) =E2=80=A2 Fix bug that could result in corrupted file copies by Dune, for example when using the `copy_files#' stanza or the `copy#' action. (@nojb, #11194, fixes #11193) =E2=80=A2 Remove useless error message when running `$ dune subst' in emp= ty projects. (@rgrinberg, #11204, fixes #11200) First release candidate of OCaml 5.3.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=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: octachron 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 The release of OCaml 5.3.0 is imminent. As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week(s). If you find any bugs, please report them on [OCaml's issue tracker]. Compared to the second beta, this release candidate contains a regression fix in the type system (some type expressions were not generalized when they ought to be), one fix for the new check for dependency order at link time, and a manual update. The full change log for OCaml 5.3.0 is available [on GitHub]. A short summary of the changes since the second beta release is also available below. [OCaml's issue tracker] [on GitHub] Installation Instructions =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=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 The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create 5.3.0~rc1 =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 The source code for the release candidate is also directly available on: =E2=80=A2 [GitHub] =E2=80=A2 [OCaml archives at Inria] [GitHub] [OCaml archives at Inria] =E2=97=8A Fine-Tuned Compiler Configuration If you want to tweak the configuration of the compiler, you can switch to the option variant with: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam update =E2=94=82 opam switch create ocaml-variants.5.3.0~rc1+optio= ns =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 where `' is a space-separated list of `ocaml-option-*' packages. For instance, for a `flambda' and `no-flat-float-array' switch: =E2=94=8C=E2=94=80=E2=94=80=E2=94=80=E2=94=80 =E2=94=82 opam switch create 5.3.0~rc1+flambda+nffa ocaml-variants.5.3.0~= rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array =E2=94=94=E2=94=80=E2=94=80=E2=94=80=E2=94=80 All available options can be listed with `opam search ocaml-option'. Changes since the second beta =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=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 Type system =E2=80=A2 [#13690]: some type expressions were incorrectly not generalized (because they were assigned to the wrong level pool) [#13690] =E2=97=8A Documentation =E2=80=A2 [#13666]: Rewrite parts of the example code around nested lists= in Chapter 6 (Polymorphism and its limitations -> Polymorphic recursion) giving the "depth" function [in the non-polymorphically-recursive part of the example] a much more sensible behavior; also fix a typo and some formatting. (Frank Steffahn, review by Florian Angeletti) [#13666] =E2=97=8A Compiler user-interface and warnings: =E2=80=A2 [#12084], +[#13669], +[#13673]: Check link order when creating archive and when using ocamlopt. [#12084] [#13669] [#13673] Pragmatic Category Theory | Part 3: Associativity =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: Dmitrii Kovanikov 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 Hi everyone! :wave: I've finished writing the third part of my *Pragmatic Category Theory* series (some code examples are in OCaml): =E2=80=A2 [Part 3: Associativity] Previous discussion: =E2=80=A2 P.S. I would've edited the previous topic instead of creating a new one but looks like I haven't touched it for a while, so I can't edit the title and the body anymore. [Part 3: Associativity] ocaml-stk, xtmpl, stog, ocaml-css, ocaml-ldp, higlo and chamo =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: Zoggy 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 Hello, I made new releases for some libraries and tools. All are available in opam. [OCaml-stk] 0.4.0 =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=95=8C=E2=95= =8C OCaml-stk is a library to build graphical user interfaces, based on SDL2. This release includes two new widgets: =E2=80=A2 a [layers] widget, allowing to display widgets in=E2=80=A6 laye= rs, =E2=80=A2 a xmlview widget (in [stk_xml] package), allowing to display XML (and so XHTML) documents, handling CSS for styling and layout. The programmer can customize which widgets are created for each XML node, and add event handlers on each node. See the "xmlview" example included in sources. This new release also comes with an [inspection window] for easier debugging. Complete list of changes is [here]. [OCaml-stk] [layers] [stk_xml] [inspection window] [here] [Xtmpl] 1.0.0 =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 Xtmpl is a library to build, read and parse XML document. It provides a [rewriting engine] and [templating facilities]. This new release includes a big refactoring, using functors. This creates some incompatibilities with prior versions. See [here] for changes. [Xtmpl] [rewriting engine] [templating facilities] [here] [Stog] 1.1.0 =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 Stog is a static web site compiler. It is able to handle blog posts as well as regular pages or any XML document in general. This release upgrades to Xtmpl 1.1.0 and includes small fixes (see [here] for details). [Stog] [here] [OCaml-css] 0.3.0 =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=95=8C=E2=95= =8C OCaml-css is an OCaml library to parse and print CSS. It can also expand namespaces and perform computations on property values. Parser can be extended by defining additional properties. This release includes various parsing fixes and adds new CSS properties: `border-collapse', `border-spacing', and `opacity'. The complete list of changes is [here]. [OCaml-css] [here] [OCaml-ldp] 0.4.0 =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=95=8C=E2=95= =8C This is a library to build [LDP] (Linked Data Platform) and [SOLID] applications, runnable either in standalone program (using packages `ldp_tls' or `ldp_curl') or in the browser (using package `ldp_js' with js_of_ocaml). This release includes only one fix in [`Ldp.Http'] module: when following redirection, resolve IRI in Location field of response against original IRI. [OCaml-ldp] [LDP] [SOLID] [`Ldp.Http'] [Higlo] 0.10.0 =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 Higlo is an OCaml library for syntax highlighting. This release adds a simple commonmark lexer. [Higlo] [Chamo] 4.2.0 =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 Chamo is a source code editor, even if it can be used to edit any text file. A system of "views" allows to edit some kinds of files in specific views. It's like an Emacs where Lisp is replaced by OCaml, as it can be extended and customized in OCaml. This release is just an upgrade to Stk 0.4.0 and Xtmpl 1.0.0. [Chamo] MirageOS on OCaml 5 =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: shym 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 On behalf of all the numerous developers involved, it=E2=80=99s my pleasu= re to announce that the MirageOS ecosystem has seen the long-running work to port to OCaml 5 come to fruition: `ocaml-solo5' v1.0 is now using OCaml 5.2.1! What is `ocaml-solo5' =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=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C `ocaml-solo5' is an OCaml cross compiler for producing Solo5 unikernels. Solo5 is the basis for MirageOS unikernels when they are not compiled as programs to run on a regular OS. `ocaml-solo5' responds to specific unikernel constraints. In particular it provides a placeholder for the standard C library that is complete enough that we can build the OCaml runtime without a full POSIX system to support it. That OCaml runtime can then be linked statically to OCaml programs in order to produce unikernels. These constraints require us to keep track of developments of the OCaml compiler and particularly of its runtime. The major changes coming with OCaml 5 have required quite a lot of work (over 1 year) to bring our cross compiler up-to-date. It should be noted that `ocaml-solo5' is restricted to a single domain but it makes it possible to use the effects introduced with OCaml 5. MirageOS & OCaml 5 =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=95=8C=E2=95= =8C=E2=95=8C The long road to bring Mirage on OCaml 5 started with adding support for Thread-Local Storage (TLS) in Solo5. Even if Solo5 doesn=E2=80=99t su= pport the creation of threads, the OCaml 5 runtime stores domain-specific data, including for the first domain, in TLS. The main work was done in [solo5#546] and [solo5#542] with fixes in [solo5#551] and [solo5#554]. It was released with [Solo5 v0.8.0]. This foundational work on Solo5 unblocked the port of the compiler _per se_. As the OCaml runtime changed substantially between OCaml 4.x and 5.x, this required many changes in the minimal library, called `nolibc', that provides simple implementations and stubs for the part of the libc interface the runtime uses. In particular, the memory management of the runtime is very different from OCaml 4.x (which is natural, due to the multicore support): it uses the `mmap~/~munmap' functions instead of `malloc~/~free'. `mmap' is a very versatile interface, tightly tied to the virtual memory. Providing adequate (correct but still simple) implementations of `mmap~/~munmap' in the context of Solo5, _i.e._ without virtualisation of the memory, required a careful review of how the interface is actually used in the runtime. Besides that work on `nolibc', building an OCaml compiler targeting Solo5 also requires a few patches to the compiler build system. As much work has been happening upstream to fix issues in building a cross compiler, this was taken as an opportunity to write clean patches in order to contribute them upstream and simplify the future of OCaml/Solo5 (along with other cross-compiler projects). All this work has been combined in [ocaml-solo5#134], which built on and completed [ocaml-solo5#122], [ocaml-solo5#124] and [ocaml-solo5#129]. It was released in [ocaml-solo5 v1.0.0]. Now we are eager to learn how it behaves in your applications! Note in particular that, as already mentioned, the garbage collector is completely different from the one in OCaml 4. For example, the [Mirage website] currently runs the two versions, one on OCaml 4 and one on OCaml 5 with traffic being alternatively routed to one or the other, to monitor their behaviours. First experiments show that we must tweak the `space_overhead' parameter to have the OCaml 5 unikernel use the same amount of memory than the OCaml 4 one, at the price of some compute time. This generally means that you might have to experiment a bit if you run within very constrained memory limits. [solo5#546] [solo5#542] [solo5#551] [solo5#554] [Solo5 v0.8.0] [ocaml-solo5#134] [ocaml-solo5#122] [ocaml-solo5#124] [ocaml-solo5#129] [ocaml-solo5 v1.0.0] [Mirage website] How to give it a spin =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=95=8C=E2=95= =8C=E2=95=8C=E2=95=8C=E2=95=8C=E2=95=8C To try the new OCaml 5, first create an OPAM switch [with OCaml 5.2.1]. Then, follow the standard procedure (see how to [install it] and how to [build an hello-world unikernel]). After installing `ocaml-solo5', you can check with `opam list ocaml-solo5' that it installed the version `1.x' of the package. [with OCaml 5.2.1] [install it] [build an hello-world unikernel] People involved =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 Many people got involved at some point or another, either with code or comments, to that community effort (hopefully not forgetting anyone, in `sort' order): =E2=80=A2 Adam Steen =E2=80=A2 Adrian-Ken Rueegsegger =E2=80=A2 Christiano Haesbaert =E2=80=A2 Fabrice Buoro =E2=80=A2 Hannes Mehnert =E2=80=A2 Kate =E2=80=A2 Pierre Alain =E2=80=A2 Romain Calascibetta =E2=80=A2 Samuel Hym =E2=80=A2 S=C3=A9bastien Hinderer Dune dev meeting =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: Etienne Marais 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 Hi camelers! :camel: The next Dune meeting is supposed to be on Wednesday, December, 25th, but since it is Christmas Day (a bank holiday for various countries), the meeting is cancelled. Next one will be on the January, 8th, 2025 :fireworks: 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 [Pragmatic Category Theory | Part 3: Associativity] =E2=80=A2 [Learn OCaml the Easy Way - Including the Hard Bits] =E2=80=A2 [MetAcsl v0.8 for Frama-C 30.0 Zinc] =E2=80=A2 [Saturn 1.0: Data structures for OCaml Multicore] =E2=80=A2 [Frama-Clang v0.0.17 for Frama-C 30.0~ Zinc] [the ocaml.org blog] [Pragmatic Category Theory | Part 3: Associativity] [Learn OCaml the Easy Way - Including the Hard Bits] [MetAcsl v0.8 for Frama-C 30.0 Zinc] [Saturn 1.0: Data structures for OCaml Multicore] [Frama-Clang v0.0.17 for Frama-C 30.0~ Zinc] 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 17 to 24, 20= 24.

dream-html and pure-html

Yawar Amin announced

[ANN] dream-html 3.8.0

Happy to announce some added power to the form decoding functionality. Thre= e main things:

  1. Added Dream_html.form and query helper functio= ns to wrap extracting the data directly from the Dream request and decoding= it correspondingly from the body or query.
  2. Added the (monadic) chaining operator Dream_html= .Form.( let* ) and ok and error helpers to allow sophisticated sequential decoding where deco= ding of some fields depend on others.
  3. Added optional parameters to constrain and at l= east 0. Also added unix_tm type decoder to de= code timestamps into Unix.tm structs (not timezone-aware).

The last example on the page shows a fairly soph= isticated form decoder which requires an id field and one or more of the fields days, weeks, months, and years, and fails if at= least one is not provided.

Enjoy :slight_smile:

Dune 3.17

Etienne Marais announced

The Dune team is happy to announce the release of Dune 3.17.1!= :camel:=20

This patch release includes some bug fixes. To reduce computing time, it do= es not build .cmxs files anymore when the (no_dynlink) stanza is used. This change also corrects the semantic of the (no_= dynlink) stanza which was building .cmxs files even if it did not install them. Now, it = does not build nor install them.

If you encounter a problem with this release, you can report it on the ocaml/dune repository.

Changelog

  • Fixed
    • When a library declares (no_dynlink), then the .cmxs= file for it is no longer built. (#11176, @nojb)
    • Fix bug that could result in corrupted file copies by Dune, for example= when using the copy_files# stanza or the copy# action.= (@nojb, #11194, fixes #11193)
    • Remove useless error message when running $ dune subst in = empty projects. (@rgrinberg, #11204, fixes #11200)

First release candidate of OCaml 5.3.0

octachron announced

The release of OCaml 5.3.0 is imminent.

As a final step, we are publishing a release candidate to check that everyt= hing is in order before the release in the upcoming week(s).

If you find any bugs, please report them on OCaml's issue tracker.

Compared to the second beta, this release candidate contains a regression f= ix in the type system (some type expressions were not generalized when they= ought to be), one fix for the new check for dependency order at link time,= and a manual update.

The full change log for OCaml 5.3.0 is available on GitHub. A short summary of the cha= nges since the second beta release is also available below.

Installation Instructions

The base compiler can be installed as an opam switch with the following com= mands on opam 2.1 and later:

opam update
opam switch create 5.3.0~rc1

The source code for the release candidate is also directly available on:

  • Fine-Tuned Compiler Configuration

    If you want to tweak the configuration of the compiler, you can switch to t= he option variant with:

    opam update
    opam switch create <switch_name> ocaml-variants.5.3.0~rc1+options <=
    ;option_list>
    

    where <option_list> is a space-separated list of o= caml-option-* packages. For instance, for a flambda and= no-flat-float-array switch:

    opam switch create 5.3.0~rc1+flambda+nffa ocaml-variants.5.3.0~rc1+options =
    ocaml-option-flambda ocaml-option-no-flat-float-array
    

    All available options can be listed with opam search ocaml-option.

Changes since the second beta

  • Type system
    • #13690: som= e type expressions were incorrectly not generalized (because they were assigned to the wrong level pool)
  • Documentation
    • #13666: Rew= rite parts of the example code around nested lists in Chapter 6 (Polymorphism and its limitations -> Polymorphic recursion) giving the "depth" function [in the non-polymorphically-recursive part of the example] a much more sensible behavior; also fix a typo and some formatting. (Frank Steffahn, review by Florian Angeletti)
  • Compiler user-interface and warnings:
    • #12084, +#13669, +#13673: Check link ord= er when creating archive and when using ocamlopt.

Pragmatic Category Theory | Part 3: Associativity

Dmitrii Kovanikov announced

Hi everyone! :wave:=20

I've finished writing the third part of my Pragmatic Category Theory= series (some code examples are in OCaml):

Previous discussion:

P.S. I would've edited the previous topic instead of creating a new one but= looks like I haven't touched it for a while, so I can't edit the title and= the body anymore.

ocaml-stk, xtmpl, stog, ocaml-css, ocaml-ldp, higlo and chamo<= /h2>

Zoggy announced

Hello,

I made new releases for some libraries and tools. All are available in opam.

OCaml-s= tk 0.4.0

OCaml-stk is a library to build graphical user interfaces, based on SDL2. T= his release includes two new widgets:

  • a layers widget, allowing to display widgets in= 026; layers,
  • a xmlview widget (in stk_xml package), allowing to display XML (and so = XHTML) documents, handling CSS for styling and layout. The programmer can c= ustomize which widgets are created for each XML node, and add event handler= s on each node. See the "xmlview" example included in sources.

This new release also comes with an inspection window for easier debugging.

Complete list of changes is here.

Xtmpl 1.0.0

Xtmpl is a library to build, read and parse XML document. It provides a rewriting engine and templating facilities. This new release includes a big refactori= ng, using functors. This creates some incompatibilities with prior versions= . See = here for changes.

Stog 1.1.0=

Stog is a static web site compiler. It is able to handle blog posts as well= as regular pages or any XML document in general. This release upgrades to = Xtmpl 1.1.0 and includes small fixes (see here for details).

OCaml-c= ss 0.3.0

OCaml-css is an OCaml library to parse and print CSS. It can also expand na= mespaces and perform computations on property values. Parser can be extende= d by defining additional properties.

This release includes various parsing fixes and adds new CSS properties: border-collapse, border-spacing, and opacity<= /code>. The complete list of changes is here.

OCaml-l= dp 0.4.0

This is a library to build LDP (L= inked Data Platform) and SOLID ap= plications, runnable either in standalone program (using packages ldp= _tls or ldp_curl) or in the browser (using package ldp_js with js_of_ocaml).=20

This release includes only one fix in Ldp.Http module: when following redirection, resolve IRI in Location field of= response against original IRI.

Higlo 0= .10.0

Higlo is an OCaml library for syntax highlighting. This release adds a simp= le commonmark lexer.

Chamo 4= .2.0

Chamo is a source code editor, even if it can be used to edit any text file= . A system of "views" allows to edit some kinds of files in specific views.= It's like an Emacs where Lisp is replaced by OCaml, as it can be extended = and customized in OCaml.

This release is just an upgrade to Stk 0.4.0 and Xtmpl 1.0.0.

MirageOS on OCaml 5

shym announced

On behalf of all the numerous developers involved, it=E2=80=99s my pleasure= to announce that the MirageOS ecosystem has seen the long-running work to = port to OCaml 5 come to fruition: ocaml-solo5 v1.0 is now usin= g OCaml 5.2.1!

What is ocaml-solo5

ocaml-solo5 is an OCaml cross compiler for producing Solo5 uni= kernels. Solo5 is the basis for MirageOS unikernels when they are not compi= led as programs to run on a regular OS.

ocaml-solo5 responds to specific unikernel constraints. In par= ticular it provides a placeholder for the standard C library that is comple= te enough that we can build the OCaml runtime without a full POSIX system t= o support it. That OCaml runtime can then be linked statically to OCaml pro= grams in order to produce unikernels.

These constraints require us to keep track of developments of the OCaml com= piler and particularly of its runtime. The major changes coming with OCaml = 5 have required quite a lot of work (over 1 year) to bring our cross compil= er up-to-date.

It should be noted that ocaml-solo5 is restricted to a single = domain but it makes it possible to use the effects introduced with OCaml 5.

MirageOS & OCaml 5

The long road to bring Mirage on OCaml 5 started with adding support for Th= read-Local Storage (TLS) in Solo5. Even if Solo5 doesn=E2=80=99t support th= e creation of threads, the OCaml 5 runtime stores domain-specific data, inc= luding for the first domain, in TLS. The main work was done in solo5#546 and solo5#542 with fixes in solo5#551 and solo5#554. It was released with Solo5 v0.8.0.

This foundational work on Solo5 unblocked the port of the compiler per se. As the OCaml runtime changed substantially= between OCaml 4.x and 5.x, this required many changes in the minimal libra= ry, called nolibc, that provides simple implementations and st= ubs for the part of the libc interface the runtime uses. In particular, the= memory management of the runtime is very different from OCaml 4.x (which i= s natural, due to the multicore support): it uses the mmap~/~munmap functions instead of malloc~/~free. mmap is= a very versatile interface, tightly tied to the virtual memory. Providing = adequate (correct but still simple) implementations of mmap~/~munmap<= /code> in the context of Solo5, i.e. witho= ut virtualisation of the memory, required a careful review of how the inter= face is actually used in the runtime.=20

Besides that work on nolibc, building an OCaml compiler target= ing Solo5 also requires a few patches to the compiler build system. As much= work has been happening upstream to fix issues in building a cross compile= r, this was taken as an opportunity to write clean patches in order to cont= ribute them upstream and simplify the future of OCaml/Solo5 (along with oth= er cross-compiler projects).

All this work has been combined in ocaml-solo5#134, which built on and completed ocaml-solo5#122, <= a href=3D"https://github.com/mirage/ocaml-solo5/pull/124">ocaml-solo5#124 and ocaml-sol= o5#129. It was released in ocaml-solo5 v1.0.0.

Now we are eager to learn how it behaves in your applications! Note in part= icular that, as already mentioned, the garbage collector is completely diff= erent from the one in OCaml 4. For example, the Mirage website currently runs the two versions, one on OCaml 4 and = one on OCaml 5 with traffic being alternatively routed to one or the other,= to monitor their behaviours. First experiments show that we must tweak the= space_overhead parameter to have the OCaml 5 unikernel use th= e same amount of memory than the OCaml 4 one, at the price of some compute = time. This generally means that you might have to experiment a bit if you r= un within very constrained memory limits.

How to give it a spin

To try the new OCaml 5, first create an OPAM switch with OCaml 5.2.1. Then, fol= low the standard procedure (see how to install it and how to build an hello-world unikernel). After installing ocaml-solo= 5, you can check with opam list ocaml-solo5 that it ins= talled the version 1.x of the package.

People involved

Many people got involved at some point or another, either with code or comm= ents, to that community effort (hopefully not forgetting anyone, in s= ort order):

  • Adam Steen
  • Adrian-Ken Rueegsegger
  • Christiano Haesbaert
  • Fabrice Buoro
  • Hannes Mehnert
  • Kate
  • Pierre Alain
  • Romain Calascibetta
  • Samuel Hym
  • S=C3=A9bastien Hinderer

Dune dev meeting

Etienne Marais announced

Hi camelers! :camel: The next Dune meeting is supposed to be on Wednesday, December, 25th, but s= ince it is Christmas Day (a bank holiday for various countries), the meetin= g is cancelled. Next one will be on the January, 8th, 2025 :fireworks:

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.

--=-=-=--