Skip to content

gh-133296: Publicly expose critical section API that accepts PyMutex #135899

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

Merged

Conversation

ngoldbaum
Copy link
Contributor

@ngoldbaum ngoldbaum commented Jun 24, 2025

xref gh-133296

See capi-workgroup/decisions#67 for a detailed proposal and vote from the C API workgroup.

I tagged this to be added for 3.15 but maybe @hugovk is willing to grant an exception so this lands in 3.14, since it's pretty straightforward and is new API so it shouldn't break anyone.

Docs preview: https://cpython-previews--135899.org.readthedocs.build/en/135899/c-api/init.html#python-critical-section-api

Copy link
Contributor

@colesbury colesbury left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. Some small clarifications that the macros take PyMutex* as opposed to PyMutex.

@ngoldbaum
Copy link
Contributor Author

The C API workgroup vote now shows unanimous approval for adding this: capi-workgroup/decisions#67 (comment)

@colesbury colesbury merged commit 89c220b into python:main Jul 21, 2025
46 checks passed
@ngoldbaum
Copy link
Contributor Author

@hugovk I know it's pretty late, but I think it would help a few downstream use-cases if we could get this and #134365 backported to 3.14 in time for RC1.

@hugovk hugovk added the needs backport to 3.14 bugs and security fixes label Jul 22, 2025
@miss-islington-app
Copy link

Thanks @ngoldbaum for the PR, and @colesbury for merging it 🌮🎉.. I'm working now to backport this PR to: 3.14.
🐍🍒⛏🤖

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request Jul 22, 2025
…Mutex (pythongh-135899)

This makes the following APIs public:

* `Py_BEGIN_CRITICAL_SECTION_MUTEX(mutex),`
* `Py_BEGIN_CRITICAL_SECTION2_MUTEX(mutex1, mutex2)`
* `void PyCriticalSection_BeginMutex(PyCriticalSection *c, PyMutex *mutex)`
* `void PyCriticalSection2_BeginMutex(PyCriticalSection2 *c, PyMutex *mutex1, PyMutex *mutex2)`

The macros are identical to the corresponding `Py_BEGIN_CRITICAL_SECTION` and
`Py_BEGIN_CRITICAL_SECTION2` macros (e.g., they include braces), but they
accept a `PyMutex` instead of an object.

The new macros are still paired with the existing END macros
(`Py_END_CRITICAL_SECTION`, `Py_END_CRITICAL_SECTION2`).
(cherry picked from commit 89c220b)

Co-authored-by: Nathan Goldbaum <[email protected]>
@bedevere-app
Copy link

bedevere-app bot commented Jul 22, 2025

GH-136969 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app bot removed the needs backport to 3.14 bugs and security fixes label Jul 22, 2025
@hugovk
Copy link
Member

hugovk commented Jul 22, 2025

@hugovk I know it's pretty late, but I think it would help a few downstream use-cases if we could get this and #134365 backported to 3.14 in time for RC1.

Sure, here's 3.14 backports:

In the backports, I adjusted the versionadded from "next" to "3.14", and moved the What's New entry from 3.15.rst to 3.14.rst.

And we'll need a follow-up to update these in main.

hugovk added a commit that referenced this pull request Jul 22, 2025
…yMutex (gh-135899) (#136969)

Co-authored-by: Nathan Goldbaum <[email protected]>
Co-authored-by: Hugo van Kemenade <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants