Skip to content
This repository has been archived by the owner on Feb 8, 2024. It is now read-only.

Update dependency ocaml/ocaml to v4.14.0 #15

Merged
merged 1 commit into from Jul 14, 2022
Merged

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jul 14, 2022

Mend Renovate

This PR contains the following updates:

Package Update Change
ocaml/ocaml minor 4.2.0 -> 4.14.0

Release Notes

ocaml/ocaml

v4.14.0

Compare Source

Language features:
  • #​10462: Add attribute to produce a compiler error for polls.
    (Sadiq Jaffer, review by Mark Shinwell, Stephen Dolan
    and Guillaume Munch-Maccagnoni)

  • #​10437: Allow explicit binders for type variables.
    (Stephen Dolan, review by Leo White)

  • #​10441: Remove unnecessary parentheses surrounding immediate objects.
    Allow 'object ... end # f', 'f object ... end', etc.
    (Yan Dong, review by Nicolás Ojeda Bär, Florian Angeletti and Gabriel Scherer)

  • #​181, #​9760, #​10740: opt-in tail-modulo-cons (TMC) transformation
    let[@​tail_mod_cons] rec map f li = ...
    (Frédéric Bour, Gabriel Scherer, Basile Clément,
    review by Basile Clément and Pierre Chambart,
    tested by Konstantin Romanov)

Runtime system:
  • #​9391, #​9424: Fix failed assertion in runtime due to ephemerons set_ and
    blit_ function during Mark phase
    (François Bobot, reported by Stephen Dolan, reviewed by Damien Doligez)
  • #​10195, #​10680: Speed up GC by prefetching during marking
    (Stephen Dolan, review by Xavier Leroy, Guillaume Munch-Maccagnoni,
    Jacques-Henri Jourdan, Damien Doligez and Leo White)

  • #​10549: Stack overflow detection and naked pointers checking for ARM64
    (Xavier Leroy, review by Stephen Dolan)

  • #​10675: Emit deprecation warnings when old C runtime function names
    are used. This will break C stub code that uses these old names and
    treats warnings as errors. The workaround is to use the new names.
    (Xavier Leroy and David Allsopp, review by Sébastien Hinderer and
    Damien Doligez)
  • #​10698, #​10726: Free the alternate signal stack when the main OCaml
    code or an OCaml thread stops
    (Xavier Leroy, review by David Allsopp and Damien Doligez)

  • #​10730, 10731: Fix bug in Obj.reachable_words causing a slowdown when called
    multiple time (Alain Frisch, report by ygrek, review by Xavier Leroy)

  • #​10926: Rename the two internal Windows Unicode functions with caml_ prefix
    instead of win_.
    (David Allsopp, review by Kate Deplaix, Damien Doligez and Xavier Leroy)

Code generation and optimizations:
  • #​10578: Increase the number of integer registers used for
    parameter passing on PowerPC (16 registers) and on s390x (8 registers).
    (Xavier Leroy, review by Mark Shinwell)

  • #​10591, #​10615: Tune the heuristic for CSE of integer constants
    so as to avoid excessive CSE on compiler-generated constants
    and long register allocation times.
    (Xavier Leroy, report by Edwin Török, review by Nicolás Ojeda Bär)

  • #​10595: Tail calls with up to 64 arguments are guaranteed to be compiled
    as tail calls. To this end, memory locations in the domain state
    are used for passing arguments that do not fit in registers.
    (Xavier Leroy, review by Vincent Laviron)

  • #​10681: Enforce boolean conditions for the native backend
    (Vincent Laviron, review by Gabriel Scherer)

  • #​10719: Ensure that build_apply respects Lambda.max_arity
    (Stephen Dolan, review by Xavier Leroy)

  • #​10728: Ensure that functions are evaluated after their arguments
    (Stephen Dolan, review by Mark Shinwell)

  • #​10732: Ensure right-to-left evaluation of arguments in cmm_helpers
    (Greta Yorsh, review by Xavier Leroy)

Standard library:
  • #​10710: Add UTF tools, codecs and validations to the Uchar, Bytes and
    String modules.
    (Daniel Bünzli, review by Florian Angeletti, Nicolás Ojeda Bär, Alain
    Frisch and Gabriel Scherer)

  • #​10622: Annotate Uchar.t with immediate attribute
    (Hongbo Zhang, reivew by Gabriel Scherer and Nicolás Ojeda Bär)

  • #​7812, #​10475: Filename.chop_suffix name suff now checks that suff
    is actually a suffix of name and raises Invalid_argument otherwise.
    (Xavier Leroy, report by whitequark, review by David Allsopp)

  • #​10482: mark the Stream and Genlex modules as deprecated, in preparation
    for a future removal. These modules (without deprecation alert)
    are now provided by the camlp-streams library.
    (Xavier Leroy, review by Nicolás Ojeda Bär)

  • #​10526: add Random.bits32, Random.bits64, Random.nativebits
    (Xavier Leroy, review by Gabriel Scherer and François Bobot)
  • #​10568: remove Obj.marshal and Obj.unmarshal
    (these functions have been deprecated for a while and are superseded
    by the functions from module Marshal)
    (François Pottier, review by Gabriel Scherer and Kate Deplaix)
  • #​10545: Add In_channel and Out_channel modules.
    (Nicolás Ojeda Bär, review by Daniel Bünzli, Simon Cruanes, Gabriel Scherer,
    Guillaume Munch-Maccagnoni, Alain Frisch and Xavier Leroy)

  • #​10538: add Out_channel.set_buffered and Out_channel.is_buffered to control
    the buffering mode of output channels.
    (Nicolás Ojeda Bär, review by John Whitington, Daniel Bünzli, David Allsopp
    and Xavier Leroy)

  • #​10583, #​10998: Add over 40 new functions in Seq.
    (François Pottier and Simon Cruanes, review by Nicolás Ojeda Bär,
    Daniel Bünzli, Naëla Courant, Craig Ferguson, Wiktor Kuchta,
    Xavier Leroy, Guillaume Munch-Maccagnoni, Raphaël Proust, Gabriel Scherer
    and Thierry Martinez)
  • #​10596, #​10978: Add with_open_bin, with_open_text and with_open_gen to
    In_channel and Out_channel. Also, add In_channel.input_all.
    (Nicolás Ojeda Bär, review by Daniel Bünzli, Jérémie Dimino, Damien Doligez
    and Xavier Leroy)

  • #​10658: add detailed information about the current version of OCaml
    to the Sys module of the standard library.
    (Sébastien Hinderer, review by Damien Doligez, Gabriel Scherer, David
    Allsopp, Nicolás Ojeda Bär, Vincent Laviron)

  • #​10642: On Windows, Sys.remove and Unix.unlink now remove symlinks
    to directories instead of raising EACCES. Introduce
    caml/winsupport.h to hold more common code between the runtime,
    lib-sys, and win32unix.
    (Antonin Décimo, review by David Allsopp and Xavier Leroy)

  • #​10737: add new ephemeron API for forward compatibility with Multicore
    OCaml.
    (Damien Doligez, review by Stephen Dolan)

  • #​10786: The implementation of Complex.norm now uses Float.hypot.
    (Christophe Troestler, review by David Allsopp and Xavier Leroy)

