caml-list - the Caml user's mailing list
 help / Atom feed
* [Caml-list] OCaml releases 4.13.0 and 4.12.1
@ 2021-09-24 18:25 Florian Angeletti
  2021-10-01 17:30 ` [Caml-list] OCaml release 4.13.1 Florian Angeletti
  0 siblings, 1 reply; 2+ messages in thread
From: Florian Angeletti @ 2021-09-24 18:25 UTC (permalink / raw)
  To: caml-list

[-- Attachment #1: Type: text/plain, Size: 30754 bytes --]

Dear OCaml users, 

We have the pleasure of celebrating the 175th anniversary of the discovery of Neptune 
by announcing the joint releases of OCaml version 4.13.0 and 4.12.1. 

Some of the highlights in the 4.13.0 release are: 

- Safe points: a multicore prerequisite that ensures that ocamlopt-generated code can always be interrupted. 
- The best-fit GC allocation policy is now the default policy (and many other GC improvements). 
- Named existential type variables in pattern matching: `Showable (type a) (x, show : a * (a -> string))`. 

- Improved error messages for functor application and functor types. 
- Let-punning for monadic let: `let* x = x in` can be shortened to `let* x in`. 
- Module type substitutions `SIG with module type T = F(X).S`. 

- Many other quality of life improvements 
- Many bug fixes 

The 4.12.1 release is a collection of safe bug fixes, cherry-picked from the 4.13.0 development 
cycle. If you were using OCaml 4.12.0 and cannot yet upgrade to 4.13.0, this release is for you. 

The full list of changes can be found in the changelogs below. 

Those releases are available as OPAM switches, and as a source download here: 

https://github.com/ocaml/ocaml/archive/4.13.0.tar.gz 
https://caml.inria.fr/pub/distrib/ocaml-4.13/ 

and there: 

https://github.com/ocaml/ocaml/archive/4.12.1.tar.gz 
https://caml.inria.fr/pub/distrib/ocaml-4.12/ 


Happy hacking, 

-- Florian Angeletti for the OCaml team. 


OCaml 4.12.1 (24 September 2021) 
------------------------------------------------ 

### Bug fixes: 

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

- #10294, #10295: fix an assert-failure in pattern-matching compilation 
(Gabriel Scherer, review by Thomas Refis and Luc Maranget, 
report by Nicolás Ojeda Bär) 

- #10310: configure's --enable-spacetime option now causes an error rather than 
being silently ignored. 
(David Allsopp, review by Gabriel Scherer) 

- #10351: Fix DLL loading with binutils 2.36+ on mingw-w64 
(David Allsopp, review by Nicolás Ojeda Bär) 

- #10442, #10446: Fix regression in the toplevel to #directory caused by 
corrections and improvements to the Load_path in #9611. #directory now 
adds the path to the start of the load path again (so files in the newly 
added directory take priority). 
(David Allsopp, report by Vasile Rotaru, review by Florian Angeletti 
and Nicolás Ojeda Bär) 

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

- #10478: Fix segfault under Windows due to a mistaken initialization of thread 
ID when a thread starts. 
(David Allsopp, Nicolás Ojeda Bär, review by Xavier Leroy) 

- #10626, #10628: Wrong reloading of the x86-64 instruction for 
integer multiplication by a constant, causing the assembler to 
reject the ocamlopt-generated code. 
(Xavier Leroy, report by Dave Aitken, review by Vincent Laviron) 


OCaml 4.13.0 (24 September 2021) 
------------------------------------------------ 

### 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 @@ 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) 

- #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 
(Nicolas Chataing, review by Takafumi Saikawa, Florian Angeletti and Thomas 
Refis) 

- #10311: Separate the constraint-solving part of Typecore.type_pat into 
specific solver functions. 
(Jacques Garrigue and Takafumi Saikawa, review by Gabriel Scherer) 

- #10428: Make build_other_constrs work with names instead of tags. 
(Nicolas Chataing, review by Florian Angeletti) 

### Build system: 

- #10332, #10333: Generate lambda/runtimedef.ml correctly in Swedish locale. 
(the letter 'w' is not included in '[a-z]' in sv_SE.UTF-8) 
(David Allsopp, report by Anders Jackson, review by Florian Angeletti and 
Gabriel Scherer) 

- #10289, #10406: Do not print option documentation in usage messages. 
(Pavlo Khrystenko, review by Gabriel Scherer, fix by Kate Deplaix) 

- #9191, #10091, #10182: take the LDFLAGS variable into account, except on 
flexlink-using systems. 
(Gabriel Scherer, review by Sébastien Hinderer and David Allsopp, 
report by Ralph Seichter) 

- #10135: Overhaul the FlexDLL bootstrap process. It's now fully integrated 
with the default build target and controlled by --with-flexdll which allows 
externally downloaded sources for FlexDLL to be specified. A separate 
non-shared version of the runtime is built, and shared artefacts are no longer 
built twice. When bootstrapping, any flexlink in PATH is now ignored and the 
Cygwin port also supports bootstrapping FlexDLL. flexlink.opt is automatically 
built and installed as part of opt.opt/world.opt. 
(David Allsopp, review by Sébastien Hinderer) 

- #10156: configure script: fix sockets feature detection. 
(Lucas Pluvinage, review by David Allsopp and Damien Doligez) 

- #10176, #10632: By default, call the assembler through the C compiler driver 
(Sébastien Hinderer, review by Gabriel Scherer, David Allsopp and Xavier 
Leroy) 

- #10186: configure wasn't using library link flags when searching for 
network functions on systems where they're not in libc. Fix IPv6 and 
socklen_t detection on Windows. 
(Antonin Décimo, review by David Allsopp and Sébastien Hinderer) 

- #10366: Make it possible to use the OCAMLRUN variable to specify 
which runtime to use while building the compilers (Sébastien Hinderer, 
review by David Allsopp) 

- #10451, #10635: Replace the use of iconv with a C utility to convert $(LIBDIR) 
to a C string constant on Windows when building the runtime. Hardens the 
generation of the constant on Unix for paths with backslashes, double-quotes 
and newlines. 
(David Allsopp, review by Florian Angeletti and Sébastien Hinderer) 

- #10471: Fix detection of arm32 architectures with musl in configure. 
(Louis Gesbert, review by David Allsopp) 

### Bug fixes: 

- #6654, #9774, #10401: make `include` and with `constraints` handle correctly 
the ghost components of signatures. For instance, in 

include struct class c = object end end type c 

the type `c` shadows the `class c` to avoid shadowing only the ghost type 
c introduced by the class. 
(Florian Angeletti, report by Eduardo Rafael, review by Gabriel Scherer) 

- #6985, #10385: remove all ghost row types from included modules 
(Florian Angeletti, review by Gabriel Scherer) 

- #7453, #9828, #10416: fix #show for recursive types and modules 
(Florian Angeletti, review by Gabriel Scherer) 

* #7469, #10408: Sys.time now returns processor time on Windows (previously 
returned wall-clock time) 
(David Allsopp, review by Nicolás Ojeda Bär) 

* #8857, #10220: Don't clobber GetLastError() in caml_leave_blocking_section 
when the systhreads library is loaded. 
(David Allsopp, report by Anton Bachin, review by Xavier Leroy) 

- #8575, #10362: Surprising interaction between polymorphic variants and 
constructor disambiguation. 
(Jacques Garrigue, report and review by Thomas Refis) 

- #8917, #8929, #9889, #10219: fix printing of nested recursive definitions 
in presence of a name collision. 
(Florian Angeletti, report by Thomas Refis, review by Gabriel Scherer) 

- #10005: Try expanding aliases in Ctype.nondep_type_rec 
(Stephen Dolan, review by Gabriel Scherer, Leo White and Xavier Leroy) 

- #10072, #10085: Check that sizes and offsets in stack frame descriptors 
do not overflow the 16-bit fields where they are stored. 
(Xavier Leroy, report by Github user pveber, review by Gabriel Scherer) 

- #10087, #10138: In the toplevel REPL, don't use the cache 
of included directories, so that files created or deleted while 
the REPL is running are correctly handled. 
(Xavier Leroy, report by Github user quakerquickoats, review by 
Jeremie Dimino) 

- #10294, #10295: fix an assert-failure in pattern-matching compilation 
(Gabriel Scherer, review by Thomas Refis and Luc Maranget, 
report by Nicolás Ojeda Bär) 

- #10147, #10148: Fix building runtime with GCC on macOS. 
(David Allsopp, report by John Skaller) 

- #10166: Fix illegal permutation error reporting in module aliases. 
(Matthew Ryan, review by Florian Angeletti) 

- #10189, #10190, #10347: Universal variables leaking through GADT equations 
(Jacques Garrigue, report and review by Leo White) 

- #10205: Avoid overwriting closures while initialising recursive modules 
(Stephen Dolan, review by Xavier Leroy, Hugo Heuzard and Vincent Laviron) 

- #10253, #10373: tweak error message for unknown variant constructors 
or record fields in type-directed disambiguation 
(Florian Angeletti, report by Hongbo Zhang, review by Gabriel Scherer) 

* #10277, #10383: Need to detect ambiguity recursively inside types to 
guarantee principality (affects only principal mode) 
(Jacques Garrigue, review by Thomas Refis, Leo White and Kate Deplaix) 

- #10283, #10284: Enforce right-to-left evaluation order for Lstaticraise 
(Vincent Laviron, report by Github user Ngoguey42, review by Gabriel Scherer) 

- #10298, #10305: Incorrect propagation of type equalities in functor 
application 
(Jacques Garrigue, report and review by Didier Remy) 

- #10324, #10325: Prevent generation of Lsend(Cached, _) in bytecode 
(Vincent Laviron, report by Yawar Amin and Nicolás Ojeda Bär, review by 
Jacques Garrigue) 

- #10338, #10340: Translcore.push_defaults does not respect scoping 
(Jacques Garrigue, report and review by Stephen Dolan) 

- #10351: Fix DLL loading with binutils 2.36+ on mingw-w64 
(David Allsopp, review by Nicolás Ojeda Bär) 

- #10339, #10354, #10387: Fix handling of exception-raising specific 
operations during spilling and liveness analysis. 
(This bug affects ARM and ARM64.) 
In passing, refactor Proc.op_is_pure and Mach.operation_can_raise. 
(Xavier Leroy, report by Richard Bornat, review by Stephen Dolan 
and Mark Shinwell) 

- #10371: no longer generatd useless `.cds` file when using 
`-output-complete-exe`. 
(Nicolás Ojeda Bär, review by David Allsopp) 

- #10376: Link runtime libraries correctly on msvc64 in -output-complete-obj 
(David Allsopp, review by Gabriel Scherer) 

- #10380: Correct handling of UTF-8 paths in configure on Windows 
(David Allsopp, review by Sébastien Hinderer) 

- #10450, #10558: keep %apply and %revapply primitives working with abstract 
types. This breach of backward compatibility was only present in the alpha 
releases of OCaml 4.13.0 . 
(Florian Angeletti, review by Thomas Refis and Leo White) 

- #10454: Check row_more in nondep_type_rec. 
(Leo White, review by Thomas Refis) 

- #10468: Correctly pretty print local type substitution, e.g. type t := ..., 
with -dsource 
(Matt Else, review by Florian Angeletti) 

- #10461, #10498: `caml_send*` helper functions take derived pointers 
as arguments. Those must be declared with type Addr instead of Val. 
Moreover, poll point insertion must be disabled for `caml_send*`, 
otherwise the derived pointer is live across a poll point. 
(Vincent Laviron and Xavier Leroy, review by Xavier Leroy and Sadiq Jaffer) 

- #10511: Cygwin ports now correctly configure when flexdll is not available. 
(David Allsopp, review by Florian Angeletti) 

- #10550, #10551: fix pretty-print of gadt-pattern-with-type-vars 
(Chet Murthy, review by Gabriel Scherer) 

- #10584, #10856: Standard Library documentation build no longer fails if 
optional libraries have been disabled. 
(David Allsopp, report by Yuri Victorovich review by Florian Angeletti) 

- #10593: Fix untyping of patterns without named existential quantifiers. This 
bug was only present in the beta version of OCaml 4.13.0. 
(Ulysse Gérard, review by Florian Angeletti) 

- #10603, #10611: Fix if condition marked as inconstant in flambda 
(Vincent Laviron and Pierre Chambart, report by Marcello Seri) 


[-- Attachment #2: Type: text/html, Size: 34466 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Caml-list] OCaml release 4.13.1
  2021-09-24 18:25 [Caml-list] OCaml releases 4.13.0 and 4.12.1 Florian Angeletti
@ 2021-10-01 17:30 ` Florian Angeletti
  0 siblings, 0 replies; 2+ messages in thread
