Sobre el proyecto

pybind11 es una biblioteca C++ ligera y de solo encabezados que permite una interoperabilidad fluida entre C++ y Python. Se utiliza principalmente para crear enlaces de Python para código C++ existente, exponiendo tipos de C++ a Python y viceversa. El proyecto se creó como una alternativa más pequeña y autocontenida a Boost.Python, evitando la gran huella de dependencias de Boost al basarse en características de C++11 como tuplas, funciones lambda y plantillas variádicas. La biblioteca admite la correspondencia de una amplia gama de características de C++ con Python, incluidas funciones con estructuras de datos personalizadas, métodos de instancia y estáticos, funciones sobrecargadas, atributos, excepciones, enumeraciones, devoluciones de llamada, iteradores, operadores personalizados, herencia, contenedores STL, punteros inteligentes y extensión de métodos virtuales desde Python. También proporciona soporte integrado para NumPy, vectorización automática de funciones sobre arreglos de NumPy, exposición del protocolo de búfer para una transferencia de datos eficiente, acceso basado en segmentos y soporte de pickle para tipos de C++. pybind11 funciona con CPython 3.9+, PyPy3 y GraalPy a través de una interfaz independiente de la implementación. La biblioteca consta de solo unos pocos archivos de encabezado y no requiere enlazar bibliotecas adicionales. La documentación está disponible en pybind11.readthedocs.io, con ejemplos para la integración con setuptools, scikit-build y CMake. El proyecto se distribuye bajo una licencia de estilo BSD y está disponible en PyPI y conda-forge.