Other libraries:
  • #​10192: Add support for Unix domain sockets on Windows and use them
    to emulate Unix.socketpair (only available on Windows 1803+)
    (Antonin Décimo, review by David Allsopp)

  • #​10469: Add Thread.set_uncaught_exception_handler and
    Thread.default_uncaught_exception_handler.
    (Enguerrand Decorne, review by David Allsopp)

  • #​10697: Bindings of dup and dup2 in win32unix now correctly call
    WSADuplicateSocket on sockets instead of DuplicateHandle.
    (Antonin Décimo, review by Xavier Leroy and Nicolás Ojeda Bär)

  • #​10926, #​11336: Ensure all C functions in the Unix library are prefixed with
    caml_.
    (David Allsopp, review by Kate Deplaix, Damien Doligez and Xavier Leroy)
  • #​10951: Introduce the Thread.Exit exception as an alternative way to
    terminate threads prematurely. This alternative way will become
    the standard way in 5.0.
    (Xavier Leroy, review by Florian Angeletti)
Tools:
  • #​9701: Release bytecode only after collecting backtrace information
    for exceptions, same for dynamic loaded code compiled from toplevel on
    ocamlnat.
    (Renato Alencar, reported by Krzysztof Leśniak, reviewed by Gabriel Scherer)

  • #​10839: Fix regression of #show when printing class type
    (Élie Brami, review by Florian Angeletti)

  • #​3959, #​7202, #​10476: ocaml, in script mode, directive errors
    (#use "missing_file";;) use stderr and exit with an error.
    (Florian Angeletti, review by Gabriel Scherer)

  • #​10438: add a new toplevel cli argument -e <script> to
    run script passed to the toplevel.
    (Pavlo Khrystenko, review by Gabriel Scherer)

  • #​10524: Directive argument type error now shows expected and received type.
    (Wiktor Kuchta, review by Gabriel Scherer)

  • #​10560: Disable colors if the env variable NO_COLOR is set. If
    OCAML_COLOR is set, its setting takes precedence over NO_COLOR.
    (Nicolás Ojeda Bär, report by Gabriel Scherer, review by Daniel Bünzli,
    Gabriel Scherer and David Allsopp)

  • #​10565: Toplevel value printing: truncate strings only after 8 bytes.
    (Wiktor Kuchta, review by Xavier Leroy)

  • #​10527: Show "#help;; for help" at toplevel startup
    (Wiktor Kuchta, review by David Allsopp and Florian Angeletti)

  • #​10846: add the -shape command-line option to ocamlobjinfo. When reading a
    cmt file, shape information will only be shown if that option is used.
    (Ulysse Gérard, review by Florian Angeletti)

Debugging:
  • #​10517, #​10594: when running ocamldebug on a program linked with the
    threads library, don't fail immediately; instead, allow debugging
    until the program creates a thread for the first time, then fail cleanly.
    (Xavier Leroy, report by @​anentropic, review by Gabriel Scherer)

  • #​9621: Pack the ocamldebug modules to minimize clashes
    (Raphael Sousa Santos, review by Vincent Laviron and Gabriel Scherer)

Manual and documentation:
  • #​7812, #​10475: reworded the description of the behaviors of
    float->int conversions in case of overflow, and of iterators
    in case of concurrent modifications.
    (Xavier Leroy, report by whitequark, review by David Allsopp)

  • #​8697, #​10666: add M, m, n options of the OCAMLRUNPARAM to manual and man page
    for ocamlrun command line options
    (Dong An and Anukriti Kumar, review by David Allsopp, Gabriel Scherer
    and Damien Doligez)

  • #​10281, #​10685: Add description of C compiler on macOS and Windows platforms.
    (Dong An, review by Xavier Leroy and David Allsopp)

  • #​10397: Document exceptions raised by Unix module functions on Windows
    (Martin Jambon, review by Daniel Bünzli, David Alsopp, Damien Doligez,
    Xavier Leroy, and Florian Angeletti)

  • #​10589: Fix many typos (excess/inconsistent spaces) in the HTML manual.
    (Wiktor Kuchta, review by Florian Angeletti)

  • #​10605: manual, name few css classes to ease styling and maintainability.
    (Florian Angeletti, review by Wiktor Kuchta and Gabriel Scherer)

  • #​10668, #​10669: the changelog (this file), LICENSE and README files are now
    installed as part of the distribution. The destination directory can be
    customized using the --docdir argument to ./configure.
    (Nicolás Ojeda Bär, report by Daniel Bünzli, review by David Allsopp,
    Sébastien Hinderer, and Daniel Bünzli)

  • #​10671, #​10672: webman: Fix misalignments in unordered lists by changing the
    CSS for coloring bullets
    (Wiktor Kuchta, review by Florian Angeletti)

  • #​11107: Lifted comments in the Parsetree module into actual documentation.
    (Paul-Elliot Anglès d'Auriac, review by Florian Angeletti)

  • #​11120, #​11133: man pages, add missing warning entries and add mnemonic names
    to the list of warnings.
    (Florian Angeletti, report by Kate Deplaix, review by Gabriel Scherer)

Compiler user-interface and warnings:
  • #​10328, #​10780: Give more precise error when disambiguation could not
    possibly work.
    (Leo White, review by Gabriel Scherer and Florian Angeletti)

  • #​10361: Improve error messages for mismatched record and variant
    definitions.
    (Florian Angeletti, review by Gabriel Radanne and Gabriel Scherer)

  • #​10407: Produce more detailed error messages that contain full error traces
    when module inclusion fails.
    (Antal Spector-Zabusky, review by Florian Angeletti)

  • #​10531: add naked_pointers to ocamlc -config exporting NAKED_POINTERS from
    Makefile.config.
    (Damien Doligez, review by Mark Shinwell and Gabriel Scherer)

  • #​9116, #​9118, #​10582: Fix single-line source highlighting in the
    presence of tabs
    (Armaël Guéneau, review by Gabriel Scherer,
    split off from #​9118 by Kate Deplaix, report by Ricardo M. Correia)

  • #​10488: Improve type variable name generation and recursive type detection
    when printing type errors; this ensures that the names given to type variables
    are always reused in the following portion of the trace and also removes
    spurious as 'as in types.
    (Antal Spector-Zabusky, review by Florian Angeletti)

  • #​10794: Clarify warning 57 (Ambiguous or-pattern variables under guard)
    (Wiktor Kuchta, review by Gabriel Scherer)

Internal/compiler-libs changes:
  • #​1599: add unset directive to ocamltest to clear environment variables before
    running tests.
    (David Allsopp, review by Damien Doligez and Sébastien Hinderer)

  • #​8516: Change representation of class signatures
    (Leo White, review by Thomas Refis)

  • #​9444: -dtypedtree, print more explictly extra nodes in pattern ast.
    (Frédéric Bour, review by Gabriel Scherer)

  • #​10337: Normalize type_expr nodes on access
    One should now use accessors such as get_desc and get_level to access fields
    of type_expr, rather than calling manually Btype.repr (which is now hidden
    in Types.Transient_expr).
    (Jacques Garrigue and Takafumi Saikawa,
    review by Florian Angeletti and Gabriel Radanne)

  • #​10474: Force normalization on access to row_desc
    Similar to #​10337. Make row_desc an abstract types, with constructor
    create_row and accessors defined in Types rather than Btype.
    A normalized view row_desc_repr is provided for convenience.
    (Jacques Garrigue and Takafumi Saikawa,
    review by Leo White and Florian Angeletti)

  • #​10541: Make field_kind and commutable abstract, enforcing correct access
    (Jacques Garrigue and Takafumi Saikawa,
    review by Thomas Refis and Florian Angeletti)

  • #​10575: add a -dump-dir flag, which redirects all debugging printer
    (-dprofile, -dlambda, ...) to the target directory
    (Florian Angeletti, review by Thomas Refis and Gabriel Scherer)

  • #​10627: Make row_field abstract
    Completes #​10474 by making row_field abstract too.
    An immutable view row_field_view is provided, and one converts between it
    and row_field via inj_row_field and row_field_repr.
    (Jacques Garrigue and Takafumi Saikawa, review by Florian Angeletti)
  • #​10433: Remove the distinction between 32-bit aligned and 64-bit aligned
    64-bit floats in Cmm.memory_chunk.
    (Greta Yorsh, review by Xavier Leroy)

  • #​10434: Pun labelled arguments with type constraint in function applications.
    (Greta Yorsh, review by Nicolas Chataing and Nicolás Ojeda Bär)

  • #​10470: Remove unused cstr_normal field from the constructor_description
    type
    (Nicolas Chataing, review by Gabriel Scherer)

  • #​10382: Don't repeat environment entries in Typemod.check_type_decl
    (Leo White, review by Gabriel Scherer and Florian Angeletti)

  • #​10472: refactor caml_sys_random_seed to ease future Multicore changes
    (Gabriel Scherer, review by Xavier Leroy)

  • #​10487: Move logic to get the type path from a constructor return type in
    Types
    (Nicolas Chataing, review by Jacques Garrigue)

  • #​10555: Do not use ghost locations for type constraints
    (Nicolás Ojeda Bär, report by Anton Bachin, review by Thomas Refis)

  • #​10598, #​10616: fix an exponential blow-up when typechecking nested module
    types
    (Florian Angeletti, report and review by Stephen Dolan)

  • #​10559: Evaluate signature substitutions lazily
    (Stephen Dolan, review by Leo White)

  • #​8776, #​10624: Fix compilation time regression introduced in 4.08
    (Nicolás Ojeda Bär, fix by Leo White, report by Alain Frisch, review by Thomas
    Refis)

  • #​10618: Expose more Pprintast functions
    (Guillaume Petiot, review by Gabriel Scherer)

  • #​10637: Outcometree: introduce a record type for constructors
    (Gabriel Scherer, review by Thomas Refis)

  • #​10516: refactor the compilation of the 'switch' construct
    (Gabriel Scherer, review by Wiktor Kuchta and Luc Maranget)

  • #​10670: avoid global C state in the RE engine for the "str" library
    (Xavier Leroy, review by Gabriel Scherer)

  • #​10678: Expose descriptions in Warnings module
    (Leo White, review by Gabriel Scherer and Alain Frisch)

  • #​10690: Always build ocamltoplevel.cmxa
    (David Allsopp, review by Gabriel Scherer)

  • #​10692: Expose Parse.module_type and Parse.module_expr
    (Guillaume Petiot, review by Gabriel Scherer)

  • #​10714: Add X86_proc.with_internal_assembler for temporarily changing the
    assembler used by the backend.
    (David Allsopp, review by Gabriel Scherer)

  • #​10715: Allow the assembler and loader to be substituted in ocamlnat, for
    example to be replaced with a binary emitter.
    (David Allsopp and Nathan Rebours, review by Louis Gesbert,
    Nicolás Ojeda Bär and Gabriel Scherer)

  • #​10718, #​11012: Add "Shape" information to the cmt files. Shapes are an
    abstraction of modules that can be used by external tooling to perform
    definition-aware operations.
    (Ulysse Gérard, Thomas Refis and Leo White, review by Florian Angeletti)

  • #​10742: strong call-by-need reduction for shapes
    (Gabriel Scherer and Nathanaëlle Courant,
    review by Florian Angeletti, Ulysse Gérard and Thomas Refis)

Build system:
  • #​10835 Disable DT_TEXTREL warnings on x86 32 bit architecture by passing
    -Wl,-z,notext in mksharedlib and mkmaindll. Fixes relocation issues, reported
    in #​9800, making local patches in Debian, Alpine, and FreeBSD superfluous.
    (Hannes Mehnert with Kate Deplaix and Stéphane Glondu, review by Xavier Leroy)

  • #​10717: Simplify the installation of man pages
    (Sébastien Hinderer, review by David Allsopp)

  • #​10739: Stop installing extract_crc
    (Sébastien Hinderer, review by David Allsopp, Daniel Bünzli, Xavier Leroy
    and Gabriel Scherer)

  • #​10797: Compile with -d2VolatileMetadata- on supporting versions of Visual
    Studio. This suppresses the addition of .voltbl sections and eliminates
    linking errors in systhreads.
    (David Allsopp, review by Jonah Beckford and Sébastien Hinderer)

Bug fixes:
  • #​9214, #​10709: Wrong unmarshaling of function pointers in debugger mode.
    This was causing ocamldebug to crash when running some user-defined printers.
    (Xavier Leroy, report by Rehan Malak, review by Gabriel Scherer and
    Vincent Laviron)

  • #​10364: Improve detection of ambiguity in case bodies.
    (Jacques Garrigue, review by Thomas Refis)

  • #​10473: Add CFI directives to RISC-V runtime and asmcomp.
    This allows stacktraces to work in gdb through C and OCaml calls.
    (Edwin Török, review by Nicolás Ojeda Bär and Xavier Leroy)

  • #​10539: Field kinds should be kept when copying types
    Losing the sharing meant that one could desynchronize them between several
    occurrences of self, allowing a method to be both public and hidden,
    which broke type soundness.
    (Jacques Garrigue, review by Leo White)

  • #​10542: Fix detection of immediate64 types through unboxed types.
    (Leo White, review by Stephen Dolan and Gabriel Scherer)

  • #​10590: Some typechecker optimisations
    (Stephen Dolan, review by Gabriel Scherer and Leo White)

  • #​10633: Stack overflow recovery in ocamlopt for AMD64/Linux and ARM/Linux
    was not restoring the minor heap pointer correctly
    (Stephen Dolan, review by Xavier Leroy)

  • #​10659: Fix freshening substitutions on imported modules
    (Leo White and Stephen Dolan, review by Matthew Ryan)

  • #​10677, #​10679: Fix detection of CC as gcc in configure (allow for
    triplet-prefixed GCC) and fix all C compiler detection when CC is a path
    rather than a basename.
    (David Allsopp, report by Fabian @​copy, review by Gabriel Scherer)

  • #​10690: Add --enable-native-toplevel to configure to enable installing
    ocamlnat as part of the main build (default is not to install it)
    (David Allsopp, review by Gabriel Scherer)

  • #​10693: Fix ident collision in includemod
    (Leo White, review by Matthew Ryan)

  • #​10702: Fix cast of more strictly aligned pointer in win32unix
    implementation of stat
    (Antonin Décimo, review by David Allsopp)

  • #​10712: Type-check toplevel terms in the native toplevel in the same way as
    the bytecode toplevel. In particular, this fixes the loss of type variable
    names in the native toplevel.
    (Leo White, review by David Allsopp and Gabriel Scherer)

  • #​10735: Uncaught unify exception from build_as_type
    (Jacques Garrigue, report and review by Leo White)

  • #​10763, #​10764: fix miscompilation of method delegation
    (Alain Frisch, review by Vincent Laviron and Jacques Garrigue)

  • #​10822, #​10823: Bad interaction between ambivalent types and subtyping
    coercions (Jacques Garrigue, report and review by Frédéric Bour)

  • #​10836, #​10952: avoid internal typechecker errors when checking signature
    inclusion in presence of incompatible types.
    (Florian Angeletti, report by Craig Ferguson, review by Gabriel Scherer)

  • #​10849: Display the result of let _ : <type> = <expr> in the native
    toplevel, as in the bytecode toplevel.
    (David Allsopp, report by Nathan Rebours, review by Gabriel Scherer)

  • #​10853: Obj.reachable_words could crash if called after a marshaling
    operation in NO_SHARING mode.
    (Xavier Leroy, report by Anil Madhavapeddy, review by Alain Frisch)

  • #​10907, #​10959: Wrong type inferred from existential types
    (Jacques Garrigue and Gabriel Scherer, report by @​dyzsr, review by Leo White)

  • #​10688: Move frame descriptor table from rodata to data section on
    RISC-V. Improves support for building DLLs and PIEs. In particular, this
    applies to all binaries in distributions that build PIEs by default (eg
    Gentoo and Alpine).
    (Alex Fan, review by Gabriel Scherer)

  • #​11031: Exception handlers restore the rbp register when using frame-pointers
    on amd64.
    (Fabrice Buoro, with help from Stephen Dolan, Tom Kelly and Mark Shinwell,
    review by Xavier Leroy)

  • #​11025, #​11036: Do not pass -no-pie to the C compiler on musl/arm64
    (omni, Kate Deplaix and Antonio Nuno Monteiro, review by Xavier Leroy)

  • #​11101, #​11109: A recursive type constraint fails on 4.14
    (Jacques Garrigue, report and review by Florian Angeletti)

  • #​11118: Fix integer overflow on 64-bit Windows when indexing bigarrays (which
    could lead to a segmentation fault).
    (Roven Gabriel, review by Nicolás Ojeda Bär and Xavier Leroy)

v4.13.1

Compare Source

Regression fix release.
See the detailed list of changes.

v4.13.0

Compare Source

Progress towards Multicore:
  • #​10039: Safepoints
    Add poll points to native generated code. These are effectively
    zero-sized allocations and fix some signal and remembered set
    issues. Also multicore prerequisite.
    (Sadiq Jaffer, Stephen Dolan, Damien Doligez, Xavier Leroy,
    Anmol Sahoo, Mark Shinwell, review by Damien Doligez, Xavier Leroy,
    and Mark Shinwell)

  • #​9876: do not cache the young_limit GC variable in a processor register.
    This affects the ARM64, PowerPC and RISC-V ports, making signal handling
    and minor GC triggers more reliable, at the cost of a small slowdown.
    (Xavier Leroy, review by Nicolás Ojeda Bär)

Language features (highlights):
  • #​9584, #​7074: Allow to name existentials in pattern-matching
    One can now write '(Cstr (type a) (x, y : int * a))' to give a name to
    existentials freshly introduced by GADT constructors.
    (Jacques Garrigue, review by Leo White and Gabriel Scherer)
Compiler user-interface and warnings (highlights):
  • #​9331: Improve error messages for functor application and functor types.
    (Florian Angeletti and Gabriel Radanne, review by Leo White)
  • #​10118, #​10140: enable warning 6 [labels-omitted] by default.
    The following now warns:
    let f ~x y = ... in f 3 5
    the callsite (f 3 5) has to be turned into (f ~x:3 5).
    This prevents mistakes where two arguments of the same types are swapped.
    (Note: Dune already enables this warning by default.)
    (Gabriel Scherer, review by Xavier Leroy and Florian Angeletti,
    report by ygrek)
Manual and documentation (highlights):
  • #​10247: Add initial tranche of examples to reference manual.
    Adds some eighty examples to the reference manual, principally to the
    expressions and patterns sections.
    https://ocaml.org/releases/4.13/manual/patterns.html
    (John Whitington, review by Xavier Leroy, Gabriel Scherer, @​Fourchaux, and
    Florian Angeletti)

  • #​9987, #​9988, #​9996, #​9997: add an odoc mode for the documentation
    of the standard library and compiler library
    (Florian Angeletti, review by David Allsopp, Sébastien Hinderer,
    and Gabriel Scherer)

Standard library (highlights):
  • #​944: Add some missing C99 float operations. Stdlib now contains
    the inverse hyperbolic functions
    acosh, asinh, and atanh.
    These functions were also added to module Stdlib.Float together with
    exp2, log2, cbrt, erf, and erfc.
    Full support on MSVC requires VS2013+ but emulated versions are
    still available (for now) for older compilers.
    (Markus Mottl, review by David Allsopp, Olivier Andrieu, Florian Angeletti,
    Nicolás Ojeda Bär, Daniel Bünzli, Fabian @​copy, Pascal Cuoq, Damien
    Doligez, Sébastien Hinderer, Jacques-Henri Jourdan, Xavier Leroy, Guillaume
    Melquiond, Perry E. Metzger, Runhang Li, Gabriel Scherer, Mark Shinwell,
    Bernhard Schommer and Christophe Troestler)

  • #​9582: Add Array.{find_opt,find_map,split,combine}.
    (Nicolás Ojeda Bär, review by Daniel Bünzli and Gabriel Scherer)

  • #​9533: Added String.starts_with and String.ends_with.
    (Bernhard Schommer, review by Daniel Bünzli, Gabriel Scherer and
    Alain Frisch)

Code generation and optimizations (highlights):
  • #​10404: Add a generic backward dataflow analyzer and use it to speed up
    liveness analysis
    (Xavier Leroy, review by Gabriel Scherer, Greta Yorsh, Mark Shinwell)

  • #​10414: Avoid compilation times exponential in the nesting of loops
    in the spilling and reloading passes
    (Xavier Leroy, review by Vincent Laviron)

Internal typechecker changes (highlights):
  • #​10170: Maintain more structural information in type-checking errors
    A mostly-internal change that preserves more information in errors
    during type checking; most significantly, it split the errors from
    unification, moregen, and type equality into three different types.
    (Antal Spector-Zabusky and Mekhrubon Tuarev, review by Leo White,
    Florian Angeletti, and Jacques Garrigue)

  • #​9994: Make Types.type_expr a private type, and abstract marking mechanism
    (Jacques Garrigue and Takafumi Saikawa,
    review by Gabriel Scherer and Leo White)

Runtime system (highlights):
  • #​10188, #​10213: Switch the default allocation policy to best-fit and adjust
    the default overhead parameter accordingly.
    (Damien Doligez, review by Josh Berdine and Xavier Leroy)

  • #​10549: Stack overflow detection and naked pointers checking for ARM64
    (Xavier Leroy, review by Stephen Dolan)

  • #​9934: Optimise sweeping using prefetching.
    (Stephen Dolan and Will Hasenplaugh, review by David Allsopp, Xavier
    Leroy and Damien Doligez, benchmarking by Shubham Kumar and KC
    Sivaramakrishnan)

  • #​10194: Change compaction-triggering heuristic: use the overhead measured
    by the previous GC cycle instead of an indirect (and noisy) computation
    of the current overhead.
    (Damien Doligez, review by Stephen Dolan)

  • #​10449: Fix major GC work accounting (the GC was running too fast).
    (Damien Doligez, report by Stephen Dolan, review by Nicolás Ojeda Bär and
    Sadiq Jaffer)

Language features:
  • #​10013: Let-punning
    Allow 'let* x in ...' and 'let%ext x in ...' as shorthand for
    'let* x = x in ...' and 'let%ext x = x in ...' respectively.
    (Stephen Dolan, review by Gabriel Scherer)

  • #​10133: module type substitutions
    Allow 'SIG with module type T = F(X).S', 'SIG with module type T := sig end'
    and their local equivalent module type T := sig type u end
    (Florian Angeletti, review by Gabriel Radanne and Leo White)

Type system:
  • #​10081: Typecheck x |> f and f @&#8203;@&#8203; x as (f x)
    (Alain Frisch, review by Jacques Garrigue, Josh Berdine and Thomas Refis)
Runtime system:
  • #​10318: Windows Unicode runtime functions are no longer marked as
    experimental.
    (Nicolás Ojeda Bär, review by David Allsopp)

  • #​9284: Add -config option to display the configuration of ocamlrun on stdout,
    including the search path for shared stub libraries.
    (David Allsopp, review by Xavier Leroy)

  • #​9919: Introduce caml_record_backtraces and update Interfacing with C to
    refer to it (previous instruction to use caml_record_backtrace primitive was
    not possible without defining CAML_INTERNALS)
    (David Allsopp, review by Xavier Leroy)

  • #​10102: Ignore PROFINFO_WIDTH if WITH_PROFINFO is not defined (technically
    a breaking change if the configuration system was being abused before).
    (David Allsopp, review by Xavier Leroy)

  • #​10107: Ensure modules compiled with -afl-instrument can still link on
    platforms without AFL support.
    (David Allsopp, review by Xavier Leroy)

  • #​10098: Improve command-line parsing in ocamlrun: strictly recognise options,
    be more informative for ocamlrun -I and support -- for terminating options
    parsing.
    (David Allsopp, review by Xavier Leroy)
  • #​10101: Add -help/--help option to ocamlrun.
    (David Allsopp, review by Xavier Leroy)

  • #​10136: Minor clean-ups in runtime/io.c and runtime/caml/io.h
    (Xavier Leroy, review by David Allsopp and Guillaume Munch-Maccagnoni)

  • #​10171: Tweak the naked pointers checker so that processes which trigger the
    alarm always exit with non-zero status (i.e. exit(0) becomes exit(70)).
    (David Allsopp, review by Xavier Leroy)

  • #​10212: Simplify and improve the Windows-specific code that connects
    to the debugger via a socket.
    (Antonin Décimo, review by Xavier Leroy)

  • #​10217: Fix a segfault in a corner case of compaction (reported in #​9853)
    (Damien Doligez, report by Sadiq Jaffer, review by Stephen Dolan)

  • #​10250, #​10266: Dynamically allocate alternate signal stacks to
    accommodate changes in Glibc 2.34.
    (Xavier Leroy, reports by Tomasz Kłoczko and R.W.M. Jones, review by Anil
    Madhavapeddy, Stephen Dolan, and Florian Angeletti)

