프로젝트 소개

pybind11는 C++과 Python 간의 원활한 상호 운용성을 가능하게 하는 경량 헤더 전용 C++ 라이브러리입니다. 주로 기존 C++ 코드에 대한 Python 바인딩을 생성하여 C++ 타입을 Python에 노출하고 그 반대도 수행하는 데 사용됩니다. 이 프로젝트는 Boost.Python의 더 작고 자체 포함된 대안으로 만들어졌으며, 튜플, 람다 함수, 가변 템플릿과 같은 C++11 기능에 의존하여 Boost의 큰 종속성 풋프린트를 피했습니다. 이 라이브러리는 사용자 정의 데이터 구조를 가진 함수, 인스턴스 및 정적 메서드, 오버로드된 함수, 속성, 예외, 열거형, 콜백, 반복자, 사용자 정의 연산자, 상속, STL 컨테이너, 스마트 포인터, Python에서의 가상 메서드 확장 등 다양한 C++ 기능을 Python에 매핑하는 것을 지원합니다. 또한 통합 NumPy 지원, NumPy 배열에 대한 자동 함수 벡터화, 효율적인 데이터 전송을 위한 버퍼 프로토콜 노출, 슬라이스 기반 액세스, C++ 타입에 대한 피클 지원을 제공합니다. pybind11는 구현에 구애받지 않는 인터페이스를 통해 CPython 3.9+, PyPy3, GraalPy와 함께 작동합니다. 라이브러리는 몇 개의 헤더 파일로만 구성되며 추가 라이브러리에 대한 링크가 필요하지 않습니다. 문서는 pybind11.readthedocs.io에서 제공되며, setuptools, scikit-build, CMake 통합에 대한 예제가 포함되어 있습니다. 이 프로젝트는 BSD 스타일 라이선스로 배포되며 PyPI와 conda-forge에서 사용할 수 있습니다.