MRG Project Logo

Mobile Resource Guarantees
(MRG, project IST-2001-33149)

The MRG project was funded in 2002-2005 under the Global Computing pro-active initiative of the Future and Emerging Technologies part of the Information Society Technologies programme of the European Commission's Fifth Framework Programme.

Related Projects

What is Camelot?

Camelot is a resource-safe functional programming language of the ML family. It is strict, first-order, strongly typed and features novel type systems to guarantee bounded resource consumption of programs written in Camelot. Camelot is compiled to JVML, and thus Camelot programs can be executed as mobile code in a distributed environment. See Gentle Introduction to Camelot for more details. For users at Edinburgh, there are some very quick instructions on how to run the compiler here.


The Camelot compiler is available both in source code ( .tar.gz, .zip) and as binary packages ( .tar.gz, .zip, rpm to follow) for Linux. The distribution includes the Camelot compiler, the Grail assembler and disassembler, and the LFD_inference program. For more details, see the installation section of the documentation.

The current version of the compiler is version 4.5 [temporary] (4th August 2005) .

Building the Camelot compiler from source requires the Moscow ML compiler.


Installation from binaries

To install a binary RPM, just issue the usual command rpm -ivh <rpm-file>.

To install a binary tarball, issue the command tar xvfz <tarball>. The top level compiler is mrgprogs.bin/camelot so you probably want to copy iy to a more convenient location or link it into your PATH, e.g. by doing ln -s `pwd`/mrgprogs.bin/camelot /usr/local/bin. You should also ensure that the file mrgprogs.bin/Camelotlib.class is somewhere in your Java classpath.

Installation from sources


  • Moscow ML (see MOSMLC make variable; Moscow ML page)
  • Java bytecode compiler (javac in your path)
  • OCaml (LFD module only; OCaml page)
  • lp_solve (LFD module only; download)

To install from source, go to the dir mrgprogs.src/Camelot/src and type make. Edit the Makefile if you have Moscow ML in another place than /usr/bin/mosml.

The LFD module is separate from the Camelot compiler, proper, and lives in the the LFD_inference dir. You need a recent version of the OCaml compiler to build it, and the lp_solve package to solve it. More detailed information is available about LFD_inference.

Testing the installation

Go to mrgprogs.src/Camelot/examples (or mrgprogs.bin/examples for the binary distribution) and compile the programs there. There is no wrapped up test script available, so just try a few programs individually. E.g. type camelot Hello.cmlt and then java Hello to run a version of the all popular hello world program, that statically scopes of the most important parts of the world. Note that the file Camelotlib.class (which contains Camelot library functions) should be somewhere in your Java classpath.

Camelot Programming

The Camelot manual describes how to use the compiler and discusses basics of writing Camelot programs.

The Grail manual describes the (dis-)assembler that translates the Grail language, that is produced by the main part of the Camelot compiler, to JVM code and vice versa.


A list of papers can be found at the publications page of the MRG project. A Gentle Introduction to Camelot is also available on-line.

Camelot Example Programs

The sources contain a directory mrg/progs/Camelot/examples with some very simple test programs. After succesful installation compile and run these programs like this:

# camelot Fib.cmlt
Compiled Fib to JVML
# java Fib 13
fib 13 = 377

On-line Demo of Camelot

You can also compile and run Camelot programs, and perform space inference by going to the producer side of the online demo. That way you don't have to install Camelot at all to try simple programs. If you use Camelot more heavily, we recomment that you get a binary installation, though, and also please let us know.

Hans-Wolfgang Loidl

These pages are hosted by the Informatics Groups server at the University of Edinburgh.
Site maintained by Robert Atkey. This page last updated on: 2005-11-21.

Valid HTML 4.01!
Validate this page