diff options
Diffstat (limited to 'Changes')
-rw-r--r-- | Changes | 406 |
1 files changed, 336 insertions, 70 deletions
@@ -1,135 +1,396 @@ -Next version: +OCaml 4.03.0: +------------- + +Compilers: +- PR#6501: harden the native-code generator against certain uses of "%identity" + (Xavier Leroy, report by Antoine Miné). + +Runtime system: +- PR#6517: use ISO C99 types {,u}int{32,64}_t in preference to our homegrown + types {,u}int{32,64}. + (Xavier Leroy) + +Standard library: +- PR#6577: improve performance of %L, %l, %n, %S, %C format specifiers + (Alain Frisch) +- PR#6585: fix memory leak in win32unix/createprocess.c + +Type system: +- PR#6374: allow "_ t" as a short-hand for "(_, _, ..) t" for n-ary type + constructors (Alain Frisch) +* PR#6465: allow incremental weakening of module aliases (Jacques Garrigue). + This is done by adding equations to submodules when expanding aliases. + In theory this may be incompatible is some corner cases defining a module + type through inference, but no breakage known on published code. +- PR#6593: Functor application in tests/basic-modules fails after commit 15405 + +OCaml 4.02.1: +------------- + +- PR#4099: Bug in Makefile.nt: won't stop on error (George Necula) +- PR#6181: Improve MSVC build (Chen Gang) +- PR#6466: Non-exhaustive matching warning message for open types is confusing +- PR#6529: fix quadratic-time algorithm in Consistbl.extract. + (Xavier Leroy) +- PR#6554: fix race condition when retrieving backtraces (Jérémie Dimino, + Mark Shinwell). +- PR#6588: Code generation errors for ARM + (Mark Shinwell, Xavier Leroy) +- PR#6590: Improve Windows (MSVC and mingw) build + (Chen Gang) + +Ocaml 4.02.0: ------------- (Changes that can break existing programs are marked with a "*") Language features: - Attributes and extension nodes -- Generative functors + (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. -Camlp4: -- Removed from the official distribution - -Other libraries: -* Labltk: removed from the distribution, now available as a third-party library +Shedding weight: +* Removed Camlp4 from the distribution, now available as third-party software. +* Removed Labltk from the distribution, now available as a third-party library. Type system: -* Keep typing of pattern cases independent in principal mode +* 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. PR6235' in typing-warnings/records.ml) + 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 Chapman) - 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 + (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: -- PR#6269 Optimization of string matching (patch by Benoit Vaugon - and Luc Maranget) +- 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ît 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) -- PR#6182: better message for virtual objects and class types - (Leo P. White, Stephen Dolan) + (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 [@@deprecated] attribute -- PR#6203: Constant exception constructor no longer allocate -- PR#6311: Improve signature mismatch error messages + the [@@ocaml.deprecated] attribute + (Alain Frisch, suggestion by Pierre-Marie Pédrot) +- PR#6017: a new format implementation based on GADTs + (Benoît 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 -- PR#6260: Unnecessary boxing in let (patch by vbrankov) + (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 -- PR#4765: Structural equality should treat exception specifically -- PR#5009: Extending exception tag blocks + 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 -- PR#6148: speed improvement for Buffer (patch by John Whitington) + (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ünzli, Mark Shinwell) +- Trigger warning 3 for all values marked as deprecated in the documentation. + (Damien Doligez) OCamldoc: - PR#6257: handle full doc comments for variant constructors and - record fields + 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 - (patch by Anil Madhavapeddy) + (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 (Windows) -- PR#4855: 'camlp4 -I +dir' accepted, dir is relative to 'camlp4 -where' -- PR#5201: ocamlbuild: add --norc to the bash invocation to help performances -- PR#5598: follow-up fix related to PR#6165 + (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 -- 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) + (Hongbo Zhang) +- PR#5946: CAMLprim taking (void) as argument + (Benoît 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égoire Henry, report by Chantal Keller) +- PR#6175: open! was not suppored by camlp4 + (Hongbo Zhang) - PR#6184: ocamlbuild: `ocamlfind ocamldep` does not support -predicate - (report and patch by Jacques-Pascal Deplaix) + (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 = a let y = 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éphane 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éphane 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édrot) - 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 -- fix -dsource printing of "external _pipe = ..." + (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érémie 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 types + (Xavier Leroy, report by Leo White) +- PR#6383: Exception Not_found when using object type in absent module + (Jacques Garrigue, report by Sébastien 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ît 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 = ...", "Pervasives.(!)" + (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öger) +- 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édéric 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égoire Henry and Damien Doligez) - PR#4323: have "of_string" in Num and Big_int work with binary and - hexa representations (patch by Zoe Paraskevopoulou) -- PR#5547: Enable the "-use-ocamlfind" option by default + 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 performances + (user 'daweil') - PR#5650: Camlp4FoldGenerator doesn't handle well "abstract" types -- PR#5808: allow simple patterns, not only identifiers, in "let p : t = ..." + (Hongbo Zhang) +- PR#5808: allow simple patterns, not just identifiers, in "let p : t = ..." + (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. - (patch by Kaustuv Chaudhuri) + (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) + (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ünzli) +- 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 - (patch by Jacques-Pascal Deplaix) -- PR#6246: allow wilcard _ as for-loop index + (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ünzli) +- PR#6358: obey DESTDIR in install targets + (Gabriel Scherer, request by François 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 - (patch by Frédéric Bour, review by Gabriel Scherer and Luc Maranget) + (Frédéric 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 Scherer) - -OCaml 4.01.1: -------------- - -Bug fixes: -- PR#4855: 'camlp4 -I +dir' accepted, dir is related to 'camlp4 -where' -- PR#5820: Fix camlp4 lexer roll back problem -- PR#6062: Fix a regression bug caused by commit 13047 -- PR#6165: Alterations to handling of \013 in source files breaking other tools -- PR#6173: Typing error message is worse that before -- PR#6174: OCaml compiler loops on an example using GADTs (non -rectypes) -- PR#6175: Fix open! -- PR#6183: enhanced documentation for 'Unix.shutdown_connection' -- 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#6267: more information printed by "bt" command of ocamldebug -- PR#6275: Soundness bug related to type constraints - + (Thomas Gazagnaire and Jeremy Yallop, review by Gabriel Scherer) +- make ocamldebug -I auto-detection work with ocamlbuild + (Josh Watzman) OCaml 4.01.0: ------------- @@ -286,7 +547,7 @@ Bug fixes: (Alain Frisch) - PR#5552: unrecognized gcc option -no-cpp-precomp (Damien Doligez, report by Markus Mottl) -- PR#5580: missed opportunities for constant propagation +* PR#5580: missed opportunities for constant propagation (Xavier Leroy and John Carr) - PR#5611: avoid clashes betwen .cmo files and output files during linking (Wojciech Meyer) @@ -483,8 +744,6 @@ Bug fixes: (Jacques Garrigue, report by Elnatan Reisner) - PR#6058: 'ocamlbuild -use-ocamlfind -tag thread -package threads t.cma' fails (Gabriel Scherer, report by Hezekiah M. Carty) -- PR#6060: ocamlbuild rules for -principal, -strict-sequence and -short-paths - (Anil Madhavapeddy) - PR#6069: ocamldoc: lexing: empty token (Maxence Guesdon, Grégoire Henry, report by ygrek) - PR#6072: configure does not handle FreeBSD current (i.e. 10) correctly @@ -506,6 +765,8 @@ Bug fixes: (Jacques Garrigue, report by Leo P. White) - PR#6164: segmentation fault on Num.power_num of 0/1 (Fabrice Le Fessant, report by Johannes Kanig) +- PR#6210: Camlp4 location error + (Hongbo Zhang, report by Jun Furuse) Feature wishes: - PR#5181: Merge common floating point constants in ocamlopt @@ -548,6 +809,10 @@ Feature wishes: (Anil Madhavapeddy, review by Benedikt Meurer) - PR#6059: add -output-obj rules for ocamlbuild (Anil Madhavapeddy) +- PR#6060: ocamlbuild tags 'principal', 'strict_sequence' and 'short_paths' + (Anil Madhavapeddy) +- ocamlbuild tag 'no_alias_deps' + (Daniel Bünzli) Tools: - OCamlbuild now features a bin_annot tag to generate .cmt files. @@ -699,6 +964,7 @@ Installation procedure: (-runtime-variant) to select the debug runtime. Bug Fixes: + - PR#1643: functions of the Lazy module whose named started with 'lazy_' have been deprecated, and new ones without the prefix added - PR#3571: in Bigarrays, call msync() before unmapping to commit changes |