Movatterモバイル変換


[0]ホーム

URL:


All Releases

OCaml 4.06.0

This page describes OCaml version4.06.0, released on 2017-11-03.

Opam Switches

This release is available as multipleOPAM switches:

  • 4.06.0 — Official 4.06.0 release
  • 4.06.0+afl — Official 4.06.0 release with afl-fuzz instrumentation
  • 4.06.0+default-unsafe-string — Official 4.06.0 release without safestrings by default
  • 4.06.0+flambda — Official 4.06.0 release with flambda activated
  • 4.06.0+force-safe-string — Official 4.06.0 release with -safe-string enabled.
  • 4.06.0+fp — Official 4.06.0 release with frame-pointers
  • 4.06.0+fp+flambda — Official 4.06.0 release with frame-pointers andflambda activated

What's new

Some of the highlights in release 4.06 are:

  • Strings (typestring) are now immutable by default. In-placemodification must use the typebytes of byte sequences, which isdistinct fromstring. This corresponds to the-safe-stringcompile-time option, which was introduced in OCaml 4.02 in 2014, andwhich is now the default.

  • Object types can now extend a previously-defined object type, as in<t; a: int>.

  • Destructive substitution over module signatures can now express moresubstitutions, such asS with type M.t := type-exprandS with module M.N := path.

  • Users can now define operators that look like array indexing, e.g.let ( .%() ) = List.nth in [0; 1; 2].%(1)

  • New escape\u{XXXX} in string literals, denoting the UTF-8encoding of the Unicode code pointXXXX.

  • Full Unicode support was added to the Windows runtime system. Inparticular, file names can now contain Unicode characters.

  • An alternate register allocator based on linear scan can be selectedwithocamlopt -linscan. It reduces compilation time compared withthe default register allocator.

  • The Num library for arbitrary-precision integer and rationalarithmetic is no longer part of the core distribution and can befound as a separate OPAM package.

For a comprehensive list of changes and details on all new features,bug fixes, optimizations, etc., please consult thechangelog.

Source distribution

  • Sourcetarball(.tar.gz) for compilation under Unix (including Linux and MacOS X)and Microsoft Windows (including Cygwin).
  • Also available in.zipformat.
  • OPAM is a source-based distribution ofOCaml and many companion libraries and tools. Compilation andinstallation are automated by powerful package managers.
  • The official development repo is hosted onGitHub.

TheINSTALL fileof the distribution provides detailed compilation and installationinstructions -- see also theWindows releasenotes forinstructions on how to build under Windows.

Alternative Compilers

Additionally, the following projects allow you to compile OCaml code totargets traditionally associated with other languages:

  • Js_of_ocaml is a stable OCamlto JavaScript compiler.
  • BuckleScript is anewer OCaml to JavaScript compiler. See itswiki foran explanation of how it differs from js_of_ocaml.
  • OCaml-java is a stable OCaml toJava compiler.

User's manual

The user's manual for OCaml can be:

Changes

This is thechangelog.

(Changes that can break existing programs are marked with a "*")

