Hello everybody,

OCamlJit 2.0 is a new Just-In-Time engine for Objective Caml 3.12.0 on desktop 
processors (x86/x86-64). It translates the OCaml byte-code used by the 
interpreter (ocamlrun and ocaml) to x86/x86-64 native code on-demand and runs 
the generated native code instead of interpreting the byte-code. It is designed 
to run with minimal compilation overhead (translating only what is being 
executed, avoiding costly code generation and optimization techniques), while 
being 100% compatible with the byte-code runtime (including serialization and 
hashing of closures, etc.).

OCamlJit 2.0 was specifically designed for desktop processors and is not really 
portable to anything else in its current shape, because the target audience are 
people using the interactive top-level and the byte-code interpreter for rapid 
prototyping/development (which is unlikely to happen on anything else but 
x86/x86-64). The implementation currently requires a system that adheres to the 
SysV ABI, which includes Linux, BSD, OS X, but excludes Win32/Win64 
(patches/ideas are welcome). It was tested on Linux/x86 (Debian), Linux/amd64 
(CentOS) and Mac OS X 10.6 (64bit). The x86 implementation requires SSE2 
capable processors (otherwise it falls back to the byte-code interpreter), so 
it won't speedup your OCaml programs running on 486 CPUs. :-)

OCamlJit 2.0 runs most benchmarks at 2-6 times faster than the byte-code 
interpreter. The interactive top-level benefits twice when used with the JIT 
engine: (a) the compiler stages are JIT compiled and (b) the generated 
byte-code is JIT compiled. A tech report describing a slightly earlier 
prototype and including performance measures of OCamlJit 2.0 on Mac OS X 
(64bit) is available at:

 http://arxiv.org/abs/1011.1783

The source code is available from the Git repository (master branch) at:

 http://gitorious.org/ocamljit2/ocamljit2

Installation is similar to installation of Objective Caml, just run

 ./configure -prefix /path/to/ocamljit2 [options]

followed by

 make world opt
 make install

This will install a fully working Objective Caml 3.12.0 to /path/to/ocamlji2, 
where /path/to/ocamljit2/bin/ocamlrun and 
/path/to/ocamljit2/lib/libcamlrun_shared.so include the JIT engine in addition 
to the byte-code interpreter (fallback to the byte-code interpreter is 
necessary for debugging with ocamldebug). The configure script prints a line 
indicating whether the JIT engine is enabled or not (if not, it'll be just a 
regular OCaml 3.12 installation).

Comments are welcome.

Enjoy!

Benedikt Meurer

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to