Document how to add a bytecode specialization
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 74/100
- Tipo di issue
- Documentazione
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- python
- Ambito
- compilers, documentation
Direzione di ricerca
Usa PR 116385 e lo schema in nove passaggi come materiale di riferimento. Inizia esaminando le modifiche indicate e i file nominati—Python/bytecodes.c, Include/internal/pycore_code.h, Python/specialize.c, Lib/opcode.py e Include/internal/pycore_magic_number.h—quindi scegli la posizione appropriata nella devguide o nella documentazione di CPython. Il lavoro è completato quando un nuovo contributore può seguire il workflow di specializzazione e verificarlo con make regen-all o build.bat --regen.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 2.1k
- Fork
- 1k
- Merge medio
- 2g 12h
- PR unite (30g)
- 12
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di python/devguide
-
type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
-
topic-building python type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
-
needs: decision topic-test type-bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
topic-dev process type-feature
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
Tutte le issue di python/devguide
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
qgis/QGIS-Documentation#11275 ·
-
bug priority:normal ready-for-dev
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
OpenHands/extensions#626 · 1 commento ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
CSCfi/sd-search-api#39 ·
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
-
please add to porn list Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
StevenBlack/hosts#3255 ·