Code generation and optimizations:
  • #​1400: Add an optional invariants check on Cmm, which can be activated
    with the -dcmm-invariants flag
    (Vincent Laviron, with help from Sebastien Hinderer, review by Stephen Dolan
    and David Allsopp)

  • #​9562, #​367: Allow CSE of immutable loads across stores
    (Stephen Dolan, review by Mark Shinwell)

  • #​9937: improvements in ARM64 code generation (constants, sign extensions)
    (Xavier Leroy, review by Stephen Dolan)

  • #​10228: Better code-generation for inlined comparisons
    (Stephen Dolan, review by Alain Frisch and Xavier Leroy)

  • #​10244: Optimise Int32.unsigned_to_int
    (Fabian Hemmer, review by Stephen Dolan and Xavier Leroy)

  • #​10302, #​10303: Fix incorrect instruction selection for string constant loads
    on ppc.
    (David Allsopp, review by Stephen Dolan)

  • #​10349: Fix destroyed_at_c_call on RISC-V
    (Mark Shinwell, review by Nicolás Ojeda Bär)

  • #​10419: Add %frame_pointers primitive which is true only in native code with
    frame pointers mode enabled.
    (David Allsopp, review by Vincent Laviron and Mark Shinwell)

Standard library:
  • #​9448: Add String.{empty,cat} as dual of Bytes.{empty,cat},
    String.{of,to}_bytes as aliases of Bytes.{to,of}_string,
    Bytes.split_on_char as dual of String.split_on_char, and binary decoding
    functions in String to match those in Bytes.
    (David Allsopp, review by Damien Doligez, Gabriel Scherer and others)

  • #​9487, #​9489: Add Random.full_int which allows 62-bit bounds on 64-bit
    systems.
    (David Allsopp, request by Francois Berenger, review by Xavier Leroy and
    Damien Doligez)

  • #​9961: Add Array.fold_left_map.
    (Craig Ferguson, review by Damien Doligez)

  • #​10097: Lazy.map, Lazy.map_val: ('a -> 'b) -> 'a Lazy.t -> 'b Lazy.t
    (map f x) is always (lazy (f (force x))), whereas (map_val f x)
    applies f directly if x is already forced.
    (Gabriel Scherer, review by Nicolás Ojeda Bär, Alain Frisch, Xavier Leroy,
    Daniel Bünzli and Stephen Dolan)

  • #​10242: Added convenience pretty printer for Either.t in the Format module.
    (Oghenevwogaga Ebresafe, review by Nicolás Ojeda Bär,
    Gabriel Scherer and Xavier Van de Woestyne)

  • #​10352: Seq.(concat : 'a t t -> 'a t)
    Seq.concat_map as an alias to Seq.flat_map,
    (Gabriel Scherer, review by Ulugbek Abdullaev and Daniel Bünzli
    and Nicolás Ojeda Bär and Florian Angeletti)

  • #​882: Add fold_left, fold_right, exists and for_all to String/Bytes
    (Yotam Barnoy, review by Alain Frisch and Jeremy Yallop)

  • #​4070, #​10398: small optimization of Stdlib.{frexp,modf}.
    (Markus Mottl, Nicolás Ojeda Bär, review by Gabriel Scherer)

  • #​10389, #​10391, #​10392: Add {Int,Int32,Int64,Nativeint}.{min,max}.
    (Nicolás Ojeda Bär and Alain Frisch, review by Xavier Leroy)

  • #​10430: Add Format.print_bytes and Format.pp_print_bytes.
    (Gabriel Radanne, review by Gabriel Scherer and David Allsopp)

