May 21 – 25, 2012
New York City, NY, USA
US/Eastern timezone

Cling - The LLVM-based C++ Interpreter

May 21, 2012, 1:30 PM
Room 802 (Kimmel Center)

Room 802

Kimmel Center

Parallel Software Engineering, Data Stores and Databases (track 5) Software Engineering, Data Stores and Databases


Vasil Georgiev Vasilev (CERN)


Cling ( is a C++ interpreter, built on top of clang ( and LLVM ( Like its predecessor CINT, cling offers an interactive, terminal-like prompt. It enables exploratory programming with rapid edit / run cycles. The ROOT team has more than 15 years of experience with C++ interpreters, and this has been fully exploited in the design of cling. However, matching the concepts of an interpreter to a compiler library is a non-trivial task; we will explain how this is done for cling, and how we managed to implement cling as a small (10,000 lines of code) extension to the clang and llvm libraries. The resulting features clearly show the advantages of basing an interpreter on a compiler. Cling uses clang's praised concise and easy to understand diagnostics. Building an interpreter on top of a compiler library makes the transition between interpreted and compiled code much easier and smoother. We will present the design, e.g. how cling treats the C++ extensions that used to be available in CINT. We will also present the new features, e.g. how C++11 will come to cling, and how dictionaries will be simplified due to cling. We describe the state of cling's integration in the ROOT Framework.
Student? Enter 'yes'. See yes

Primary author


Axel Naumann (CERN) Mr Paul Russo (FERMILAB) Mr Philippe Canal (FERMILAB)

Presentation materials