Download Latest Version Version 3.0.3 source code.tar.gz (964.3 kB)
Email in envelope

Get an email when there's a new version of pybind11

Home / v3.0.2
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-02-17 8.5 kB
Version 3.0.2 source code.tar.gz 2026-02-17 953.3 kB
Version 3.0.2 source code.zip 2026-02-17 1.1 MB
Totals: 3 Items   2.1 MB 0

New Features:

  • Added helper functions to py::array that return shape and strides as std::span when available. #5974

Bug fixes:

  • Added fallback locking for Python 3.13t where PyCriticalSection_BeginMutex is unavailable. #5981

  • Fixed race condition in py::make_key_iterator with free-threaded Python. #5971

  • MSVC 19.16 and earlier were blocked from using std::launder due to internal compiler errors. #5968

  • Internals destructors were updated to check the owning interpreter before clearing Python objects. #5965

  • Internals shutdown handling was refined in two iterations before release: an initial finalization-time cleanup was followed by a safety adjustment to avoid late-shutdown py::cast segfaults. #5958 #5972

  • Fixed ambiguous str(handle) construction for object-derived types like kwargs or dict by templatizing the constructor with SFINAE. #5949

  • Fixed concurrency consistency for internals_pp_manager under multiple-interpreters. #5947

  • Fixed MSVC LNK2001 in C++20 builds when /GL (whole program optimization) is enabled. #5939

  • Added per-interpreter storage for gil_safe_call_once_and_store to make it safe under multi-interpreters. #5933

  • A workaround for a GCC -Warray-bounds false positive in argument_vector was added. #5908

  • Corrected a mistake where support for __index__ was added, but the type hints did not reflect acceptance of SupportsIndex objects. Also fixed a long-standing bug: the complex-caster did not accept __index__ in convert mode. #5891

  • Fixed *args/**kwargs return types. Added type hinting to py::make_tuple. #5881

  • Fixed compiler error in type_caster_generic when casting a T implicitly convertible from T*. #5873

  • Updated py::native_enum bindings to unregister enum types on destruction, preventing a use-after-free when returning a destroyed enum instance. #5871

  • Fixed undefined behavior that occurred when importing pybind11 modules from non-main threads created by C API modules or embedded python interpreters. #5870

  • Fixed dangling pointer in internals::registered_types_cpp_fast. #5867

  • Added support for std::shared_ptr<T> when loading module-local or conduit types from other modules. #5862

  • Fixed thread-safety issues if types were concurrently registered while get_local_type_info() was called in free threaded Python. #5856

  • Fixed py::float_ casting and py::int_ and py::float_ type hints. #5839

  • Fixed two smart_holder bugs in shared_ptr and unique_ptr adoption with multiple/virtual inheritance:

    • shared_ptr to-Python caster was updated to register the correct subobject pointer (fixes #5786).
    • unique_ptr adoption was updated to own the proper object start while aliasing subobject pointers for registration, which fixed MSVC crashes during destruction. #5836
  • Constrained accessor::operator= templates to avoid obscuring special members. #5832

  • Fixed crash that can occur when finalizers acquire and release the GIL. #5828

  • Fixed compiler detection in pybind11/detail/pybind11_namespace_macros.h for clang-cl on Windows, to address warning suppression macros. #5816

  • Fixed compatibility with CMake policy CMP0190 by not always requiring a Python interpreter when cross-compiling. #5829

  • Added a static assertion to disallow keep_alive and call_guard on properties. #5533

Internal:

  • CMake policy limit was set to 4.1. #5944

  • Improved performance of function calls between Python and C++ by switching to the "vectorcall" calling protocol. #5948

  • Many C-style casts were replaced with C++-style casts. #5930

  • Added cast_sources abstraction to type_caster_generic. #5866

  • Improved the performance of from-Python conversions of legacy pybind11 enum objects bound by py::enum_. #5860

  • Reduced size overhead by deduplicating functions' readable signatures and type information. #5857

  • Used new Python 3.14 C APIs when available. #5854

  • Improved performance of function dispatch and type casting by porting two-level type info lookup strategy from nanobind. #5842

  • Updated .gitignore to exclude __pycache__/ directories. #5838

  • Changed internals to use thread_local instead of thread_specific_storage for increased performance. #5834

  • Reduced function call overhead by using thread_local for loader_life_support when possible. #5830

  • Removed heap allocation for the C++ argument array when dispatching functions with 6 or fewer arguments. #5824

Documentation:

  • Fixed docstring for long double complex types to use numpy.clongdouble instead of the deprecated numpy.longcomplex (removed in NumPy 2.0). #5952

  • The "Supported compilers" and "Supported platforms" sections in the main README.rst were replaced with a new "Supported platforms & compilers" section that points to the CI test matrix as the living source of truth. #5910

  • Fixed documentation formatting. #5903

  • Updated upgrade notes for py::native_enum. #5885

  • Clarified in the docs to what extent bindings are global. #5859

Tests:

  • Fixed deadlock in a free-threading test by releasing the GIL while waiting on synchronization. #5973

  • Calls to env.deprecated_call() were replaced with direct calls to pytest.deprecated_call(). #5893

  • Updated pytest configuration to use log_level instead of log_cli_level. #5890

CI:

  • Added CI tests for windows-11-arm with clang/MSVC (currently python 3.13), windows-11-arm with clang/mingw (currently python 3.12). #5932

  • These clang-tidy rules were added: readability-redundant-casting, readability-redundant-inline-specifier, readability-redundant-member-init #5924

  • Replaced deprecated macos-13 runners with macos-15-intel in CI. #5916

  • Restored runs-on: windows-latest in CI. #5835

Source: README.md, updated 2026-02-17