About bindings ============== CPython_ is the base implementation of Python_, and bindings between the two languages have been a common theme across many other works such as the NumPy_ module. Using performant compiled C code from a flexible Python_ script has always seemed appealing to many developers. The base way of doing is however not trivial and might suffice for simple optimization of performant critical parts of a, module but larger codebases are something different entirely. Many frameworks appeared in order to streamline the process of interfacing C, then also C++ code, to Python_ such as `Boost.Python`_, Cython_ and pybind11_. The pybind11_ framework is an interesting middle-ground between simplicity and performances since it is much easier to binding complex libraries like Rat than with `Boost.Python`_ or Cython_ even though it introduces many overhead. It remains however a decent standard to quickly get started with something somewhat functional. .. note:: nanobind_ might also be given a look in the future since it promises better performance and smaller build times than its pybind11_ counterpart. .. pyRat: About bindings table of contents .. toctree:: :maxdepth: 2 :caption: PYRAT ABOUT BINDINGS CONTENTS structure rat_bindings .. Links .. _Boost.Python: https://www.boost.org/library/latest/python/ .. _CPython: https://fr.wikipedia.org/wiki/CPython .. _Cython: https://cython.org .. _nanobind: https://github.com/wjakob/nanobind .. _NumPy: https://numpy.org/ .. _Project-Rat: https://gitlab.com/project-rat .. _PRE Docs: https://gitlab.com/project-rat-extras/docs .. _Project-Rat: https://gitlab.com/project-rat .. _Project-Rat-Extras: https://gitlab.com/project-rat-extras .. _pybind11: https://github.com/pybind/pybind11 .. _pyRat: https://gitlab.com/project-rat-extras/pyrat .. _Python: https://www.python.org/ .. _Python wheel: https://pythonwheels.com/ .. _Python wheels: https://pythonwheels.com/ .. _Rat-Containers: https://gitlab.com/project-rat-extras/rat-containers .. _Rat-Docs: https://gitlab.com/project-rat/rat-documentation .. _Rat-vcpkg: https://gitlab.com/project-rat-extras/rat-vcpkg