Add release_gil_before_calling_cpp_dtor
annotation for class_
#5522
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Closes #1446.
This PR is a backport of:
release_gil_before_calling_cpp_dtor
annotation forclass_
google/pybind11clif#30088 (main PR)It introduces the
py::release_gil_before_calling_cpp_dtor
option (py::class_
argument). For background, see the description of google/pybind11clif#30088 and #1446.The core change (in pybind11.h
class_::dealloc()
) is to add ReleaseGIL-try
-catch
-ReaquireGIL-rethrow logic around the existing code calling the C++ destructor of wrapped objects.All the rest is more-or-less boilerplate code to add the
py:: release_gil_before_calling_cpp_dtor
annotation, then use it to enable the new feature if that annotation is provided by the user.Note for completeness:
These are identical to the current versions on the pybind11clif main branch @ commit 4841661:
@rainwoodman (original reviewer) for visibility.
Suggested changelog entry: