Minor change to LOAD_ATTR Opcode in 3.13 not documented
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Documentation
The order that items are pushed to the stack by LOAD_ATTR changed in 3.13, but this is not mentioned in the dis module documentation for the LOAD_ATTR Opcode.
Further Details
For the LOAD_ATTR Opcode, the following change from 3.12 is documented
Changed in version 3.12: If the low bit of namei is set, then a NULL or self is pushed to the stack before the attribute or unbound method respectively.
And this can be seen in frameobject.c: https://github.com/python/cpython/blob/3.12/Objects/frameobject.c#L422 where NULL is pushed before Object.
However, in 3.13 this has changed, presumably due to changes to the CALL Opcode;
Changed in version 3.13: The callable now always appears at the same position on the stack.
And for LOAD_ATTR the NULL is now pushed to the stack after the attribute or unbound method.
This ordering change can be seen in frameobject.c for 3.13: https://github.com/python/cpython/blob/3.13/Objects/frameobject.c#L1280 where Object is now pushed before NULL.
Suggested Resolution
My suggestion would be adding something like this to the LOAD_ATTR documentation;
Changed in version 3.13: When the low bit of namei is set, NULL or self is pushed to the stack after the attribute or unbound method respectively.
Linked PRs
- gh-138631
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit dem LOAD_ATTR-Eintrag in der Dokumentation des Python-3.13-dis-Moduls und vergleichen Sie dessen Formulierung mit den im Issue verlinkten Stellen in frameobject.c für 3.12 und 3.13. Prüfen Sie den verlinkten PR gh-138631, bevor Sie Änderungen vornehmen; die Dokumentation ist abgeschlossen, wenn die Änderung der Stack-Reihenfolge in 3.13 korrekt festgehalten ist.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- documentation
- Issue-Typ
- Dokumentation
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- Unter einer Stunde
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 35/100