AutoWIG : automatisation de l'encapsulation de librairies C++ en Python et en R
Résumé
Python and R programming languages are two of the most popular languages in scientific computing. However, most scientific packages incorporates C and C++ libraries. While several semi-automatic solutions and tools exist to wrap C++ libraries (RCPP, Boost.Python), the process of wrapping a large C++ library is cumbersome and time consuming. Some solutions have been developed in the past (e.g. Py++ or XDress) but require to write complex code to automate the process, and rely on technologies that are not maintained. AutoWIG relies on the LLVM/Clang technology for parsing C/C++ code and the Mako templating engine for generating Boost.Python wrappers. We will illustrate the usage of AutoWIG on a complex collection of C++ libraries for statistical analysis.
Les langages de programmation Python et R sont deux des langages les plus populaires pour le calcul scientifique. Cependant, la plupart des logiciels scientifiques incorporent des biblioth eques C ou C++. Bien qu'il existe plusieurs solutions et des outils semi-automatiques pour encapsuler des biblioth eques C++ (RCPP, Boost.Python), le processus d'encapsulation d'une grande biblioth eque C++ est long et fastidieux. Certaines solutions pour Python ont eté développées dans le passé (par exemple Py++ ou XDress) mais nécessitent d'´ ecrire du code complexe pour automatiser le processus, et de compter sur des technologies qui ne sont pas entretenues. Le logiciel AutoWIG fait appeì a la technologie LLVM/Clang pour l'analyse syntaxique de code C/C++ et a l'outil Mako pour générer l'encapsulation des biblioth eques C++ avec Boost.Python et RCPP. Nous illustrerons l'utilisation d'AutoWIG sur un ensemble complexe de biblioth eques C++ pour l'analyse statistique. Mots-clés. C++, Python, R, calcul scientifique Abstract. Python and R programming languages are two of the most popular languages in scientific computing. However, most scientific packages incorporates C and C++ libraries. While several semi-automatic solutions and tools exist to wrap C++ libraries (RCPP, Boost.Python), the process of wrapping a large C++ library is cumbersome and time consuming. Some solutions have been developed in the past (e.g. Py++ or XDress) but require to write complex code to automate the process, and rely on technologies that are not maintained. AutoWIG relies on the LLVM/Clang technology for parsing C/C++ code and the Mako templating engine for generating Boost.Python wrappers. We will illustrate the usage of AutoWIG on a complex collection of C++ libraries for statistical analysis.
Domaines
Statistiques [math.ST]Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...