Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 34k
bpo-41861: Convert _sqlite3 CursorType and ConnectionType to heap types#22478
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
bpo-41861: Convert _sqlite3 CursorType and ConnectionType to heap types #22478
Uh oh!
There was an error while loading. Please reload this page.
Conversation
erlend-aasland commented Oct 1, 2020 • edited by bedevere-bot
Loading Uh oh!
There was an error while loading. Please reload this page.
edited by bedevere-bot
Uh oh!
There was an error while loading. Please reload this page.
vstinner commented Oct 1, 2020
Merged, thanks. There are two remaining static types? |
erlend-aasland commented Oct 1, 2020
Thanks! No more remaining types. |
erlend-aasland commented Oct 1, 2020
BTW, should I add traverse/clear/free methods to the module def before closing the issue? |
vstinner commented Oct 1, 2020 • edited by bedevere-bot
Loading Uh oh!
There was an error while loading. Please reload this page.
edited by bedevere-bot
Uh oh!
There was an error while loading. Please reload this page.
Currently, it's possible to have more than once instance of the _sqlite3 module. If a second instance is created and then cleared, it would clear the shared heap types of the first instance: not good. It would be better to add a module state and retrieve these types from the module state. The problem is to retrieve the module state. I suggest you to convert all methods which use these 4 types to Argument Clinic, so later you will be able to use "defining_class" parameter which is a reliable way to get the module state from a type. That's why I asked you to use PyType_FromModuleAndSpec(). Example:
Converting _sqlite3 to use a module state will make it safe to be used in Python subinterpreters! See:
|
erlend-aasland commented Oct 1, 2020
I already started experimenting with this. Should I put up what I've got as a draft PR? I guess this goes as a separate issue anyways.
I'm painfully aware of this :)
I think I already put up a PR that converts _sqlite3 to Argument Clinic. I'll rebase onto master and ping you.
Thanks! |
vstinner commented Oct 1, 2020
That sounds like a good start! I prefer a PR to convert to Argument Clinic, and then a second one to add a module state. |
erlend-aasland commented Oct 13, 2020 • edited
Loading Uh oh!
There was an error while loading. Please reload this page.
edited
Uh oh!
There was an error while loading. Please reload this page.
While my other PR's are on hold, I've started with the post-agrument-clinic-step: heap module state (PEP 573). I'm currently basing this branch on top off my work with bpo-40956. Using
UPDATE: Solved like this (excerpt from Argument Clinic for Also, |
vstinner commented Oct 15, 2020
Good idea. |
vstinner commented Oct 15, 2020
I wrote #22712 to "explain my idea". It's a minimum change just to pass a "state" to functions which access the UCD_Type. |
erlend-aasland commented Oct 15, 2020
Thanks, I'll have a look. |
Part 4 of bpo-41861, @vstinner. #norefleaks
After this, I'd like to merge #22419 to finalise bpo-41861.
https://bugs.python.org/issue41861