Other libraries:
  • #​10084: Unix.open_process_args* functions now look up the program in the PATH.
    This was already the case under Windows, but this is now also done under
    Unix. Note that previously the program was interpreted relative to the current
    directory.
    (Nicolás Ojeda Bär, review by Gabriel Scherer and Xavier Leroy)
  • #​10047: Add Unix.realpath
    (Daniel Bünzli, review by David Allsopp, Josh Berdine and Gabriel Scherer)

  • #​10184: Remove expensive debug assertion from dynlink.
    (Leo White, review by David Allsopp and Xavier Leroy)

  • #​10185: Consider that IPv6 is always enabled on Windows.
    (Antonin Décimo, review by David Allsopp and Xavier Leroy)

  • #​10306: Map WSA error code to Unix errno for sockopt and getsockname
    functions (Antonin Décimo, review by David Allsopp)

  • #​10309: Properly return EBADF on error in Unix.descr_of_{in,out}_channel on
    Win32 and map Windows error correctly in Unix.truncate and Unix.ftruncate on
    Win32.
    (David Allsopp, review by Nicolás Ojeda Bär)

Tools:
  • #​10139: Adds a -nonavbar option to ocamldoc, to remove confusing
    'Up', 'Previous' and 'Next' links
    (John Whitington, review by David Allsopp)

  • #​8645, #​10363: ocamldoc: escape <, >, and & in html backend.
    (Florian Angeletti, report by Wim Lewis, review by Gabriel Scherer)

