Skip to content

gh-155218: Generate the option group flags in a stable order - #155219

Merged
serhiy-storchaka merged 1 commit into
python:mainfrom
serhiy-storchaka:clinic-group-order
Aug 5, 2026
Merged

gh-155218: Generate the option group flags in a stable order#155219
serhiy-storchaka merged 1 commit into
python:mainfrom
serhiy-storchaka:clinic-group-order

Conversation

@serhiy-storchaka

@serhiy-storchaka serhiy-storchaka commented Aug 5, 2026

Copy link
Copy Markdown
Member

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 of Py_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.

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) <noreply@anthropic.com>
@serhiy-storchaka serhiy-storchaka added needs backport to 3.13 bugs and security fixes needs backport to 3.14 bugs and security fixes needs backport to 3.15 pre-release feature fixes, bugs and security fixes labels Aug 5, 2026
@serhiy-storchaka
serhiy-storchaka enabled auto-merge (squash) August 5, 2026 08:10
@serhiy-storchaka
serhiy-storchaka merged commit 7aec160 into python:main Aug 5, 2026
70 checks passed
@miss-islington-app

Copy link
Copy Markdown

Thanks @serhiy-storchaka for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13, 3.14, 3.15.
🐍🍒⛏🤖

@miss-islington-app

Copy link
Copy Markdown

Sorry, @serhiy-storchaka, I could not cleanly backport this to 3.15 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 7aec160315a6316f7391abda10d4b6c57032d105 3.15

@miss-islington-app

Copy link
Copy Markdown

Sorry, @serhiy-storchaka, I could not cleanly backport this to 3.14 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 7aec160315a6316f7391abda10d4b6c57032d105 3.14

@miss-islington-app

Copy link
Copy Markdown

Sorry, @serhiy-storchaka, I could not cleanly backport this to 3.13 due to a conflict.
Please backport using cherry_picker on command line.

cherry_picker 7aec160315a6316f7391abda10d4b6c57032d105 3.13

@bedevere-app

bedevere-app Bot commented Aug 5, 2026

Copy link
Copy Markdown

GH-155224 is a backport of this pull request to the 3.14 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.14 bugs and security fixes label Aug 5, 2026
@bedevere-app

bedevere-app Bot commented Aug 5, 2026

Copy link
Copy Markdown

GH-155225 is a backport of this pull request to the 3.13 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.13 bugs and security fixes label Aug 5, 2026
@bedevere-app

bedevere-app Bot commented Aug 5, 2026

Copy link
Copy Markdown

GH-155226 is a backport of this pull request to the 3.15 branch.

@bedevere-app bedevere-app Bot removed the needs backport to 3.15 pre-release feature fixes, bugs and security fixes label Aug 5, 2026
serhiy-storchaka added a commit that referenced this pull request Aug 5, 2026
…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) <noreply@anthropic.com>
serhiy-storchaka added a commit that referenced this pull request Aug 5, 2026
…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) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant