gh-155218: Generate the option group flags in a stable order - #155219
Conversation
They were emitted in the iteration order of a set of group identifiers. The identifiers of the groups before the required parameters are small negative integers, -1 and -2 have the same hash, so their order depended on the size of Py_hash_t, and the code generated on a 32-bit platform differed from the checked in one. They are now emitted in the order of the parameters. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
|
Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15. |
|
Sorry, @serhiy-storchaka, I could not cleanly backport this to |
|
Sorry, @serhiy-storchaka, I could not cleanly backport this to |
|
Sorry, @serhiy-storchaka, I could not cleanly backport this to |
|
GH-155224 is a backport of this pull request to the 3.14 branch. |
|
GH-155225 is a backport of this pull request to the 3.13 branch. |
|
GH-155226 is a backport of this pull request to the 3.15 branch. |
…H-155219) (GH-155225) They were emitted in the iteration order of a set of group identifiers. The identifiers of the groups before the required parameters are small negative integers, -1 and -2 have the same hash, so their order depended on the size of Py_hash_t, and the code generated on a 32-bit platform differed from the checked in one. They are now emitted in the order of the parameters. (cherry picked from commit 7aec160) Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
…H-155219) (GH-155224) They were emitted in the iteration order of a set of group identifiers. The identifiers of the groups before the required parameters are small negative integers, -1 and -2 have the same hash, so their order depended on the size of Py_hash_t, and the code generated on a 32-bit platform differed from the checked in one. They are now emitted in the order of the parameters. (cherry picked from commit 7aec160) Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
…rder (pythonGH-155219) (pythonGH-155224) They were emitted in the iteration order of a set of group identifiers. The identifiers of the groups before the required parameters are small negative integers, -1 and -2 have the same hash, so their order depended on the size of Py_hash_t, and the code generated on a 32-bit platform differed from the checked in one. They are now emitted in the order of the parameters. (cherry picked from commit 7aec160) Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
…ythonGH-155219) They were emitted in the iteration order of a set of group identifiers. The identifiers of the groups before the required parameters are small negative integers, -1 and -2 have the same hash, so their order depended on the size of Py_hash_t, and the code generated on a 32-bit platform differed from the checked in one. They are now emitted in the order of the parameters. Co-authored-by: Claude Opus 5 (1M context) <[email protected]>
The flags of the optional groups were emitted in the iteration order of a set of group identifiers.
The identifiers of the groups before the required parameters are small negative integers, and
hash(-1) == hash(-2) == -2, so the order of these colliding keys depends on the size ofPy_hash_t.A 32-bit build therefore generated
Modules/clinic/_cursesmodule.c.h(addch(),addstr()and 7 other functions) differently from the checked in file.The flags are now emitted in the order of the parameters.