From: Florian Angeletti @ 2021-10-01 17:30 UTC (permalink / raw)
  To: caml-list, caml-announce

[-- Attachment #1: Type: text/plain, Size: 844 bytes --]

Dear OCaml users, 

A regression has been discovered within OCaml 4.13.0 that make the compiler 
crash on classes named `row` 

module M = struct 
class row = object end 
end 

due to a collision between two families of internal identifiers. 

To restore your freedom to name classes however you want, we have 
released OCaml 4.13.1 as an early bug-fix release. 

This new version is available as a set of OPAM switches with 

opam update 
opam switch create 4.13.1 

and as a source download here: 

https://caml.inria.fr/pub/distrib/ocaml-4.13 

Happy hacking, 
Florian Angeletti for the OCaml team. 

OCaml 4.13.1 (01 October 2021) 
------------------------------------------- 

### Bug fixes 

- #10661, #10662: fix a bug with classes named "row" 
(Gabriel Scherer, report and review by Nicolás Ojeda Bär) 

[-- Attachment #2: Type: text/html, Size: 1181 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-24 18:25 [Caml-list] OCaml releases 4.13.0 and 4.12.1 Florian Angeletti
2021-10-01 17:30 ` [Caml-list] OCaml release 4.13.1 Florian Angeletti

caml-list - the Caml user's mailing list

Archives are clonable: git clone --mirror https://inbox.ocaml.org/caml-list

AGPL code for this site: git clone https://public-inbox.org/ public-inbox