In diesem Abschnitt werden der CPython-Build und die CPython-Dateistruktur beschrieben, die zum Hinzufügen von Funktionen zu CPython erforderlich sind. Dieser Artikel verwendet Python 3.10.
Ich habe CPython (ternärer Operator) eine Funktion hinzugefügt Fügen Sie Python zwei Arten von switch-Anweisungen hinzu Präfixinkrement
CPython ist Python, das in C-Sprache geschrieben ist, und wenn es allgemein als Python bezeichnet wird, bezieht es sich häufig auf dieses Python. Der Code wird auf GitHub verwaltet und Sie können auch eine PR veröffentlichen.
Der offizielle Artikel ist sehr hilfreich beim Erstellen von CPython. Klonen Sie zunächst den Code aus dem CPython 3.10-Repository.
$ git clone https://github.com/python/cpython
Ändern Sie dann das Verzeichnis und führen Sie das Konfigurationsskript aus. Hier enthält -g "Debug-Symbole" in der ausführbaren Datei, und -O0 ist die niedrigste Optimierungsstufe. Außerdem wird der zu installierende Ordner durch Hinzufügen von --prefix angegeben.
$ cd cpython
$ CFLAGS="-O0 -g" ./configure --with-pydebug --prefix=(Installationsverzeichnis)
Als nächstes kompilieren und installieren.
$ make -s -j2
$ make install
Jetzt können Sie CPython sicher installieren. So führen Sie das installierte Python aus:
$cd (installiertes Verzeichnis)/bin
$ ./python3
Die Checkliste zum Hinzufügen von Funktionen zu CPython ist offiziell zusammengefasst. Im Folgenden werden wir diesbezüglich erläutern.
Dies sind die vier wichtigsten Dateien, die Sie ändern, wenn Sie CPython Funktionen hinzufügen. Ich werde sie der Reihe nach anschauen.
4.1.1 python.gram Lassen Sie uns zunächst über python.gram sprechen. Es ist eine Datei in Grammer / python.gram von CPython. python.gram definiert die Grammatik von Python. Schreiben Sie die Syntax, die dieser Datei hinzugefügt werden soll.
$ make regen-pegen
Es wird automatisch ein Parser generiert.
4.1.2 python.asdl Als nächstes werde ich über python.asdl erklären. Eine Datei zum Erstellen eines abstrakten Syntaxbaums (AST). Wenn Sie in python.gram eine neue Funktion definiert haben, müssen Sie auch die Funktionsdefinition in diese Datei schreiben.
$ make regen-ast
AST wird automatisch generiert.
4.1.3 compile.c Als nächstes werde ich über compile.c erklären. Eine Datei, die AST in Bytecode konvertiert. Beschreiben Sie die Verarbeitung für jede Syntax im Bytecode. Beschreiben Sie hier beim Hinzufügen einer Grammatik die Verarbeitung dieser Grammatik im Bytecode.
4.1.4 ceval.c Als nächstes werde ich über ceval.c erklären. Führen Sie den Bytecode aus. Wenn der vorhandene Bytecode nicht implementiert werden kann, fügen Sie hier einen neuen Bytecode hinzu.
Bisher haben wir erklärt, wie die Struktur von CPython aufgebaut und verstanden wird. Die Menge an Code in CPython ist riesig, aber ich hatte das Gefühl, dass die Menge an Code, die Aufmerksamkeit benötigt, gering war, da das Verfahren zum Ändern der Syntax in der offiziellen Checkliste organisiert war.
Erkundung umfangreicher Software
Dies ist eine experimentelle Site.
CPython
CPython-Repository
24. Ändern der CPython-Grammatik
Eine Checkliste zum Hinzufügen von Funktionen zu CPython wurde hinzugefügt, um Ihnen das Verständnis der Struktur von CPython zu erleichtern.
1. Erste Schritte
Es war hilfreich beim Erstellen von CPython.
Recommended Posts