Language features:

  • MPR#6271,MPR#7529,GPR#1249:Supportlet open M in ...in class expressions and class type expressions.
    (Alain Frisch, reviews by Thomas Refis and Jacques Garrigue)

  • GPR#792:fix limitations of destructive substitutions, byallowingS with type t := type-expr,S with type M.t := type-expr,S with module M.N := path.
    (Valentin Gatien-Baron, review by Jacques Garrigue and Leo White)

  • GPR#1064,GPR#1392:extended indexing operators, add a new class ofuser-defined indexing operators, obtained by adding at least oneoperator character after the dot symbol to the standard indexingoperators: e,g.%(),.?[],.@{}<-:

    let(.%())=List.nthin[0;1;2].%(1)

    After this change, functions or methods with an explicit polymorphic typeannotation and of which the first argument is optional now requires a spacebetween the dot and the question mark,e.g.<f:'a.?opt:int->unit> must now be written<f:'a. ?opt:int->unit>.
    (Florian Angeletti, review by Damien Doligez and Gabriel Radanne)

  • GPR#1118:Support inherited field in object type expression

    typet=<m:int>typeu=<n:int;t;k:int>

    (Runhang Li, reivew by Jeremy Yallop, Leo White, Jacques Garrigue,and Florian Angeletti)

  • GPR#1232:Support Unicode character escape sequences in stringliterals via the\u{X+} syntax. These escapes are substituted by theUTF-8 encoding of the Unicode character.
    (Daniel Bünzli, review by Damien Doligez, Alain Frisch, XavierLeroy and Leo White)
  • GPR#1247:M.(::) construction for expressionsand patterns (plus fix printing of (::) in the toplevel)
    (Florian Angeletti, review by Alain Frisch, Gabriel Scherer)
  • GPR#1252:The default mode is now safe-string, can be overriddenat configure time or at compile time.(SeeGPR#1386below for the configure-time options)This breaks the code that uses thestring type as mutablestrings (instead ofBytes.t, introduced by 4.02 in 2014).
    (Damien Doligez)

  • GPR#1253:Private extensible variantsThis change breaks code relying on the undocumented ability to exportextension constructors for abstract type in signature. Briefly,

    moduletypeS=sigtypettypet += Aend

    must now be written

    moduletypeS=sigtypet =private ..typet += Aend

    (Leo White, review by Alain Frisch)

  • GPR#1333:turn off warning 40 by default(Constructor or label name used out of scope)
    (Leo White)

  • GPR#1348:accept anonymous type parameters inwith constraints:S with type _ t = int.
    (Valentin Gatien-Baron, report by Jeremy Yallop)

Type system

  • MPR#248,GPR#1225:unique names for weak type variables

    #ref[];;-: '__weak1listref={contents=[]}

(Florian Angeletti, review by Frédéric Bour, Jacques Garrigue,Gabriel Radanne and Gabriel Scherer)

  • MPR#6738,MPR#7215,MPR#7231,GPR#556:Add a new check thatlet recbindings are well formed.
    (Jeremy Yallop, reviews by Stephen Dolan, Gabriel Scherer, LeoWhite, and Damien Doligez)
  • GPR#1142:Mark assertions nonexpansive, so thatassert falsecan be used as a placeholder for a polymorphic function.
    (Stephen Dolan)

