Cling is an interactive C++ interpreter built on top of LLVM aiming to make C++ more suitable for exploration and rapid application development. In a recent series of articles, research software engineer Vassil Vassilev describes how they are evolving it to enable interoperability with Python, Jupyter Notebooks, and support for hardware accelerators.
The approach above is aimed to enable a few features that are key for interactivity and that C++, being a compiled language, does not support well. Those include incremental execution of statements in the global scope, results reporting and error recovery, entity redefinition, and code removal to deal with semantic errors. All of these features requires some intricate solution involving a deep knowledge of Clang and LLVM internals. For example,