Contributor
Aditi Dutta

Reflection-based Python-C++ language bindings: cppyy - Integrate the Cling backend into PyPy/cppyy


Mentors
wlav
Organization
CERN SFT

For the purpose of High Energy Physics (HEP) Experiments, the framework required should be able to support the scale and complexity of HEP codes. cppyy is such a framework that provides a fully automated, run time, language bridge between Python and C++. For cppyy, both the implementations - CPython (the default byte-code Python interpreter written in C) and PyPy (a Python interpreter written in Python language) - support CINT, an interpreter for C/C++ for rapid development. Moreover, the CPython version also supports Cling. Cling is an interactive C++ interpreter, built on the top of Clang/LLVM that provides a high-performance alternative to the C++ interpreter in ROOT called CINT.

The purpose of this project is (1) to integrate the Cling back-end into PyPy implementation; while (2) ensuring maximum reuse of existing code on both CPython/cppyy and PyPy/cppyy implementations for better compatibility and maintenance; and (3) implement a method for distribution of Clang modules with the standard Python distribution tools using pip, the Python Packaging Authority recommended tool for managing and installing packages.