Manual and documentation:
  • #​9525, #​10402: document that ocamldoc only creates paragraphs
    at the toplevel of documentation comments
    (Florian Angeletti, report by Hendrik Tews, review by Gabriel Scherer)

  • #​10206: Split labels and polymorphic variants tutorials in two.
    Moves the GADTs tutorial from the Language Extensions chapter
    to the tutorials.
    (John Whitington, review by Florian Angeletti and Xavier Leroy)

  • #​9786, #​10181: improved documentation of Unix.{in,out}_channel_of_descr
    with respect to closing.
    (Xavier Leroy, report by Jacques-Henri Jourdan, review by Guillaume
    Munch-Maccagnoni, Gabriel Scherer, Jacques-Henri Jourdan)

  • #​10139: Use the new -nonavbar option to improve navigation within
    the reference manual stdlib documentation.
    (John Whitington, review by David Allsopp)

  • #​1351: Document -output-complete-obj option in the manual.
    (François Bobot, Nicolás Ojeda Bär, review by Daniel Bünzli and Damien
    Doligez)

  • #​9632: Document incremental build solutions with opam
    (Vincent Laviron, review by Daniel Bünzli and Gabriel Scherer)

  • #​10497: Styling changes in the post-processed HTML manual (webman)
    (Wiktor Kuchta, review by Florian Angeletti)

  • #​10605: manual, name few css classes to ease styling and maintainability.
    (Florian Angeletti, review by Wiktor Kuchta and Gabriel Scherer)

