-
-
Notifications
You must be signed in to change notification settings - Fork 30.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Expand pyatomic coverage #108337
Comments
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file.
This adds a new header that provides atomic operations on common data types. The intention is that this will be exposed through Python.h, although that is not the case yet. The only immediate use is in the test file. Co-authored-by: Sam Gross <[email protected]>
The leading underscore marks these as "private". However, with the advent of a GIL-free Python, these will become increasingly useful for third-party code. Why consider them private? |
There is ongoing discussion about whether they should be made public, but currently no consensus. Some of the reasons to keep them private:
If we maintained a similar header-only atomics library outside this repo, would that be useful for Cython? Basically, something like https://github.com/python/pythoncapi-compat. |
Feature or enhancement
Implementing PEP 703 requires use of atomic operations on more data types than provided by
pycore_atomic.h
. Additionally,pycore_atomic.h
is only usable fromPy_BUILD_CORE
modules; it can't be used in public headers. PEP 703 will require atomic operations inobject.h
for Py_INCREF/DECREF, for example.I propose adding a new header to wrap platform/C11 provided atomic operations:
int
instead of_Py_atomic_int
). This allows use of atomic operations on existing data types where we don't want to change the types of contained fields (i.e, the fields ofPyTypeObject
.) and avoids some issues regarding mixing C and C++.-std=gnu11
or-std=c11
to the compiler, which avoids breaking third-party extensions._Py_atomic_load_int
and_Py_atomic_load_int_relaxed
) but keeps the implementation of each function simpler, particularly for MSVC. This reduces boiler-plate code when stepping through debug builds.Linked PRs
The text was updated successfully, but these errors were encountered: