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 239CF7F8E8 for ; Wed, 21 May 2014 14:13:37 +0200 (CEST) X-IronPort-AV: E=Sophos;i="4.98,879,1392159600"; d="scan'208";a="75072756" Received: from macabane.inria.fr ([128.93.8.160]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/AES128-SHA; 21 May 2014 14:13:37 +0200 From: Damien Doligez Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Date: Wed, 21 May 2014 14:13:38 +0200 Message-Id: <33BA74EC-E875-437F-A8A0-34011307D21D@inria.fr> To: caml users , caml announce Mime-Version: 1.0 (Apple Message framework v1283) X-Mailer: Apple Mail (2.1283) Subject: [Caml-list] OCaml release 4.02.0+beta1 Dear OCaml users, The release of OCaml version 4.02.0 will take place around the beginning of= July. We have created a beta version to get your feedback. Please download= the sources, compile, install, and test your favourite software with it. T= hen let us know what doesn't work by posting bugs to the BTS. This is a major release with several big changes, so it is particurarly imp= ortant for us to get feedback from you. Happy hacking, -- Damien Doligez for the OCaml team. sources and documentation of 4.02.0+beta1: http://caml.inria.fr/pub/distrib/ocaml-4.02/ Bug-tracking system (BTS): http://caml.inria.fr/mantis/my_view_page.php OCaml 4.02.0+beta1: ------------------- (Changes that can break existing programs are marked with a "*") Language features: - Attributes and extension nodes - Generative functors - Module aliases * Alternative syntax for string literals {id|...|id} (can break comments) - Separation between read-only strings (type string) and read-write byte sequences (type bytes). Activated by command-line option -safe-string. - Exception cases in pattern matching (patch by Jeremy Yallop). - Extensible open datatypes (patch by Leo White). Build system for the OCaml distribution: - Use -bin-annot when building. - Use GNU make instead of portable makefiles. 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: * 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) - 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 * Module aliases are now typed in a specific way, which remembers their identity. In particular this changes the signature inferred by "module type of" - 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. * PR#6333: Compare first class module types structurally rather than nominally. Value subtyping allows module subtyping as long as the internal representation is unchanged. 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. - New back-end optimization pass: common subexpression elimination (CSE). (Reuses results of previous computations instead of recomputing them.) - New back-end optimization pass: dead code elimination. (Removes arithmetic and load instructions whose results are unused.) - PR#6269 Optimization of string matching (patch by Benoit Vaugon and Luc Maranget) - Experimental native code generator for AArch64 (ARM 64 bits) - Optimization of integer division and modulus by constant divisors (feature wish PR#6042) - Add "-open" command line flag for opening a single module before typing * "-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 ".") * PR#5779: better sharing of structured constants - PR#6182: better message for virtual objects and class types (Leo P. White, Stephen Dolan) - PR#5817: new flag to keep locations in cmi files - PR#5854: issue warning 3 when referring to a value marked with the [@@deprecated] attribute * PR#6203: Constant exception constructor no longer allocate - PR#6311: Improve signature mismatch error messages - PR#6345: Better compilation of optional arguments with default values - PR#6260: Unnecessary boxing in let (patch by vbrankov) - PR#6017: a new format implementation based on GADTs (initial patch by Beno=EEt Vaugon, review by Gabriel Scherer) Toplevel interactive system: - PR#5377: New "#show_*" directives 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. - Fixed bug in native code version of [caml_raise_with_string] that could potentially lead to heap corruption. - Blocks initialized by [CAMLlocal*] and [caml_alloc] are now filled with [Val_unit] rather than zero. - Fixed a major performance problem on large heaps (~1GB) by making heap increments proportional to heap size by default - PR#4765: Structural equality should treat exception specifically - PR#5009: Extending exception tag blocks - PR#6075: avoid using unsafe C library functions (strcpy, strcat, sprintf) - 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. Standard library: * Add new modules: Bytes and BytesLabels. - PR#4986: add List.sort_uniq and Set.of_list - PR#5935: a faster version of "raise" which does not maintain the backtrace - PR#6146: support "Unix.kill pid Sys.sigkill" under Windows - PR#6148: speed improvement for Buffer (patch by John Whitington) - PR#6180: efficient creation of uninitialized float arrays OCamldoc: - PR#6257: handle full doc comments for variant constructors and record fields - PR#6310: fix ocamldoc's subscript/superscript CSS font size (patch by Anil Madhavapeddy) - PR#6273: fix Sys.file_exists on large files (Win32) (patch by Christoph Bauer) Bug fixes: - PR#4719: Sys.executable_name wrong if executable name contains dots (Wind= ows) - PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where' - PR#5201: ocamlbuild: add --norc to the bash invocation to help performanc= es - PR#5598: follow-up fix related to PR#6165 - PR#5820: Fix camlp4 lexer roll back problem - PR#6062: Fix a regression bug caused by commit 13047 - PR#6109: Typos in ocamlbuild error messages - PR#6116: more efficient implementation of Digest.to_hex (patch by ygrek) - PR#6165: Alterations to handling of \013 in source files breaking other t= ools - PR#6173: Typing error message is worse that before - PR#6174: OCaml compiler loops on an example using GADTs (-rectypes case) - PR#6175: Fix open! - PR#6183: enhanced documentation for 'Unix.shutdown_connection' - PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate (report and patch by Jacques-Pascal Deplaix) - PR#6194: Incorrect unused warning with first-class modules in patterns - PR#6216: inlining of GADT matches generates invalid assembly - PR#6233: out-of-bounds exceptions lose their locations on ARM, PowerPC - PR#6235: Issue with type information flowing through a variant pattern - PR#6239: sometimes wrong stack alignment when raising exceptions in -g mode with backtraces active - PR#6240: Fail to expand module type abbreviation during substyping - PR#6241: Assumed inequality between paths involving functor arguments - PR#6243: Make "ocamlopt -g" more resistant to ill-formed locations - PR#6262: equality of first-class modules take module aliases into account - PR#6267: more information printed by "bt" command of ocamldebug - PR#6275: Soundness bug related to type constraints - PR#6293: Assert_failure with invalid package type - 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 - PR#6332: Unix.open_process fails to pass empty arguments under Windows - PR#6346: Build failure with latest version of xcode on OSX - PR#6348: Unification failure for GADT when original definition is hidden - PR#6352: Automatic removal of optional arguments and sequencing - PR#6361: Hashtbl.hash not terminating on some lazy values w/ recursive ty= pes - PR#6383: Exception Not_found when using object type in absent module - PR#6384: Uncaught Not_found exception with a hidden .cmi file - PR#6385: wrong allocation of large closures by the bytecode interpreter - PR#6394: Assertion failed in Typecore.expand_path - PR#6405: unsound interaction of -rectypes and GADTs - PR#6408: Optional arguments given as ~?arg instead of ?arg in message - fix -dsource printing of "external _pipe =3D ..." (Gabriel Scherer) - 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, review by Xavier Leroy, report by Pierre Chambart) Features wishes: - PR#4243: make the Makefiles parallelizable - PR#4323: have "of_string" in Num and Big_int work with binary and hex representations (patch by Zoe Paraskevopoulou) - PR#5547: Enable the "-use-ocamlfind" option by default - PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types - PR#5808: allow simple patterns, not just identifiers, in "let p : t =3D .= .." - PR#6000: add a warning for non-principal coercions to format - PR#6054: add support for M.[ foo ], M.[| foo |] etc. (patch by Kaustuv Chaudhuri) - PR#6064: GADT representation for Bigarray.kind + CAML_BA_CHAR runtime kind - PR#6071: Add a -noinit option to the toplevel (patch by David Sheets) - PR#6166: document -ocamldoc option of ocamlbuild - PR#6187: ocamlbuild: warn when using -plugin-tag(s) without myocamlbuild.= ml (patch by Jacques-Pascal Deplaix) - PR#6246: allow wilcard _ as for-loop index - PR#6270: remove need for -I directives to ocamldebug in common case (patch by Josh Watzman, review by Xavier Clerc and Alain Frisch) - PR#6358: obey DESTDIR in install targets (Gabriel Scherer) - PR#5899: a programmer-friendly access to backtrace information (Jacques-Henri Jourdan and Gabriel Scherer) - ocamllex: user-definable refill action (patch by Fr=E9d=E9ric Bour, review by Gabriel Scherer and Luc Maranget) - shorten syntax for functor signatures: "functor (M1:S1) (M2:S2) .. -> .." (patches by Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Schere= r)