Document how to add a bytecode specialization
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 74/100
- Tipo de issue
- Documentación
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- compilers, documentation
Línea de trabajo
Usa PR 116385 y el esquema de nueve pasos como material de referencia. Empieza revisando los cambios mencionados y los archivos indicados—Python/bytecodes.c, Include/internal/pycore_code.h, Python/specialize.c, Lib/opcode.py y Include/internal/pycore_magic_number.h—y después elige la ubicación adecuada en la devguide o en la documentación de CPython. El trabajo estará terminado cuando una persona nueva pueda seguir el flujo de trabajo de especialización y verificarlo con make regen-all o build.bat --regen.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
How to add a new bytecode specialization is knowledge only a few of us remember right now. We should document this somewhere (devguide or CPython, I don't mind). Hopefully a new contributor can pick this up!
There reference is this PR: https://github.com/python/cpython/pull/116385/files
Assuming you found an instruction that serves as a good specialization candidate. Let's use the example of CONTAINS_OP:
- Set the original
CONTAINS_OPto a uop by changing it fromCONTAINS_OPto_CONTAINS_OPinPython/bytecodes.c. The instruction definition should also change frominsttoop. - Add the uop that calls a specializing function. In this case
_SPECIALIZE_CONTAINS_OP. - The original
CONTAINS_OPis now a new macro consisting of_SPECIALIZE_CONTAINS_OP + _CONTAINS_OP. - Define the cache structure in
Include/internal/pycore_code.h. At the very least, a 16-bit counter is needed. - Write the specializing function itself in
Python/specialize.c. Refer to any other function in that file for the format. - Remember to update operation stats by calling
add_stat_dictinPython/specialize.c. - Add the cache layout in
Lib/opcode.pyso that Python'sdismodule will know how to represent it properly. - Bump magic number in
Include/internal/pycore_magic_number.h. - Run
make regen-allon *nix orbuild.bat --regenon PC.
- Lenguaje dominante
- Python
- Estrellas
- 2.1k
- Forks
- 1k
- Merge medio
- 2 d 12 h
- PR fusionados (30 d)
- 12
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.
Más de python/devguide
-
type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
topic-building python type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
needs: decision topic-test type-bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
topic-dev process type-feature
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Todos los issues de python/devguide
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
zostera/django-bootstrap4#894 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
use-agent-os/agent-os#3276 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NousResearch/hermes-agent#117848 ·