Standard library:

  • MPR#1771,MPR#7309,GPR#1026:Add update to maps. Allows to update abinding in a map or create a new binding if the key had no binding

    valupdate:key->('a option->'a option)->'a t->'a t

    (Sébastien Briais, review by Daniel Buenzli, Alain Frisch andGabriel Scherer)

  • MPR#7515,GPR#1147:Arg.align now optionally uses the tabcharacter'\t' to separate the "unaligned" and "aligned" parts ofthe documentation string. If tab is not present, then space is usedas a fallback. Allows to have spaces in the unaligned part, which isuseful for Tuple options. (Nicolas Ojeda Bar, review by AlainFrisch and Gabriel Scherer)

  • GPR#615:Format, add symbolic formatters that output symbolicpretty-printing items. New fields have been added to theformatter_out_functions record, thus this change will break any codebuilding such record from scratch. When buildingFormat.formatter_out_functions values redefinining theout_spaces field,{ fmt_out_funs with out_spaces = f; } shouldbe replaced by{ fmt_out_funs with out_spaces = f; out_indent = f; }to maintain the old behavior.
    (Richard Bonichon and Pierre Weis, review by Alain Frisch, originalrequest by Spiros Eliopoulos inGPR#506)

  • GPR#943:Fixed the divergence of the Pervasives module between thestdlib and threads implementations. In rare circumstances this canchange the behavior of existing applications: the implementation ofPervasives.close_out used when compiling with thread support wasinconsistent with the manual. It will now not suppress exceptionsescapingPervasives.flush anymore. Developers who want the oldbehavior should usePervasives.close_out_noerr instead. The stdlibimplementation, used by applications not compiled with threadsupport, will now only suppressSys_error exceptions inPervasives.flush_all. This should allow exceedingly unlikelyassertion exceptions to escape, which could help reveal bugs in thestandard library.
    (Markus Mottl, review by Hezekiah M. Carty, Jeremie Dimino, DamienDoligez, Alain Frisch, Xavier Leroy, Gabriel Scherer and MarkShinwell)

  • GPR#1034:List.init : int -> (int -> 'a) -> 'a list
    (Richard Degenne, review by David Allsopp, Thomas Braibant, FlorianAngeletti, Gabriel Scherer, Nathan Moreau, Alain Frisch)

  • GRP#1091 Add theUchar.{bom,rep} constants.
    (Daniel Bünzli, Alain Frisch)

  • GPR#1091:AddBuffer.add_utf_{8,16le,16be}_uchar to encodeUchar.tvalues to the corresponding UTF-X transformation formats inBuffer.tvalues.
    (Daniel Bünzli, review by Damien Doligez, Max Mouratov)

  • GPR#1175:Bigarray, add achange_layout function to each Array[N]submodules.
    (Florian Angeletti)

  • GPR#1306:In the MSVC and Mingw ports,Sys.rename src dst nolonger fails if filedst exists, but replaces it with filesrc,like in the other ports.
    (Xavier Leroy)
  • GPR#1314:Format, use the optional width informationwhen formatting a boolean:"%8B", "%-8B" for example
    (Xavier Clerc, review by Gabriel Scherer)

  • c9cc0f25138ce58e4f4e68c4219afe33e2a9d034:Resurrect tabulation boxesin module Format. Rewrite/extend documentation of tabulation boxes.
    (Pierre Weis)

Other libraries:

  • MPR#7564,GPR#1211: Allow forward slashes in the target of symbolic linkscreated byUnix.symlink under Windows.(Nicolas Ojeda Bar, review by David Allsopp)
  • MPR#7640,GPR#1414: reimplementation ofUnix.execvpe to fix issueswith the 4.05 implementation. The main issue is that the currentdirectory was always searched (last), even if the current directoryis not listed in the PATH.
    (Xavier Leroy, report by Louis Gesbert and Arseniy Alekseyev,review by Ivan Gotovchits)
  • GPR#997,GPR#1077: DeprecateBigarray.*.map_file and addUnix.map_file as a first step towards moving Bigarray to the stdlib
    (Jérémie Dimino and Xavier Leroy)
  • GPR#1178: remove the Num library for arbitrary-precision arithmetic.It now lives as a separate project https://github.com/ocaml/numwith an OPAM package callednum.
    (Xavier Leroy)
  • GPR#1217: RestrictUnix.environment in privileged contexts; addUnix.unsafe_environment.
    (Jeremy Yallop, review by Mark Shinwell, Nicolas Ojeda Bar,Damien Doligez and Hannes Mehnert)

  • GPR#1321: ReimplementUnix.isatty on Windows. It no longer returnstrue for the null device.
    (David Allsopp)

Compiler user-interface and warnings:

  • MPR#7361,GPR#1248: supportocaml.warning in all attributecontexts, and arrange so thatocaml.ppwarning is correctly scopedby surroundingocaml.warning attributes.
    (Alain Frisch, review by Florian Angeletti and Thomas Refis)

  • MPR#7444,GPR#1138: trigger deprecation warning when a "deprecated"attribute is hidden by signature coercion.
    (Alain Frisch, report by bmillwood, review by Leo White)

  • MPR#7472: ensure.cmi files are created atomically,to avoid corruption of.cmi files produced simultaneously by a runof ocamlc and a run of ocamlopt.
    (Xavier Leroy, from a suggestion by Gerd Stolpmann)

  • MPR#7514,GPR#1152: add-dprofile option, similar to-dtimings butalso displays memory allocation and consumption.The corresponding addition of a new compiler-internalProfile module may affect some users ofcompilers-libs/ocamlcommon (by creating module conflicts).
    (Valentin Gatien-Baron, report by Gabriel Scherer)
  • MPR#7620,GPR#1317:Typecore.force_delayed_checks does not runwith-i option.
    (Jacques Garrigue, report by Jun Furuse)

  • MPR#7624: handle warning attributes placed on let bindings.
    (Xavier Clerc, report by dinosaure, review by Alain Frisch)

  • GPR#896:-compat-32 is now taken into account when building.cmo/.cma.
    (Hugo Heuzard)

  • GPR#948: the compiler now reports warnings-as-errors by prefixingthem with "Error (warning ..):", instead of "Warning ..:" anda trailing "Error: Some fatal warnings were triggered" message.
    (Valentin Gatien-Baron, review by Alain Frisch)

  • GPR#1032: display the output of-dtimings as a hierarchy.
    (Valentin Gatien-Baron, review by Gabriel Scherer)

  • GPR#1114,GPR#1393,GPR#1429: refine the (ocamlc -config)information on C compilers: the variables{bytecode,native}_c_compiler are deprecated (the distinction isnow mostly meaningless) in favor of a singlec_compiler variablecombined withocaml{c,opt}_cflags andocaml{c,opt}_cppflags.
    (Sébastien Hinderer, Jeremy Yallop, Gabriel Scherer, review byAdrien Nader and David Allsopp)

  • GPR#1189: allow MSVC ports to use-l option inocamlmklib.
    (David Allsopp)
  • GPR#1332: fix ocamlc handling of-output-complete-obj.
    (François Bobot)

  • GPR#1336:-thread and-vmthread option information is propagated toPPX rewriters.
    (Jun Furuse, review by Alain Frisch)

Code generation and optimizations:

  • MPR#5324,GPR#375: An alternative Linear Scan register allocator forocamlopt, activated with the-linscan command-line flag. Thisallocator represents a trade-off between worse generated codeperformance for higher compilation speed (especially interesting insome cases graph coloring is necessarily quadratic).
    (Marcell Fischbach and Benedikt Meurer, adapted by Nicolas OjedaBar, review by Nicolas Ojeda Bar and Alain Frisch)

  • MPR#6927,GPR#988: On macOS, when compiling bytecode stubs, plugins,and shared libraries through-output-obj, generate dylibs instead ofbundles.
    (whitequark)

  • MPR#7447,GPR#995: incorrect code generation for nested recursivebindings.
    (Leo White and Jeremy Yallop, report by Stephen Dolan)

  • MPR#7501,GPR#1089: Consider arrays of length zero as constantswhen using Flambda.
    (Pierre Chambart, review by Mark Shinwell and Leo White)

  • MPR#7531,GPR#1162: Erroneous code transformation at partialapplications.
    (Mark Shinwell)

  • MPR#7614,GPR#1313: Ensure that inlining does not depend on the orderof symbols (flambda).
    (Leo White, Xavier Clerc, report by Alex, review by Gabriel Schererand Pierre Chambart)

  • 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)

  • MPR#7642,GPR#1411: ARM port: wrong register allocation for integermultiply on ARMv4 and ARMv5; possible wrong register allocation forfloating-point multiply and add on VFP and for floating-pointnegation and absolute value on soft FP emulation.
    (Xavier Leroy, report by Stéphane Glondu and Ximin Luo,review and additional sightings by Mark Shinwell)

  • GPR#659: Remove support for SPARC native code generation.
    (Mark Shinwell)
  • 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)

  • GPR#1143: tweaked several allocation functions in the runtime bychecking for likely conditions before unlikely ones and eliminatingsome 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 functionsearlier in the compiler pipeline; correctly propagate[@@inline]attributes on such functors; mark functor coercion veneers asstubs.
    (Mark Shinwell, review by Pierre Chambart and Leo White)

  • GPR#1195: Merge functions based on partiality rather thanParmatch.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 combinedallocations.
    (report and initial fix by Steve Walk, review and final fix byXavier Leroy)

  • GPR#1271: Don't generate Ialloc instructions for closures that exceedMax_young_wosize; instead allocate them on the major heap. (RelatedtoGPR#1250.)
    (Mark Shinwell)

  • GPR#1294: Add a configure-time option to remove the dynamic float arrayoptimization and add a floatarray type to let the user choose when toflatten float arrays. Note that float-only records are unchanged: theyare 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 acrossallocations.
    (Mark Shinwell, Xavier Clerc, report and initial debugging byValentin Gatien-Baron)

  • GPR#1323: make sure that frame tables are generated in the datasection and not in the read-only data section, as was the casebefore in the PPC and System-Z ports. This avoids relocations inthe text segment of shared libraries and position-independentexecutables generated by ocamlopt.
    (Xavier Leroy, review by Mark Shinwell)

  • GPR#1330: when generating dynamically-linkable code on AArch64, alwaysreference symbols (even locally-defined ones) through the GOT.
    (Mark Shinwell, review by Xavier Leroy)

