Skip to content

Releases: ocaml/ocaml

OCaml 5.2.1

18 Nov 14:06
Compare
Choose a tag to compare

Bug fixes.
See detailed list of changes.

OCaml 5.2.0

13 May 12:27
Compare
Choose a tag to compare

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

  • Re-introduced GC compaction
  • Restored native backend for POWER 64 bits
  • Thread sanitizer support
  • New Dynarray module
  • New -H flag for hidden include directories
  • Project-wide occurence metadata support for developer tools
  • Raw identifiers
  • Local open in type expressions

And a lot of incremental changes:

  • Around 20 new functions in the standard library
  • Many fixes and improvements in the runtime
  • Many bug fixes

OCaml 4.14.2

14 Mar 16:48
Compare
Choose a tag to compare

OCaml 5.1.1

07 Dec 15:27
Compare
Choose a tag to compare
  • Breaking change: Marshal.Compression has been removed, compressed marshaling has been moved to an internal compiler library
  • Bug fixes. See detailed list of changes.

OCaml 5.1.0

14 Sep 08:56
Compare
Choose a tag to compare

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

OCaml 5.0.0

16 Dec 12:28
Compare
Choose a tag to compare

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.

OCaml 4.14.0

28 Mar 12:50
Compare
Choose a tag to compare
  • 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

OCaml 4.13.1

11 Oct 14:52
Compare
Choose a tag to compare

Regression fix release.
See the detailed list of changes.

OCaml 4.13.0

24 Sep 12:53
Compare
Choose a tag to compare
  • 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.

OCaml 4.12.1

24 Sep 08:01
Compare
Choose a tag to compare