Uh oh!
There was an error while loading. Please reload this page.
gh-71587: Isolate _datetime - #102995
Conversation
Observations:
|
erlend-aasland
commented
Mar 29, 2023
@ericsnowcurrently, regarding the datetime C API: Currently, the encapsulated datetime C API is exposed as a global variable: Lines 196 to 197 in e375bff I guess we could move this to the interpreter state instead. Thoughts? FTR, if we run the ref leak bots on this PR, they fail because of the datetime C API tests in cpython/Modules/_testcapi/datetime.c Lines 8 to 29 in e375bff |
vstinner
left a comment
There was a problem hiding this comment.
Would it be possible to split the PR into multiple parts? Example:
- PR 1: Add a module state, refer a few static types there, and pass the state to the easy places to retrieve the type
- PR 2: Slowly, convert static types, one by one
- PR 3: Dirty changes
- PR 4: The final beautiful change which just remove the old code
erlend-aasland
commented
Jul 12, 2023
Definitely! |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
| @@ -6830,7 +6897,7 @@ _datetime_exec(PyObject *module) | |||
| return -1; | |||
| } | |||
| PyDateTime_CAPI *capi = get_datetime_capi(); | |||
| PyDateTime_CAPI *capi = get_datetime_capi(st); | |||
There was a problem hiding this comment.
This function name is misleading. Can you please rename it to create_datetime_capi()?
There was a problem hiding this comment.
I agree, but I think we should do that in a separate PR. The get_datetime_capi is not introduced by this PR; it is already in place.
Uh oh!
There was an error while loading. Please reload this page.
| .basicsize = sizeof(PyDateTime_DateTime), | ||
| .flags = (Py_TPFLAGS_DEFAULT | | ||
| Py_TPFLAGS_BASETYPE | | ||
| Py_TPFLAGS_HAVE_GC | |
There was a problem hiding this comment.
Something is strange here. But you should better address it in a separated PR (to keep this one as small as possible). Apparently, PyObject_GC_Track() is simply never called and so Py_TPFLAGS_HAVE_GC, traverse() and clear() functions seem to alll be unused (useless).
Co-authored-by: Victor Stinner <vstinner@python.org>
Uh oh!
There was an error while loading. Please reload this page.