Tools:

  • MPR#1956,GPR#973: tools/check-symbol-names checks for globallylinked names not namespaced withcaml_.(Stephen Dolan)

  • MPR#6928,GPR#1103: ocamldoc, do not introduce an empty<h1> inindex.html when no-title has been provided.
    (Pierre Boutillier)

  • MPR#7048: ocamldoc, in-latex mode, don't escape Latin-1 accentedletters.
    (Xavier Leroy, report by Hugo Herbelin)

  • MPR#7351: ocamldoc, use semantic tags rather than<br> tags in the htmlbackend.
    (Florian Angeletti, request and review by Daniel Bünzli )

  • MPR#7352,MPR#7353: ocamldoc, better paragraphs in html output.
    (Florian Angeletti, request by Daniel Bünzli)

  • MPR#7363,GPR#830: ocamldoc, start heading levels at{1 not{2 or{6.This change modifies the mapping between ocamldoc heading level andhtml heading level, breaking custom css style for ocamldoc.
    (Florian Angeletti, request and review by Daniel Bünzli)

  • MPR#7478,GPR#1037: ocamldoc, do not use as a module preamble documentationcomments that occur after the first module element. This change may breakexisting documentation. In particular, module preambles must now come beforeanyopen statement.
    (Florian Angeletti, review by David Allsopp and report by Daniel Bünzli)

  • MPR#7521,GPR#1159: ocamldoc, end generated latex file with a newline.
    (Florian Angeletti)

  • MPR#7575,GPR#1219: Switch compilers from-no-keep-locsto-keep-locs by default: produced.cmi files will contain locations.This provides better error messages. Note that, as a consequence,.cmi digests now depend on the file path as given to thecompiler.
    (Daniel Bünzli)

  • MPR#7610,GPR#1346:caml.el (the Emacs editing mode) was cleaned upand made compatible with Emacs 25.
    (Stefan Monnier, Christophe Troestler)

  • MPR#7635,GPR#1383: ocamldoc, add an identifier to moduleand module type elements.
    (Florian Angeletti, review by Yawar Amin and Gabriel Scherer)

  • GPR#681,GPR#1426: Introduce ocamltest, a new test driver for theOCaml compiler testsuite.
    (Sébastien Hinderer, review by Damien Doligez)

  • GPR#1012: ocamlyacc, fix parsing of raw strings and nested comments,as well as the handling of' characters in identifiers.
    (Demi Obenour)

  • GPR#1045: ocamldep, add a-shared option to generate dependenciesfor native plugin files (i.e.,.cmxs files).
    (Florian Angeletti, suggestion by Sébastien Hinderer)

  • GPR#1078: add a subcommand-depend toocamlc andocamlopt, tobehave as ocamldep. Should be used mostly to replaceocamldep intheboot directory to reduce its size in the future.
    (Fabrice Le Fessant)

  • GPR#1036:ocamlcmt (tools/read_cmt) is installed, converts.cmtto.annot.
    (Fabrice Le Fessant)

  • GPR#1180: Add support for recording numbers of direct and indirectcalls over the lifetime of a program when using Spacetimeprofiling.
    (Mark Shinwell)

  • GPR#1457, ocamldoc: restore label for exception in the LaTeX backend(omitted since 4.04.0).
    (Florian Angeletti, review by Gabriel Scherer)

