Releases: ocaml/ocaml
OCaml 4.07.1
Bug fixes. See detailed list of changes.
OCaml 4.07.0
-
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
Bug fixes. See detailed list of changes.
OCaml 4.06.0
-
Strings (type
string
) are now immutable by default. In-place modification must use the typebytes
of byte sequences, which is distinct fromstring
. 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
andS 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 pointXXXX
. -
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
This release consists mostly of bug fixes and security improvements. See detailed list of changes.
OCaml 4.04.2
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
This release consists of bug fixes. See detailed list of changes.
OCaml 4.04.0
-
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
- 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
Bug fixes. See detailed list of changes.