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 ESMTP id 585615D5 for ; Thu, 23 May 2019 13:16:38 +0000 (UTC) X-IronPort-AV: E=Sophos;i="5.60,503,1549926000"; d="scan'208";a="384436424" Received: from sympa.inria.fr ([193.51.193.213]) by mail2-relais-roc.national.inria.fr with ESMTP; 23 May 2019 15:16:33 +0200 Received: by sympa.inria.fr (Postfix, from userid 20132) id 64D0D82706; Thu, 23 May 2019 15:16:33 +0200 (CEST) Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id C1A9E8247D; Thu, 23 May 2019 15:16:18 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.60,503,1549926000"; d="scan'208";a="306992534" Received: from ec-ap-2-13-07.paris.inria.fr (HELO [192.168.1.3]) ([128.93.65.24]) by mail3-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 23 May 2019 15:16:18 +0200 From: Damien Doligez Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Mac OS X Mail 11.5 \(3445.9.1\)) Message-Id: <1BE5F45D-82CE-454E-8F3D-18582C71B3B8@inria.fr> Date: Thu, 23 May 2019 15:16:17 +0200 To: caml announce , caml users X-Mailer: Apple Mail (2.3445.9.1) Subject: [Caml-list] OCaml 4.08.0+rc1 Reply-To: Damien Doligez X-Loop: caml-list@inria.fr X-Sequence: 17569 Errors-to: caml-list-owner@inria.fr Precedence: list Precedence: bulk Sender: caml-list-request@inria.fr X-no-archive: yes List-Id: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Dear OCaml users, The release of OCaml version 4.08.0 is imminent. We have created a release candidate that you can test. The source code is available at these addresses: https://github.com/ocaml/ocaml/archive/4.08.0+rc1.tar.gz https://caml.inria.fr/pub/distrib/ocaml-4.08/4.08.0+rc1.tar.gz The compiler can also be installed as an OPAM switch with one of the following commands. opam switch create ocaml-variants.4.08.0+rc1 = --repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/ocaml-beta-re= pository.git or opam switch create ocaml-variants.4.08.0+rc1+ = --repositories=3Ddefault,beta=3Dgit+https://github.com/ocaml/ocaml-beta-re= pository.git where you replace with one of these: afl default_unsafe_string flambda fp fp+flambda We want to know about all bugs. Please report them here: https://github.com/ocaml/ocaml/issues Happy hacking, -- Damien Doligez for the OCaml team. (Changes that can break existing programs are marked with a "*") ### Language features: - #1947: Introduce binding operators (let*, let+, and* etc.) (Leo White, review by Thomas Refis) - #1892: Allow shadowing of items coming from an include (Thomas Refis, review by Gabriel Radanne) - #2122: Introduce local substitutions in signatures: "type t :=3D = type_expr" and "module M :=3D Extended(Module).Path" (Thomas Refis, with help and review from Leo White, and Alain Frisch) - #1804: New notion of "alerts" that generalizes the deprecated warning [@@ocaml.alert deprecated "Please use bar instead!"] [@@ocaml.alert unsafe "Please use safe_foo instead!"] (Alain Frisch, review by Leo White and Damien Doligez) - #6422, #7083, #305, #1568: Allow `exception` under or-patterns (Thomas Refis, with help and review from Alain Frisch, Gabriel = Scherer, Jeremy Yallop, Leo White and Luc Maranget) - #1705: Allow @@attributes on exception declarations. (Hugo Heuzard, review by Gabriel Radanne and Thomas Refis) - #1506, #2147, #2166, #2167: Extended `open` to arbitrary module expression in structures and to applicative paths in signatures (Runhang Li, review by Alain Frisch, Florian Angeletti, Jeremy Yallop, Leo White and Thomas Refis) * #2106: .~ is now a reserved keyword, and is no longer available for use in extended indexing operators (Jeremy Yallop, review by Gabriel Scherer, Florian Angeletti, and Damien Doligez) * #7841, #2041, #2235: allow modules from include directories to shadow other ones, even in the toplevel; for a example, including a directory that defines its own Result module will shadow the = stdlib's. (J=C3=A9r=C3=A9mie Dimino, review by Alain Frisch and David Allsopp) ### Type system: - #2110: Partial support for GADTs inside or-patterns; The type equalities introduced by the GADT constructor are only available inside the or-pattern; they cannot be used in the right-hand-side of the clause, when both sides of the or-pattern agree on it. (Thomas Refis and Leo White, review by Jacques Garrigue) - #1826: allow expanding a type to a private abbreviation instead of abstracting when removing references to an identifier. (Thomas Refis and Leo White, review by Jacques Garrigue) - #1942, #2244: simplification of the static check for recursive definitions (Alban Reynaud and Gabriel Scherer, review by Jeremy Yallop, Arma=C3=ABl Gu=C3=A9neau and Damien Doligez) ### Standard library: - #2128: Add Fun module: `id, const, flip, negate, protect` (protect is a "try_finally" combinator) https://caml.inria.fr/pub/docs/manual-ocaml/libref/Fun.html (Many fine eyes) - #2010: Add Bool module https://caml.inria.fr/pub/docs/manual-ocaml/libref/Bool.html (Many fine eyes) - #2011: Add Int module https://caml.inria.fr/pub/docs/manual-ocaml/libref/Int.html (Many fine eyes) - #1940: Add Option module and Format.pp_print_option `none, some, value, get, bind, join, map, fold, iter`, etc. https://caml.inria.fr/pub/docs/manual-ocaml/libref/Option.html (Many fine eyes) - #1956: Add Result module and Format.pp_print_result `ok, error, value, get_ok, bind, join, map, map_error`, etc. https://caml.inria.fr/pub/docs/manual-ocaml/libref/Result.html (Many fine eyes) - #1855, #2118: Add `Fun.protect ~finally` for enforcing local invariants whether a function raises or not, similar to `unwind-protect` in Lisp and `FINALLY` in Modula-2. It is careful about preserving backtraces and treating exceptions in finally as errors. (Marcello Seri and Guillaume Munch-Maccagnoni, review by Daniel B=C3=BCnzli, Gabriel Scherer, Fran=C3=A7ois Bobot, Nicol=C3=A1s Ojeda = B=C3=A4r, Xavier Clerc, Boris Yakobowski, Damien Doligez, and Xavier Leroy) * #1605: Deprecate Stdlib.Pervasives. Following #1010, Pervasives is no longer needed and Stdlib should be used instead. (J=C3=A9r=C3=A9mie Dimino, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #2185: Add `List.filter_map` (Thomas Refis, review by Alain Frisch and Gabriel Scherer) - #1957: Add Stack.{top_opt,pop_opt} and Queue.{peek_opt,take_opt}. (Vladimir Keleshev, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel = Scherer) - #1182: Add new Printf formats %#d %#Ld %#ld %#nd (idem for %i and %u) = for alternative integer formatting -- inserts '_' between blocks of = digits. (ygrek, review by Gabriel Scherer) - #1959: Add Format.dprintf, a printing function which outputs a closure usable with %t. (Gabriel Radanne, request by Arma=C3=ABl Gu=C3=A9neau, review by Florian Angeletti and Gabriel Scherer) - #1986, #6450: Add Set.disjoint (Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer) - #7812, #2125: Add Filename.chop_suffix_opt (Alain Frisch, review by Nicol=C3=A1s Ojeda B=C3=A4r, suggestion by = whitequark) - #1864: Extend Bytes and Buffer with functions to read/write binary representations of numbers (Alain Frisch and Daniel B=C3=BCnzli) - #1458: Add unsigned operations unsigned_div, unsigned_rem, = unsigned_compare and unsigned_to_int to modules Int32, Int64, Nativeint. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel B=C3=BCnzli, Alain = Frisch and Max Mouratov) - #2002: Add Format.pp_print_custom_break, a new more general kind of = break hint that can emit non-whitespace characters. (Vladimir Keleshev and Pierre Weis, review by Josh Berdine, Gabriel = Radanne) - #1966: Add Format semantic tags using extensible sum types. (Gabriel Radanne, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #1794: Add constants zero, one, minus_one and functions succ, pred, is_finite, is_infinite, is_nan, is_integer, trunc, round, next_after, sign_bit, min, max, min_max, min_num, max_num, min_max_num to module Float. (Christophe Troestler, review by Alain Frish, Xavier Clerc and Daniel = B=C3=BCnzli) - #1354, #2177: Add fma support to Float module. (Laurent Th=C3=A9venoux, review by Alain Frisch, Jacques-Henri = Jourdan, Xavier Leroy) - #5072, #6655, #1876: add aliases in Stdlib for built-in types and exceptions. (Jeremy Yallop, reports by Pierre Letouzey and David Sheets, review by Valentin Gatien-Baron, Gabriel Scherer and Alain Frisch) - #1731: Format, use raise_notrace to preserve backtraces. (Fr=C3=A9d=C3=A9ric Bour, report by Jules Villard, review by Gabriel = Scherer) - #6701, #1185, #1803: make float_of_string and string_of_float locale-independent. (ygrek, review by Xavier Leroy and Damien Doligez) - #7795, #1782: Fix off-by-one error in Weak.create. (KC Sivaramakrishnan, review by Gabriel Scherer and Fran=C3=A7ois = Bobot) - #7235: Format, flush err_formatter at exit. (Pierre Weis, request by Jun Furuse) - #1857, #7812: Remove Sort module, deprecated since 2000 and emitting a deprecation warning since 4.02. (whitequark) - #1923: Arg module sometimes misbehaved instead of rejecting invalid -keyword=3Darg inputs (Valentin Gatien-Baron, review by Gabriel Scherer) - #1959: Small simplification and optimization to Format.ifprintf (Gabriel Radanne, review by Gabriel Scherer) - #2119: clarify the documentation of Set.diff (Gabriel Scherer, suggestion by John Skaller) - #2145: Deprecate the mutability of Gc.control record fields (Damien Doligez, review by Alain Frisch) - #2159, #7874: annotate {String,Bytes}.equal as being [@@noalloc]. (Pierre-Marie P=C3=A9drot, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #1936: Add module Float.Array (Damien Doligez, review by Xavier Clerc and Alain Frisch) - #2183: Fix segfault in Array.create_float with -no-flat-float-array (Damien Doligez, review by Gabriel Scherer and Jeremy Yallop) - #1525: Make function set_max_indent respect documentation (Pierre Weis, Richard Bonichon, review by Florian Angeletti) - #2202: Correct Hashtbl.MakeSeeded.{add_seq,replace_seq,of_seq} to use functor hash function instead of default hash function. = Hashtbl.Make.of_seq shouldn't create randomized hash tables. (David Allsopp, review by Alain Frisch) ### Other libraries: - #2533, #1839, #1949: added Unix.fsync (Francois Berenger, Nicol=C3=A1s Ojeda B=C3=A4r, review by Daniel = B=C3=BCnzli, David Allsopp and ygrek) - #1792, #7794: Add Unix.open_process_args{,_in,_out,_full} similar to Unix.open_process{,_in,_out,_full}, but passing an explicit argv = array. (Nicol=C3=A1s Ojeda B=C3=A4r, review by J=C3=A9r=C3=A9mie Dimino, = request by Volker Diels-Grabsch) - #1999: Add Unix.process{,_in,_out,_full}_pid to retrieve opened = process's pid. (Romain Beauxis, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #2222: Set default status in waitpid when pid is zero. Otherwise, status value is undefined. (Romain Beauxis and Xavier Leroy, review by Stephen Dolan) * #2104, #2211, #4127, #7709: Fix Thread.sigmask. When system threads are loaded, Unix.sigprocmask is now an alias for Thread.sigmask. This changes the behavior at least on MacOS, where Unix.sigprocmask used to change the masks of all threads. (Jacques-Henri Jourdan, review by J=C3=A9r=C3=A9mie Dimino) - #1061: Add ?follow parameter to Unix.link. This allows hardlinking symlinks. (Christopher Zimmermann, review by Xavier Leroy, Damien Doligez, David Allsopp, David Sheets) - #2038: Deprecate vm threads. OCaml supported both "native threads", based on pthreads, and its own green-threads implementation, "vm threads". We are not aware of any recent usage of "vm threads", and removing them = simplifies further maintenance. (J=C3=A9r=C3=A9mie Dimino) * #4208, #4229, #4839, #6462, #6957, #6950, #1063, #2176, #2297: Make (nat)dynlink sound by correctly failing when dynlinked module names clash with other modules or interfaces. (Mark Shinwell, Leo White, Nicol=C3=A1s Ojeda B=C3=A4r, Pierre = Chambart) - #2263: Delete the deprecated Bigarray.*.map_file functions in favour of `*_of_genarray (Unix.map_file ...)` functions instead. The `Unix.map_file` function was introduced in OCaml 4.06.0 onwards. (J=C3=A9r=C3=A9mie Dimino, reviewed by David Allsopp and Anil = Madhavapeddy) ### Compiler user-interface and warnings: - #2096: Add source highlighting for errors & warnings in batch mode (Arma=C3=ABl Gu=C3=A9neau, review by Gabriel Scherer and J=C3=A9r=C3=A9m= ie Dimino) - #2133: [@ocaml.warn_on_literal_pattern]: now warn on literal patterns found anywhere in a constructor's arguments. (Jeremy Yallop, review by Gabriel Scherer) - #1720: Improve error reporting for missing 'rec' in let-bindings. (Arthur Chargu=C3=A9raud and Arma=C3=ABl Gu=C3=A9neau, with help and = advice from Gabriel Scherer, Fr=C3=A9d=C3=A9ric Bour, Xavier Clerc and Leo = White) - #7116, #1430: new -config-var option to get the value of a single configuration variable in scripts. (Gabriel Scherer, review by S=C3=A9bastien Hinderer and David Allsopp, request by Adrien Nader) - #1733,1993,1998,2058,2094,2140: Typing error message improvements - #1733, change the perspective of the unexpected existential error message. - #1993, expanded error messages for universal quantification = failure - #1998, more context for unbound type parameter error - #2058, full explanation for unsafe cycles in recursive module definitions (suggestion by Ivan Gotovchits) - #2094, rewording for "constructor has no type" error - #7565, #2140, more context for universal variable escape in method type (Florian Angeletti, reviews by Jacques Garrique, Arma=C3=ABl Gu=C3=A9nea= u, Gabriel Radanne, Gabriel Scherer and Jeremy Yallop) - #1913: new flag -dump-into-file to print debug output like -dlambda = into a file named after the file being built, instead of on stderr. (Valentin Gatien-Baron, review by Thomas Refis) - #1921: in the compilation context passed to ppx extensions, add more configuration options related to type-checking: -rectypes, -principal, -alias-deps, -unboxed-types, -unsafe-string (Gabriel Scherer, review by Gabriel Radanne, Xavier Clerc and = Fr=C3=A9d=C3=A9ric Bour) - #1976: Better error messages for extension constructor type mismatches (Thomas Refis, review by Gabriel Scherer) - #1841, #7808: the environment variable OCAMLTOP_INCLUDE_PATH can now specify a list of additional include directories for the ocaml = toplevel. (Nicol=C3=A1s Ojeda B=C3=A4r, request by Daniel B=C3=BCnzli, review by = Daniel B=C3=BCnzli and Damien Doligez) - #6638, #1110: introduced a dedicated warning to report unused "open!" statements (Alain Frisch, report by dwang, review by and design from Leo White) - #1974: Trigger warning 5 in "let _ =3D e" and "ignore e" if e is of = function type and syntactically an application. (For the case of "ignore e" the = warning already existed, but used to be triggered even when e was not an = application.) (Nicol=C3=A1s Ojeda B=C3=A4r, review by Alain Frisch and Jacques = Garrigue) - #7408, #7846, #2015: Check arity of primitives. (Hugo Heuzard, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #2091: Add a warning triggered by type declarations "type t =3D ()" (Arma=C3=ABl Gu=C3=A9neau, report by linse, review by Florian = Angeletti and Gabriel Scherer) - #2004: Use common standard library path `lib/ocaml` for Windows, for consistency with OSX & Linux. Previously was located at `lib`. (Bryan Phelps, Jordan Walke, review by David Allsopp) - #6416, #1120: unique printed names for identifiers (Florian Angeletti, review by Jacques Garrigue) - #1691: add shared_libraries to ocamlc -config exporting SUPPORTS_SHARED_LIBRARIES from Makefile.config. (David Allsopp, review by Gabriel Scherer and Mark Shinwell) - #6913, #1786: new -match-context-rows option to control the degree of optimization in the pattern matching = compiler. (Dwight Guth, review by Gabriel Scherer and Luc Maranget) - #1822: keep attributes attached to pattern variables from being = discarded. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Thomas Refis) - #1845: new `-dcamlprimc` option to keep the generated C file = containing the information about primitives; pass `-fdebug-prefix-map` to the C = compiler when supported, for reproducible builds (Xavier Clerc, review by J=C3=A9r=C3=A9mie Dimino) - #1856, #1869: use `BUILD_PATH_PREFIX_MAP` when compiling primitives in order to make builds reproducible if code contains uses of `__FILE__` or `__LOC__` (Xavier Clerc, review by Gabriel Scherer and S=C3=A9bastien Hinderer) - #1906: the -unsafe option does not apply to marshalled ASTs passed to the compiler directly or by a -pp preprocessor; add a proper warning (64) instead of a simple stderr message (Valentin Gatien-Baron) - #1925: Print error locations more consistently between batch mode, = toplevel and expect tests (Arma=C3=ABl Gu=C3=A9neau, review by Thomas Refis, Gabriel Scherer and = Fran=C3=A7ois Bobot) - #1930: pass the elements from `BUILD_PATH_PREFIX_MAP` to the assembler (Xavier Clerc, review by Gabriel Scherer, S=C3=A9bastien Hinderer, and Xavier Leroy) - #1945, #2032: new "-stop-after [parsing|typing]" option to stop compilation after the parsing or typing pass (Gabriel Scherer, review by J=C3=A9r=C3=A9mie Dimino) - #1953: Add locations to attributes in the parsetree. (Hugo Heuzard, review by Gabriel Radanne) - #1954: Add locations to toplevel directives. (Hugo Heuzard, review by Gabriel Radanne) * #1979: Remove support for TERM=3Dnorepeat when displaying errors (Arma=C3=ABl Gu=C3=A9neau, review by Gabriel Scherer and Florian = Angeletti) - #1960: The parser keeps previous location when relocating ast node. (Hugo Heuzard, review by J=C3=A9r=C3=A9mie Dimino) - #7864, #2109: remove duplicates from spelling suggestions. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Arma=C3=ABl Gu=C3=A9neau) ### Manual and documentation: - #7548: printf example in the tutorial part of the manual (Kostikova Oxana, rewiew by Gabriel Scherer, Florian Angeletti, Marcello Seri and Arma=C3=ABl Gu=C3=A9neau) - #7546, #2020: preambles and introduction for compiler-libs. (Florian Angeletti, review by Daniel B=C3=BCnzli, Perry E. Metzger and Gabriel Scherer) - #7547, #2273: Tutorial on Lazy expressions and patterns in OCaml = Manual (Ulugbek Abdullaev, review by Florian Angeletti and Gabriel Scherer) - #7720, #1596, precise the documentation of the maximum indentation limit in Format. (Florian Angeletti, review by Richard Bonichon and Pierre Weis) - #7825: html manual split compilerlibs from stdlib in the html index of modules (Florian Angeletti, review by Perry E. Metzger and Gabriel Scherer) - #1209, #2008: in the Extension section, use the caml_example = environment (uses the compiler to check the example code). This change was made possible by a lot of tooling work from Florian = Angeletti: #1702, #1765, #1863, and Gabriel Scherer's #1903. (Gabriel Scherer, review by Florian Angeletti) - #1788, 1831, 2007, 2198, 2232, move language extensions to the core chapters: - #1788: quoted string description - #1831: local exceptions and exception cases - #2007: 32-bit, 64-bit and native integer literals - #2198: lazy patterns - #2232: short object copy notation (Florian Angeletti, review by Xavier Clerc, Perry E. Metzger, Gabriel = Scherer and Jeremy Yallop) - #1863: caml-tex2, move to compiler-libs (Florian Angeletti, review by S=C3=A9bastien Hinderer and Gabriel = Scherer) - #2105: Change verbatim to caml_example in documentation (Maxime Flin, review by Florian Angeletti) - #2114: ocamldoc, improved manpages for documentation inside modules (Florian Angeletti, review by Gabriel Scherer) - #2117: stdlib documentation, duplicate the operator precedence table from the manual inside a separate "OCaml_operators" module. (Florian Angeletti, review by Daniel B=C3=BCnzli, Perry E. Metzger and Gabriel Scherer) - #2187: document "exception A | pat" patterns (Florian Angeletti, review by Perry E. Metzger and Jeremy Yallop) - #8508: refresh \moduleref macro (Florian Angeletti, review by Gabriel Scherer) ### Code generation and optimizations: - #7725, #1754: improve AFL instrumentation for objects and lazy values. (Stephen Dolan) - #1631: AMD64 code generator: emit shorter instruction sequences for = the sign-extension operations. (LemonBoy, review by Alain Frisch and Xavier Leroy) - #7246, #2146: make a few int64 primitives use [@@unboxed] stubs on 32bits (J=C3=A9r=C3=A9mie Dimino) - #1917: comballoc: ensure object allocation order is preserved (Stephen Dolan) - #6242, #2143, #8558, #8559: Optimize some local functions. Local functions that do not escape and whose calls all have the same continuation are lowered into a static-catch handler. (Alain Frisch, review by Gabriel Scherer) - #2082: New options [-insn-sched] and [-no-insn-sched] to control instruction scheduling. (Mark Shinwell, review by Damien Doligez) - #2239: Fix match miscompilation with flambda (Leo White, review by Alain Frisch) ### Runtime system: - #7198, #7750, #1738: add a function (caml_alloc_custom_mem) and three GC parameters to give the user better control of the out-of-heap memory retained by custom values; use the function to allocate bigarrays and I/O channels. (Damien Doligez, review by Alain Frisch) - #1793: add the -m and -M command-line options to ocamlrun. Option -m prints the magic number of the bytecode executable passed as argument, -M prints the magic number expected by ocamlrun. (S=C3=A9bastien Hinderer, review by Xavier Clerc and Damien Doligez) - #1867: Remove the C plugins mechanism. (Xavier Leroy, review by David Allsopp, Damien Doligez, S=C3=A9bastien = Hinderer) - #8627: Require SSE2 for 32-bit mingw port to generate correct code for caml_round with GCC 7.4. (David Allsopp, review by Xavier Leroy) - #7676, #2144: Remove old GC heuristic (Damien Doligez, report and review by Alain Frisch) - #1723: Remove internal Meta.static_{alloc,free} primitives. (Stephen Dolan, review by Gabriel Scherer) - #1895: Printexc.get_callstack would return only one frame in native code in threads other then the initial one (Valentin Gatien-Baron, review by Xavier Leroy) - #1900, #7814: avoid exporting non-prefixed identifiers in the debug and instrumented runtimes. (Damien Doligez, report by Gabriel Scherer) - #2079: Avoid page table lookup in Pervasives.compare with no-naked-pointers (Sam Goldman, review by Gabriel Scherer, David Allsopp, Stephen Dolan) - #7829, #8585: Fix pointer comparisons in freelist.c (for 32-bit = platforms) (David Allsopp and Damien Doligez) - #8567, #8569: on ARM64, use 32-bit loads to access = caml_backtrace_active (Xavier Leroy, review by Mark Shinwell and Greta Yorsh) - #8568: Fix a memory leak in mmapped bigarrays (Damien Doligez, review by Xavier Leroy and J=C3=A9r=C3=A9mie Dimino) ### Tools - #2182: Split Emacs caml-mode as an independent project. (Christophe Troestler, review by Gabriel Scherer) - #1865: support dark themes in Emacs, and clean up usage of deprecated Emacs APIs (Wilfred Hughes, review by Cl=C3=A9ment Pit-Claudel) - #1590: ocamllex-generated lexers can be instructed not to update their lex_curr_p/lex_start_p fields, resulting in a significant performance gain when those fields are not required. (Alain Frisch, review by J=C3=A9r=C3=A9mie Dimino) - #7843, #2013: ocamldoc, better handling of {{!label}text} in the latex backend. (Florian Angeletti, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel = Scherer) - #7844, #2040: Emacs, use built-in detection of comments, fixes an imenu crash. (Wilfred Hughes, review by Christophe Troestler) - #7850: Emacs, use symbol boundaries in regular expressions, fixes an imenu crash. (Wilfred Hughes, review by Christophe Troestler) - #1711: the new 'open' flag in OCAMLRUNPARAM takes a comma-separated = list of modules to open as if they had been passed via the command line -open = flag. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Mark Shinwell) - #2000: ocamdoc, extended support for "include module type of ..." (Florian Angeletti, review by J=C3=A9r=C3=A9mie Dimino) - #2045: ocamlmklib now supports options -args and -args0 to provide = extra command-line arguments in a file. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer and Daniel = B=C3=BCnzli) - #2189: change ocamldep Makefile-output to print each dependency on a new line, for more readable diffs of versioned dependencies. (Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #2223: ocamltest: fix the "bsd" and "not-bsd" built-in actions to recognize all BSD variants (Damien Doligez, review by S=C3=A9bastien Hinderer and David Allsopp) ### Compiler distribution build system: - #1776: add -no-install-bytecode-programs and related configure options = to control (non-)installation of ".byte" executables. (Mark Shinwell, review by S=C3=A9bastien Hinderer and Gabriel Scherer) - #1777: add -no-install-source-artifacts and related configure options = to control installation of .cmt, .cmti, .mli and .ml files. (Mark Shinwell, review by Nicol=C3=A1s Ojeda B=C3=A4r and S=C3=A9bastien= Hinderer) - #1781: cleanup of the manual's build process. (steinuil, review by Marcello Seri, Gabriel Scherer and Florian = Angeletti) - #1797: remove the deprecated Makefile.nt files. (S=C3=A9bastien Hinderer, review by Nicolas Ojeda Bar) - #1805: fix the bootstrap procedure and its documentation. (S=C3=A9bastien Hinderer, Xavier Leroy and Damien Doligez; review by Gabriel Scherer) - #1840: build system enhancements. (S=C3=A9bastien Hinderer, review by David Allsopp, Xavier Leroy and Damien Doligez) - #1852: merge runtime directories (S=C3=A9bastien Hinderer, review by Xavier Leroy and Damien Doligez) - #1854: remove the no longer defined BYTECCCOMPOPTS build variable. (S=C3=A9bastien Hinderer, review by Damien Doligez) - #2024: stop supporting obsolete platforms: Rhapsody (old beta version of MacOS X, BeOS, alpha*-*-linux*, mips-*-irix6*, alpha*-*-unicos, powerpc-*-aix, *-*-solaris2*, mips*-*-irix[56]*, i[3456]86-*-darwin[89].*, i[3456]86-*-solaris*, *-*-sunos* *-*-unicos. (S=C3=A9bastien Hinderer, review by Xavier Leroy, Damien Doligez, = Gabriel Scherer and Arma=C3=ABl Gu=C3=A9neau) - #2053: allow unix, vmthreads and str not to be built. (David Allsopp, review by S=C3=A9bastien Hinderer) * #2059: stop defining OCAML_STDLIB_DIR in s.h. (S=C3=A9bastien Hinderer, review by David Allsopp and Damien Doligez) * #2066: remove the standard_runtime configuration variable. (S=C3=A9bastien Hinderer, review by Xavier Leroy, Stephen Dolan and Damien Doligez) * #2139: use autoconf to generate the compiler's configuration script (S=C3=A9bastien Hinderer, review by Damien Doligez and David Allsopp) - #2148: fix a parallel build bug involving CamlinternalLazy. (Stephen Dolan, review by Gabriel Scherer and Nicolas Ojeda Bar) - #2264, #7904: the configure script now sets the Unicode handling mode under Windows according to the value of the variable = WINDOWS_UNICODE_MODE. If WINDOWS_UNICODE_MODE is "ansi" then it is assumed to be the current = code page encoding. If WINDOWS_UNICODE_MODE is "compatible" or empty or not set = at all, then encoding is UTF-8 with code page fallback. (Nicol=C3=A1s Ojeda B=C3=A4r, review by S=C3=A9bastien Hinderer and = David Allsopp) - #2266: ensure Cygwin ports configure with `EXE=3D.exe`, or the = compiler is unable to find the camlheader files (subtle regression of #2139/2041) (David Allsopp, report and review by S=C3=A9bastien Hinderer) - #7919, #2311: Fix assembler detection in configure (S=C3=A9bastien Hinderer, review by David Allsopp) - #2295: Restore support for bytecode target XLC/AIX/Power (Konstantin Romanov, review by S=C3=A9bastien Hinderer and David = Allsopp) - #8528: get rid of the direct call to the C preprocessor in the = testsuite (S=C3=A9bastien Hinderer, review by David Allsopp) - #7938, #8532: Fix alignment detection for ints on 32-bits platforms (S=C3=A9bastien Hinderer, review by Xavier Leroy) * #8533: Remove some unused configure tests (Stephen Dolan, review by David Allsopp and S=C3=A9bastien Hinderer) - #2207, #8604: Add opam files to allow pinning (Leo White, Greta Yorsh, review by Gabriel Radanne) - #8616: configure: use variables rather than arguments for a few = options (S=C3=A9bastien Hinderer, review by David Allsopp, Gabriel Scherer and Damien Doligez) - #8632: Correctly propagate flags for --with-pic in configure. (David Allsopp, review by S=C3=A9bastien Hinderer and Damien Doligez) - #8673: restore SpaceTime and libunwind support in configure script (S=C3=A9bastien Hinderer, review by Damien Doligez) ### Internal/compiler-libs changes: - #7918, #1703, #1944, #2213, #2257: Add the module Compile_common, which factorizes the common part in Compile and Optcompile. This also makes the pipeline more modular. (Gabriel Radanne, help from Gabriel Scherer and Valentin Gatien-Baron, review by Mark Shinwell and Gabriel Radanne, regression spotted by Cl=C3=A9ment Franchini) - #292: use Menhir as the parser generator for the OCaml parser. Satellite GPRs: #1844, #1846, #1853, #1850, #1934, #2151, #2174 (Gabriel Scherer, Nicol=C3=A1s Ojeda B=C3=A4r, Fr=C3=A9d=C3=A9ric = Bour, Thomas Refis and Fran=C3=A7ois Pottier, review by Nicol=C3=A1s Ojeda B=C3=A4r, Leo White and David Allsopp) - #374: use Misc.try_finally for resource cleanup in the compiler codebase. This should fix the problem of catch-and-reraise `try .. = with` blocks destroying backtrace information -- in the compiler. (Fran=C3=A7ois Bobot, help from Gabriel Scherer and Nicol=C3=A1s Ojeda = B=C3=A4r, review by Gabriel Scherer) - #1148, #1287, #1288, #1874: significant improvements of the tools/check-typo script used over the files of the whole = repository; contributors are now expected to check that check-typo passes on their pull requests; see CONTRIBUTING.md for more details. (David Allsopp, review by Damien Doligez and S=C3=A9bastien Hinderer) - #1610, #2252: Remove positions from paths (Leo White, review by Fr=C3=A9d=C3=A9ric Bour and Thomas Refis) - #1745: do not generalize the type of every sub-pattern, only of variables. (preliminary work for GADTs in or-patterns) (Thomas Refis, review by Leo White) - #1909: unsharing pattern types (preliminary work for GADTs in = or-patterns) (Thomas Refis, with help from Leo White, review by Jacques Garrigue) - #1748: do not error when instantiating polymorphic fields in patterns. (Thomas Refis, review by Gabriel Scherer) - #2317: type_let: be more careful generalizing parts of the pattern (Thomas Refis and Leo White, review by Jacques Garrigue) - #1746: remove unreachable error variant: Make_seltype_nongen. (Florian Angeletti, review by Gabriel Radanne) - #1747: type_cases: always propagate (preliminary work for GADTs in or-patterns) (Thomas Refis, review by Jacques Garrigue) - #1811: shadow the polymorphic comparison in the middle-end (Xavier Clerc, review by Pierre Chambart) - #1833: allow non-val payloads in CMM Ccatch handlers (Simon Fowler, review by Xavier Clerc) - #1866: document the release process (Damien Doligez and Gabriel Scherer, review by S=C3=A9bastien = Hinderer, Perry E. Metzger, Xavier Leroy and David Allsopp) - #1886: move the Location.absname reference to Clflags.absname (Arma=C3=ABl Gu=C3=A9neau, review by J=C3=A9r=C3=A9mie Dimino) - #1894: generalize highlight_dumb in location.ml to handle highlighting several locations (Arma=C3=ABl Gu=C3=A9neau, review by Gabriel Scherer) - #1903: parsetree, add locations to all nodes with attributes (Gabriel Scherer, review by Thomas Refis) - #1905: add check-typo-since to check the files changed since a given git reference (Gabriel Scherer, review by David Allsopp) - #1910: improve the check-typo use of .gitattributes (Gabriel Scherer, review by David Allsopp and Damien Doligez) - #1938: always check ast invariants after preprocessing (Florian Angeletti, review by Alain Frisch and Gabriel Scherer) - #1941: refactor the command line parsing of ocamlcp and ocamloptp (Valentin Gatien-Baron, review by Florian Angeletti) - #1948: Refactor Stdlib.Format. Notably, use Stdlib.Stack and = Stdlib.Queue, and avoid exceptions for control flow. (Vladimir Keleshev, review by Nicol=C3=A1s Ojeda B=C3=A4r and Gabriel = Scherer) * #1952: refactor the code responsible for displaying errors and = warnings `Location.report_error` is removed, use `Location.print_report` = instead (Arma=C3=ABl Gu=C3=A9neau, review by Thomas Refis) - #7835, #1980, #8548, #8586: separate scope from stamp in idents and = explicitly rescope idents when substituting signatures. (Thomas Refis, review by Jacques Garrigue and Leo White) - #1996: expose Pprintast.longident to help compiler-libs users print Longident.t values. (Gabriel Scherer, review by Florian Angeletti and Thomas Refis) - #2030: makefile targets to build AST files of sources for parser testing. See parsing/HACKING.adoc. (Gabriel Scherer, review by Nicol=C3=A1s Ojeda B=C3=A4r) * #2041: add a cache for looking up files in the load path (J=C3=A9r=C3=A9mie Dimino, review by Alain Frisch and David Allsopp) - #2047, #2269: a new type for unification traces (Florian Angeletti, report by Leo White (#2269), review by Thomas Refis and Gabriel Scherer) - #2055: Add [Linearize.Lprologue]. (Mark Shinwell, review by Pierre Chambart) - #2056: Use [Backend_var] rather than [Ident] from [Clambda] onwards; use [Backend_var.With_provenance] for variables in binding position. (Mark Shinwell, review by Pierre Chambart) - #2060: "Phantom let" support for the Clambda language. (Mark Shinwell, review by Vincent Laviron) - #2065: Add [Proc.destroyed_at_reloadretaddr]. (Mark Shinwell, review by Damien Doligez) - #2070: "Phantom let" support for the Cmm language. (Mark Shinwell, review by Vincent Laviron) - #2072: Always associate a scope to a type (Thomas Refis, review by Jacques Garrigue and Leo White) - #2074: Correct naming of record field inside [Ialloc] terms. (Mark Shinwell, review by J=C3=A9r=C3=A9mie Dimino) - #2076: Add [Targetint.print]. (Mark Shinwell) - #2080: Add [Proc.dwarf_register_numbers] and [Proc.stack_ptr_dwarf_register_number]. (Mark Shinwell, review by Bernhard Schommer) - #2088: Add [Clambda.usymbol_provenance]. (Mark Shinwell, review by Damien Doligez) - #2152, #2517: refactorize the fixpoint to compute type-system properties of mutually-recursive type declarations. (Gabriel Scherer and Rodolphe Lepigre, review by Arma=C3=ABl Gu=C3=A9nea= u) - #2156: propagate more type information through Lambda and Clambda intermediate language, as a preparation step for more future = optimizations (Pierre Chambart and Alain Frisch, cross-reviewed by themselves) - #2160: restore --disable-shared support and ensure testsuite runs = correctly when compiled without shared library support. (David Allsopp, review by Damien Doligez and S=C3=A9bastien Hinderer) * #2173: removed TypedtreeMap (Thomas Refis, review by Gabriel Scherer) - #7867: Fix #mod_use raising an exception for filenames with no extension. (Geoff Gole) - #2100: Fix Unix.getaddrinfo when called on strings containing null bytes; it would crash the GC later on. (Arma=C3=ABl Gu=C3=A9neau, report and fix by Joe, review by S=C3=A9basti= en Hinderer) - #7847, #2019: Fix an infinite loop that could occur when the (Menhir-generated) parser encountered a syntax error in a certain specific state. (Fran=C3=A7ois Pottier, report by Stefan Muenzel, review by Fr=C3=A9d=C3=A9ric Bour, Thomas Refis, Gabriel Scherer) - #1626: Do not allow recursive modules in `with module` (Leo White, review by Gabriel Radanne) - #7726, #1676: Recursive modules, equi-recursive types and stack = overflow (Jacques Garrigue, report by Jeremy Yallop, review by Leo White) - #7723, #1698: Ensure `with module` and `with type` do not weaken module aliases. (Leo White, review by Gabriel Radanne and Jacques Garrigue) - #1719: fix Pervasives.LargeFile functions under Windows. (Alain Frisch) - #1739: ensure ocamltest waits for child processes to terminate on = Windows. (David Allsopp, review by S=C3=A9bastien Hinderer) - #7554, #1751: Lambda.subst: also update debug event environments (Thomas Refis, review by Gabriel Scherer) - #7238, #1825: in Unix.in_channel_of_descr and = Unix.out_channel_of_descr, raise an error if the given file description is not suitable for character-oriented I/O, for example if it is a block device or a datagram socket. (Xavier Leroy, review by J=C3=A9r=C3=A9mie Dimino and Perry E. = Metzger) - #7799, #1820: fix bug where Scanf.format_from_string could fail when the argument string contained characters that require escaping. (Gabriel Scherer and Nicol=C3=A1s Ojeda B=C3=A4r, report by Guillaume = Melquiond, review by Gabriel Scherer) - #1843: ocamloptp was doing the wrong thing with option = -inline-max-unroll. (Github user @poechsel, review by Nicol=C3=A1s Ojeda B=C3=A4r). - #1890: remove last use of Ctype.unroll_abbrev (Thomas Refis, report by Leo White, review by Jacques Garrigue) - #1893: dev-branch only, warning 40(name not in scope) triggered = spurious warnings 49(missing cmi) with -no-alias-deps. (Florian Angeletti, report by Valentin Gatien-Baron, review by Gabriel Scherer) - #1912: Allow quoted strings, octal/unicode escape sequences and = identifiers containing apostrophes in ocamllex actions and comments. (Pieter Goetschalckx, review by Damien Doligez) - #7828, #1935: correct the conditions that generate warning 61, Unboxable_type_in_prim_decl (Stefan Muenzel) - #1958: allow [module M(_:S) =3D struct end] syntax (Hugo Heuzard, review by Gabriel Scherer) - #1970: fix order of floatting documentation comments in classes (Hugo Heuzard, review by Nicol=C3=A1s Ojeda B=C3=A4r) - #1977: [@@ocaml.warning "..."] attributes attached to type = declarations are no longer ignored. (Nicol=C3=A1s Ojeda B=C3=A4r, review by Gabriel Scherer) - #7830, #1987: fix ocamldebug crash when printing a value in the scope = of an `open` statement for which the `.cmi` is not available. (Nicol=C3=A1s Ojeda B=C3=A4r, report by Jocelyn S=C3=A9rot, review by = Gabriel Scherer) - #7854, #2062: fix an issue where the wrong locale may be used when = using the legacy ANSI encoding under Windows. (Nicol=C3=A1s Ojeda B=C3=A4r, report by Tiphaine Turpin) - #2083: Fix excessively aggressive float unboxing and introduce similar = fix as a preventative measure for boxed int unboxing. (Thomas Refis, Mark Shinwell, Leo White) - #2130: fix printing of type variables with a quote in their name (Alain Frisch, review by Arma=C3=ABl Gu=C3=A9neau and Gabriel Scherer, report by Hugo Heuzard) - #2131: fix wrong calls to Env.normalize_path on non-module paths (Alain Frisch, review by Jacques Garrigue) - #2175: Apply substitution to all modules when packing (Leo White, review by Gabriel Scherer) - #2220: Remove duplicate process management code in otherlibs/threads/unix.ml (Romain Beauxis, review by Gabriel Scherer and Alain Frisch) - #2231: Env: always freshen persistent signatures before using them (Thomas Refis and Leo White, review by Gabriel Radanne) - #7851, #8570: Module type of allows to transform a malformed module type into a vicious signature, breaking soundness (Jacques Garrigue, review by Leo White) - #7923, #2259: fix regression in FlexDLL bootstrapped build caused by refactoring the root Makefile for Dune in #2093) (David Allsopp, report by Marc Lasson) - #7929, #2261: Subst.signature: call cleanup_types exactly once (Thomas Refis, review by Gabriel Scherer and Jacques Garrigue, report by Daniel B=C3=BCnzli and Jon Ludlam) - #8550, #8552: Soundness issue with class generalization (Jacques Garrigue, review by Leo White and Thomas Refis, report by Jeremy Yallop)