Toplevel:

  • MPR#7570: remove unusable-plugin option from the toplevel.
    (Florian Angeletti)

  • GPR#1041:-nostdlib no longer ignored by toplevel.
    (David Allsopp, review by Xavier Leroy)

  • GPR#1231: improved printing of unicode texts in the toplevel,unlessOCAMLTOP_UTF_8 is set to false.
    (Florian Angeletti, review by Daniel Bünzli, Xavier Leroy andGabriel Scherer)

Runtime system:

  • GPR#71: The runtime can now be shut down gracefully by means of thenewcaml_shutdown andcaml_startup_pooled functions. The newcflag inOCAMLRUNPARAM enables shutting the runtime properly onprocess exit.
    (Max Mouratov, review and discussion by Damien Doligez, GabrielScherer, Mark Shinwell, Thomas Braibant, Stephen Dolan, PierreChambart, François Bobot, Jacques Garrigue, David Allsopp, and AlainFrisch)

  • GPR#938,GPR#1170,GPR#1289: Stack overflow detection on 64-bitWindows.
    (Olivier Andrieu, tweaked by David Allsopp)

  • GPR#1070,GPR#1295: enable gcc typechecking forcaml_alloc_sprintf,caml_gc_message. Makecaml_gc_message a variadic function. Fixmanycaml_gc_message format strings.
    (Olivier Andrieu, review and 32bit fix by David Allsopp)

  • GPR#1073: Remove statically allocated compare stack.
    (Stephen Dolan)

  • GPR#1086: inSys.getcwd, just fail instead of callinggetwd()ifHAS_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)

  • GPR#1309: open files withO_CLOEXEC (or equivalent) incaml_sys_open, thus unifying the semantics between Unix andWindows and also eliminating race condition on Unix.
    (David Allsopp, report by Andreas Hauptmann)
  • GPR#1326: Enable use of CFI directives in AArch64 and ARM runtimesystems' assembly code (asmrun/arm64.S). Add CFI directives toenable unwinding throughcaml_c_call andcaml_call_gc withcorrect termination of unwinding atmain.
    (Mark Shinwell, review by Xavier Leroy and Gabriel Scherer, withthanks to Daniel Bünzli and Fu Yong Quah for testing)

  • GPR#1338: Add-g for bytecode runtime system compilation.
    (Mark Shinwell)

  • GPR#1416,GPR#1444: switch the Windows 10 Console to UTF-8encoding.
    (David Allsopp, reviews by Nicolás Ojeda Bär and Xavier Leroy)

