diff options
author | Gabriel Scherer <gabriel.scherer@gmail.com> | 2017-10-03 11:44:48 +0200 |
---|---|---|
committer | Gabriel Scherer <gabriel.scherer@gmail.com> | 2017-10-03 11:51:46 +0200 |
commit | 6a236f739d982d0188c2741f39e8e298ff2fdcfb (patch) | |
tree | d82e7f34fa9c36b5cca101f8be03da834b9198a6 | |
parent | 1d8d66a5783fc91a07084e402ab002b0b39c68e4 (diff) | |
download | ocaml-6a236f739d982d0188c2741f39e8e298ff2fdcfb.tar.gz |
reorder 4.06 change categories
-rw-r--r-- | Changes | 423 |
1 files changed, 212 insertions, 211 deletions
@@ -86,110 +86,12 @@ Release branch for 4.06: "S with type _ t = int". (Valentin Gatien-Baron, report by Jeremy Yallop) -### Code generation and optimizations: - -- MPR#5324, GPR#375: An alternative Linear Scan register allocator for - ocamlopt, activated with the -linscan command-line flag. This - allocator represents a trade-off between worse generated code - performance for higher compilation speed (especially interesting in - some cases graph coloring is necessarily quadratic). - (Marcell Fischbach and Benedikt Meurer, adapted by Nicolas Ojeda - Bar, review by Nicolas Ojeda Bar and Alain Frisch) - -- GPR#850: Optimize away some physical equality - (Pierre Chambart, review by Mark Shinwell and Leo White) - -- GPR#856: Register availability analysis - (Mark Shinwell, Thomas Refis, review by Pierre Chambart) - -- MPR#6927, GPR#988: On macOS, when compiling bytecode stubs, plugins, - and shared libraries through -output-obj, generate dylibs instead of - bundles. - (whitequark) - -- MPR#7447, GPR#995: incorrect code generation for nested recursive bindings - (Leo White and Jeremy Yallop, report by Stephen Dolan) - -- MPR#7501, GPR#1089: Consider arrays of length zero as constants - when using Flambda. - (Pierre Chambart, review by Mark Shinwell and Leo White) - -- MPR#7531, GPR#1162: Erroneous code transformation at partial applications - (Mark Shinwell) - -- MPR#7601, GPR#1320: It seems like a hidden non-generalized type variable - remains in some inferred signatures, which leads to strange errors - (Jacques Garrigue, report by Mandrikin) - -- MP#7617, #7618, GPR#1318: Ambiguous (mistakenly) type escaping the - scope of its equation - (Jacques Garrigue, report by Thomas Refis) - -- MPR#7620, GPR#1317: Typecore.force_delayed_checks does not run with -i option - (Jacques Garrigue, report by Jun Furuse) - -* GPR#659: Remove support for SPARC native code generation - (Mark Shinwell) - -- GPR#1143: tweaked several allocation functions in the runtime by - checking for likely conditions before unlikely ones and eliminating - some redundant checks. - (Markus Mottl, review by Alain Frisch, Xavier Leroy, Gabriel Scherer, - Mark Shinwell and Leo White) - -- GPR#1183: compile curried functors to multi-argument functions - earlier in the compiler pipeline; correctly propagate [@@inline] - attributes on such functors; mark functor coercion veneers as - stubs. - (Mark Shinwell, review by Pierre Chambart and Leo White) - -- GPR#1195: Merge functions based on partiality rather than - Parmatch.irrefutable. - (Leo White, review by Thomas Refis, Alain Frisch and Gabriel Scherer) - -- GPR#1215: Improve compilation of short-circuit operators - (Leo White, review by Frédéric Bour and Mark Shinwell) - -- GPR#1250: illegal ARM64 assembly code generated for large combined allocations - (report and initial fix by Steve Walk, review and final fix by Xavier Leroy) - -- GPR#1271: Don't generate Ialloc instructions for closures that exceed - Max_young_wosize; instead allocate them on the major heap. (Related - to GPR#1250.) - (Mark Shinwell) - -- GPR#1294: Add a configure-time option to remove the dynamic float array - optimization and add a floatarray type to let the user choose when to - flatten float arrays. Note that float-only records are unchanged: they - are still optimized by unboxing their fields. - (Damien Doligez, review by Alain Frisch and Mark Shinwell) - -- GPR#1304: Mark registers clobbered by PLT stubs as destroyed across - allocations. - (Mark Shinwell, Xavier Clerc, report and initial debugging by - Valentin Gatien-Baron) - -- MPR#7614, GPR#1313: Ensure that inlining does not depend on the order - of symbols (flambda) - (Leo White, Xavier Clerc, report by Alex, review by Gabriel Scherer - and Pierre Chambart) - -- GPR#1323: make sure that frame tables are generated in the data - section and not in the read-only data section, as was the case - before in the PPC and System-Z ports. This avoids relocations in - the text segment of shared libraries and position-independent - executables generated by ocamlopt. - (Xavier Leroy, review by Mark Shinwell) - -- GPR#1330: when generating dynamically-linkable code on AArch64, always - reference symbols (even locally-defined ones) through the GOT. - (Mark Shinwell, review by Xavier Leroy) - -- MPR#7616, GPR#1339: don't warn on mutation of zero size blocks. - (Leo White) +### Type system -- MPR#7631, GPR#1355: "-linscan" option crashes ocamlopt - (Xavier Clerc, report by Paul Steckler) +* GPR#556, PR#7215, PR#7231, PR#6738: Add a new check that 'let rec' bindings + are well formed. + (Jeremy Yallop, reviews by Stephen Dolan, Gabriel Scherer, Leo + White, and Damien Doligez) ### Standard library: @@ -261,6 +163,17 @@ Release branch for 4.06: - Resurrect tabulation boxes in module Format. Rewrite/extend documentation of tabulation boxes. +### Other libraries: + +- GPR#1178: remove the Num library for arbitrary-precision arithmetic. + It now lives as a separate project https://github.com/ocaml/num + with an OPAM package called "num". + (Xavier Leroy) + +- GPR#1321: Reimplement Unix.isatty on Windows. It no longer returns true for + the null device. + (David Allsopp) + ### Compiler user-interface and warnings: - GPR##1332: fix ocamlc handling of "-output-complete-obj" @@ -293,9 +206,16 @@ Release branch for 4.06: of ocamlc and a run of ocamlopt. (Xavier Leroy, from a suggestion by Gerd Stolpmann) +- MPR#7514, GPR#1152: add -dprofile option, similar to -dtimings but + also displays memory allocation and consumption + (Valentin Gatien-Baron, report by Gabriel Scherer) + - MPR#7624: handle warning attributes placed on let bindings (Xavier Clerc, report by dinosaure, review by Alain Frisch) +- GPR#1032: display the output of -dtimings as a hierarchy + (Valentin Gatien-Baron, review by Gabriel Scherer) + - GPR#1333: turn off warning 40 by default (Leo White) @@ -303,66 +223,110 @@ Release branch for 4.06: PPX rewriters. (Jun Furuse, review by Alain Frisch) -### Other libraries: +### Code generation and optimizations: -- GPR#1178: remove the Num library for arbitrary-precision arithmetic. - It now lives as a separate project https://github.com/ocaml/num - with an OPAM package called "num". - (Xavier Leroy) +- MPR#5324, GPR#375: An alternative Linear Scan register allocator for + ocamlopt, activated with the -linscan command-line flag. This + allocator represents a trade-off between worse generated code + performance for higher compilation speed (especially interesting in + some cases graph coloring is necessarily quadratic). + (Marcell Fischbach and Benedikt Meurer, adapted by Nicolas Ojeda + Bar, review by Nicolas Ojeda Bar and Alain Frisch) -- GPR#1321: Reimplement Unix.isatty on Windows. It no longer returns true for - the null device. - (David Allsopp) +- GPR#850: Optimize away some physical equality + (Pierre Chambart, review by Mark Shinwell and Leo White) -### Manual and documentation: +- GPR#856: Register availability analysis + (Mark Shinwell, Thomas Refis, review by Pierre Chambart) -- MPR#6548: remove obsolete limitation in the description of private - type abbreviations - (Florian Angeletti, suggestion by Leo White) +- MPR#6927, GPR#988: On macOS, when compiling bytecode stubs, plugins, + and shared libraries through -output-obj, generate dylibs instead of + bundles. + (whitequark) -- MPR#6676, GPR#1110: move record notation to tutorial - (Florian Angeletti, review by Gabriel Scherer) +- MPR#7447, GPR#995: incorrect code generation for nested recursive bindings + (Leo White and Jeremy Yallop, report by Stephen Dolan) -- MPR#6676, GPR#1112: move local opens to tutorial - (Florian Angeletti) +- MPR#7501, GPR#1089: Consider arrays of length zero as constants + when using Flambda. + (Pierre Chambart, review by Mark Shinwell and Leo White) -- MPR#6676, GPR#1153: move overriding class definitions to reference - manual and tutorial - (Florian Angeletti) +- MPR#7531, GPR#1162: Erroneous code transformation at partial applications + (Mark Shinwell) -- MPR#6709: document the associativity and precedence level of - pervasive operators - (Florian Angeletti, review by David Allsopp) +- MPR#7601, GPR#1320: It seems like a hidden non-generalized type variable + remains in some inferred signatures, which leads to strange errors + (Jacques Garrigue, report by Mandrikin) -- MPR#7254, GPR#1096: Rudimentary documentation of ocamlnat +- MP#7617, #7618, GPR#1318: Ambiguous (mistakenly) type escaping the + scope of its equation + (Jacques Garrigue, report by Thomas Refis) + +- MPR#7620, GPR#1317: Typecore.force_delayed_checks does not run with -i option + (Jacques Garrigue, report by Jun Furuse) + +* GPR#659: Remove support for SPARC native code generation (Mark Shinwell) -- MPR#7281, GPR#1259: fix .TH macros in generated manpages - (Olaf Hering) +- GPR#1143: tweaked several allocation functions in the runtime by + checking for likely conditions before unlikely ones and eliminating + some redundant checks. + (Markus Mottl, review by Alain Frisch, Xavier Leroy, Gabriel Scherer, + Mark Shinwell and Leo White) -- MPR#7507: Align the description of the printf conversion - specification "%g" with the ISO C90 description. - (Florian Angeletti) +- GPR#1183: compile curried functors to multi-argument functions + earlier in the compiler pipeline; correctly propagate [@@inline] + attributes on such functors; mark functor coercion veneers as + stubs. + (Mark Shinwell, review by Pierre Chambart and Leo White) -- MPR#7551, GPR#1194 : make the final ";;" potentially optional in - caml_example - (Florian Angeletti, review and suggestion by Gabriel Scherer) +- GPR#1195: Merge functions based on partiality rather than + Parmatch.irrefutable. + (Leo White, review by Thomas Refis, Alain Frisch and Gabriel Scherer) -- MPR#7588, GPR#1291: make format documentation predictable - (Florian Angeletti, review by Gabriel Radanne) +- GPR#1215: Improve compilation of short-circuit operators + (Leo White, review by Frédéric Bour and Mark Shinwell) -- MPR#7604: Minor Ephemeron documentation fixes - (Miod Vallat, review by Florian Angeletti) +- GPR#1250: illegal ARM64 assembly code generated for large combined allocations + (report and initial fix by Steve Walk, review and final fix by Xavier Leroy) -- GPR#1187: Minimal documentation for compiler plugins - (Florian Angeletti) +- GPR#1271: Don't generate Ialloc instructions for closures that exceed + Max_young_wosize; instead allocate them on the major heap. (Related + to GPR#1250.) + (Mark Shinwell) -- GPR#1202: Fix Typos in comments as well as basic grammar errors. - (JP Rodi, review and suggestions by David Allsopp, Max Mouratov, - Florian Angeletti, Xavier Leroy, Mark Shinwell and Damien Doligez) +- GPR#1294: Add a configure-time option to remove the dynamic float array + optimization and add a floatarray type to let the user choose when to + flatten float arrays. Note that float-only records are unchanged: they + are still optimized by unboxing their fields. + (Damien Doligez, review by Alain Frisch and Mark Shinwell) -- GPR#1220: Fix "-keep-docs" option in ocamlopt manpage - (Etienne Millon) +- GPR#1304: Mark registers clobbered by PLT stubs as destroyed across + allocations. + (Mark Shinwell, Xavier Clerc, report and initial debugging by + Valentin Gatien-Baron) + +- MPR#7614, GPR#1313: Ensure that inlining does not depend on the order + of symbols (flambda) + (Leo White, Xavier Clerc, report by Alex, review by Gabriel Scherer + and Pierre Chambart) + +- GPR#1323: make sure that frame tables are generated in the data + section and not in the read-only data section, as was the case + before in the PPC and System-Z ports. This avoids relocations in + the text segment of shared libraries and position-independent + executables generated by ocamlopt. + (Xavier Leroy, review by Mark Shinwell) + +- GPR#1330: when generating dynamically-linkable code on AArch64, always + reference symbols (even locally-defined ones) through the GOT. + (Mark Shinwell, review by Xavier Leroy) + +- MPR#7616, GPR#1339: don't warn on mutation of zero size blocks. + (Leo White) + +- MPR#7631, GPR#1355: "-linscan" option crashes ocamlopt + (Xavier Clerc, report by Paul Steckler) ### Tools: @@ -430,6 +394,109 @@ Release branch for 4.06: - GPR#1041: -nostdlib no longer ignored by toplevel. (David Allsopp, review by Xavier Leroy) +### Runtime system: + +* MPR#3771, GPR#153, GPR#1200, GPR#1357, GPR#1362, GPR#1363: Unicode support for + the Windows runtime. + (ygrek, Clement Franchini, Nicolas Ojeda Bar, review by Alain Frisch, David + Allsopp, Damien Doligez) + +- GPR#1070, GPR#1295: enable gcc typechecking for caml_alloc_sprintf, + caml_gc_message. Make caml_gc_message a variadic function. Fix many + caml_gc_message format strings. + (Olivier Andrieu, review and 32bit fix by David Allsopp) + +- GPR#71: The runtime can now be shut down gracefully by means of the new + caml_shutdown and caml_startup_pooled functions. The new 'c' flag in + OCAMLRUNPARAM enables shutting the runtime properly on process exit. + (Max Mouratov, review and discussion by Damien Doligez, Gabriel Scherer, + Mark Shinwell, Thomas Braibant, Stephen Dolan, Pierre Chambart, + François Bobot, Jacques Garrigue, David Allsopp, and Alain Frisch) + +- GPR#938, GPR#1170, GPR#1289: Stack overflow detection on 64-bit Windows + (Olivier Andrieu, tweaked by David Allsopp) + +- GPR#1073: Remove statically allocated compare stack. + (Stephen Dolan) + +- GPR#1086: in Sys.getcwd, just fail instead of calling getwd() + if HAS_GETCWD is not set. + (Report and first fix by Sebastian Markbåge, final fix by Xavier Leroy, + review by MarK Shinwell) + +- GPR#1269: Remove 50ms delay at exit for programs using threads + (Valentin Gatien-Baron, review by Stephen Dolan) + +* MPR#7594, GPR#1274, GPR#1368: String_val now returns 'const char*', not + 'char*' when -safe-string is enabled at configure time. New macro Bytes_val + for accessing bytes values. + (Jeremy Yallop, reviews by Mark Shinwell and Xavier Leroy) + +* GPR#1309: open files with O_CLOEXEC (or equivalent) in caml_sys_open thus + unifying the semantics between Unix and Windows and also eliminating race + condition on Unix. + (David Allsopp, report by Andreas Hauptmann) + +- GPR#1326: Enable use of CFI directives in AArch64 and ARM runtime + systems' assembly code (asmrun/arm64.S). Add CFI directives to enable + unwinding through [caml_c_call] and [caml_call_gc] with correct termination + of unwinding at [main]. + (Mark Shinwell, review by Xavier Leroy and Gabriel Scherer, with thanks + to Daniel Bünzli and Fu Yong Quah for testing) + +- GPR#1338: Add "-g" for bytecode runtime system compilation + (Mark Shinwell) + +### Manual and documentation: + +- MPR#6548: remove obsolete limitation in the description of private + type abbreviations + (Florian Angeletti, suggestion by Leo White) + +- MPR#6676, GPR#1110: move record notation to tutorial + (Florian Angeletti, review by Gabriel Scherer) + +- MPR#6676, GPR#1112: move local opens to tutorial + (Florian Angeletti) + +- MPR#6676, GPR#1153: move overriding class definitions to reference + manual and tutorial + (Florian Angeletti) + +- MPR#6709: document the associativity and precedence level of + pervasive operators + (Florian Angeletti, review by David Allsopp) + +- MPR#7254, GPR#1096: Rudimentary documentation of ocamlnat + (Mark Shinwell) + +- MPR#7281, GPR#1259: fix .TH macros in generated manpages + (Olaf Hering) + +- MPR#7507: Align the description of the printf conversion + specification "%g" with the ISO C90 description. + (Florian Angeletti) + +- MPR#7551, GPR#1194 : make the final ";;" potentially optional in + caml_example + (Florian Angeletti, review and suggestion by Gabriel Scherer) + +- MPR#7588, GPR#1291: make format documentation predictable + (Florian Angeletti, review by Gabriel Radanne) + +- MPR#7604: Minor Ephemeron documentation fixes + (Miod Vallat, review by Florian Angeletti) + +- GPR#1187: Minimal documentation for compiler plugins + (Florian Angeletti) + +- GPR#1202: Fix Typos in comments as well as basic grammar errors. + (JP Rodi, review and suggestions by David Allsopp, Max Mouratov, + Florian Angeletti, Xavier Leroy, Mark Shinwell and Damien Doligez) + +- GPR#1220: Fix "-keep-docs" option in ocamlopt manpage + (Etienne Millon) + ### Compiler distribution build system - MPR#6373, GPR#1093: Suppress trigraph warnings from macOS assembler @@ -496,17 +563,10 @@ Release branch for 4.06: strings longer than the size specified by the "print_length" directive (Fabrice Le Fessant, initial PR by Junsong Li) -- MPR#7514, GPR#1152: add -dprofile option, similar to -dtimings but - also displays memory allocation and consumption - (Valentin Gatien-Baron, report by Gabriel Scherer) - - GPR#406: remove polymorphic comparison for Types.constructor_tag in compiler (Dwight Guth, review by Gabriel Radanne, Damien Doligez, Gabriel Scherer, Pierre Chambart, Mark Shinwell) -- GPR#1032: display the output of -dtimings as a hierarchy - (Valentin Gatien-Baron, review by Gabriel Scherer) - - GPR#1127: move config/{m,s}.h to byterun/caml and install them. User code should not have to include them directly since they are included by other header files @@ -622,65 +682,6 @@ Release branch for 4.06: in the position of the expression (same behavior as for lists) (Christophe Raffalli, review by Gabriel Scherer) -### Runtime system: - -* MPR#3771, GPR#153, GPR#1200, GPR#1357, GPR#1362, GPR#1363: Unicode support for - the Windows runtime. - (ygrek, Clement Franchini, Nicolas Ojeda Bar, review by Alain Frisch, David - Allsopp, Damien Doligez) - -- GPR#1070, GPR#1295: enable gcc typechecking for caml_alloc_sprintf, - caml_gc_message. Make caml_gc_message a variadic function. Fix many - caml_gc_message format strings. - (Olivier Andrieu, review and 32bit fix by David Allsopp) - -- GPR#71: The runtime can now be shut down gracefully by means of the new - caml_shutdown and caml_startup_pooled functions. The new 'c' flag in - OCAMLRUNPARAM enables shutting the runtime properly on process exit. - (Max Mouratov, review and discussion by Damien Doligez, Gabriel Scherer, - Mark Shinwell, Thomas Braibant, Stephen Dolan, Pierre Chambart, - François Bobot, Jacques Garrigue, David Allsopp, and Alain Frisch) - -- GPR#938, GPR#1170, GPR#1289: Stack overflow detection on 64-bit Windows - (Olivier Andrieu, tweaked by David Allsopp) - -- GPR#1073: Remove statically allocated compare stack. - (Stephen Dolan) - -- GPR#1086: in Sys.getcwd, just fail instead of calling getwd() - if HAS_GETCWD is not set. - (Report and first fix by Sebastian Markbåge, final fix by Xavier Leroy, - review by MarK Shinwell) - -- GPR#1269: Remove 50ms delay at exit for programs using threads - (Valentin Gatien-Baron, review by Stephen Dolan) - -* MPR#7594, GPR#1274, GPR#1368: String_val now returns 'const char*', not - 'char*' when -safe-string is enabled at configure time. New macro Bytes_val - for accessing bytes values. - (Jeremy Yallop, reviews by Mark Shinwell and Xavier Leroy) - -* GPR#1309: open files with O_CLOEXEC (or equivalent) in caml_sys_open thus - unifying the semantics between Unix and Windows and also eliminating race - condition on Unix. - (David Allsopp, report by Andreas Hauptmann) - -- GPR#1326: Enable use of CFI directives in AArch64 and ARM runtime - systems' assembly code (asmrun/arm64.S). Add CFI directives to enable - unwinding through [caml_c_call] and [caml_call_gc] with correct termination - of unwinding at [main]. - (Mark Shinwell, review by Xavier Leroy and Gabriel Scherer, with thanks - to Daniel Bünzli and Fu Yong Quah for testing) - -- GPR#1338: Add "-g" for bytecode runtime system compilation - (Mark Shinwell) - -### Type system - -* GPR#556, PR#7215, PR#7231, PR#6738: Add a new check that 'let rec' bindings - are well formed. - (Jeremy Yallop, reviews by Stephen Dolan, Gabriel Scherer, Leo - White, and Damien Doligez) OCaml 4.05.0 (13 Jul 2017): --------------------------- |