Welcome to our Compiler Research Group
We are a group of programming languages enthusiasts located at the Princeton
University and CERN. Our primary goal is research into foundational software
tools helping scientists to program for speed, interoperability, interactivity,
flexibility, and reproducibility.
Our current research focus is primarily in interpretative C/C++/CUDA,
automatic differentiation tools, and C++ language interoperability with Python
ez-clang: experimental C++ REPL for bare metal
In 2021 a new remote-JIT layer “RemoteEPC” landed in LLVM’s OrcJIT
library . It separates serialization from transport, streamlines
error behavior and integrates well with ExecutorProcessControl. Combined
with the clean design and extensibility of ORCv2 and JITLink, it lowers
the bar for building exotic out-of-process LLVM bitcode JITs.
The ez-clang project  makes use of all these to build a pure
out-of-process REPL specifically designed for very low-resource embedded
devices. The executor endpoint on the device is very simple and fits
into a few Kilobytes of memory. All heavy lifting happens in the JIT
process on the host.
I want to present my proof-of-concept implementation, which is based on
a hacked-up version of cling  (bringing in Clang-integration, a
command line and the concept of transaction-based incremental
compilation). Right now, it supports a small selection of Cortex-M
development boards. The smallest is the TeensyLC  with an ARMv6-M
instruction set, 62kb Flash memory and 8kb RAM.
Deep dive into the Xeus-based Cling kernel for Jupyter
Sylvain Corlay from QuantStack talks about C++ in Jupyter Notebooks
using the Xeus-Cling. Xeus-Cling is a Cling-based notebook kernel which
delivers interactive C++. Sylvain makes a deep dive in topic outlining
some of the specific challenges and requirements.
Cling’s CUDA Backend: Interactive GPU development with CUDA C++
Simeon Ehrig from Helmholtz-Zentrum Dresden-Rossendorf (HZDR) shared his
work with us recently. In his talk he gives insights about interactive
CUDA using the C++ interpreter Cling. He shows several exciting examples
in the area of dynamic execution without loss of state where we can
“checkpoint” the execution state, add specific data analysis and reuse
the previous computations.
Calling C++ libraries from a D-written DSL: A cling/cppyy-based approach
Alexandru Militaru shared his work with us recently. In his talk he
gives insights about C++/D interoperability on the fly using the
interactive C++ interpreter Cling and cppyy.
Interested in joining the development or to use our work? Join our
compiler-research-announce google groups forum.
We are looking for and passionate undergrad and graduate students. Please visit
our vacancies page.