Titre : CamllVM - an LLVM based runtime for Ocaml Auteur : Raphael Amiard (UPMC) Abstract : There are two official ways of running Ocaml code : The first is using the bytecode compiler and interpreter, the second is using the ocamlopt compiler to generate native code directly. There has been many discussions about using LLVM in the context of OCaml code generation. The theoretical advantages of using LLVM for code generations are amongst others, faster execution, better portability, and shared optimizations amongst all users of LLVM. The CamllVM project takes the approach of generating LLVM code from the OCaml bytecode usually interpreted by ocamlrun. There are many problems to tackle in such an approach, but the two main pain points arise from two facts : - OCaml bytecode was meant to be interpreted, not compiled. It is untyped, where LLVM intermediate representation is typed, and uses stack semantics where LLVM uses register based semantics. - LLVM, despite aiming to be a general library apt to compile down all sorts of languages, is of course designed with C, C++, and Objective-C in mind, since it is the main languages it is used to compile. It thus presents a number of difficulties to us, mainly about handling exceptions and garbage collection. In this talk, I will present the advantages and drawbacks of the approach CamllVM has taken, what leads were explored, and what is working. I will also summarize the main difficulties in compiling OCaml to LLVM.