GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | |||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | |||||||||||||
GeezerVison is showing github.com — bpo-32388: Remove cross-version binary compatibility requirement in tp_flags by pitrou · Pull Request #4944 · python/cpython Conversation
|
|
You write "Starting with 3.7, binary compatibility of C extensions accross feature releases of Python is not supported anymore" but has such binary compatibility ever been supported? This PR seems to imply that it was, but PEP 384 explicitly says that the layout of PS: typo |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
d49cf6f to
f7b494c
Compare
…p_flags It is now allowed to add new fields at the end of the PyTypeObject struct (and even in the middle, if we are so inclined) in feature releases without having to allocate a dedicated compatibility flag in tp_flags. This will reduce the risk of running out of bits in the 32-bit tp_flags value.
57ea6a3 to
19770ae
Compare
|
I updated this PR against master and addressed the review comments. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
@zooba Is there a way to retry an Azure job which failed because it couldn't "provision the agent"? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
|
It would be good to get this done before the first 3.8 beta. @scoder: is there any chance that you could finish the "core review"? |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
Not "in the middle" as that would break the typical code of the form PyTypeObject PyCFunction_Type = { PyVarObject_HEAD_INIT(&PyType_Type, 0) "builtin_function_or_method", sizeof(PyCFunctionObject), 0, (destructor)meth_dealloc, /* tp_dealloc */ 0, /* tp_print */ 0, /* tp_getattr */ 0, /* tp_setattr */ 0, /* tp_reserved */ (reprfunc)meth_repr, /* tp_repr */ 0, /* tp_as_number */ 0, /* tp_as_sequence */ 0, /* tp_as_mapping */ (hashfunc)meth_hash, /* tp_hash */ PyCFunction_Call, /* tp_call */ 0, /* tp_str */ PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC,/* tp_flags */ 0, /* tp_doc */ (traverseproc)meth_traverse, /* tp_traverse */ 0, /* tp_clear */ meth_richcompare, /* tp_richcompare */ offsetof(PyCFunctionObject, m_weakreflist), /* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ meth_methods, /* tp_methods */ meth_members, /* tp_members */ meth_getsets, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ }; With C99, there are better ways to write the above, but we should still support that. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
One thing that keeps bugging me when I see this diff: Do we really have to change the value of |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
cc @encukou |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Can we keep the bit for backwards compatibility? Pedantically, something like |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
What value do you suggest |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
The same value that it always had. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Ok. Unless someone opposes, I'll merge this once CI is green. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Thank you! |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
|
Nice, happy to see that this was merged. |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
…p_flags (pythonGH-4944) It is now allowed to add new fields at the end of the PyTypeObject struct without having to allocate a dedicated compatibility flag in tp_flags. This will reduce the risk of running out of bits in the 32-bit tp_flags value.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.