Ocaml Versions Save

The core OCaml system: compilers, runtime system, base libraries

4.14.2

1 month ago

Bug fixes. See detailed list of changes.

5.1.1

4 months ago
  • Breaking change: Marshal.Compression has been removed, compressed marshaling has been moved to an internal compiler library
  • Bug fixes. See detailed list of changes.

5.1.0

7 months ago

OCaml 5.1.0 is still a relatively experimental release compared to the OCaml 4.14 branch. Some of the highlights in OCaml 5.1.0 are:

  • Many runtime performance regression and memory-leaks fixes (dynlinking, weak array, weak hash sets, GC with idle domains, GC prefetching).
  • Restored support for native code generation on RISC-V and s390x architectures.
  • Restored Cygwin port.
  • Reduced installation size (50% reduction)
  • Compressed compilation artefacts (.cmi, .cmt, .cmti, .cmo, .cma files)
  • 19 error message improvements
  • 14 standard library functions made tail-recursive with Tail-Recursion-Modulo-Cons (TRMC), such as List.append and List.map.
  • 57 new standard library functions
  • More examples in the standard library documentation
  • 42 bug fixes

5.0.0

1 year ago

OCaml 5.0.0 introduces a completely new runtime environment with support for shared memory parallelism and effect handlers.

As a language, OCaml 5 is fully compatible with OCaml 4 down to the performance characteristics of your programs. In other words, any code that works with OCaml 4 should work the same with OCaml 5.

The currently known exceptions to this rule are:

  • the removal of many long-deprecated functions and modules
  • changes to the internal runtime API
  • the performance of ephemerons is currently (and temporarily) strongly degraded.

4.14.0

2 years ago
  • Integrated support for "go to definitions" in Merlin.
  • Standard library: new modules In_channel and Out_channel, many new functions in Seq module, UTF decoding and validation support for strings and bytes.
  • Runtime optimisation: GC prefetching. Benchmarks show a speedup of around 20% in GC-heavy programs.
  • Improved error messages in particular for module-level error.
  • Deprecated functions and modules in preparation for OCaml 5. In particular, the Stream and Genlex modules are now deprecated.
  • Type variables can be explicitly introduced in value and variant constructor declarations. For instance,
    val fold: ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc
    type showable = Show: 'a * ('a -> string) -> showable

can now be written as

    val fold: 'acc 'elt. ('acc -> 'elt -> 'acc) -> 'acc -> 'elt list -> 'acc
    type showable = Show: 'a. 'a * ('a -> string) -> showable
  • Tail-call with up to 64 arguments are now guaranteed to be optimized for all architectures.
  • Experimental tail modulo cons (TMC) transformation

4.13.1

2 years ago

Regression fix release. See the detailed list of changes.

4.13.0

2 years ago
  • Safe points: a multicore prerequisite that ensures that ocamlopt-generated code can always be interrupted.
  • The best-fit GC allocation policy is the now default policy (and many other GCs 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

See the detailed list of changes.

4.12.1

2 years ago

Bug fixes. See detailed list of changes.

4.12.0

3 years ago
  • Major progress in reducing the difference between the mainline and multicore runtime
  • A new configuration option ocaml-option-nnpchecker which emits an alarm when the garbage collector finds out-of-heap pointers that could cause a crash in the multicore runtime
  • Support for macOS/arm64
  • Mnemonic names for warnings
  • Many quality of life improvements
  • Many bug fixes

See the detailed list of changes

4.11.2

3 years ago

Bug fixes. See detailed list of changes