From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by c5ff346549e7 (Postfix) with ESMTPS id 2F17E5D5 for ; Mon, 28 Mar 2022 17:08:57 +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=ayvaw0TXUa88jg0EbHch0H1i2Iy+TD1JWO4dimIb2EM=; b=OnNckGuZVeORgmnfOWO7OD/Ef1vJhzkosKYFlQmM5sXZ7fFgk3WTcf4V q44Ewp2avVt51PGnBnb+6Nsf1CWq9jHemgrbBIfxm2NP+T84IYPn6eHWY NKvNY01/xRey10xO+KYJjriSPAyVpnv2TEcdayjvWbVA5xL/O/5RgdKq7 o=; Received-SPF: SoftFail (mail2-relais-roc.national.inria.fr: domain of caml-list-owner@inria.fr is inclined to not designate 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 ip4:192.134.164.0/24 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=SoftFail smtp.mailfrom=caml-list-owner@inria.fr; spf=None smtp.helo=postmaster@sympa.inria.fr; dkim=hardfail (signature did not verify [final]) header.i=@inria.fr X-IronPort-AV: E=Sophos;i="5.90,217,1643670000"; d="scan'208,217";a="28739942" Received: from prod-listesu18.inria.fr (HELO sympa.inria.fr) ([128.93.162.160]) by mail2-relais-roc.national.inria.fr with ESMTP; 28 Mar 2022 19:08:56 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id B3823E4378; Mon, 28 Mar 2022 19:08:55 +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 1B416E436E for ; Mon, 28 Mar 2022 19:08:54 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=inria.fr; s=dc; h=date:from:to:message-id:subject:mime-version; bh=ayvaw0TXUa88jg0EbHch0H1i2Iy+TD1JWO4dimIb2EM=; b=DhGxZIdq4hdbMjfWidyHxu0DI2FPdzTzFdubWaB6rSSUAzopr+NPEjEa qLuqmUxGKTiYL54bRGBwD1Om/T6b/fDNBgrp3k7YxzgPp+196hYuMAW3w K0gEvZGj428l/QWOby0VeJ+OdjN/1ez/JcEVTysx9g6sQedcoLfu0eu2L 0=; X-IronPort-AV: E=Sophos;i="5.90,217,1643670000"; d="scan'208,217";a="28739919" X-MGA-submission: =?us-ascii?q?MDGMcWSD+wYmWe/N93zp5OIhKMKV0etnIliXJp?= =?us-ascii?q?TKeyrtHJ6+gsw/HbfUFekJkReaiFuhuQbbrgEunqPGJxL3rbvPFap0+d?= =?us-ascii?q?5ZDDhb7aERrVH6L6ugQ+f7Zyi0L/NDoQo1bxGnBv+B/+QYaSjx+8NBjF?= =?us-ascii?q?9L2Y46pdQuNLFavgTnJm9KQA=3D=3D?= Received: from zcs-store1.inria.fr ([128.93.142.28]) by mail2-relais-roc.national.inria.fr with ESMTP; 28 Mar 2022 19:08:54 +0200 Date: Mon, 28 Mar 2022 19:08:53 +0200 (CEST) From: Florian Angeletti To: caml-list Message-ID: <580593532.6350922.1648487333990.JavaMail.zimbra@inria.fr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="=_b7bbe23e-9259-4d55-9dc1-188b6d281ad2" X-Originating-IP: [128.93.64.106] X-Mailer: Zimbra 8.8.15_GA_4203 (ZimbraWebClient - FF98 (Linux)/8.8.15_GA_4232) Thread-Index: MEFBDkjHsMPZPWBed16pQ34vSoLPzQ== Thread-Topic: OCaml release 4.14.0 Subject: [Caml-list] OCaml release 4.14.0 Reply-To: Florian Angeletti X-Loop: caml-list@inria.fr X-Sequence: 18734 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: --=_b7bbe23e-9259-4d55-9dc1-188b6d281ad2 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Dear OCaml users,=20 We have the pleasure of celebrating the birthday of Alexander Grothendieck = by=20 announcing the release of OCaml version 4.14.0.=20 Some of the highlights in the 4.14.0 release are:=20 - Integrated support for "go to definitions" in Merlin.=20 - Standard library: new modules `In_channel` and `Out_channel`,=20 many new functions in Seq module, UTF decoding and validation support=20 for strings and bytes.=20 - Runtime optimisation: GC prefetching. Benchmarks show a speedup of around= 20%=20 in GC-heavy programs.=20 - Improved error messages in particular for module-level errors.=20 - Deprecated functions and modules in preparation for OCaml 5.=20 In particular, the Stream and Genlex modules are now deprecated.=20 - Type variables can be explicitly introduced in value and variant construc= tor=20 declarations. For instance,=20 val fold: ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc=20 type showable =3D Show: 'a * ('a -> string) -> showable=20 can now be written as=20 val fold: 'acc 'elt. ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc=20 type showable =3D Show: 'a. 'a * ('a -> string) -> showable=20 - Tail-call with up to 64 arguments are now guaranteed to be optimized=20 for all architectures.=20 - Experimental tail modulo cons (TMC) transformation=20 The full list of changes can be found in the changelog below.=20 Those releases are available as OPAM switches, and as a source download her= e:=20 https://github.com/ocaml/ocaml/archive/4.14.0.tar.gz=20 https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.0.tar.gz=20 Happy hacking,=20 -- Florian Angeletti for the OCaml team.=20 OCaml 4.14.0 changes (28 March 2022)=20 ----------------------------------------------------=20 ### Language features (highlights):=20 - #10437: Allow explicit binders for type variables.=20 (Stephen Dolan, review by Leo White)=20 - #181, #9760, #10740: opt-in tail-modulo-cons (TMC) transformation=20 let[@tail_mod_cons] rec map f li =3D ...=20 (Fr=E9d=E9ric Bour, Gabriel Scherer, Basile Cl=E9ment,=20 review by Basile Cl=E9ment and Pierre Chambart,=20 tested by Konstantin Romanov)=20 ### Runtime system (highlights):=20 - #10195, #10680: Speed up GC by prefetching during marking=20 (Stephen Dolan, review by Xavier Leroy, Guillaume Munch-Maccagnoni,=20 Jacques-Henri Jourdan, Damien Doligez and Leo White)=20 ### Code generation and optimizations (highlights):=20 - #10595: Tail calls with up to 64 arguments are guaranteed to be compiled= =20 as tail calls. To this end, memory locations in the domain state=20 are used for passing arguments that do not fit in registers.=20 (Xavier Leroy, review by Vincent Laviron)=20 ### Standard library (highlights):=20 * #10710: Add UTF tools, codecs and validations to the Uchar, Bytes and=20 String modules.=20 (Daniel B=FCnzli, review by Florian Angeletti, Nicol=E1s Ojeda B=E4r, Alain= =20 Frisch and Gabriel Scherer)=20 * #10482: mark the Stream and Genlex modules as deprecated, in preparation= =20 for a future removal. These modules (without deprecation alert)=20 are now provided by the camlp-streams library.=20 (Xavier Leroy, review by Nicol=E1s Ojeda B=E4r)=20 - #10545: Add In_channel and Out_channel modules.=20 (Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, Simon Cruanes, Gabriel S= cherer,=20 Guillaume Munch-Maccagnoni, Alain Frisch and Xavier Leroy)=20 ### Compiler user-interface and warnings (highlights)=20 - #10328, #10780: Give more precise error when disambiguation could not=20 possibly work.=20 (Leo White, review by Gabriel Scherer and Florian Angeletti)=20 - #10361: Improve error messages for mismatched record and variant=20 definitions.=20 (Florian Angeletti, review by Gabriel Radanne and Gabriel Scherer)=20 - #10407: Produce more detailed error messages that contain full error trac= es=20 when module inclusion fails.=20 (Antal Spector-Zabusky, review by Florian Angeletti)=20 ### Internal/compiler-libs changes (highlights):=20 - #10718, #11012: Add "Shape" information to the cmt files. Shapes are an= =20 abstraction of modules that can be used by external tooling to perform=20 definition-aware operations.=20 (Ulysse G=E9rard, Thomas Refis and Leo White, review by Florian Angeletti)= =20 ### Language features:=20 - #10462: Add attribute to produce a compiler error for polls.=20 (Sadiq Jaffer, review by Mark Shinwell, Stephen Dolan=20 and Guillaume Munch-Maccagnoni)=20 - #10441: Remove unnecessary parentheses surrounding immediate objects.=20 Allow 'object ... end # f', 'f object ... end', etc.=20 (Yan Dong, review by Nicol=E1s Ojeda B=E4r, Florian Angeletti and Gabriel S= cherer)=20 ### Runtime system:=20 * #9391, #9424: Fix failed assertion in runtime due to ephemerons *set_* an= d=20 *blit_* function during Mark phase=20 (Fran=E7ois Bobot, reported by Stephen Dolan, reviewed by Damien Doligez)= =20 - #10549: Stack overflow detection and naked pointers checking for ARM64=20 (Xavier Leroy, review by Stephen Dolan)=20 * #10675, #10937: Emit deprecation warnings when old C runtime function nam= es=20 are used. This will break C stub code that uses these old names and=20 treats warnings as errors. The workaround is to use the new names.=20 (Xavier Leroy and David Allsopp, review by S=E9bastien Hinderer and=20 Damien Doligez)=20 - #10698, #10726, #10891: Free the alternate signal stack when the main OCa= ml=20 code or an OCaml thread stops=20 (Xavier Leroy, review by David Allsopp and Damien Doligez)=20 - #10730, 10731: Fix bug in `Obj.reachable_words` causing a slowdown when c= alled=20 multiple time (Alain Frisch, report by ygrek, review by Xavier Leroy)=20 ### Code generation and optimizations:=20 - #10578: Increase the number of integer registers used for=20 parameter passing on PowerPC (16 registers) and on s390x (8 registers).=20 (Xavier Leroy, review by Mark Shinwell)=20 - #10591, #10615: Tune the heuristic for CSE of integer constants=20 so as to avoid excessive CSE on compiler-generated constants=20 and long register allocation times.=20 (Xavier Leroy, report by Edwin T=F6r=F6k, review by Nicol=E1s Ojeda B=E4r)= =20 - #10681: Enforce boolean conditions for the native backend=20 (Vincent Laviron, review by Gabriel Scherer)=20 - #10719: Ensure that build_apply respects Lambda.max_arity=20 (Stephen Dolan, review by Xavier Leroy)=20 - #10728: Ensure that functions are evaluated after their arguments=20 (Stephen Dolan, review by Mark Shinwell)=20 - #10732: Ensure right-to-left evaluation of arguments in cmm_helpers=20 (Greta Yorsh, review by Xavier Leroy)=20 ### Standard library:=20 * #10622: Annotate `Uchar.t` with immediate attribute=20 (Hongbo Zhang, reivew by Gabriel Scherer and Nicol=E1s Ojeda B=E4r)=20 * #7812, #10475: `Filename.chop_suffix name suff` now checks that `suff`=20 is actually a suffix of `name` and raises Invalid_argument otherwise.=20 (Xavier Leroy, report by whitequark, review by David Allsopp)=20 - #10526: add Random.bits32, Random.bits64, Random.nativebits=20 (Xavier Leroy, review by Gabriel Scherer and Fran=E7ois Bobot)=20 * #10568: remove Obj.marshal and Obj.unmarshal=20 (these functions have been deprecated for a while and are superseded=20 by the functions from module Marshal)=20 (Fran=E7ois Pottier, review by Gabriel Scherer and Kate Deplaix)=20 - #10538: add Out_channel.set_buffered and Out_channel.is_buffered to contr= ol=20 the buffering mode of output channels.=20 (Nicol=E1s Ojeda B=E4r, review by John Whitington, Daniel B=FCnzli, David A= llsopp=20 and Xavier Leroy)=20 * #10583, #10998: Add over 40 new functions in Seq.=20 (Fran=E7ois Pottier and Simon Cruanes, review by Nicol=E1s Ojeda B=E4r,=20 Daniel B=FCnzli, Na=EBla Courant, Craig Ferguson, Wiktor Kuchta,=20 Xavier Leroy, Guillaume Munch-Maccagnoni, Rapha=EBl Proust, Gabriel Scherer= =20 and Thierry Martinez)=20 - #10596, #10978: Add with_open_bin, with_open_text and with_open_gen to=20 In_channel and Out_channel. Also, add In_channel.input_all.=20 (Nicol=E1s Ojeda B=E4r, review by Daniel B=FCnzli, J=E9r=E9mie Dimino, Dami= en Doligez=20 and Xavier Leroy)=20 - #10658: add detailed information about the current version of OCaml=20 to the Sys module of the standard library.=20 (S=E9bastien Hinderer, review by Damien Doligez, Gabriel Scherer, David=20 Allsopp, Nicol=E1s Ojeda B=E4r, Vincent Laviron)=20 - #10642: On Windows, Sys.remove and Unix.unlink now remove symlinks=20 to directories instead of raising EACCES. Introduce=20 caml/winsupport.h to hold more common code between the runtime,=20 lib-sys, and win32unix.=20 (Antonin D=E9cimo, review by David Allsopp and Xavier Leroy)=20 - #10737: add new ephemeron API for forward compatibility with Multicore=20 OCaml.=20 (Damien Doligez, review by Stephen Dolan)=20 * #10922: Add deprecation warnings on {Int32,Int64,Nativeint}.format.=20 (Nicol=E1s Ojeda B=E4r, review by Xavier Leroy and Florian Angeletti)=20 ### Other libraries:=20 - #10192: Add support for Unix domain sockets on Windows and use them=20 to emulate Unix.socketpair (only available on Windows 1803+)=20 (Antonin D=E9cimo, review by David Allsopp)=20 - #10469: Add Thread.set_uncaught_exception_handler and=20 Thread.default_uncaught_exception_handler.=20 (Enguerrand Decorne, review by David Allsopp)=20 - #10697: Bindings of dup and dup2 in win32unix now correctly call=20 WSADuplicateSocket on sockets instead of DuplicateHandle.=20 (Antonin D=E9cimo, review by Xavier Leroy and Nicol=E1s Ojeda B=E4r)=20 - #10951: Introduce the Thread.Exit exception as an alternative way to=20 terminate threads prematurely. This alternative way will become=20 the standard way in 5.00.=20 (Xavier Leroy, review by Florian Angeletti)=20 ### Tools:=20 - #10839: Fix regression of #show when printing class type=20 (=C9lie Brami, review by Florian Angeletti)=20 - #3959, #7202, #10476: ocaml, in script mode, directive errors=20 (`#use "missing_file";;`) use stderr and exit with an error.=20 (Florian Angeletti, review by Gabriel Scherer)=20 - #10438: add a new toplevel cli argument `-e