Logo Sciencesconf

Cppyykernel: un noyau Jupyter pour le C++

Sébastien Gilles  1@  , Vincent Rouvreau  2@  

1 : Centre Inria de Saclay
Institut National de Recherche en Informatique et en Automatique

2 : Centre Inria de Saclay
Institut National de Recherche en Informatique et en Automatique

Jupyter est un outil très précieux pour la formation: il permet à ceux suivant la formation de tester directement que le code qui leur est montré dans le cadre de la formation est valide et au besoin de le modifier pour comprendre ce qu'il se passe.

Le Service d'Expérimentation et de Développement (SED) du centre Inria Saclay dispense régulièrement depuis 2018 une formation C++ (https://gitlab.inria.fr/formations/cpp/gettingstartedwithmoderncpp) utilisant des notebooks.

Dans un premier temps, nous utilisions le noyau Xeus -cling (https://github.com/jupyter-xeus/xeus-cling) développé par la société QuantStack, mais ils ont essentiellement arrêté de le maintenir et le noyau a accumulé une dette technique (ne fonctionnait plus sous macOS, et n'a pas suivi les versions de cling permettant notamment le support du C++ 20). Nous avons donc entrepris de construire notre propre noyau Jupyter en nous appuyant sur la librairie Python `cppyy` (https://cppyy.readthedocs.io/en/latest/), qui est une surcouche de cling en Python.

Nous avons dans une premier temps obtenu une version isofonctionnelle de Xeus-cling, avec support de macOS et du C++ 20. Nous l'avons ensuite étendu pour permettre de compiler et d'exécuter le contenu d'une cellule avec un compilateur local sans utiliser cppyy - cela permet notamment de gérer des situations que cling ne gère pas correctement et pour lesquelles nous utilisions précédemment des compilateurs en ligne tels que coliru ou compiler explorer.

La présentation peut intéresser deux types de public:

- Ceux qui s'intéressent à la possibilité d'utiliser des notebooks Jupyter pour du C++
- Ceux qui se posent la question d'écrire leur propre noyau pour Jupyter

 

Type : : Présentation

Thématiques : La programmation d’aujourd’hui et de demain

Chargement... Chargement...