Manual and documentation:

  • MPR#6548: remove obsolete limitation in the description of privatetype 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 referencemanual and tutorial.
    (Florian Angeletti)

  • MPR#6709: document the associativity and precedence level ofpervasive 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 conversionspecification"%g" with the ISO C90 description.
    (Florian Angeletti, suggestion by Armaël Guéneau)

  • MPR#7551,GPR#1194 : make the final";;" potentially optional incaml_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#594: New chapter on polymorphism troubles:weakly polymorphic types, polymorphic recursion,and higher-rankedpolymorphism.
    (Florian Angeletti, review by Damien Doligez, Gabriel Scherer,and Gerd Stolpmann)

  • 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 macOSassembler.
    (Mark Shinwell)

  • MPR#7639,GPR#1371: fix configure script for correct detection ofint64 alignment on Mac OS X 10.13 (High Sierra) and above; fix bug inconfigure script relating to such detection.
    (Mark Shinwell, report by John Whitington, review by Xavier Leroy)

  • GPR#558: enable shared library and natdynlink support on more Linuxplatforms.
    (Felix Janda, Mark Shinwell)

  • GPR#1104: remove support for the NeXTStep platform.
    (Sébastien Hinderer)
  • GPR#1130: enable detection of IBM XL C compiler (one need to runconfigure with-cc <path to xlc compiler>). Enable shared librarysupport for bytecode executables on AIX/xlc (tested on AIX 7.1, XL C12). To enable 64-bit, run bothconfigure andmake world withOBJECT_MODE=64.
    (Konstantin Romanov, Enrique Naudon)

  • GPR#1203: speed up the manual build by usingocamldoc.opt.
    (Gabriel Scherer, review by Florian Angeletti)

  • GPR#1214: hardenconfig/Makefile against# characters inPREFIX.
    (Gabriel Scherer, review by David Allsopp and Damien Doligez)

  • GPR#1216: move Compplugin and friends fromBYTECOMP toCOMP.
    (Leo White, review by Mark Shinwell)

  • GPR#1242: disable C plugins loading by default.
    (Alexey Egorov)
  • GPR#1275: correct configure test for Spacetime availability.
    (Mark Shinwell)

  • GPR#1278: discover presence of<sys/shm.h> during configure forafl runtime.
    (Hannes Mehnert)

  • GPR#1386: provide configure-time options to fine-tune the safe-stringoptions and default settings changed byGPR#1525.

    The previous configure option-safe-string is nowrenamed-force-safe-string.

    At configure-time,-force-safe-string forces all module to useimmutable strings (this disables the per-file, compile-time-unsafe-string option). The new default-(un)safe-string optionslet you set the default choice for the per-file compile-timeoption. (The newGPR#1252 behavior corresponds to having-default-safe-string, while 4.05 and older had-default-unsafe-string).

    (Gabriel Scherer, review by Jacques-Pascal Deplaix and Damien Doligez)

  • GPR#1409: Fix to enable NetBSD/powerpc to work.
    (Håvard Eidnes)

Internal/compiler-libs changes:

  • MPR#6826,GPR#828,GPR#834: improve compilation time foropen.
    (Alain Frisch, review by Frédéric Bour and Jacques Garrigue)

  • MPR#7127,GPR#454,GPR#1058: in toplevel, print bytes and stripstrings longer than the size specified by theprint_lengthdirective.
    (Fabrice Le Fessant, initial PR by Junsong Li)

  • GPR#406: remove polymorphic comparison forTypes.constructor_tagin compiler.
    (Dwight Guth, review by Gabriel Radanne, Damien Doligez, GabrielScherer, Pierre Chambart, Mark Shinwell)

  • GRP#1119: Change Set (private) type to inline records.
    (Albin Coquereau)

  • GPR#1127: moveconfig/{m,s}.h tobyterun/caml and install them.User code should not have to include them directly since they areincluded by other header files. Previously{m,s}.h were notinstalled but they were substituted intocaml/config.h; they arenow just#include-d by this file. This may break some scriptsrelying on the (unspecified) presence of certain#define inconfig.h instead ofm.h ands.h — they can be rewritten to tryto grep those files if they exist.
    (Sébastien Hinderer)
  • GPR#1281: avoid formatter flushes inside exported printers inLocation.
    (Florian Angeletti, review by Gabriel Scherer)

Bug fixes

  • MPR#5927: Type equality broken for conjunctive polymorphic varianttags.
    (Jacques Garrigue, report by Leo White)

  • MPR#6329,GPR#1437: Introduce padding word before "data_end" symbolsto ensure page table tests work correctly on an immediately precedingblock of zero size.
    (Mark Shinwell, review by Xavier Leroy)

  • MPR#6587: only elide Pervasives from printed type paths inunambiguous context.
    (Florian Angeletti and Jacques Garrigue)

  • MPR#6934:nonrec misbehaves with GADTs.
    (Jacques Garrigue, report by Markus Mottl)

  • MPR#7070,GPR#1139: Unexported values can cause non-generalisablevariables error.
    (Leo White)

  • MPR#7261: Warn on type constraints in GADT declarations.
    (Jacques Garrigue, report by Fabrice Le Botlan)

  • MPR#7321: Private type in signature clashes with type definition viafunctor instantiation.
    (Jacques Garrigue, report by Markus Mottl)

  • MPR#7372,GPR#834: fix type-checker bug with GADT and inlinerecords.
    (Alain Frisch, review by Frédéric Bour and Jacques Garrigue)

  • MPR#7344: Inconsistent behavior with type annotations onlet.
    (Jacques Garrigue, report by Leo White)

  • MPR#7468: possible GC problem incaml_alloc_sprintf.
    (Xavier Leroy, discovery by Olivier Andrieu)

  • MPR#7496: Fixed conjunctive polymorphic variant tags do not unifywith themselves.
    (Jacques Garrigue, report by Leo White)

  • MPR#7506:pprintast ignores attributes in tails of a list.
    (Alain Frisch, report by Kenichi Asai and Gabriel Scherer)

  • MPR#7513:List.compare_length_with mishandles negative numbers /overflow.
    (Fabrice Le Fessant, report by Jeremy Yallop)

  • MPR#7519: Incorrect rejection of program due to faux scope escape.
    (Jacques Garrigue, report by Markus Mottl)

  • MPR#7540,GPR#1179: Fixed setting of breakpoints within packed modulesforocamldebug.
    (Hugo Herbelin, review by Gabriel Scherer, Damien Doligez)

  • MPR#7543: short-pathsprinttyp can fail on packed type errormessages.
    (Florian Angeletti)

  • MPR#7553,GPR#1191: Prevent repeated warnings with recursivemodules.
    (Leo White, review by Josh Berdine and Alain Frisch)

  • MPR#7563,GPR#1210: code generation bug when a module alias andan extension constructor have the same name in the same module.
    (Gabriel Scherer, report by Manuel Fähndrich,review by Jacques Garrigue and Leo White)

  • MPR#7591,GPR#1257: on x86-64, frame table is not 8-aligned.
    (Xavier Leroy, report by Mantis user "voglerr", review by Gabriel Scherer)

  • MPR#7601,GPR#1320: It seems like a hidden non-generalized type variableremains in some inferred signatures, which leads to strange errors.
    (Jacques Garrigue, report by Mandrikin)

  • MPR#7609: use-after-free memory corruption if a program debuggedunder ocamldebug callsPervasives.flush_all.
    (Xavier Leroy, report by Paul Steckler, review by Gabriel Scherer)

  • MPR#7612,GPR#1345: afl-instrumentation bugfix for classes.
    (Stephen Dolan, review by Gabriel Scherer and David Allsopp)

  • MPR#7617,MPR#7618,GPR#1318: Ambiguous (mistakenly) type escaping thescope of its equation.
    (Jacques Garrigue, report by Thomas Refis)

  • MPR#7619,GPR#1387: position of the optional last semi-column not includedin the position of the expression (same behavior as for lists).
    (Christophe Raffalli, review by Gabriel Scherer)

  • MPR#7638: in the Windows Mingw64 port, multithreaded programs compiledto bytecode could crash when raising an exception from C code.This looks like a Mingw64 issue, which we work around with GCCbuiltins.
    (Xavier Leroy)

  • MPR#7656,GPR#1423: false 'unused type/constructor/value' alarmsin the 4.06 development version.
    (Alain Frisch, review by Jacques Garrigue, report by Jacques-Pascal Deplaix)

  • MPR#7657,GPR#1424: ensures correct call-by-value semantics wheneta-expanding functions to eliminate optional arguments.
    (Alain Frisch, report by sliquister, review by Leo White and JacquesGarrigue)

  • MPR#7658,GPR#1439: Fix Spacetime runtime system compilation with-force-safe-string.
    (Mark Shinwell, report by Christoph Spiel, review by Gabriel Scherer)

  • GPR#1155: Fix a race condition withWAIT_NOHANG on Windows.
    (Jérémie Dimino and David Allsopp)

  • GPR#1199: Pretty-printing formatting cleanup inpprintast.
    (Ethan Aubin, suggestion by Gabriel Scherer, review by David Allsopp,Florian Angeletti, and Gabriel Scherer)

  • GPR#1223: Fix corruption of the environment when using-short-pathswith the toplevel.
    (Leo White, review by Alain Frisch)

  • GPR#1243: Fixpprintast for#... infix operators.
    (Alain Frisch, report by Omar Chebib)

  • GPR#1324: ensure that flambda warning are printed only once.
    (Xavier Clerc)

  • GPR#1329: Prevent recursive polymorphic variant names.
    (Jacques Garrigue, fix suggested by Leo White)

  • GPR#1308: Only treat pure patterns as inactive.
    (Leo White, review by Alain Frisch and Gabriel Scherer)

  • GPR#1390: fix the[@@unboxed] type check to accept parametrizedtypes.
    (Leo White, review by Damien Doligez)

  • GPR#1407: Fixraw_spacetime_lib.
    (Leo White, review by Gabriel Scherer and Damien Doligez)


[8]ページ先頭

©2009-2025 Movatter.jp