9. Literature

What is Cling?

Link

Info

Description

Relaxing the One Definition Rule in Interpreted C++

Javier Lopez Gomez et al.

29th International Conference on Compiler Construction 2020

This paper discusses how Cling enables redefinitions of C++ entities at the prompt, and the implications of interpreting C++ and the One Definition Rule (ODR) in C++

Cling – The New Interactive Interpreter for ROOT 6

V Vasilev et al 2012 J. Phys.: Conf. Ser. 396 052071

This paper describes the link between Cling and ROOT. The concepts of REPL and JIT compilation. Cling’s methods for handling errors, expression evaluation, streaming out of execution results, runtime dynamism.

Interactive, Introspected C++ at CERN

V Vasilev, CERN PH-SFT, 2013

Vassil Vasilev (Princeton University) explains how Cling enables interactivity in C++, and illustrates the type introspection mechanism provided by the interpreter.

Introducing Cling, a C++ Interpreter Based on Clang/LLVM

Axel Naumann 2012 Googletechtalks

Axel Naumann (CERN) discusses Cling’s most relevant features: abstract syntax tree (AST) production, wrapped functions, global initialization of a function, delay expression evaluation at runtime, and dynamic scopes.

Creating Cling, an interactive interpreter interface

Axel Naumann 2010 LLVM Developers’ meeting

This presentation introduces Cling, an ahead-of-time compiler that extends C++ for ease of use as an interpreter.

Demos, tutorials, Cling’s ecosystem:

Link

Info

Description

Cling integration | CLion

2022.2 Version

CLion uses Cling to integrate the Quick Documentation popup by allowing you to view the value of the expressions evaluated at compile time.

Interactive C++ for Data Science

Vassil Vassilev 2021 CppCon (The C++ Conference)

In this video, the author discusses how Cling enables interactive C++ for Data Science projects.

Cling – Beyond Just Interpreting C++

Vassil Vassilev 2021 The LLVM Project Blog

This blog page discusses how Cling enables template Instantiation on demand, language interoperability on demand, interpreter/compiler as a service, plugins extension.

TinySpec-Cling

Noah Weninger 2020

A tiny C++ live-coded overlap-add (re)synthesizer for Linux, which uses Cling to add REPL-like functionality for C++ code.

Interactive C++ for Data Science

Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay 2020 The LLVM Project Blog

Cling enables eval-style programming for Data Science applications. Examples of ROOT and Xeus-Cling for data science are shown.

Interactive C++ with Cling

Vassil Vassilev 2020 The LLVM Project Blog

This blog page briefly discusses the concept of interactive C++ by presenting Cling’s main features, such as wrapper functions, entity redefinition, error recovery.

Using the Cling C++ Interpreter on the Bela Platform

Jack Armitage 2019

Cling has been installed on a BeagleBoard to bring live coding to the Bela interactive audio platform.

Implementation of GlobalModuleIndex in ROOT and Cling

Arpitha Raghunandan 2012 Google Summer of Code GSoC

GlobalModuleIndex can be used for improving ROOT’s and Cling’s performance

Example project using cling as library

Axel Naumann 2016 GitHub

This video showcases how to use Cling as a library, and shows how to set up a simple CMake configuration that uses Cling.

Cling C++ interpreter testdrive

Mika 2015 Youtube

In this tutorial, a developer tries Cling for the first time by uploading a few simple C++ user-cases onto Cling, involving also the loading of external files

Building an Order Book in C++

Dimitri Nesteruk 2015 Youtube

This demo shows how to build a simple order book using C++, CLion, Google Test and, of course, Cling.

Cling C++ interpreter testdrive

Dimitri Nesteruk 2015 Youtube

This tutorial describes Cling’s general features. You will learn how to start Cling on Ubuntu, how to write a simple expression (N=5, N++) and how to define a Class for calculating body mass index.

Cling Interactive OpenGL Demo

Alexander Penev 2012 Youtube

This demo shows how to use Cling for interactive OpenGL. A rotating triangle with changing color, a static figure, and a figure with light effects are created.

Language Interoperability with Cling:

Link

Info

Description

Compiler Research - Calling C++ libraries from a D-written DSL: A cling/cppyy-based approach

Alexandru Militaru 2021 Compiler-Research Meeting

This video presents D and C++ interoperability through SIL-Cling architecture

Interactive CUDA C++ with Cling:

Link

Info

Description

Adding CUDA® Support to Cling: JIT Compile to GPUs

Simeon Ehrig 2020 LLVM Developer Meeting

Interactive CUDA-C++ through Cling is presented. Cling-CUDA architecture is discussed in detail, and an example of interactive simulation for laser plasma applications is shown.

C++ in Jupyter Notebook - Xeus Cling:

Link

Info

Description

Interactive C++ code development using C++Explorer and GitHub Classroom for educational purposes

Patrick Diehl 2020 Youtube

C++Explorer is a novel teaching environment based on Jupyterhub and Cling, adapted to teaching C++ programming and source code management.

Deep dive into the Xeus-based Cling kernel for Jupyter

Vassil Vassilev 2021 Youtube

Xeus-Cling is a Cling-based notebook kernel which delivers interactive C++.

Xeus-Cling: Run C++ code in Jupyter Notebook

LearnOpenCV 2019 Youtube

In this demo, you will learn an example of C++ code in Jupyter Notebook using Xeus-Cling kernel.

Clad:

Link

Info

Description

Clad: Automatic differentiation plugin for C++

Read The Docs webpage

Clad is a plugin for Cling. It allows to perform Automatic Differentiation (AD) on multivariate functions and functor objects