Cette section décrit la construction CPython et la structure de fichier CPython requises pour ajouter des fonctionnalités à CPython. Cet article utilise Python 3.10.
J'ai ajouté une fonction à CPython (opérateur ternaire) Ajoutez deux types d'instructions switch à python Incrément de préfixe
CPython est un Python écrit en langage C, et lorsqu'il est généralement appelé Python, il fait souvent référence à ce Python. Le code est géré sur GitHub et vous pouvez également publier un PR.
L 'Article officiel est très utile pour construire CPython. Tout d'abord, clonez le code du référentiel CPython 3.10.
$ git clone https://github.com/python/cpython
Modifiez ensuite le répertoire et exécutez le script de configuration. Ici, -g inclut des «symboles de débogage» dans le fichier exécutable, et -O0 est le niveau d'optimisation le plus bas. De plus, le dossier à installer est spécifié en ajoutant --prefix.
$ cd cpython
$ CFLAGS="-O0 -g" ./configure --with-pydebug --prefix=(Répertoire d'installation)
Ensuite, compilez et installez.
$ make -s -j2
$ make install
Vous pouvez maintenant installer CPython en toute sécurité. Pour exécuter le Python installé:
$cd (répertoire installé)/bin
$ ./python3
La Liste de contrôle pour ajouter des fonctions à CPython est officiellement résumée. Dans ce qui suit, nous expliquerons en référence à cela.
Ce sont les quatre fichiers les plus importants que vous apportez lors de l'ajout de fonctionnalités à CPython. Je vais les examiner dans l'ordre.
4.1.1 python.gram Tout d'abord, parlons de python.gram. C'est un fichier dans Grammer / python.gram de CPython. python.gram définit la grammaire de Python. Écrivez la syntaxe à ajouter dans ce fichier.
$ make regen-pegen
Il générera automatiquement un analyseur.
4.1.2 python.asdl Ensuite, je vais expliquer python.asdl. Un fichier pour créer un arbre de syntaxe abstraite (AST). Si vous avez défini une nouvelle fonction dans python.gram, vous devez également écrire la définition de la fonction dans ce fichier.
$ make regen-ast
AST est généré automatiquement.
4.1.3 compile.c Ensuite, je vais expliquer à propos de compile.c. Un fichier qui convertit AST en bytecode. Décrivez le traitement de chaque syntaxe en code octet. Lors de l'ajout d'une grammaire, décrivez ici le traitement de cette grammaire en code octet.
4.1.4 ceval.c Ensuite, je vais expliquer ceval.c. Exécutez le code d'octet. Si le code d'octet existant ne peut pas être implémenté, ajoutez un nouveau code d'octet ici.
Jusqu'à présent, nous avons expliqué comment construire et comprendre la structure de CPython. La quantité de code en CPython est énorme, mais j'ai senti que la quantité de code qui nécessitait une attention était petite car la procédure de modification de la syntaxe était organisée dans la liste de contrôle officielle.
Exploration de logiciels à grande échelle
Ceci est un site expérimental.
CPython
Dépôt CPython
24. Changer la grammaire de CPython
Une liste de contrôle pour ajouter des fonctions à CPython a été incluse pour vous aider à comprendre la structure de CPython.
1. Mise en route
C'était utile pour construire CPython.
Recommended Posts