Skip to content

chore(deps): update dependency pybind/pybind11 to v3.1.0 - #22

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pybind-pybind11-3.x
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/pybind-pybind11-3.x

Conversation

@renovate

@renovate renovate Bot commented Sep 27, 2026

Copy link
Copy Markdown

This PR contains the following updates:

Package Update Change
pybind/pybind11 minor 3.0.1 → 3.1.0

Release Notes

pybind/pybind11 (pybind/pybind11)

v3.1.0: Version 3.1.0

Compare Source

New Features:

  • Support for Python 3.8 was removed. The minimum supported version is now Python 3.9. #​6110

  • Support for MSVC 2017 has been dropped. #​6110

  • Changed strict-mode numeric conversions for PEP 484 compatibility: float now accepts int, and complex now accepts int and float. #​5879

  • Small extra features added to the pybind11 command line tool based on python-config. #​4272

  • Added subinterpreter_thread_state, an RAII wrapper that owns a reusable PyThreadState for a sub-interpreter, together with a subinterpreter_scoped_activate overload that activates it. This lets an OS thread re-enter one or more sub-interpreters without creating and destroying a PyThreadState on every activation. #​6073

  • Add py::mod_gil_used() as replacement spelling to py::mod_gil_not_used(false). #​5797

Bug fixes:

  • Fixed a crash in py::subinterpreter::create() when called without a current PyThreadState, which its documentation explicitly allows — for example from an embedder that ended initialization with PyEval_SaveThread(), or from a worker thread that has never touched Python. error_scope is now constructed after a thread state has been attached instead of before. #​6127

  • Make py::print delegate to the current frame/interpreter built-ins print entry, fixing handling of sys.stdout = None, following the active runtime's stream, keyword, and error semantics, and remaining a no-op if the entry is unavailable during teardown. #​6121

  • Include the builtin complex type in the input annotation of the std::complex<T> type caster. #​6113

  • String views (e.g. std::string_view) are now kept alive only when loaded from a transient source (such as a generator), fixing both a use-after-free and a regression where casting a view from a durable object outside a bound function would throw. #​6096

  • Drop Python 2 prepend to evaluated source, causing errors to be off by one. #​6089

  • Fix data race on last_storage_ptr_ cache in gil_safe_call_once_and_store. #​6087

  • Allow user defined __str__ on enum_. #​6078

  • Fix generated Callable type annotations for Python callbacks passed into C++ by inverting the callback's argument/return I/O context relative to the enclosing function signature. #​6055

  • Correct __delitem__ for negative-step slices and re-enable contiguous erase fast path. #​6088

  • Do not pass -fno-fat-lto-objects to GCC on macOS, which made all LTO probes fail and silently disabled LTO. #​6114

  • Fixed cross-compilation to Emscripten/Pyodide with CMake ≥ 4.1 by no longer overriding an explicitly set PYBIND11_USE_CROSSCOMPILING when CMAKE_CROSSCOMPILING_EMULATOR is defined. #​6094

  • Unset stale PYTHON_MODULE_DEBUG_POSTFIX and correct USE_PYTHON_INCLUDE_DIR variable. #​6086

  • Apply -undefined dynamic_lookup to all Apple platforms. #​6075

Internal:

  • Improved py::enum_ operator performance by restoring type-specific implementations. #​5887

  • Optimized internal std::unordered_map/std::unordered_set hashing paths with noexcept. #​5960

CI:

  • Test Python 3.15 in CI. #​6107

  • Updated the CIBW test workflow to cibuildwheel v4.1 and bumped the Pyodide build to 314. #​6095

v3.0.4: Version 3.0.4

Compare Source

Bug fixes:

  • Fixed test builds with installed Eigen 5 by improving Eigen3 CMake package detection.
    #​6036

  • Fixed move semantics of scoped_ostream_redirect to preserve buffered output and avoid crashes when moved redirects restore stream buffers.
    #​6033

  • Fixed py::dynamic_attr() traversal on Python 3.13+ to correctly propagate PyObject_VisitManagedDict() results.
    #​6032

  • Fixed std::shared_ptr<T> fallback casting to avoid unnecessary copy-constructor instantiation in reference_internal paths.
    #​6028

CI:

  • Updated setup-uv to the maintained GitHub Action tag scheme.
    #​6035

  • Updated pre-commit hooks.
    #​6029

  • Updated GitHub Actions dependencies, including actions-setup-cmake and cibuildwheel.
    #​6027

v3.0.3: Version 3.0.3

Compare Source

Bug fixes:

  • Fixed TSS key exhaustion in implicitly_convertible() when many implicit conversions are registered across large module sets.
    #​6020

  • Fixed heap-buffer-overflow in pythonbuf with undersized buffers by enforcing a minimum buffer size.
    #​6019

  • Fixed virtual-inheritance pointer offset crashes when dispatching inherited methods through virtual bases.
    #​6017

  • Fixed free(): invalid pointer crashes during interpreter shutdown with py::enum_<> by duplicating late-added def_property_static argument strings.
    #​6015

  • Fixed function_record heap-type deallocation to call PyObject_Free() and decref the type.
    #​6010

  • Hardened PYBIND11_MODULE_PYINIT and get_internals() against module-initialization crashes.
    #​6018

  • Fixed static_pointer_cast build failure with virtual inheritance in holder_caster_foreign_helpers.h.
    #​6014

  • Fixed ambiguous factory template specialization that caused compilation failures with nvcc + GCC 14.
    #​6011

  • Fixed crash in def_readwrite for non-smart-holder properties of smart-holder classes.
    #​6008

  • Fixed memory leak for py::dynamic_attr() objects on Python 3.13+ by clearing managed __dict__ contents during deallocation.
    #​5999

  • Fixed binding of noexcept and ref-qualified (&, &&) methods inherited from unregistered base classes.
    #​5992

Internal:

  • Moved tomlkit dependency to the dev dependency group.
    #​5990

  • Switched to newer public CPython APIs (PyType_GetFlags and public vectorcall APIs where available).
    #​6005

Tests:

  • Made an async callback test deterministic by replacing fixed sleep with bounded waiting.
    #​5986

CI:

  • Re-enabled Android tests in the cibuildwheel workflow.
    #​6001

v3.0.2: Version 3.0.2

Compare Source

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


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependencies Pull requests that update a dependency file label Sep 27, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants