Section: New Software and Platforms


Keywords: Syntaxic Analysis

Functional Description

High-level programming languages, such as Python and R, are popular among scientists. They are concise, readable, lead to rapid development cycles, but suffer from performance drawback compared to compiled languages. However, these languages allow to interface C, C++ and Fortran code. In this way, most of the scientific packages incorporate compiled scientific libraries to both speed up the code and reuse legacy libraries. While several semi-automatic solutions and tools exist to wrap these compiled libraries, the process of wrapping a large library is cumbersome and time consuming. We developped AutoWIG [40], [47], a Python library that wraps automatically compiled libraries into high-level languages. Our approach consists in parsing C++ code using the LLVM/Clang technologies and generating the wrappers using the Mako templating engine. Our approach is automatic, extensible, and applies to very complex C++ libraries, composed of thousands of classes or incorporating modern meta-programming constructs. The usage and extension of AutoWIG have been illustrated on a set of statistical libraries (StructureAnalysis).