-
#12006, #12064: Add Marshal.Compression
flag to Marshal.to_*
functions.
When this flag is explicitly set, marshaled data is compressed using ZSTD.
On some practical examples, the marshalled output became three times smaller
at no noticeable cost on the marshalling time.
(Xavier Leroy, review by Edwin Török and Gabriel Scherer, fix by Damien
Doligez)
-
#10464: Add List.is_empty.
(Craig Ferguson, review by David Allsopp)
-
#11848: Add List.find_mapi
,
List.find_index: ('a -> bool) -> 'a list -> int option
,
Seq.find_mapi
, Seq.find_index
, Array.find_mapi
, Array.find_index
,
Float.Array.find_opt
, Float.Array.find_index
, Float.Array.find_map
,
Float.Array.find_mapi
.
(Sima Kinsart, review by Daniel Bünzli and Nicolás Ojeda Bär)
-
#11410: Add Set.to_list, Map.to_list, Map.of_list,
Map.add_to_list: key -> 'a -> 'a list t -> 'a list t
.
(Daniel Bünzli, review by Nicolás Ojeda Bär and Gabriel Scherer)
-
#11836, #11837: Add Array.map_inplace
, Array.mapi_inplace
,
Float.Array.mapi_inplace
and Float.Array.mapi_inplace
.
(Léo Andrès, review by Gabriel Scherer, KC Sivaramakrishnan and
Nicolás Ojeda Bär)
-
#10967: Add Filename.temp_dir.
(David Turner, review by Anil Madhavapeddy, Valentin Gatien-Baron, Nicolás
Ojeda Bär, Gabriel Scherer, and Daniel Bünzli)
-
#11246: Add “hash” and “seeded_hash” functions to Bool, Int, Char, Float,
Int32, Int64, and Nativeint.
(Nicolás Ojeda Bär, review by Xavier Leroy and Gabriel Scherer)
-
#11488: Add Mutex.protect: Mutex.t -> (unit -> 'a) -> 'a
for resource-safe critical sections protected by a mutex.
(Simon Cruanes, review by Gabriel Scherer, Xavier Leroy,
Guillaume Munch-Maccagnoni)
-
#11581: Add type equality witness
type (_, _) eq = Equal: ('a, 'a) eq
in a new module Stdlib.Type.
(Nicolás Ojeda Bär, review by Daniel Bünzli, Jacques Garrigue, Florian
Angeletti, Alain Frisch, Gabriel Scherer, Jeremy Yallop and Xavier Leroy)
-
#11843: Add In_channel.input_lines
and In_channel.fold_lines
.
(Xavier Leroy, review by Nicolás Ojeda Bär and Wiktor Kuchta).
-
#11856, #11859: Using TRMC, the following Stdlib
functions are now
tail-recursive:
Stdlib.(@), List.append,
List.concat_map.
(Jeremy Yallop, review by Daniel Bünzli, Anil Madhavapeddy, Nicolás Ojeda Bär,
Gabriel Scherer, and Bannerets)
-
#11362, #11402: Using TRMC, the following Stdlib
functions are now
tail-recursive:
List.map, List.mapi, List.map2,
List.filter, List.filteri, List.filter_map,
List.init,
List.of_seq.
(Nicolás Ojeda Bär, review by Xavier Leroy and Gabriel Scherer)
-
#11878, #11965: Prevent seek_in from marking buffer data as valid after
closing the channel. This could lead to inputting uninitialized bytes.
(Samuel Hym, review by Xavier Leroy and Olivier Nicole)
-
#11128: Add In_channel.isatty, Out_channel.isatty.
(Nicolás Ojeda Bär, review by Gabriel Scherer and Florian Angeletti)
-
#10859: Add Format.pp_print_iter
and Format.pp_print_array
.
(Léo Andrès and Daniel Bünzli, review by David Allsopp and Hugo Heuzard)
-
#10789: Add Stack.drop
(Léo Andrès, review by Gabriel Scherer)
size of installed artifacts of the compiler distribution.
The installation size of 5.1 is 272 MiB compared to 521 MiB for 5.0.
Some of those changes will benefit all OCaml packages.
-
#12130: Fix multicore crashes with weak hash sets. Fixes #11934.
(Nick Barnes, review by François Bobot)
-
#12099: Add ocamlrund option, -events, to produce a trace of
debug events during bytecode interpretation. Fixes #12098.
(Richard L Ford, review by Gabriel Scherer)
-
#12001: Fix book keeping for last finalisers during the minor cycle
(KC Sivaramakrishnan and Enguerrand Decorne, report by Guillaume Bury
and Vincent Laviron, review by Sadiq Jaffer and KC Sivaramakrishnan)
-
#11919: New runtime events counters for major heap stats and minor heap
resizing.
(Sadiq Jaffer, review by Gabriel Scherer and David Allsopp)
-
#11287, #11872, #11955: Clean up reserved header bits (once used for
Spacetime profiling).
(Nick Barnes, review by Gabriel Scherer and Damien Doligez)
-
#11750: Decouple major slice from minor GC.
(KC Sivaramakrishnan, review by Sadiq Jaffer, Guillaume Munch-Maccagnoni and
Damien Doligez)
-
#11796: protect lazy computation of code fragment digest by a mutex.
This makes the thread sanitizer happier, and avoids duplicating
the hashing work.
(Gabriel Scherer, review by Xavier Leroy, report by Olivier Nicole)
-
#11137: new Unsafe_store_tag(val, new_tag)
macro to stop using
Tag_val(val)
as lvalue.
(Gabriel Scherer, review by Xavier Leroy, Guillaume Munch-Maccagnoni
and Nicolás Ojeda Bär)
-
#11880: Restore the correct sigmask in systhreads.
(Christiano Haesbaert, review by Guillaume Munch-Maccagnoni and
Sébastien Hinderer)
-
#11881: Fix thread-unsafety of registration of operations for “custom”
values.
(Guillaume Munch-Maccagnoni, review by Gabriel Scherer and KC
Sivaramakrishnan)
-
#11980: fix quadratic behavior in natdynlink by using a STW section
for frame-descriptor updates.
(Gabriel Scherer, review by Sadiq Jaffer, report by André Maroneze
for Frama-C and Guillaume Melquiond for Coq)
-
#12121: unrooted implementations of caml_callback*_exn
(Gabriel Scherer, review by KC Sivaramakrishnan and Xavier Leroy)
-
#3921, #12039, #12128: poll for signals in long-running polymorphic
comparisons.
(B. Szilvasy, Gabriel Scherer and Xavier Leroy, review by
Stefan Muenzel, Guillaume Munch-Maccagnoni and Damien Doligez)
-
#12231: Support MinGW-w64 11.0 winpthreads library, where the macro
to set up to get flexdll working changed
(David Allsopp and Samuel Hym, light review by Xavier Leroy)
-
#11967: Remove traces of Obj.truncate, which allows some mutable
loads to become immutable.
(Nick Barnes, review by Vincent Laviron and KC Sivaramakrishnan)
-
#9945, #10883: Turn boolean-result float comparisons into primitive operations
Uses the architecture’s elementary operations for float comparisons,
when available, rather than branching and then setting the return value.
(Stefan Muenzel, review by Stephen Dolan, Alain Frisch and Vincent Laviron)
-
#8998, #11321, #11430: change mangling of OCaml long identifiers
from camlModule__name_NNN
to camlModule.name_NNN
. The previous
mangling schema, using __
, was ambiguous.
(Xavier Leroy, report by sliquister and Michael Bacarella,
review by Gabriel Scherer)
-
#10834: The -safer-matching option disables type-based optimizations of
pattern-matching compilation. This allows to produce a match failure if
a pattern-matching was wrongly assumed to be exhaustive. Since the
exhaustiveness check for GADTs has had bugs in the past, it may be
useful if you need extra security with GADTs.
(Jacques Garrigue, review by Gabriel Scherer)
-
#11102: Speed up register allocation by permanently spilling registers
(Stephen Dolan, review by Xavier Leroy)
-
#11383: Restrict the local function optimisation to forbid moving code
inside a sub-function
(Vincent Laviron, review by Gabriel Scherer)
-
#11686: Better spilling heuristic for the Linear Scan allocator for more
efficient stack usage.
(Nicolás Ojeda Bär, Gabriel Scherer, Alain Frisch, review by Gabriel Scherer,
Alain Frisch and Nathanaëlle Courant)
-
#11904: Remove arm, i386 native-code backends that were already
disabled at configuration time.
(Nicolás Ojeda Bär, review by Stephen Dolan, Anil Madhavapeddy, and Xavier
Leroy)
-
#11134: Optimise ‘include struct’ in more cases
(Stephen Dolan, review by Leo White and Vincent Laviron)
-
#11889, #11978: ocamldoc: handle injectivity annotations and wildcards in type
parameters.
(Florian Angeletti, report by Wiktor Kuchta, review by Jules Aguillon)
-
#11787: Fix GDB scripts to work with OCaml 5’s heap layout. (Nick
Barnes)
-
#11772: fix ocamlyacc’s handling of raw string literals
(Demi Marie Obenour)
-
#9290: Add a directive to switch off debugging in toplevel.
This allows to see optimized bytecode with -dlambda.
(Jacques Garrigue, review by Gabriel Scherer)
-
#11166: ocamllex: the union of two character sets “cset1 | cset2” can now be
used in any context where a character set is expected.
(Nicolás Ojeda Bär, Martin Jambon, review by Sébastien Hinderer)
-
#11718: ocamlyacc: OCaml-style comments are now supported, in addition to
the C-style comments already supported. The syntax is the same as that used
in OCaml code.
(Demi Marie Obenour, review by Damien Doligez)
-
#11728: ocamlyacc: generate line directives for %type declarations
(Demi Marie Obenour, review by Damien Doligez)
-
#11773: ocamlyacc: Do not allow quoted literals (such as ‘a’ or “bc”)
in a token name or %type declaration. Previously such literals were
accepted by ocamlyacc, but produced malformed OCaml that was rejected
by the compiler.
(Demi Marie Obenour, review by Gabriel Scherer)
-
#11774: ocamlyacc: fail if there is an I/O error
(Demi Marie Obenour, review by Gabriel Scherer)
-
#11973: Add support for postfixed mingw host triplets
(Romain Beauxis)
-
#12165: ocamldoc, use standard doctype to avoid quirk mode.
(Florian Angeletti, review by Gabriel Scherer)
-
#11476: Add examples in documentation of Hashtbl, Queue, Atomic, Format
(Simon Cruanes, review by Yotam Barnoy, Gabriel Scherer, Daniel Bünzli,
Ulugbek Abdullaev, and Nicolás Ojeda Bär)
-
#11883, #11884: Update documentation for In_channel and Out_channel
with examples and sections to group related functions.
(Kiran Gopinathan, review by Daniel Bünzli and Xavier Leroy)
-
#12095, #12097: Put the sample code of the user’s manual and reference
documentation of the standard library under the CC0 1.0 Universal
(CC0 1.0) Public Domain Dedication license.
-
#11892: Document the semantic differences of Unix.exec* between Unix and
Windows.
(Boris Yakobowski, review by Daniel Bünzli, Gabriel Scherer and Nicolás Ojeda
Bär)
-
#9430, #11291: Document the general desugaring rules for binding operators.
(Gabriel Scherer, review by Nicolás Ojeda Bär)
-
#11481: Fix the type of Unix.umask to Unix.file_perm → Unix.file_perm
(Favonia, review by Sébastien Hinderer)
-
#11514: Document ocamltest builtin variables and actions
(Olivier Nicole, review by Sébastien Hinderer)
-
#11676: Fix missing since annotation in the Sys
and Format
modules
(Github user Bukolab99, review by Florian Angeletti)
-
#12028: Update format documentation to make it clearer that
pp_print_newline
flushes its newline
(Florian Angeletti, review by Gabriel Scherer)
-
#12201: in the tutorial on modules, replace priority queue example by
a simpler example based on FIFO queues.
(Xavier Leroy, review by Anil Madhavapeddy and Nicolás Ojeda Bär).
-
#12352: Fix a typo in the documentation of Arg.write_arg
(Christophe Raffalli, review by Florian Angeletti)
-
#7179, #11894: correct the description of CAMLreturn and CAMLreturn0 in
the Interfacing C page and memory.h file.
(Dong An, review by Guillaume Munch-Maccagnoni and Olivier Nicole )
-
#10647: Show hints for the “undefined global” error in the toplevel
(Wiktor Kuchta, review by Gabriel Scherer)
-
#12116: Don’t suggest to insert a semicolon when the type is not unit
(Jules Aguillon, review by Florian Angeletti)
-
#11679: Improve the error message about too many arguments to a function
(Jules Aguillon, review by Gabriel Scherer and Florian Angeletti)
-
#10009: Improve the error reported by mismatched struct/sig and =/: in module
and module type bindings.
(Jules Aguillon, review by Gabriel Scherer)
-
#11530: Include kinds in kind mismatch error message.
“Error: This variant or record definition does not match that of type M.t
The original is abstract, but this is a record”.
(Leonhard Markert, review by Gabriel Scherer and Florian Angeletti)
-
#11646: Add colors to error message hints.
(Christiana Anthony, review by Florian Angeletti)
-
#11235, #11864: usage warnings for constructors and fields can now be disabled
on field-by-field or constructor-by-constructor basis
(Florian Angeletti, review by Gabriel Scherer)
-
#11888: Improve the error message when type variables cannot be deduced from
the type parameters:
Before:
“Error: In this definition, a type variable cannot be deduced
from the type parameters.”
After:
“Error: In the GADT constructor
T : 'a → 'a s t
the type variable 'a cannot be deduced from the type parameters.”
(Stefan Muenzel, review by Florian Angeletti and Gabriel Scherer)
-
#10818: Preserve integer literal formatting in type hint.
(Leonhard Markert, review by Gabriel Scherer and Florian Angeletti)
-
#11338: Turn some partial application warnings into hints.
(Leo White, review by Stephen Dolan)
-
#10931: Improve warning 14 (illegal backslash) with a better explanation
of the causes and how to fix it.
(David Allsopp, Florian Angeletti, Lucas De Angelis, Gabriel Scherer,
review by Nicolás Ojeda Bär, Florian Angeletti, David Allsopp and
Gabriel Scherer)
-
#10911: Improve the location reported by parenthesized assert expressions
(Fabian Hemmer, review by Gabriel Scherer)
-
#1391, #7645, #3922: Add an early error when compiling different
modules with mismatching -for-pack
(Pierre Chambart and Vincent Laviron, review by Mark Shinwell)
-
#11297: Report “unclosed” error when “done” is missing in a “do … done”
construct.
(Nicolás Ojeda Bär, review by Gabriel Scherer)
-
#11635, #5461, #10564: turn warning 31 (Module_linked_twice) into a hard error
for ocamlc — this was already an error with ocamlopt.
(Hugo Heuzard, review by Valentin Gatien-Baron and Gabriel Scherer)
-
#11653: Add the -no-absname option to ocamlc, ocamlopt and ocamldep.
(Abiola Abdulsalam, review by Sébastien Hinderer and Florian Angeletti)
-
#11696: Add the -no-g option to ocamlc and ocamlopt.
(Abiola Abdulsalam, review by Sébastien Hinderer, Nicolás Ojeda Bär and
Florian Angeletti)
-
#11722: clearer error messages on non-well-founded type definitions
(Gabriel Scherer, review by Jacques Garrigue)
-
#11819: make the native_compiler
and native_dynlink
configuration
variables available through ocamlc -config.
(Sébastien Hinderer, review by Gabriel Scherer and David Allsopp)
-
#8602, #11863: Add -stop-after lambda flag option
(Douglas Smith and Dmitrii Kosarev, review by Gabriel Scherer)
-
#11910: Simplify naming convention for shadowed or ephemeral identifiers in
error messages (eg: Illegal shadowing of included type t/2 by t
)
(Florian Angeletti, review by Jules Aguillon)
-
#12024: insert a blank line between separate compiler messages
(Gabriel Scherer, review by Florian Angeletti, report by David Wong)
-
#12088, #9265, #11949: ocamldebug: fix confusing repeating behavior
on blank lines within source scripts
(Damien Doligez, review by Gabriel Scherer, report by Gaëtan Gilbert)
-
#12107: use aliases to mark weak row variables: _[< ... ]
, < _..>
, _#ct
are now rendered as [< ...] as '_weak1
, < .. > as '_weak1
,
and #ct as '_weak1
.
(Florian Angeletti, suggestion by Stefan Muenzel, review by Gabriel Scherer)
-
#12051: Improve the error messages when type variables cannot be generalized
(Stefan Muenzel, review by Florian Angeletti)
-
#11018, #11869: Clean up Types.Variance, adding a description of
the lattice used, and defining explicitly composition.
(Jacques Garrigue, review by Gabriel Scherer and Jeremy Yallop)
-
#11536: Introduce wrapper functions for level management
([Ctype.with_level], etc) and for type variable scoping
([Typetexp.with_local_type_variable_scope]).
The older API ([Ctype.(begin_def,end_def)], [Typetexp.(narrow,widen)], etc.)
is now removed.
(Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer)
-
#11601, #11612, #11628, #11613, #11623, #12120 : Clean up some
global state handling in emitcode, bytepackager, bytegen,
bytesections, spill.
(Hugo Heuzard, Stefan Muenzel, review by Vincent Laviron, Gabriel Scherer
and Nathanaëlle Courant)
-
#12119, #12188, #12191: mirror type constraints on value binding in the
parsetree:
the constraint typ
in let pat : typ = exp
is now directly stored
in the value binding node in the parsetree.
(Florian Angeletti, review by Richard Eisenberg)
-
#11912: Refactoring handling of scoped type variables
(Richard Eisenberg, review by Gabriel Scherer and Florian Angeletti)
-
#11691, #11706: use asm instead of asm for strict ISO C conformance
(Xavier Leroy, report by Gregg Reynolds , review by Sadiq Jaffer)
-
#11764: add prototypes to old-style C function definitions and declarations
(Antonin Décimo, review by Xavier Leroy)
-
#11693: Remove use of C99 Variable Length Arrays (VLAs) in the runtime.
(David Allsopp, review by Xavier Leroy, Guillaume Munch-Maccagnoni,
Stefan Muenzel and Gabriel Scherer)
-
#12138: Generalise interface for BUILD_PATH_PREFIX_MAP mapping.
Absolute paths are now rewritten too.
(Richard L Ford, suggestions and review by Gabriel Scherer)
-
#10512: explain the compilation strategy for switches on constructors
(Gabriel Scherer, review by Vincent Laviron)
-
#11990: Improve comments and macros around frame descriptors.
(Nick Barnes, review by Gabriel Scherer)
-
#11847, #11849, #11851, #11898: small refactorings in the type checker
(Gabriel Scherer, review by Nicolás Ojeda Bär)
-
#11027: Separate typing counter-examples from type_pat into retype_pat;
type_pat is no longer in CPS.
(Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer)
-
#11286, #11515: disambiguate identifiers by using how recently they have
been bound in the current environment
(Florian Angeletti, review by Gabriel Scherer)
-
#11364: Allow make -C testsuite promote
to take TEST
and LIST
variables
(Antal Spector-Zabusky, review by Gabriel Scherer and David Allsopp)
-
#11446: document switch compilation (lambda/switch.ml)
(Gabriel Scherer, review by Luc Maranget and Vincent Laviron)
-
#11568: Encode inline record types in Path.t
(Leo White and Hyunggyu Jang, review by Gabriel Scherer)
-
#11569: Remove hash type encoding
(Hyunggyu Jang, review by Gabriel Scherer and Florian Angeletti)
-
#11627: use return values instead of globals for linear scan intervals
(Stefan Muenzel, review by Nicolás Ojeda Bär)
-
#11634: Dll.open_dll now properly handles opening for execution while already
opened for checking
(Hugo Heuzard, review by Nicolás Ojeda Bär)
-
#11615: remove global variables form asmcomp/linearize.ml
(Stefan Muenzel, review by Nicolás Ojeda Bär
-
#10856: Add location, attribute(s) visitors to Tast_mapper/Tast_iterator
(Yan Dong, review by Nicolás Ojeda Bär and Gabriel Scherer)
-
#11763, #11759, #11861: Enable stricter C compilation warnings, use
strict prototypes on primitives.
(Antonin Décimo, review by Xavier Leroy, David Allsopp and Sébastien
Hinderer)
-
#11933: Use the correct machtype when reading the code pointer from closures
(Nathanaëlle Courant, review by Gabriel Scherer and Vincent Laviron)
-
#11972: refactor runtime/frame_descriptors.c
in preparation for quadratic-time fix
(Gabriel Scherer, review by Enguerrand Decorne)
-
#11997: translate structured constants into their Obj.t representation
at compile time rather than link time. Changes the way dumpobj prints
these constants because their representation becomes untyped.
(Sébastien Hinderer, review by Xavier Leroy, Nicolás Ojeda Bär and
Hugo Heuzard)
-
#12011: remove Ctype.reified_var_counter
(Takafumi Saikawa and Jacques Garrigue, review by Gabriel Scherer)
-
#12012: move calls to Typetexp.TyVarEnv.reset inside with_local_level etc.
(Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer)
-
#12034: a logarithmic algorithm to find the next free variable
(Gabriel Scherer, review by Stefan Muenzel)
-
#12092: remove Lev_module_definition from lambda
(Nick Roberts, review by Gabriel Scherer)
-
#12117: Remove arity-interrupting elaboration of module unpacks
(Nick Roberts, review by Richard Eisenberg and Jacques Garrigue)
-
#12118: stop storing names of predefined exceptions in the
cu_required_globals field of compilation unit descriptors.
(Sébastien Hinderer, review by Vincent Laviron)
-
#12125: Add Misc.print_see_manual and modify [@manual_ref] to accept
lists for simpler printing of manual references
(Stefan Muenzel, review by Florian Angeletti)
-
#12509: Use strict prototypes on primitives when generating a standalone
bytecode executable (ocamlc -custom
).
(Antonin Décimo, review by Xavier Leroy)
-
#12062: fix runtime events consumer: when events are dropped they shouldn’t be
parsed. (Lucas Pluvinage)
-
#12132: Fix overcounting of minor collections in GC stats.
(Damien Doligez, review by Gabriel Scherer)
-
#12017: Re-register finaliser only after calling user alarm in Gc.create_alarm
(Fabrice Buoro, report by Sam Goldman, review by Guillaume Munch-Maccagnoni)
-
#11887, #11893: Code duplication in pattern-matching compilation
(Vincent Laviron, report par Greta Yorsh, review by Luc Maranget and
Gabriel Scherer)
-
#10664, #11600: Unsoundness in the typing of polymorphic methods
involving polymorphic variants
(Jacques Garrigue, report by Mike Shulman, review by Gabriel Scherer)
-
#11302, #11412: ocamlc
and ocamlopt
should not remove generated files
when they are not regular files.
(Xavier Leroy, report by Thierry Martinez, review by
Anil Madhavapeddy, Nicolás Ojeda Bär, David Allsopp)
-
#10348, #10560, #11561: Expand GADT equations lazily during unification to
avoid ambiguity
(Jacques Garrigue, review by Leo White)
-
#11436: Fix wrong stack backtrace for out-of-bound exceptions raised
by leaf functions.
(Tom Kelly and Xavier Leroy, review by Mark Shinwell)
-
#11450, #12018: Fix erroneous functor error messages that were too eager to
cast struct end
functor arguments as unit modules in F(struct end)
.
(Florian Angetti, review by Gabriel Scherer)
-
#11643: Add missing test declaration to float_compare test, so that it will
run.
(Stefan Muenzel, review by David Allsopp)
-
#11630: Use correct location when reporting record labels with non-existent
paths.
(Nicolás Ojeda Bär, report by Jason Gross, review by Gabriel Scherer)
-
#11727: Ensure push_defaults can push past module patterns, fixing an
currying optimisation accidentally disabled by #10340.
(Stephen Dolan, review by Gabriel Scherer)
-
#11771: Use a more relaxed mode for unification in Ctype.subst
(Leo White, review by Jacques Garrigue and Gabriel Scherer)
-
#11803, #11808: on x86, the destination of an integer comparison must be
a register, it cannot be a stack slot.
(Vincent Laviron, review by Xavier Leroy, report by
Emilio Jesús Gallego Arias)
-
#11809: Protect Parmatch.pats_of_type from missing cmis
(Jacques Garrigue, review by Stephen Dolan and Gabriel Scherer)
-
#11824: Fix a crash when calling ocamlrun -b
(Florian Angeletti, review by Sébastien Hinderer)
-
#11815: Marshalling continuations raises invalid argument exception.
(Jérôme Vouillon, review by Nicolás Ojeda Bär, Stephen Dolan and
Hugo Heuzard)
-
#11846: Mark rbx as destroyed at C call for Win64 (mingw-w64 and Cygwin64).
Reserve the shadow store for the ABI in the c_stack_link struct instead of
explictly when calling C functions. This simultaneously reduces the number of
stack pointer manipulations and also fixes a bug when calling noalloc
functions where the shadow store was not being reserved.
(David Allsopp, report by Vesa Karvonen, review by Xavier Leroy and
KC Sivaramakrishnan)
-
#11850: When stopping before the emit
phase (using -stop-after
), an empty
temporary assembly file is no longer left in the file system.
(Nicolás Ojeda Bär, review by Gabriel Scherer and Xavier Leroy)
-
#11866: Fix the result of caml_read_directory()
on non-existent paths.
(Andrei Paskevich and Charlène Gros, review by David Allsopp and
Nicolás Ojeda Bär)
-
#11879: Bugfix for Ctype.nondep_type
(Stephen Dolan, review by Gabriel Scherer)
-
#12004: Don’t ignore function attributes on lambdas with locally abstract
types.
(Chris Casinghino, review by Gabriel Scherer)
-
#12037: Fix some data races by using volatile when necessary
(Fabrice Buoro and Olivier Nicole, review by Guillaume Munch-Maccagnoni,
Gabriel Scherer and Luc Maranget)
-
#12046: Flush stderr when tracing the parser
(Hugo Heuzard, review by David Allsopp and Nicolás Ojeda Bär)
-
#12061, #12063: don’t add inconsistent equalities when computing
high-level error messages for functor applications and inclusions.
(Florian Angeletti, review by Gabriel Scherer)
-
#12075: auto-detect whether ar
support @FILE arguments at
configure-time to avoid using this feature with toolchains
that do not support it (eg FreeBSD/Darwin).
(Nicolás Ojeda Bär, review by Xavier Leroy, David Allsop, Javier
Chávarri, Anil Madhavapeddy)
-
#12103, 12104: fix a concurrency memory-safety bug in Buffer
(Gabriel Scherer, review by Florian Angeletti, report by Samuel Hym)
-
#12112: Fix caml_callback{2,3}_exn when used with effect handlers.
(Lucas Pluvinage, review by Gabriel Scherer, David Allsopp and Xavier Leroy)
-
#12134: Use ghost location for nodes created when handling defaults in
optional arguments.
(Paul-Elliot Anglès d’Auriac, review by Gabriel Scherer)
-
#12153: Fix segfault in bytecode programs involving recursive value
definitions of values of size 0
(Vincent Laviron, Xavier Leroy, Gabriel Scherer,
review by Xavier Leroy, report by Nick Roberts)
-
#12162: Fix miscompilation on amd64 backends involving integer overflows
(Vincent Laviron and Greta Yorsh, review by Stefan Muenzel)
-
#12170: fix pthread_geaffinity_np configure check for android
(David Allsopp, review by Sébastien Hinderer)
-
#12178: Fix runtime events consumer poll function returning an invalid value
instead of an OCaml integer value. (Lucas Pluvinage)
-
#12252: Fix shared library build error on RISC-V.
(Edwin Török, review by Nicolás Ojeda Bär and Xavier Leroy)
-
#12255, #12256: Handle large signal numbers correctly (Nick Barnes,
review by David Allsopp).
-
#12277: ARM64, fix a potential assembler error for very large functions by
emitting stack reallocation code before the body of the function.
(Xavier Leroy, review by KC Sivaramakrishnan)
-
#12253, #12342: Fix infinite loop in signal handling.
(Guillaume Munch-Maccagnoni, report by Thomas Leonard, review by
KC Sivaramakrishnan and Sadiq Jaffer)
-
#12445: missing GC root registrations in runtime/io.c
(Gabriel Scherer, review by Xavier Leroy and Jeremy Yallop)
-
#12481, #12505: Fix incorrect initialization of array expressions
[|e1;...;eN|]
when N
is large enough to require major heap allocation.
(Xavier Leroy, report by Andrey Popp, analysis by KC Sivaramakrishnan
and Vincent Laviron, review by Gabriel Scherer)
-
#11150, #11207, #11936: Avoid recomputation in Typedecl.check_wellfounded
(Jacques Garrigue, report by Boris Yakobowski, review by Gabriel Scherer)
-
#11186, #11188: Fix composition of coercions with aliases
(Vincent Laviron, report and review by Leo White)
-
#12486: Fix delivery of unhandled effect exceptions on s390x
(Miod Vallat, report by Jan Midtgaard, review by Vincent Laviron and Xavier
Leroy)