Compiler user-interface and warnings:
  • #​1737, #​2092, #​7852, #​7859, #​10405, #​10417: Update locations during
    destructive substitutions
    (Thomas Refis, review by Gabriel Radanne, report by Hugo Heuzard)

  • #​2245: Improve error message for link order error in bytecode
    (Pierre Chambart, review by Jérémie Dimino and Gabriel Scherer)

  • #​8732, improved error messages for invalid private row type definitions.
    For instance, [ type t = private [< A > A ] ] .
    (Florian Angeletti, review by Jacques Garrigue, Thomas Refis,
    and Gabriel Scherer)

  • #​9407: optional warning for missing mli interface file
    (Anukriti Kumar, review by Florian Angeletti)

  • #​9960, #​10619: extend ocamlc/ocamlopt's -o option to work when
    compiling C files
    (Sébastien Hinderer, reported by Daniel Bünzli, review by
    Florian Angeletti and Gabriel Scherer)

  • #​10095: minor simplifications to some syntax error messages.
    (François Pottier, review by Gabriel Scherer and Frédéric Bour.)

  • #​10196, #​10197: better error message on empty character literals ''.
    (Gabriel Scherer, review by David Allsopp and Florian Angeletti
    and Daniel Bünzli, report by Robin Björklin)

  • #​8877: Call the linker when ocamlopt is invoked with .o and .a files only.
    (Greta Yorsh, review by Leo White)

  • #​10207, #​10312: deprecate consecutive letters in warning
    specifications.
    The form -w aBcD was equivalent to -w -a+b-c+d.
    It is now deprecated to improve the coexistence with warning mnemonics.
    However, using isolated single letter is not deprecated to allow the form
    -w "A-32..50-45".
    (Florian Angeletti, review by Damien Doligez and Gabriel Scherer)

  • #​10232: Warning for unused record fields.
    (Leo White, review by Florian Angeletti)

