From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr 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 7CADC7F98F for ; Wed, 19 Jul 2017 15:22:11 +0200 (CEST) Authentication-Results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=gabriel.scherer@gmail.com; spf=Pass smtp.mailfrom=gabriel.scherer@gmail.com; spf=None smtp.helo=postmaster@mail-io0-f193.google.com Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of gabriel.scherer@gmail.com) identity=pra; client-ip=209.85.223.193; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of gabriel.scherer@gmail.com designates 209.85.223.193 as permitted sender) identity=mailfrom; client-ip=209.85.223.193; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="gabriel.scherer@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-io0-f193.google.com) identity=helo; client-ip=209.85.223.193; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="gabriel.scherer@gmail.com"; x-sender="postmaster@mail-io0-f193.google.com"; x-conformance=sidf_compatible IronPort-PHdr: =?us-ascii?q?9a23=3AW8GN9xGMTMsT5AigQUOEB51GYnF86YWxBRYc798d?= =?us-ascii?q?s5kLTJ7yps6wAkXT6L1XgUPTWs2DsrQf2rWQ6/iocFdDyK7JiGoFfp1IWk1Nou?= =?us-ascii?q?QttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZr?= =?us-ascii?q?KeTpAI7SiNm82/yv95HJbQhFgDiwbaluIBmqsA7cqtQYjYx+J6gr1xDHuGFIe+?= =?us-ascii?q?NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PGAu+MLrrxjD?= =?us-ascii?q?QhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VjO/4ad2Ux/okD?= =?us-ascii?q?kIOCIl8G/ZjcxwibhUoBOnpxdix4LZb4WYOP94c6jAf90VWHBBU95TWCxPAo2y?= =?us-ascii?q?YYgBAfcfM+lEoIfwvEcOrQKkCAWwGO/j1j1Fi3nr1qM6yeQhFgTG0RQhEd0Uq3?= =?us-ascii?q?vUttT1O7kWUeuo0afH0TXDYO1M2Tjj8ojDbxcsof6WUr1ra8rRyFcgFwffglWL?= =?us-ascii?q?tYPlPy2a1v4TvGiB9OdgWuevhHQmqwF1uDSg2sAsiozQi48T11vK+yJ5wIMvKt?= =?us-ascii?q?25Tk52ed+kEJ1KtyGbLYR6WM0iQ3twtCY1y70GpZ67fDURx5g92xHfbPmHf5CS?= =?us-ascii?q?4h39TOaROzB4i294eL2jhha96kygxfPlWsavzVZKry5FncTXtnwX0BzT8MeHRu?= =?us-ascii?q?N9/0i72TaP0AfT5vtYLkAzkKrWLYMqzL0olpcLr0jPAiv7lF/1gaKWbEko5Pak?= =?us-ascii?q?5ur9brn7opKROYl5gRzkPKs0gMywG+E4PxAOX2eF/eS806Xu/UjjT7VLiv06i6?= =?us-ascii?q?jZsJfGKcgCqK61HgtY34g55xawCDem19sYnX0ZI15fZB2HiI3pN0nPIPD+E/i/?= =?us-ascii?q?n0yhnCl3y/3CJLHsAZXAImLdnLv/c7tx8VNQxQ49wNxH4pJbELABIPb9Wk/rs9?= =?us-ascii?q?zYCwc0MwOuzOn8EtV9150RWWaVDq+CLKzSsUGH5vgxLOmWf4IVtzP9JOIk5/7q?= =?us-ascii?q?l3M2hVgdfayx0ZsNdH+4BuhmI1meYXf0ntgOC2IKvg4nQOzuiV2CSiJTam2pX6?= =?us-ascii?q?M84zE7EJipAZ3CRoCrmryB3T20EodYZmBcWRiwFiLjfoCAE+oXZTiJaptqmzkA?= =?us-ascii?q?ELygUJMJ1Be0tQa8xaAxfcTO/ShNmpvpztl446XonhE/7zFuR5CS2muXTmxw2H?= =?us-ascii?q?gDRzIs0bpXrkl0y1PF2q991a8LXedP7u9EB19pfaXXyPZ3XoyjVw=3D=3D?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0CjAAARXG9Zf8HfVdFbGgEBAQECAQEBA?= =?us-ascii?q?QgBAQEBFQEBAQECAQEBAQgBAQEBg1Q/gRQHgyiKXJFBH3SBToZchB+IR4IRLoU?= =?us-ascii?q?ZAoNYBz8YAQEBAQEBAQEBAQESAQEJCwsIJjGCMwyCWgECAwwOCQQZARsSDAMMB?= =?us-ascii?q?gMCCwUIAgIJCBUCAiIBEQEFAQoEAQ0GEwgKigQBAxUQkAaRGz+KVhGBI4FsGAU?= =?us-ascii?q?BHIMHBYNdChknAwpWgnABCgEBARwCBhJ5gh2DTYFhgnA0hGo/glSCYQWHfQyBV?= =?us-ascii?q?BOGZ4FgjQKCJoUlg0qJBIIMV4R4g3eGXolHik0UH4EVH4FCMSEjXhqEagwDHII?= =?us-ascii?q?DJDYBiR8BAQE?= X-IPAS-Result: =?us-ascii?q?A0CjAAARXG9Zf8HfVdFbGgEBAQECAQEBAQgBAQEBFQEBAQE?= =?us-ascii?q?CAQEBAQgBAQEBg1Q/gRQHgyiKXJFBH3SBToZchB+IR4IRLoUZAoNYBz8YAQEBA?= =?us-ascii?q?QEBAQEBAQESAQEJCwsIJjGCMwyCWgECAwwOCQQZARsSDAMMBgMCCwUIAgIJCBU?= =?us-ascii?q?CAiIBEQEFAQoEAQ0GEwgKigQBAxUQkAaRGz+KVhGBI4FsGAUBHIMHBYNdChknA?= =?us-ascii?q?wpWgnABCgEBARwCBhJ5gh2DTYFhgnA0hGo/glSCYQWHfQyBVBOGZ4FgjQKCJoU?= =?us-ascii?q?lg0qJBIIMV4R4g3eGXolHik0UH4EVH4FCMSEjXhqEagwDHIIDJDYBiR8BAQE?= X-IronPort-AV: E=Sophos;i="5.40,381,1496095200"; d="scan'208";a="284057550" Received: from mail-io0-f193.google.com ([209.85.223.193]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/AES128-GCM-SHA256; 19 Jul 2017 15:22:08 +0200 Received: by mail-io0-f193.google.com with SMTP id n64so42292ioo.0 for ; Wed, 19 Jul 2017 06:22:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :content-transfer-encoding; bh=V0d1Lk1b9Tsyi7dqariFK+PVjsWQOjdklCyPmBjtNFM=; b=WmoFNbTLVSJKTt405Mv2t1gOOEm+pPEN5gS8nUaCBtInLEJAvKBGHeIXgYz5Em/msh XlQev6MMiBqKLI0S6IMQizKtMxWwQXyu7P7l/ULdw21KhTL4J2AtzywVu8gwmM4RT6w/ X+U+KxYjttsCkClFHfJgfRzv+xNQUFy3XwyYyNr4nhmjt73mLaPR0Uxn3faiC3d3bMD5 0bQJkTBtSNzuoJp0ggJBmYRv7sYtu9O2fX2hXyneJnv50QKcv8lSyvASt9imYW8X0r6g ezEDq/ETc34gFkmWEkQi5UgMtJrB/WUbTtkcD8gvrXYpaGuCtpqxa4Iv4RIyURT9cjNY AIjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:content-transfer-encoding; bh=V0d1Lk1b9Tsyi7dqariFK+PVjsWQOjdklCyPmBjtNFM=; b=LjsHGce5/r1oqmidCSNFRb59kzoBBfsu3MV03oYuxHSOEoVKv0WWYWJuju9F2OKlyE GPWIpFH9Eby56ovHgXKOuN16bYZu/lDbPlaG+wVI507FH04y/gd2k+ymbddSApi8e+II 1Wq6lWj9j91n6zbKGNYpN9Op2g68tDubdOAwL7+5fvfotBbvhhwvkXe7KVdqyJ8plouA eawrhvtXOPO79M5nRSfWxNqj2s/ojixbg18wRrBcHwG4Sos4/MC4LlWvhvarigVp3I6F eDBsucvbiz4aWME3oxlN03lJfssBYPWQ89qsUdfkZks31Uc2vrjDhERAC2fVSgNqHrrY M8/A== X-Gm-Message-State: AIVw110uGCHAtkNO7fV+lFRQOlx43hKkqjdzVLeNiaZp2UbHlX9+8hr1 jQpttolpC6jkLqfT3W+zTq5iGwudfucW X-Received: by 10.107.180.70 with SMTP id d67mr32982iof.83.1500470526209; Wed, 19 Jul 2017 06:22:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.7.6 with HTTP; Wed, 19 Jul 2017 06:21:25 -0700 (PDT) In-Reply-To: <9E0463E2-0891-43C0-A88D-71CD06455EA8@inria.fr> References: <9E0463E2-0891-43C0-A88D-71CD06455EA8@inria.fr> From: Gabriel Scherer Date: Wed, 19 Jul 2017 09:21:25 -0400 Message-ID: To: caml users Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Subject: Re: [Caml-list] OCaml 4.05.0 released I have an annotated version of the 4.05 changelog with, in particular, some of the compatibility-breaking changes explained in more details at https://github.com/gasche/ocaml-releases-change-explanation/wiki/4.05.0-c= hanges-explanation This is a wiki, please feel free to improve the document. On Thu, Jul 13, 2017 at 5:53 AM, Damien Doligez w= rote: > Dear OCaml users, > > We have the pleasure of celebrating the birthdays of Simone Veil and Ern= =C3=B6 Rubik > by announcing the release of OCaml version 4.05.0. > > It is available as an OPAM switch, or as a source > download here: < https://caml.inria.fr/pub/distrib/ocaml-4.05/ > > > Happy hacking, > > -- Damien Doligez for the OCaml team. > > > OCaml 4.05.0 (13 Jul 2017): > --------------------------- > > (Changes that can break existing programs are marked with a "*") > > ### Language features: > > ### Code generation and optimizations: > > - MPR#7201, GPR#954: Correct wrong optimisation of "0 / " > and "0 mod " in the case when was a non-constant > evaluating to zero > (Mark Shinwell, review by Gabriel Scherer, Leo White and Xavier Leroy) > > - MPR#7357, GPR#832: Improve compilation time for toplevel > include(struct ... end : sig ... end) > (Alain Frisch, report by Hongbo Zhang, review by Jacques Garrigue) > > - MPR#7533, GPR#1173: Correctly perform side effects for certain > cases of "/" and "mod" > (Mark Shinwell, report by Jan Mitgaard) > > - GPR#504: Instrumentation support for fuzzing with afl-fuzz. > (Stephen Dolan, review by Alain Frisch, Pierre Chambart, Mark > Shinwell, Gabriel Scherer and Damien Doligez) > > - GPR#863, GPR#1068, GPR#1069: Optimise matches with constant > results to lookup tables. > (Stephen Dolan, review by Gabriel Scherer, Pierre Chambart, > Mark Shinwell, and bug report by Gabriel Scherer) > > - GPR#1150: Fix typo in arm64 assembler directives > (KC Sivaramakrishnan) > > ### Runtime system: > > - MPR#385, GPR#953: Add caml_startup_exn > (Mark Shinwell) > > - MPR#7423, GPR#946: expose new exception-raising functions > `void caml_{failwith,invalid_argument}_value(value msg)` > in addition to > `void caml_{failwith,invalid_argument}(char const *msg)`. > The previous functions would not free their message argument, so > were inconvient for dynamically-allocated messages; the messages > passed to the new functions are handled by the garbage collector. > (Gabriel Scherer, review by Mark Shinwell, request by Immanuel Litzroth) > > - MPR#7557, GPR#1213: More security for getenv > (Damien Doligez, reports by Seth Arnold and Eric Milliken, review by > Xavier Leroy, David Allsopp, Stephen Dolan, Hannes Mehnert) > > - GPR#795: remove 256-character limitation on Sys.executable_name > (Xavier Leroy) > > - GPR#891: Use -fno-builtin-memcmp when building runtime with gcc. > (Leo White) > > ### Type system: > > - MPR#6608, GPR#901: unify record types when overriding all fields > (Tadeu Zagallo and Gabriel Scherer, report by Jeremy Yallop, > review by David Allsopp, Jacques Garrigue) > > * MPR#7414, GPR#929: Soundness bug with non-generalized type variables and > functors. > (Jacques Garrigue, report by Leo White) > > ### Compiler user-interface and warnings: > > - MPR#7050, GPR#748 GPR#843 GPR#864: new `-args/-args0 ` parameters= to > provide extra command-line arguments in a file -- see documentation. > User programs may implement similar options using the new `Expand` > constructor of the `Arg` module. > (Bernhard Schommer, review by J=C3=A9r=C3=A9mie Dimino, Gabriel Scherer > and Damien Doligez, discussion with Alain Frisch and Xavier Leroy, > feature request from the Coq team) > > - MPR#7137, GPR#960: "-open" command line flag now accepts > a module path (not a module name) > (Arseniy Alekseyev and Leo White) > > - MPR#7172, GPR#970: add extra (ocamlc -config) options > int_size, word_size, ext_exe > (Gabriel Scherer, request by Daniel B=C3=BCnzli) > > - MPR#7315, GPR#736: refine some error locations > (Gabriel Scherer and Alain Frisch, report by Matej Ko=C5=A1=C3=ADk) > > - MPR#7473, GPR#1025: perform proper globbing for command-line arguments = on > Windows > (Jonathan Protzenko) > > - MPR#7479: make sure "ocamlc -pack" is only given .cmo and .cmi files, > and that "ocamlopt -pack" is only given .cmx and .cmi files. > (Xavier Leroy) > > - GPR#796: allow compiler plugins to declare their own arguments. > (Fabrice Le Fessant) > > - GPR#829: better error when opening a module aliased to a functor > (Alain Frisch) > > - GPR#911: ocamlc/ocamlopt do not pass warnings-related options to C > compiler when called to compile third-party C source files > (S=C3=A9bastien Hinderer, review by Adrien Nader and David Allsopp) > > - GPR#915: fix -dsource (pprintast.ml) bugs > (Runhang Li, review by Alain Frisch) > > * GPR#933: ocamlopt -p now reports an error on platforms that do not > support profiling with gprof; dummy profiling libraries are no longer > installed on such platforms. > This can be tested with ocamlopt -config > (S=C3=A9bastien Hinderer) > > - GPR#1009: "ocamlc -c -linkall" and "ocamlopt -c -linkall" can now be us= ed > to set the "always link" flag on individual compilation units. This > controls linking with finer granularity than "-a -linkall", which sets > the "always link" flag on all units of the given library. > (Xavier Leroy) > > - GPR#1015: add option "-plugin PLUGIN" to ocamldep too. Use compilerlibs > to build ocamldep. > (Fabrice Le Fessant) > > - GPR#1027: various improvements to -dtimings, mostly including time > spent in subprocesses like preprocessors > (Valentin Gatien-Baron, review by Gabriel Scherer) > > - GPR#1098: the compiler now takes the boolean "OCAML_COLOR" environment > variable into account if "-color" is not provided. This allows users > to override the default behaviour without modifying invocations of ocaml > manually. > (Hannes Mehnert, Guillaume Bury, > review by Daniel B=C3=BCnzli, Gabriel Scherer, Damien Doligez) > > ### Standard library: > > - MPR#6975, GPR#902: Truncate function added to stdlib Buffer module > (Dhruv Makwana, review by Alain Frisch and Gabriel Scherer) > > - MPR#7279, GPR#710: `Weak.get_copy` `Ephemeron.*_copy` doesn't copy > custom blocks anymore > (Fran=C3=A7ois Bobot, Alain Frisch, bug reported by Martin R. Neuh=C3= =A4u=C3=9Fer, > review by Thomas Braibant and Damien Doligez) > > * MPR#7500, GPR#1081: Remove Uchar.dump > (Daniel B=C3=BCnzli) > > - GPR#760: Add a functions List.compare_lengths and > List.compare_length_with to avoid full list length computations > (Fabrice Le Fessant, review by Leo White, Josh Berdine and Gabriel Sche= rer) > > - GPR#778: Arg: added option Expand that allows to expand a string > argument to a string array of new arguments > (Bernhard Schommer, review by Gabriel Scherer and J=C3=A9r=C3=A9mie Dim= ino) > > - GPR#849: Expose a Spacetime.enabled value > (Leo White) > > - GPR#885: Option-returning variants of stdlib functions > (Alain Frisch, review by David Allsopp and Bart Jacobs) > > - GPR#869: Add find_first, find_first_opt, find_last, find_last_opt to > maps and sets. Find the first or last binding or element > satisfying a monotonic predicate. > (Gabriel de Perthuis, with contributions from Alain Frisch, review by > Hezekiah M. Carty and Simon Cruanes, initial report by Gerd Stolpmann) > > - GPR#875: Add missing functions to ArrayLabels, BytesLabels, > ListLabels, MoreLabels, StringLabels so they are compatible with > non-labeled counterparts. Also add missing @@ocaml.deprecated attributes > in StringLabels and BytesLabels. > (Roma Sokolov, review by Gabriel Scherer, Jacques Garrigue, > Gabriel Radanne, Alain Frisch) > > - GPR#999: Arg, do not repeat the usage message thrice when reporting an = error > (this was a regression in 4.03) > (Florian Angeletti, review by Gabriel Scherer) > > - GPR#1042: Fix escaping of command-line arguments in > Unix.create_process{,_env} under Windows. Arguments with tabs should n= ow > be received verbatim by the child process. > (Nicolas Ojeda Bar, Andreas Hauptmann review by Xavier Leroy) > > ### Debugging and profiling: > > - MPR#7258: ocamldebug's "install_printer" command had problems with > module aliases > (Xavier Leroy) > > - GPR#378: Add [Printexc.raise_with_backtrace] to raise an exception using > an explicit backtrace > (Fran=C3=A7ois Bobot, review by Gabriel Scherer, Xavier Leroy, Damien D= oligez, > Fr=C3=A9d=C3=A9ric Bour) > > ### Manual and documentation: > > - MPR#6597, GPR#1030: add forward references to language extensions > that extend non-terminal symbols in the language reference section. > (Florian Angeletti, review by Gabriel Scherer) > > - MPR#7497, GPR#1095: manual, enable numbering for table of contents > (Florian Angeletti, request by Daniel B=C3=BCnzli) > > - MPR#7539, GPR#1181: manual, update dead links in ocamldoc chapter > (Florian Angeletti) > > - GPR#633: manpage and manual documentation for the `-opaque` option > (Konstantin Romanov, Gabriel Scherer, review by Mark Shinwell) > > - GPR#751, GPR#925: add a HACKING.adoc file to contain various > tips and tricks for people hacking on the repository. See also > CONTRIBUTING.md for advice on sending contributions upstream. > (Gabriel Scherer and Gabriel Radanne, review by David Allsopp, > inspired by John Whitington) > > - GPR#916: new tool lintapidiff, use it to update the manual with > @since annotations for API changes introduced between 4.00-4.05. > (Edwin T=C3=B6r=C3=B6k, review by Gabriel Scherer, discussion with Alai= n Frisch, > David Allsopp, S=C3=A9bastien Hinderer, Damien Doligez and Xavier Lero= y) > > - GPR#939: activate the caml_example environment in the language > extensions section of the manual. Convert some existing code > examples to this format. > (Florian Angeletti) > > - GPR#1082: clarify that the use of quoted string for preprocessed > foreign quotations still requires the use of an extension node > [%foo ...] to mark non-standard interpretation. > (Gabriel Scherer, request by Matthew Wahab in GPR#1066, > review by Florian Angeletti) > > ### Other libraries: > > - MPR#7158: Event.sync, Mutex.create, Condition.create cause too many GCs. > The fix is to no longer consider mutexes and condition variables > as rare kernel resources. > (Xavier Leroy) > > - MPR#7264: document the different behaviors of Unix.lockf under POSIX > and under Win32. > (Xavier Leroy, report by David Allsopp) > > - MPR#7339, GPR#787: Support the '0 dimension' case for bigarrays > (see Bigarray documentation) > (Laurent Mazare, > review by Gabriel Scherer, Alain Frisch and Hezekiah M. Carty) > > * MPR#7342, GPR#797: fix Unix.read on pipes with no data left on Windows > it previously raised an EPIPE error, it now returns 0 like other OSes > (Jonathan Protzenko, review by Andreas Hauptmann and Damien Doligez) > > - GPR#650: in the Unix library, add `?cloexec:bool` optional arguments to > functions that create file descriptors (`dup`, `dup2`, `pipe`, `socket`, > `socketpair`, `accept`). Implement these optional arguments in the > most atomic manner provided by the operating system to set (or clear) > the close-on-exec flag at the same time the file descriptor is created, > reducing the risk of race conditions with `exec` or `create_process` > calls running in other threads, and improving security. Also: add a > `O_KEEPEXEC` flag for `openfile` by symmetry with `O_CLOEXEC`. > (Xavier Leroy, review by Mark Shinwell, David Allsopp and Alain Frisch, > request by Romain Beauxis) > > - GPR#996: correctly update caml_top_of_stack in systhreads > (Fabrice Le Fessant) > > ### Toplevel: > > - MPR#7060, GPR#1035: Print exceptions in installed custom printers > (Tadeu Zagallo, review by David Allsopp) > > ### Tools: > > - MPR#5163: ocamlobjinfo, dump globals defined by bytecode executables > (St=C3=A9phane Glondu) > > - MPR#7333: ocamldoc, use the first sentence of text file as > a short description in overviews. > (Florian Angeletti) > > - GPR#848: ocamldoc, escape link targets in HTML output > (Etienne Millon, review by Gabriel Scherer, Florian Angeletti and > Daniel B=C3=BCnzli) > > - GPR#986: ocamldoc, use relative paths in error message > to solve ocamlbuild+doc usability issue (ocaml/ocamlbuild#79) > (Gabriel Scherer, review by Florian Angeletti, discussion with Daniel B= =C3=BCnzli) > > - GPR#1017: ocamldoc, add an option to detect code fragments that could be > transformed into a cross-reference to a known element. > (Florian Angeletti, review and suggestion by David Allsopp) > > - clarify ocamldoc text parsing error messages > (Gabriel Scherer) > > ### Compiler distribution build system: > > - MPR#7377: remove -std=3Dgnu99 for newer gcc versions > (Damien Doligez, report by ygrek) > > - MPR#7452, GPR#1228: tweak GCC options to try to avoid the > Skylake/Kaby lake bug > (Damien Doligez, review by David Allsopp, Xavier Leroy and Mark Shinwel= l) > > - GPR#693: fail on unexpected errors or warnings within caml_example > environment. > (Florian Angeletti) > > - GPR#803: new ocamllex-based tool to extract bytecode compiler > opcode information from C headers. > (Nicolas Ojeda Bar) > > - GPR#827: install missing mli and cmti files, new make target > install-compiler-sources for installation of compiler-libs ml files > (Hendrik Tews) > > - GPR#887: allow -with-frame-pointers if clang is used as compiler on Lin= ux > (Bernhard Schommer) > > - GPR#898: fix locale-dependence of primitive list order, > detected through reproducible-builds.org. > (Hannes Mehnert, review by Gabriel Scherer and Ximin Luo) > > - GPR#907: Remove unused variable from the build system > (S=C3=A9bastien Hinderer, review by whitequark, Gabriel Scherer, Adrien= Nader) > > - GPR#911: Clarify the use of C compiler related variables in the build s= ystem. > (S=C3=A9bastien Hinderer, review by Adrien Nader, Alain Frisch, David A= llsopp) > > - GPR#919: use clang as preprocessor assembler if clang is used as compil= er > (Bernhard Schommer) > > - GPR#927: improve the detection of hashbang support in the configure scr= ipt > (Arma=C3=ABl Gu=C3=A9neau) > > - GPR#932: install ocaml{c,lex}->ocaml{c,lex}.byte symlink correctly > when the opt target is built but opt.opt target is not. > (whitequark, review by Gabriel Scherer) > > - GPR#935: allow build in Android's termux > (ygrek, review by Gabriel Scherer) > > - GPR#984: Fix compilation of compiler distribution when Spacetime > enabled > (Mark Shinwell) > > - GPR#991: On Windows, fix installation when native compiler is not > built > (S=C3=A9bastien Hinderer, review by David Allsopp) > > - GPR#1033: merge Unix and Windows build systems in the root directory > (S=C3=A9bastien Hinderer, review by Damien Doligez and Adrien Nader) > > - GPR#1047: Make .depend files generated for C sources more portable > (S=C3=A9bastien Hinderer, review by Xavier Leroy and David Allsopp) > > - GPR#1076: Simplify ocamlyacc's build system > (S=C3=A9bastien Hinderer, review by David Allsopp) > > ### Compiler distribution build system: Makefile factorization > > The compiler distribution build system (the set of Makefiles used to > build the compiler distribution) traditionally had separate Makefiles > for Unix and Windows, which lead to some amount of duplication and > subtle differences and technical debt in general -- for people working > on the compiler distribution, but also cross-compilation or porting to > new systems. During the 4.05 development period, S=C3=A9bastien Hinderer > worked on harmonizing the build rules and merging the two build > systems. > > * Some changes were made to the config/Makefile file which > is exported as $(ocamlc -where)/Makefile.config, and on > which some advanced users might rely. The changes are > as follows: > - a BYTERUN variable was added that points to the installed ocamlrun > - the PARTIALLD variable was removed (PACKLD is more complete) > - the always-empty DLLCCCOMPOPTS was removed > - the SHARED variable was removed; its value is "shared" or "noshared", > which duplicates the existing and more convenient > SUPPORTS_SHARED_LIBRARIES variable whose value is "true" or "false". > > Note that Makefile.config may change further in the future and relying > on it is a bit fragile. We plan to make `ocamlc -config` easier to use > for scripting purposes, and have a stable interface there. If you rely > on Makefile.config, you may want to get in touch with S=C3=A9bastien Hi= nderer > or participate to MPR#7116 (Allow easy retrieval of Makefile.config's v= alues) > or MPR#7172 (More information in ocamlc -config). > > The complete list of changes is listed below. > > - GPR#705: update Makefile.nt so that ocamlnat compiles > for non-Cygwin Windows ports. > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#729: Make sure ocamlnat is built with a $(EXE) extension, merge > rules between Unix and Windows Makefiles > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#762: Merge build systems in the yacc/ directory. > (S=C3=A9bastien Hinderer, review by David Allsopp, Alain Frisch) > > - GPR#764: Merge build systems in the debugger/ directory. > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#785: Merge build systems in otherlibs/systhreads/ > (S=C3=A9bastien Hinderer, review by Alain Frisch, David Allsopp, > testing and regression fix by J=C3=A9r=C3=A9mie Dimino) > > - GPR#788: Merge build systems in subdirectories of otherlibs/. > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#808, GPR#906: Merge Unix and Windows build systems > in the ocamldoc/ directory > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#812: Merge build systems in the tools/ subdirectory > (S=C3=A9bastien Hinderer, review by Alain Frisch) > > - GPR#866: Merge build systems in the stdlib/ directory > (S=C3=A9bastien Hinderer, review by David Allsopp and Adrien Nader) > > - GPR#941: Merge Unix and Windows build systems in the asmrun/ directory > (S=C3=A9bastien Hinderer, review by Mark Shinwell, Adrien Nader, > Xavier Leroy, David Allsopp, Damien Doligez) > > - GPR#981: Merge build systems in the byterun/ directory > (S=C3=A9bastien Hinderer, review by Adrien Nader) > > - GPR#1033, GPR#1048: Merge build systems in the root directory > (S=C3=A9bastien Hinderer, review by Adrien Nader and Damien Doligez, > testing and regression fix by Andreas Hauptmann) > > ### Internal/compiler-libs changes: > > - GPR#673: distinguish initialization of block fields from mutation in la= mbda. > (Fr=C3=A9d=C3=A9ric Bour, review by Xavier Leroy, Stephen Dolan and Mar= k Shinwell) > > - GPR#744, GPR#781: fix duplicate self-reference in imported cmi_crcs > list in .cmti files + avoid rebuilding cmi_info record when creating > .cmti files > (Alain Frisch, report by Daniel B=C3=BCnzli, review by J=C3=A9r=C3=A9mi= e Dimino) > > - GPR#881: change `Outcometree.out_variant` to be more general. > `Ovar_name of out_ident * out_type list` becomes `Ovar_type of out_type= `. > (Valentin Gatien-Baron, review by Leo White) > > - GPR#908: refactor PIC-handling in the s390x backend > (Gabriel Scherer, review by Xavier Leroy and Mark Shinwell) > > ### Bug fixes > > - MPR#5115: protect all byterun/fail.c functions against > uninitialized caml_global_data (only changes the bytecode behavior) > (Gabriel Scherer, review by Xavier Leroy) > > - MPR#6136, GPR#967: Fix Closure so that overapplication evaluation order > matches the bytecode compiler and Flambda. > (Mark Shinwell, report by Jeremy Yallop, review by Fr=C3=A9d=C3=A9ric B= our) > > - MPR#6550, GPR#1094: Allow creation of empty .cmxa files on macOS > (Mark Shinwell) > > - MPR#6594, GPR#955: Remove "Istore_symbol" specific operation on x86-64. > This is more robust and in particular avoids assembly failures on Win64. > (Mark Shinwell, review by Xavier Leroy, testing by David Allsopp and > Olivier Andrieu) > > - MPR#6903: Unix.execvpe doesn't change environment on Cygwin > (Xavier Leroy, report by Adrien Nader) > > - MPR#6987: Strange error message probably caused by > universal variable escape (with polymorphic variants) > (Jacques Garrigue, report by Mikhail Mandrykin and Leo White) > > - MPR#7216, GPR#949: don't require double parens in Functor((val x)) > (Jacques Garrigue, review by Valentin Gatien-Baron) > > - MPR#7331: ocamldoc, avoid infinite loop in presence of self alias, > i.e. module rec M:sig end =3D M > (Florian Angeletti, review Gabriel Scherer) > > - MPR#7346, GPR#966: Fix evaluation order problem whereby expressions cou= ld > be incorrectly re-ordered when compiling with Flambda. This also fixes= one > example of evaluation order in the native code compiler not matching the > bytecode compiler (even when not using Flambda) > (Mark Shinwell, Leo White, code review by Pierre Chambart) > > - MPR#7348: Private row variables can escape their scope > (Jacques Garrigue, report by Leo White) > > - MPR#7407: Two not-quite-standard C idioms rejected by SUNWSPro compilers > (Xavier Leroy) > > - MPR#7421: Soundness bug with GADTs and lazy > (Jacques Garrigue, report by Leo White) > > - MPR#7424: Typechecker diverges on unboxed type declaration > (Jacques Garrigue, report by Stephen Dolan) > > - MPR#7426, GPR#965: Fix fatal error during object compilation (also > introduces new [Pfield_computed] and [Psetfield_computed] primitives) > (Mark Shinwell, report by Ulrich Singer) > > - MPR#7427, GPR#959: Don't delete let bodies in Cmmgen > (Mark Shinwell, report by Valentin Gatien-Baron) > > - MPR#7432: Linking modules compiled with -labels and -nolabels is not sa= fe > (Jacques Garrigue, report by Jeremy Yallop) > > - MPR#7437: typing assert failure with nonrec priv > (Jacques Garrigue, report by Anil Madhavapeddy) > > - MPR#7438: warning +34 exposes #row with private types > (Alain Frisch, report by Anil Madhavapeddy) > > - MPR#7443, GPR#990: spurious unused open warning with local open in patt= erns > (Florian Angeletti, report by Gabriel Scherer) > > - MPR#7504: fix warning 8 with unconstrained records > (Florian Angeletti, report by John Whitington) > > - MPR#7456, GPR#1092: fix slow compilation on source files containing a l= ot > of similar debugging information location entries > (Mark Shinwell) > > - GPR#795: remove 256-character limitation on Sys.executable_name > (Xavier Leroy) > > - GPR#805, GPR#815, GPR#833: check for integer overflow in String.concat > (Jeremy Yallop, > review by Damien Doligez, Alain Frisch, Daniel B=C3=BCnzli, Fabrice Le= Fessant) > > - GPR#881: short-paths did not apply to some polymorphic variants > (Valentin Gatien-Baron, review by Leo White) > > - GPR#886: Fix Ctype.moregeneral's handling of row_name > (Leo White, review by Jacques Garrigue) > > - GPR#934: check for integer overflow in Bytes.extend > (Jeremy Yallop, review by Gabriel Scherer) > > - GPR#956: Keep possibly-effectful expressions when optimizing multiplica= tion > by zero. > (Jeremy Yallop, review by Nicol=C3=A1s Ojeda B=C3=A4r, Xavier Leroy and= Mark Shinwell) > > - GPR#977: Catch Out_of_range in ocamldebug's "list" command > (Yunxing Dai) > > - GPR#983: Avoid removing effectful expressions in Closure, and > eliminate more non-effectful ones > (Alain Frisch, review by Mark Shinwell and Gabriel Scherer) > > - GPR#987: alloc_sockaddr: don't assume a null terminator. It is not inse= rted > on macOS by system calls that fill in a struct sockaddr (e.g. getsockna= me). > (Anton Bachin) > > - GPR#998: Do not delete unused closures in un_anf.ml. > (Leo White, review by Mark Shinwell and Pierre Chambart) > > - GPR#1019: Fix fatal error in Flambda mode "[functions] does not map set= of > closures ID" > (Pierre Chambart, code review by Mark Shinwell and Leo White) > > - GPR#1075: Ensure that zero-sized float arrays have zero tags. > (Mark Shinwell, Leo White, review by Xavier Leroy) > > * GPR#1088: Gc.minor_words now returns accurate numbers. > (Stephen Dolan, review by Pierre Chambart and Xavier Leroy) > > > -- > Caml-list mailing list. Subscription management and archives: > https://sympa.inria.fr/sympa/arc/caml-list > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs