-
Notifications
You must be signed in to change notification settings - Fork 434
Add Python 3.14 support, experimental subinterpreter/freethreading support #1279
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
base: master
Are you sure you want to change the base?
Conversation
As of no pre-built package being available for What I want to say: I really would like this to get finished and merged soon. Thanks for all the effort! ;-) |
e742ff7
to
7037527
Compare
483125b
to
fd6d675
Compare
@@ -0,0 +1,1281 @@ | |||
/* Big parts of this file are copied (with modifications) from |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Any reason for this file to be moved? No diff now, all code is like new which makes review harder
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There were some odd Cython issues initially, but I'll see if I can move it back.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done, @1st1, please take another look.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we move recordobj.c back where it was?
I couldn't find a way to do it. Cython does not expose a way to plug into its generated module state, so |
Just for me to review the thing, it's a big file. Were there any changes in it? |
…pport The bulk of the changes here is a rewrite of `recordobj.c` to use modern CPython API to properly isolate the module (PEP 489, PEP 573, PEP 630). This, along with Cython flags, enables support for safely importing `asyncpg` in subinterpreters. The `Record` freelist is now thread-specific, so asyncpg should be thread-safe *at the C level*. Support for subinterpreters and freethreading is EXPERIMENTAL.
The bulk of the changes here is a rewrite of
recordobj.c
to use modernCPython API to properly isolate the module (PEP 489, PEP 573, PEP 630).
This, along with Cython flags, enables support for safely importing
asyncpg
in subinterpreters. TheRecord
freelist is nowthread-specific, so asyncpg should be thread-safe at the C level.
Support for subinterpreters and freethreading is EXPERIMENTAL.