pybind11 is a lightweight header-only C++11 library that exposes C++ types to Python and vice versa and allows creating Python extension modules with minimum boilerplate by leveraging compile-time introspection and type inference. While this library's goals and some of the syntax may be considered similar to Boost. Python, it has a much smaller footprint, is entirely self-contained, and offers additional features like direct support for NumPy arrays.
In this talk, we will look at how to write Python extension modules in C++ from scratch with pybind11, starting from simple bindings and building up to more complex examples that deal with iterators, STL data structures, NumPy types and Python callbacks. We will also touch upon some of the internal machinery of the library like the virtual call mechanism and reference counting.