Internal/compiler-libs changes:
  • #​9243, simplify parser rules for array indexing operations
    (Florian Angeletti, review by Damien Doligez and Gabriel Scherer)

  • #​9650, #​9651: keep refactoring the pattern-matching compiler
    (Gabriel Scherer, review by Thomas Refis and Florian Angeletti)

  • #​9827: Replace references with functions arguments in Simplif
    (Anukriti Kumar, review by Vincent Laviron and David Allsop)

  • #​10007: Driver.compile_common: when typing a .ml file, return the
    compilation unit signature (inferred or from the .cmi) in addition
    to the implementation and the coercion.
    (Leandro Ostera, review by Gabriel Scherer and Thomas Refis)

  • #​10045: Add libext variable to ocamltest and enable C# tests on on mingw
    (David Allsopp, review by Gabriel Scherer)

  • #​10061, #​10078, #​10187: remove library ocamlopttoplevel, remove modules
    Opttoploop, Opttopstart, which are replaced by Toploop and Topstart in
    library ocamltoplevel, made available in native code.
    (Louis Gesbert, review by Jeremie Dimino, Mark Shinwell and Gabriel Radanne)
  • #​10124: remove duplicated code from the native toplevel, split toplevel
    implementation into the shared part (Topcommon, etc.) and specific ones
    (Topeval, Trace, Topmain).
    (Louis Gesbert, review by Jeremie Dimino and Gabriel Radanne)

  • #​10086: add the commands make list-parse-errors and make generate-parse-errors to generate a set of syntactically incorrect
    sentences that covers all error states of the LR automaton. Add these
    sentences to the test suite. This can be used to evaluate the quality of the
    parser's syntax error messages and (in the future) to evaluate the impact of
    changes in the parser.
    (François Pottier, review by Gabriel Scherer and Xavier Leroy.)

  • #​10090: Distinguished constructors for ref variables at lambda level
    (Keryan Didier, review by Gabriel Scherer and Vincent Laviron)

  • #​10113: add a -timeout option to ocamltest and use it in the test suite.
    (Xavier Leroy and Gabriel Scherer, review by Sébastien Hinderer
    and David Allsopp)

  • #​10169, #​10270, #​10301, #​10451: Use capitalized module names in the Standard
    Library prefixing scheme to match Dune, e.g. Stdlib__String instead of
    Stdlib__string. This is a breaking change only to code which attempted to use
    the internal names before. The Standard Library generated by the Dune rules is
    now equivalent to the main build (the Dune rules still do not generate a
    distributable compiler).
    (David Allsopp and Mark Shinwell, review by Gabriel Scherer)
  • #​10327: Add a subdirectories variable and a copy action to ocamltest
    (Sébastien Hinderer, review by David Allsopp)
  • #​10337: Normalize type_expr nodes on access
    One should now use accessors such as get_desc and get_level to access fields
    of type_expr, rather than calling manually Btype.repr (which is now hidden
    in Types.Transient_expr).
    (Jacques Garrigue and Takafumi Saikawa,
    review by Florian Angeletti and Gabriel Radanne)
  • #​10358: Use a hash table for the load path.
    (Leo White, review by Gabriel Scherer)

  • #​8936: Per-function environment for Emit
    (Greta Yorsh, review by Vincent Laviron and Florian Angeletti)

  • #​10543: Fix Ast_mapper to apply the mapping function to the constants in
    "interval" patterns c1..c2.
    (Guillaume Petiot, review by Gabriel Scherer and Nicolás Ojeda Bär)

Internal typechecker changes:
  • #​10174: Make Tsubst more robust by avoiding strange workarounds
    (Takafumi Saikawa and Jacques Garrigue, review by Gabriel Scherer and
    Florian Angeletti)

  • #​10265: Move type_unboxed.unboxed into type_kind
    (Stephen Dolan, review by Gabriel Scherer)

  • #​10307: Refactor type_description in the typing env
    (Nic


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, click this checkbox.

This PR has been generated by Mend Renovate. View repository job log here.

@kachick
Copy link
Owner

kachick commented Jul 14, 2022

🎉 🐫

@kachick kachick merged commit 913fa29 into main Jul 14, 2022
@kachick kachick deleted the renovate/ocaml-ocaml-4.x branch July 14, 2022 19:44
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant