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 C5E167F75C for ; Fri, 29 Aug 2014 17:57:40 +0200 (CEST) X-IronPort-AV: E=Sophos;i="5.04,425,1406584800"; d="scan'208";a="92100864" Received: from ec-ap-2-13-07.rocq.inria.fr (HELO [192.168.1.3]) ([128.93.40.21]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/AES128-SHA; 29 Aug 2014 17:57:40 +0200 From: Damien Doligez Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Fri, 29 Aug 2014 17:57:40 +0200 Message-Id: To: caml users , caml announce Mime-Version: 1.0 (Apple Message framework v1283) X-Mailer: Apple Mail (2.1283) Subject: [Caml-list] OCaml 4.02.0 Dear OCaml users, We have the pleasure of celebrating the anniversary of the last concert of the Beatles by announcing the release of OCaml version 4.02.0. It is available here: < http://caml.inria.fr/download.en.html > Starting with this release, we stop providing binary packages on Unix-like machines (Linux, MacOS). You are invited to go to http://ocaml.org and use the OPAM package manager for all your installation needs. Many thanks to the packagers who contribute to the OPAM repository. Many thanks also to everyone who reported bugs and proposed new features through the BTS and GitHub. Happy hacking, -- Damien Doligez for the OCaml team. OCaml 4.02.0: ------------- (Changes that can break existing programs are marked with a "*") Language features: - Attributes and extension nodes (Alain Frisch) - Generative functors (PR#5905) (Jacques Garrigue) - Module aliases (Jacques Garrigue) * Alternative syntax for string literals {id|...|id} (can break comments) (Alain Frisch) - Separation between read-only strings (type string) and read-write byte sequences (type bytes). Activated by command-line option -safe-string. (Damien Doligez) - PR#6318: Exception cases in pattern matching (Jeremy Yallop, backend by Alain Frisch) - PR#5584: Extensible open datatypes (Leo White) Build system for the OCaml distribution: - Use -bin-annot when building. - Use GNU make instead of portable makefiles. - Updated build instructions for 32-bit Mac OS X on Intel hardware. Shedding weight: * Removed Camlp4 from the distribution, now available as third-party softwa= re. * Removed Labltk from the distribution, now available as a third-party libr= ary. Type system: * PR#6235: Keep typing of pattern cases independent in principal mode (i.e. information from previous cases is no longer used when typing patterns; cf. 'PR#6235' in testsuite/test/typing-warnings/records.ml) (Jacques Garrigue) - Allow opening a first-class module or applying a generative functor in the body of a generative functor. Allow it also in the body of an applicative functor if no types are created (Jacques Garrigue, suggestion by Leo White) * Module aliases are now typed in a specific way, which remembers their identity. In particular this changes the signature inferred by "module type of" (Jacques Garrigue, feedback from Leo White, Mark Shinwell and Nick Chapma= n) - PR#6331: Slight change in the criterion to distinguish private abbreviations and private row types: create a private abbreviation for closed objects and fixed polymorphic variants. (Jacques Garrigue) * PR#6333: Compare first class module types structurally rather than nominally. Value subtyping allows module subtyping as long as the internal representation is unchanged. (Jacques Garrigue) Compilers: - More aggressive constant propagation, including float and int32/int64/nativeint arithmetic. Constant propagation for floats can be turned off with option -no-float-const-prop, for codes that change FP rounding modes at run-time. (Xavier Leroy) - New back-end optimization pass: common subexpression elimination (CSE). (Reuses results of previous computations instead of recomputing them.) (Xavier Leroy) - New back-end optimization pass: dead code elimination. (Removes arithmetic and load instructions whose results are unused.) (Xavier Leroy) - PR#6269: Optimization of sequences of string patterns (Beno=EEt Vaugon and Luc Maranget) - Experimental native code generator for AArch64 (ARM 64 bits) (Xavier Leroy) - PR#6042: Optimization of integer division and modulus by constant divisors (Xavier Leroy and Phil Denys) - Add "-open" command line flag for opening a single module before typing (Leo White, Mark Shinwell and Nick Chapman) * "-o" now sets module name to the output file name up to the first "." (it also applies when "-o" is not given, i.e. the module name is then the input file name up to the first ".") (Leo White, Mark Shinwell and Nick Chapman) * PR#5779: better sharing of structured constants (Alain Frisch) - PR#5817: new flag to keep locations in cmi files (Alain Frisch) - PR#5854: issue warning 3 when referring to a value marked with the [@@ocaml.deprecated] attribute (Alain Frisch, suggestion by Pierre-Marie P=E9drot) - PR#6017: a new format implementation based on GADTs (Beno=EEt Vaugon and Gabriel Scherer) * PR#6203: Constant exception constructors no longer allocate (Alain Frisch) - PR#6260: avoid unnecessary boxing in let (Vladimir Brankov) - PR#6345: Better compilation of optional arguments with default values (Alain Frisch, review by Jacques Garrigue) - PR#6389: ocamlopt -opaque option for incremental native compilation (Pierre Chambart, Gabriel Scherer) Toplevel interactive system: - PR#5377: New "#show_*" directives (ygrek, Jacques Garrigue and Alain Frisch) Runtime system: - New configure option "-no-naked-pointers" to improve performance by avoiding page table tests during block darkening and the marking phase of the major GC. In this mode, all out-of-heap pointers must point at things that look like OCaml values: in particular they must have a valid header. The colour of said headers should be black. (Mark Shinwell, reviews by Damien Doligez and Xavier Leroy) - Fixed bug in native code version of [caml_raise_with_string] that could potentially lead to heap corruption. (Mark Shinwell) - Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with [Val_unit] rather than zero. (Mark Shinwell) - Fixed a major performance problem on large heaps (~1GB) by making heap increments proportional to heap size by default (Damien Doligez) - PR#4765: Structural equality treats exception specifically (Alain Frisch) - PR#5009: efficient comparison/indexing of exceptions (Alain Frisch, request by Markus Mottl) - PR#6075: avoid using unsafe C library functions (strcpy, strcat, sprintf) (Xavier Leroy, reports from user 'jfc' and Anil Madhavapeddy) - An ISO C99-compliant C compiler and standard library is now assumed. (Plus special exceptions for MSVC.) In particular, emulation code for 64-bit integer arithmetic was removed, the C compiler must support a 64-bit integer type. (Xavier Leroy) Standard library: * Add new modules Bytes and BytesLabels for mutable byte sequences. (Damien Doligez) - PR#4986: add List.sort_uniq and Set.of_list (Alain Frisch) - PR#5935: a faster version of "raise" which does not maintain the backtrace (Alain Frisch) - PR#6146: support "Unix.kill pid Sys.sigkill" under Windows (Romain Bardou and Alain Frisch) - PR#6148: speed improvement for Buffer (John Whitington) - PR#6180: efficient creation of uninitialized float arrays (Alain Frisch, request by Markus Mottl) - PR#6355: Improve documentation regarding finalisers and multithreading (Daniel B=FCnzli, Mark Shinwell) - Trigger warning 3 for all values marked as deprecated in the documentatio= n. (Damien Doligez) OCamldoc: - PR#6257: handle full doc comments for variant constructors and record fields (Maxence Guesdon, request by ygrek) - PR#6274: allow doc comments on object types (Thomas Refis) - PR#6310: fix ocamldoc's subscript/superscript CSS font size (Anil Madhavapeddy) - PR#6425: fix generation of man pages (Maxence Guesdon, report by Anil Madhavapeddy) Bug fixes: - PR#2719: wrong scheduling of bound checks within a try...with Invalid_argument -> _ ... (Xavier Leroy) - PR#4719: Sys.executable_name wrong if executable name contains dots (Wind= ows) (Alain Frisch, report by Bart Jacobs) - PR#5406 ocamlbuild: "tag 'package' does not expect a parameter" (Gabriel Scherer) - PR#5598, PR#6165: Alterations to handling of \013 in source files breaking other tools (David Allsopp and Damien Doligez) - PR#5820: Fix camlp4 lexer roll back problem (Hongbo Zhang) - PR#5946: CAMLprim taking (void) as argument (Beno=EEt Vaugon) - PR#6038: on x86-32, enforce 16-byte stack alignment for compatibility with recent GCC and Clang. Win32/MSVC keeps 4-byte stack alignment. (Xavier Leroy) - PR#6062: Fix a 4.01 camlp4 DELETE_RULE regression caused by commit 13047 (Hongbo Zhang, report by Christophe Troestler) - PR#6173: Typing error message is worse than before (Jacques Garrigue and John Whitington) - PR#6174: OCaml compiler loops on an example using GADTs (-rectypes case) (Jacques Garrigue and Gr=E9goire Henry, report by Chantal Keller) - PR#6175: open! was not suppored by camlp4 (Hongbo Zhang) - PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate (Jacques-Pascal Deplaix) - PR#6194: Incorrect unused warning with first-class modules in patterns (Jacques Garrigue, report by Markus Mottl and Leo White) - PR#6211: in toplevel interactive use, bad interaction between uncaught exceptions and multiple bindings of the form "let x =3D a let y =3D b;;". (Xavier Leroy) - PR#6216: inlining of GADT matches generates invalid assembly (Xavier Leroy and Alain Frisch, report by Mark Shinwell) - PR#6232: Don't use [mktemp] on platforms where [mkstemp] is available (St=E9phane Glondu, Mark Shinwell) - PR#6233: out-of-bounds exceptions lose their locations on ARM, PowerPC (Jacques-Henri Jourdan and Xavier Leroy, report and testing by St=E9phane Glondu) - PR#6235: Issue with type information flowing through a variant pattern (Jacques Garrigue, report by Hongbo Zhang) - PR#6239: sometimes wrong stack alignment when raising exceptions in -g mode with backtraces active (Xavier Leroy, report by Yaron Minsky) - PR#6240: Fail to expand module type abbreviation during substyping (Jacques Garrigue, report by Leo White) - PR#6241: Assumed inequality between paths involving functor arguments (Jacques Garrigue, report by Jeremy Yallop) - PR#6243: Make "ocamlopt -g" more resistant to ill-formed locations (Xavier Leroy, report by Pierre-Marie P=E9drot) - PR#6262: equality of first-class modules take module aliases into account (Alain Frisch and Leo White) - PR#6268: -DMODEL_$(MODEL) not passed when building asmrun/arm.p.o (Peter Michael Green) - PR#6273: fix Sys.file_exists on large files (Win32) (Christoph Bauer) - PR#6275: Soundness bug related to type constraints (Jacques Garrigue, report by Leo White) - PR#6293: Assert_failure with invalid package type (Jacques Garrigue, report by Elnatan Reisner) - PR#6300: ocamlbuild -use-ocamlfind conflicts with -ocamlc (Gabriel Scherer) - PR#6302: bytecode debug information re-read from filesystem every time (Jacques-Henri Jourdan) - PR#6307: Behavior of 'module type of' w.r.t. module aliases (Jacques Garrigue, report by Alain Frisch) - PR#6332: Unix.open_process fails to pass empty arguments under Windows (Damien Doligez, report Virgile Prevosto) - PR#6346: Build failure with latest version of xcode on OSX (J=E9r=E9mie Dimino) - PR#6348: Unification failure for GADT when original definition is hidden (Leo White and Jacques Garrigue, report by Jeremy Yallop) - PR#6352: Automatic removal of optional arguments and sequencing (Jacques Garrigue and Alain Frisch) - PR#6361: Hashtbl.hash not terminating on some lazy values w/ recursive ty= pes (Xavier Leroy, report by Leo White) - PR#6383: Exception Not_found when using object type in absent module (Jacques Garrigue, report by S=E9bastien Briais) - PR#6384: Uncaught Not_found exception with a hidden .cmi file (Leo White) - PR#6385: wrong allocation of large closures by the bytecode interpreter (Xavier Leroy, report by Stephen Dolan) - PR#6394: Assertion failed in Typecore.expand_path (Alain Frisch and Jacques Garrigue) - PR#6405: unsound interaction of -rectypes and GADTs (Jacques Garrigue, report by Gabriel Scherer and Beno=EEt Vaugon) - PR#6408: Optional arguments given as ~?arg instead of ?arg in message (Michael O'Connor) - PR#6411: missing libgcc_s_sjlj-1.dll in mingw (add -static-libgcc) (Jun Furuse and Alain Frisch, Jonathan Protzenko and Adrien Nader) - PR#6436: Typos in @deprecated text in stdlib/arrayLabels.mli (John Whitington) - PR#6439: Don't use the deprecated [getpagesize] function (John Whitington, Mark Shinwell) - PR#6441: undetected tail-call in some mutually-recursive functions (many arguments, and mutual block mixes functions and non-functions) (Stefan Holdermans, review by Xavier Leroy) - PR#6443: ocaml segfault when List.fold_left is traced then executed (Jacques Garrigue, report by user 'Reventlov') - PR#6451: some bugs in untypeast.ml (Jun Furuse, review by Alain Frisch) - PR#6460: runtime assertion failure with large [| e1;...eN |] float array expressions (Leo White) - PR#6463: -dtypedtree fails on class fields (Leo White) - PR#6469: invalid -dsource printing of "external _pipe =3D ...", "Pervasiv= es.(!)" (Gabriel Scherer and Damien Doligez, user 'ngunn') - PR#6482: ocamlbuild fails when _tags file in unhygienic directory (Gabriel Scherer) - PR#6502: ocamlbuild spurious warning on "use_menhir" tag (Xavier Leroy) - PR#6505: Missed Type-error leads to a segfault upon record access (Jacques Garrigue, Jeremy Yallop, report by Christoph H=F6ger) - PR#6507: crash on AArch64 resulting from incorrect setting of [caml_bottom_of_stack]. (Richard Jones, Mark Shinwell) - PR#6509: add -linkall flag to ocamlcommon.cma (Fr=E9d=E9ric Bour) - PR#6513: Fatal error Ctype.Unify(_) in functor type - PR#6523: failure upon character bigarray access, and unnecessary change in comparison ordering (Jeremy Yallop, Mark Shinwell) - bound-checking bug in caml_string_{get,set}{16,32,64} (Pierre Chambart and Gabriel Scherer, report by Nicolas Trangez) - sometimes wrong stack alignment at out-of-bounds array access (Gabriel Scherer and Xavier Leroy, report by Pierre Chambart) Features wishes: - PR#4243: make the Makefiles parallelizable (Gr=E9goire Henry and Damien Doligez) - PR#4323: have "of_string" in Num and Big_int work with binary and hex representations (Zoe Paraskevopoulou, review by Gabriel Scherer) - PR#4771: Clarify documentation of Dynlink.allow_only (Damien Doligez, report by David Allsopp) - PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where' (Jun Furuse and Hongbo Zhang, report by Dmitry Grebeniuk) - PR#5201: ocamlbuild: add --norc to the bash invocation to help performanc= es (user 'daweil') - PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types (Hongbo Zhang) - PR#5808: allow simple patterns, not just identifiers, in "let p : t =3D .= .." (Alain Frisch) - PR#5851: warn when -r is disabled because no _tags file is present (Gabriel Scherer) - PR#5899: a programmer-friendly access to backtrace information (Jacques-Henri Jourdan and Gabriel Scherer) - PR#6000 comment 9644: add a warning for non-principal coercions to format (Jacques Garrigue, report by Damien Doligez) - PR#6054: add support for M.[ foo ], M.[| foo |] etc. (Kaustuv Chaudhuri) - PR#6064: GADT representation for Bigarray.kind + CAML_BA_CHAR runtime kind (Jeremy Yallop, review by Gabriel Scherer) - PR#6071: Add a -noinit option to the toplevel (David Sheets) - PR#6087: ocamlbuild, improve _tags parsing of escaped newlines (Gabriel Scherer, request by Daniel B=FCnzli) - PR#6109: Typos in ocamlbuild error messages (Gabriel Kerneis) - PR#6116: more efficient implementation of Digest.to_hex (ygrek) - PR#6142: add cmt file support to ocamlobjinfo (Anil Madhavapeddy) - PR#6166: document -ocamldoc option of ocamlbuild (Xavier Clerc) - PR#6182: better message for virtual objects and class types (Leo White, Stephen Dolan) - PR#6183: enhanced documentation for 'Unix.shutdown_connection' (Anil Madhavapeddy, report by Jun Furuse) - PR#6187: ocamlbuild: warn when using -plugin-tag(s) without myocamlbuild.= ml (Jacques-Pascal Deplaix) - PR#6246: allow wildcard _ as for-loop index (Alain Frisch, request by ygrek) - PR#6267: more information printed by "bt" command of ocamldebug (Josh Watzman) - PR#6270: remove need for -I directives to ocamldebug in common case (Josh Watzman, review by Xavier Clerc and Alain Frisch) - PR#6311: Improve signature mismatch error messages (Alain Frisch, suggestion by Daniel B=FCnzli) - PR#6358: obey DESTDIR in install targets (Gabriel Scherer, request by Fran=E7ois Berenger) - PR#6388, PR#6424: more parsetree correctness checks for -ppx users (Alain Frisch, request by Peter Zotov and Jun Furuse) - PR#6406: Expose OCaml version in C headers (Peter Zotov and Romain Calascibetta) - PR#6446: improve "unused declaration" warnings wrt. name shadowing (Alain Frisch) - PR#6495: ocamlbuild tags 'safe_string', 'unsafe_string' (Anil Madhavapeddy) - PR#6497: pass context information to -ppx preprocessors (Peter Zotov, Alain Frisch) - ocamllex: user-definable refill action (Fr=E9d=E9ric Bour, review by Gabriel Scherer and Luc Maranget) - shorten syntax for functor signatures: "functor (M1:S1) (M2:S2) .. -> .." (Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Scherer) - make ocamldebug -I auto-detection work with ocamlbuild (Josh Watzman)