It is an implementation of the ML language, based on the Caml Light dialect extended with a complete class-based object system and a powerful module system in the style of Standard ML.
Objective Caml comprises two compilers. One generates bytecode which is then interpreted by a C program.
This compiler runs quickly, is portable to essentially any 32 or 64 bit Unix platform and generates compact code with moderate memory requirements.
Performance of generated programs is quite good for a bytecoded implementation.
This compiler can be used either as a standalone, batch-oriented compiler that produces standalone programs, or as an interactive, toplevel-based system.
The other compiler generates high-performance native code for a number
Compilation takes longer and generates bigger code, but the generated programs deliver excellent performance, while retaining the moderate memory requirements of the bytecode compiler.
Objective Caml is the most popular variant of the Caml language.
From a language standpoint, it extends the core Caml language with a fully-fledged object-oriented layer, as well as a powerful module system, all connected by a sound, polymorphic type system featuring type inference.
The Objective Caml system is an industrial-strength implementation of this language, featuring a high-performance native-code compiler (ocamlopt) for 9 processor architectures (IA32, PowerPC, AMD64, Alpha, Sparc, Mips, IA64, HPPA, StrongArm), as well as a bytecode compiler (ocamlc) and an interactive read-eval-print loop (ocaml) for quick development and portability.
The Objective Caml distribution includes a comprehensive standard library, a replay debugger (ocamldebug), lexer (ocamllex) and parser (ocamlyacc) generators, a pre-processor pretty-printer (camlp4) and a documentation generator (ocamldoc).
· GNU C compiler - gcc
What's New in This Release: [ read full changelog ]
· Unused variables not detected in "include (struct .. end)"
· camlp4 revised syntax printing bug in the toplevel (reported on caml-list)
· configure: do not define _WIN32 under cygwin
· Hardened generic comparison in the case where two custom blocks are compared and have different sets of custom operations.
· Hardened comparison between bigarrays in the case where the two bigarrays have different kinds.
· Fixed wrong autodetection of expm1() and log1p().
· Don't add .exe suffix when installing the ocamlmktop shell script
· ocamldoc: minor fixes related to the display of ocamldoc options
· Fixed bug with huge values in OCAMLRUNPARAM
· Mismatch between declaration and definition of caml_major_collection_slice
· Added '-ml-synonym' and '-mli-synonym' options to ocamldep
· Added '-ocamldoc' option to ocamlbuild
· Added possibility to add options to ocamlbuild
· Added access to current camlp4 parsers and printers
· Improved instruction selection for float operations on amd64
· Added a 'usage_string' function to Arg
· Allow with constraints to add a type equation to a datatype definition
· Allow to merge '@before' tags like other ones
· Allow dependency on file "_oasis"
· Changed default minor heap size from 32k to 256k words.
· Added new operation 'compare_ext' to custom blocks, called when comparing a custom block value with an unboxed integer.