The ocaml-experimental repository serves as a playground for experimenting with new features and changes to the OCaml language and runtime, including a new native code toplevel
ocamlnat and an implementation of the linear scan register allocator for the optimizing native code compiler
Native code toplevel #
We have developed a new native code OCaml toplevel
ocamlnat, which is up to 100 times faster than the byte code toplevel
ocaml. It is based on the optimizing native code compiler, the native runtime and an earlier prototype by Alain Frisch. It is build upon Just-In-Time techniques and currently supports Unix-like systems (i.e. Linux, BSD or Mac OS X) running on x86 or x86-64 processors. Support for additional architectures and operating systems is planned, but not yet available.
The native code toplevel was moved to a new project ocamlnat.
Download the latest source code release ocaml-3.12.1+ocamlnatjit2.tar.bz2 (or any other release from the list above), and extract the source distribution tarball using the following command:
tar xjf ocaml-3.12.1+ocamlnatjit2.tar.bz2 cd ocaml-3.12.1+ocamlnatjit2
Assuming that you want to install the experimental OCaml into
/usr/local on a Unix-like system (i.e. Linux, BSD or Mac OS X), proceed by
./configure -prefix /usr/local make world make opt make opt.opt
These are basically the standard configuration and build steps as described in the INSTALL file. Feel free to pass additional parameters the
configure script if you need to.
Afterwards run the following command to also build the new native OCaml toplevel
ocamlnat, which is currently only available on Unix-like systems running on x86 or x86-64 processors, so this command will fail on other systems.
The final step is to install the new OCaml distribution into the selected prefix directory (i.e.
sudo make install
Et voila, now you can use your new OCaml distribution, especially the new
ocamlnat toplevel. Assuming that you installed it into
/usr/local, then you can execute it using the following command, which presents you with an interactive toplevel prompt, i.e.:
$ /usr/local/bin/ocamlnat Objective Caml version 3.12.1+ocamlnatjit2 (Thu Oct 06 2011 00:00:00 GMT+0000 (Coordinated Universal Time)) - native toplevel #
You can use it as a drop-in replacement for the byte code toplevel
ocaml in almost all cases, and enjoy a performance boost of up to 100x (compared to the byte code toplevel), as detailed here and here.
- Marcell Fischbach and Benedikt Meurer. "Towards a native toplevel for the OCaml language". Computing Research Repository (CoRR), Programming Languages (cs.PL), Oct 2011.
Available on GitHub: https://github.com/bmeurer/ocaml-experimental
Clone the project with Git by running:
git clone git://github.com/bmeurer/ocaml-experimental.git
If you come across any problems, please create a ticket and we will try to get it fixed as soon as possible.
Once you have made your commits:
- Fork ocaml-experimental.
- Create a topic branch - git checkout -b my_branch
- Push to your topic branch - git push origin my_branch
- Create a Pull Request from your topic branch.
- That's it!
Copyright © 2010-2011 Benedikt Meurer. See the LICENSE file for details.