Skip to content

Releases: ocaml/ocaml

OCaml 4.07.1

22 May 13:30
Compare
Choose a tag to compare

OCaml 4.07.0

14 Jul 16:38
Compare
Choose a tag to compare
  • The standard library is now packed into a module called Stdlib, which is open by default. This makes it easier to add new modules to the standard library without clashing with user-defined modules.

  • The modules Seq (functional iterators) and Float (floating-point operations) were added to the standard library.

  • Improvements to several error and warning messages printed by the compiler make them easier to understand.

  • Many improvements to flambda. In particular, compilation times are reduced, as well as the size of the generated .cmx files when using the -Oclassic optimisation level.

  • The GC should handle the accumulation of custom blocks in the minor heap better; this solves some memory-usage issues observed by code which allocates a lot of small custom blocks, typically small bigarrays.

  • Removed the dependency on curses/terminfo/termcap.

  • The SpaceTime profiler now works under Windows.

  • The HTML manual was restyled and looks nicer.

See also: detailed list of changes

OCaml 4.06.1

12 Jun 10:24
Compare
Choose a tag to compare

OCaml 4.06.0

12 Jun 10:28
Compare
Choose a tag to compare
  • Strings (type string) are now immutable by default. In-place modification must use the type bytes of byte sequences, which is distinct from string. This corresponds to the -safe-string compile-time option, which was introduced in OCaml 4.02 in 2014, and which is now the default.

  • Object types can now extend a previously-defined object type, as in <t; a: int>.

  • Destructive substitution over module signatures can now express more substitutions, such as S with type M.t := type-expr and S with module M.N := path.

  • Users can now define operators that look like array indexing, e.g. let ( .%() ) = List.nth in [0; 1; 2].%(1)

  • New escape \u{XXXX} in string literals, denoting the UTF-8 encoding of the Unicode code point XXXX.

  • Full Unicode support was added to the Windows runtime system. In particular, file names can now contain Unicode characters.

  • An alternate register allocator based on linear scan can be selected with ocamlopt -linscan. It reduces compilation time compared with the default register allocator.

  • The Num library for arbitrary-precision integer and rational arithmetic is no longer part of the core distribution and can be found as a separate OPAM package.

See also: detailed list of changes.

OCaml 4.05.0

12 Jun 10:29
Compare
Choose a tag to compare

This release consists mostly of bug fixes and security improvements. See detailed list of changes.

OCaml 4.04.2

12 Jun 10:30
Compare
Choose a tag to compare

This release fixes a security issue (CVE-2017-9772: Privilege escalation in OCaml runtime for SUID executables) that was introduced in 4.04.0. See detailed list of changes.

OCaml 4.04.1

12 Jun 10:31
Compare
Choose a tag to compare

This release consists of bug fixes. See detailed list of changes.

OCaml 4.04.0

12 Jun 10:32
Compare
Choose a tag to compare
  • Exceptions can be declared locally within an expression, with syntax let exception ... in ...

  • Optimized memory representation for immutable records with a single field, and concrete types with a single constructor with a single argument. This is triggered with a @@unboxed attribute on the type definition.

  • Support for the Spacetime memory profiler was added.

See also: detailed list of changes.

OCaml 4.03.0

12 Jun 10:33
Compare
Choose a tag to compare
  • A new intermediate representation, called Flambda, was added to the
    native-code compiler, along with several new optimizations over the
    Flambda representation, such as aggressive function inlining. (The
    Flambda optimizer needs to be activated at configuration time by
    ./configure -flambda.)
  • New language feature: inline records as arguments to datatype
    constructors. This makes it possible to name the arguments of a
    constructor, and use convenient record notation to access them,
    without the cost of declaring a separate record type for the
    arguments.
  • The @unboxed and @untagged attributes are supported on external
    function declarations to pass parameters and results to C stub
    functions in a more efficient way. Other attributes honored by the
    compiler include @tailcall and @inline.
  • Improvements to the garbage collector, resulting in better GC
    latency (shorter GC pauses).
  • Support for ephemerons, a more general form of GC finalization of
    data structures.
  • The runtime system is now compiled at higher levels of C
    optimization, resulting in significant speedups for the bytecode
    interpreter.
  • New native code generators supporting the PowerPC 64-bit
    architecture (in big and little-endian modes) and the IBM zSystem
    architecture.
  • The whole code base (compilers, libraries and tools) is now licensed
    under the LGPL v2.1 with static linking exception.
  • The ocamlbuild compilation manager was split off and lives as an
    independent project.

See also: detailed list of changes.

OCaml 4.02.3

12 Jun 10:39
Compare
Choose a tag to compare