- 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.