Minor change to LOAD_ATTR Opcode in 3.13 not documented
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comience con la entrada LOAD_ATTR en la documentación del módulo dis de Python 3.13 y compare su redacción con las ubicaciones de frameobject.c de 3.12 y 3.13 enlazadas en el issue. Revise el PR gh-138631 enlazado antes de realizar cambios; la documentación estará terminada cuando el cambio en el orden de la pila de 3.13 esté registrado correctamente.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- documentation
- Tipo de issue
- Documentación
- Dificultad
- 1/5
- Tiempo estimado
- Menos de una hora
- Estado de actividad
- Estancado
- Claridad
- Bien especificado
- Aptitud para principiantes
- 35/100