ENH: fix thread-unsafe C API usages#27145
Merged
Merged
Conversation
8 tasks
5414389 to
c7e4b01
Compare
seberg
reviewed
Aug 9, 2024
Member
seberg
left a comment
There was a problem hiding this comment.
Second one seems unnnecessary to me, first one looks nice with PyDict_GetItemRef either way, I like it.
The last one seems good (I almost wonder if even a copy could make sense, but probably no reason to think about it).
seberg
approved these changes
Aug 9, 2024
Member
seberg
left a comment
There was a problem hiding this comment.
Thanks, now that I glance over, I half wonder if a goto solution can't be done nicely. (I don't love the error = state)
But, I am not sure, and it looks good, so if you don't think of something quickly, please just merge.
Member
Author
|
The macro expands to statements with open and close braces so I couldn't think of a way to keep it syntactically sound and leave the gotos. |
Member
|
Ah, right, I hadn't realized that, thanks! |
charris
pushed a commit
to charris/numpy
that referenced
this pull request
Aug 9, 2024
Ref numpy#26159 See also the CPython HOWTO on this topic: https://docs.python.org/3.13/howto/free-threading-extensions.html#freethreading-extensions-howto. The remaining usages of PyDict_GetItem and PyDict_Next are all around the fields attribute of structured dtypes. I'm pretty sure that dictionary is effectively frozen after the DType is constructed, so I don't worry about those uses. It's not straightforward to write tests for this, I'm just applying static refactorings in places where the refactoring shouldn't introduce new reference counting bugs. * ENH: fix thread-unsafe C API usages * ENH: use critical sections in einsum * BUG: fix error handling in loadtxt C code * revert einsum changes
1 task
ArvidJB
pushed a commit
to ArvidJB/numpy
that referenced
this pull request
Nov 1, 2024
Ref numpy#26159 See also the CPython HOWTO on this topic: https://docs.python.org/3.13/howto/free-threading-extensions.html#freethreading-extensions-howto. The remaining usages of PyDict_GetItem and PyDict_Next are all around the fields attribute of structured dtypes. I'm pretty sure that dictionary is effectively frozen after the DType is constructed, so I don't worry about those uses. It's not straightforward to write tests for this, I'm just applying static refactorings in places where the refactoring shouldn't introduce new reference counting bugs. * ENH: fix thread-unsafe C API usages * ENH: use critical sections in einsum * BUG: fix error handling in loadtxt C code * revert einsum changes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Ref #26159
See also the CPython HOWTO on this topic: https://docs.python.org/3.13/howto/free-threading-extensions.html#freethreading-extensions-howto.
The remaining usages of
PyDict_GetItemandPyDict_Nextare all around thefieldsattribute of structured dtypes. I'm pretty sure that dictionary is effectively frozen after the DType is constructed, so I don't worry about those uses.It's not straightforward to write tests for this, I'm just applying static refactorings in places where the refactoring shouldn't introduce new reference counting bugs.