== AutoWIG: Wrapping very large C++ libraries in Python automatically
Most of Python and R scientific packages incorporate compiled scientific libraries to speed up the code and reuse legacy libraries. While several semi-automatic solutions exist to wrap these compiled libraries, the process of wrapping a large library is cumbersome and time consuming.
In this paper, we introduce AutoWIG, a Python package that wraps automatically compiled libraries into high-level languages using LLVM/Clang technologies and the Mako templating engine.
Our approach is automatic, extensible, and applies to complex C++ libraries, composed of thousands of classes or incorporating modern meta-programming constructs.
In this talk we will describe AutoWIG main features and cover how you can generate Python bindings for your C++ libraries. This will be illustrated by the bootstrapping of LLVM/Clang Python bindings in Jupyter Notebooks running in a Docker image, in order to enable the generation of wrappers for template class instantiated. An example of the wrapping of C++ Statistical libraries (TODO: Graphical Models) will be discussed in depth.
Ideas:
- Reproducibility through Jupyter Notebook and Docker
- Full C++ Introspection using PyClang, our wrappers of Clang.
- Powerfull integration with your compiler toolchain (e.g. SCons)
- Scientific illustration on Graphical Models and GLM (ou autre)