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=KOqrDnXX; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=okmij.org header.i=@okmij.org header.a=rsa-sha256 header.s=pair-202411190653 header.b=ONIKNGwf; 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 02A764003C for ; Tue, 6 May 2025 06:50:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:mime-version:subject:reply-to: sender:list-id:list-help:list-subscribe:list-unsubscribe: list-post:list-owner:list-archive; bh=0BEXbBYhjXPO/cfmvitd8Z86w+rbOndjMT5c071Frt4=; b=KOqrDnXXLJqx/3HUrZdi3TYtoOEez05qBN9B4EXLOT++4F4CEU/8wmzS NYe+KJRkFBX+tAIg9xTN9tgnTsGIIxjGmNKEAFmk2U8WNf/J3a+hOCkSX k75TMUWzfa0A4fXWYu4o7+kHq6DY4ENgHFHu7E1Sdu/Xn4OcAerDJXswy 8=; 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 (signature did not verify [final]) header.i=@okmij.org X-IronPort-AV: E=Sophos;i="6.15,265,1739833200"; d="scan'208";a="220782418" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 06 May 2025 08:50:24 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 5CDD0E0CCE; Tue, 6 May 2025 08:50:24 +0200 (CEST) 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 57E58E0131 for ; Tue, 6 May 2025 08:50:22 +0200 (CEST) IronPort-SDR: 6819b12d_84Tb8Eb7zjzdx4i4ymgknw0ExtgukxRMepd+eLLjSvEjBl9 ib6dxOf33WCyhTRnKlH1ZAobZ9RvHGn0o3nFJ0Q== X-IPAS-Result: =?us-ascii?q?A0FHBACdsBlog3IDJ0JaHQEBPAEFBQECAQkBFYFTAoJCf?= =?us-ascii?q?VozBwhJiCSFLIh2oBUPAQMBDRQCAQIOFhICBAEBAwEDkEYCHwYBBDMGDgECB?= =?us-ascii?q?AEBAQEDAgMBAQEBAQEQAQEFAQEBAgEBAgQGAQIQAQEBAUBJhXsNgls7ghYsM?= =?us-ascii?q?IEbBgEBMgZwg2EBgmQCAREGsASBNIEBggwBAQaBCNx9AwaBSQGFbIJjAYVrA?= =?us-ascii?q?YUeDg2BSEWBFYNogkqCRoV3ghqBLYJRgVmBRYJqgVSDS4JnjUmBTRwDWSwBV?= =?us-ascii?q?RMXCwcFYYEIA4EPbjMdgg+FG4IPhjQChFeETS1PhTGBKn9AAwttPTcUG5cSg?= =?us-ascii?q?x9NG0UDKxQYUIEBgSaSV1KRbaBPPIQlgXCCEIgZlUwzhySjNAGZAI4Gmy+Bf?= =?us-ascii?q?SSBXE0wCIMiTwMZD446iHq6JzQ1PAIHCwEBAwmFRYsBgUsBAQ?= IronPort-PHdr: A9a23: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 IronPort-Data: A9a23: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 4T4qaCojXxXkXLMLPs= IronPort-HdrOrdr: A9a23:Cm+9eq/pF9RYaaNq28Vuk+DiI+orL9Y04lQ7vn2ZbSYlF/Bw9v re/sjzsCWE7Ar5N0tMpTntAsW9qBDnhP1IyK0YPbLncw/ivW23MJgn0I2K+V3d8k/Fl9K1vJ 0IG8MVNDSaNzZHZKjBjzVRf7sbsb66zJw= X-Talos-CUID: =?us-ascii?q?9a23=3ASDU/dmm9r+zMeLmOOpX36XtEGoPXOSfzx1LWYFO?= =?us-ascii?q?iNVhwd6Wua2eA0bFBlfM7zg=3D=3D?= X-Talos-MUID: 9a23:Q2GYwAj1uDsJkTF967PXYsMpMeBLw/ysEEY3uMsrm8m1Mwt9MDCCtWHi X-IronPort-Anti-Spam-Filtered: true X-IronPort-AV: E=Sophos;i="6.15,265,1739833200"; d="scan'208";a="220782396" X-MGA-submission: =?us-ascii?q?MDGgMknW+pPJ5igrypvlwGDBNdjUiMemY7D7sT?= =?us-ascii?q?aSvF4+WtXOp/K97kPLPyZfmYXAg5lMsRtxu4Tmh3E8gk+4YGOlSCWWZP?= =?us-ascii?q?CbqrBr3FbykAraevCuqlsekFdl90NZLjy5kJ0PeqkqhC8QA1MXb0og6/?= =?us-ascii?q?VNkY5L6CNGI2QhHnUrli2ihw=3D=3D?= Received: from mail1.g3.pair.com ([66.39.3.114]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2025 08:50:20 +0200 Received: from mail1.g3.pair.com (localhost [127.0.0.1]) by mail1.g3.pair.com (Postfix) with ESMTP id 024421686FD; Tue, 6 May 2025 02:50:18 -0400 (EDT) Received: from Magus.localnet (149.72.239.49.rev.vmobile.jp [49.239.72.149]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail1.g3.pair.com (Postfix) with ESMTPSA id 0835B1682A6; Tue, 6 May 2025 02:50:16 -0400 (EDT) Date: Tue, 6 May 2025 15:49:35 +0900 From: Oleg To: caml-list@inria.fr Message-ID: Mail-Followup-To: Oleg , caml-list@inria.fr MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=okmij.org; h=date:from:to:subject:message-id:mime-version:content-type; s=pair-202411190653; bh=0BEXbBYhjXPO/cfmvitd8Z86w+rbOndjMT5c071Frt4=; b=ONIKNGwf3hnejodod3OTQrMbkG+Ng+nsDHCgXi7dZiqP1n0ptyf6TESf683nLDj1iR0P4gvtAtAvauxs2/wvcAgXBZndD/D5KB5nWyU9S55FJLODGqzGJHx/CfiPz+fthdw8XGxaq0cUbVbUbSMCRAxdRvkC9L8JaO5FH652v+bN6fMVw6ZoWqZ4iWyX454HAjphJtjsKr5eimsm1r0GTTAcHq9br8aXnDuF4tn9dVtfbMx0uJ7UQcgK4G6s/w+Co3P27Uk2Gw7Kmo5NcT4FuD8GbxoK8z9FrsQj1LqzMmUP74w5lZHeMYB0zmW15i9WKLaB9BUVgKb1TXuibIi7+Q== X-Scanned-By: mailmunge 3.10 on 66.39.3.114 Subject: [Caml-list] ANN: (BER) MetaOCaml N153, for OCaml 5.3.0 Reply-To: Oleg X-Loop: caml-list@inria.fr X-Sequence: 19315 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: BER MetaOCaml (or, simply MetaOCaml, since there aren't any others) N153 is a strict superset of OCaml 5.3.0 for ``writing programs that generate programs''. MetaOCaml adds to OCaml the type of code values (denoting ``program code'', or future-stage computations), and two basic constructs to build them: quoting and splicing. MetaOCaml also features cross-stage persistence, generating ordinary and mutually-recursive definitions, first-class pattern-matching and heterogeneous metaprogramming. The generated code can be printed, stored in a file -- or compiled and linked-back to the running program, thus implementing run-time code optimization. A subset of the generated OCaml code can also be converted to C, via offshoring. (The generated C needs no particular runtime or GC.) A well-typed MetaOCaml program generates only well-scoped and well-typed programs: The generated code shall compile without type errors. Staging-annotation--free MetaOCaml is identical to OCaml; MetaOCaml can link to any OCaml-compiled library (and vice versa). There aren't any notable new features to talk about. OCaml 5.x has changed AST (Parsetree) and Typedtree in significant ways, especially concerning functions. Adjusting MetaOCaml to those changes took some work. See also ChangeLog and NOTES.txt in the MetaOCaml distribution for more details. I'm very thankful to the OCaml team for merging the patch to the OCaml grammar concerning staging annotations. It has made maintaining MetaOCaml quite easier. MetaOCaml N153 should be available through OPAM, hopefully soon. In the meanwhile, it is available as a set of patches to the OCaml 5.3.0 distribution. https://okmij.org/ftp/ML/ber-metaocaml.tar.gz See the INSTALL document in that archive. You need the source distribution of OCaml 5.3.0.