Codon, un compilateur Python, est publié

La startup Exaloop a publié le code du projet Codon, qui développe un compilateur pour le langage Python capable de générer en sortie du code machine pur, non lié au runtime Python. Le compilateur est développé par les auteurs du langage Seq de type Python et se positionne comme une continuation de son développement. Le projet propose également son propre environnement d'exécution pour les fichiers exécutables et une bibliothèque de fonctions qui remplace les appels de bibliothèque en Python. Les codes sources du compilateur, du runtime et de la bibliothèque standard sont écrits en C++ (en utilisant les développements de LLVM) et Python, et sont distribués sous licence BSL (Business Source License).

La licence BSL a été proposée par les co-fondateurs de MySQL comme alternative au modèle Open Core. L'essence de BSL est que le code des fonctionnalités avancées est initialement disponible pour modification, mais pendant un certain temps, il ne peut être utilisé gratuitement que si des conditions supplémentaires sont remplies, qui nécessitent l'achat d'une licence commerciale pour être contournées. Des conditions de licence supplémentaires du projet Codon nécessitent que le code soit transféré vers la licence Apache 2.0 après 3 ans (1er novembre 2025). Jusqu'à présent, la licence autorise la copie, la distribution et la modification, à condition qu'elle soit utilisée à des fins non commerciales.

Les performances des fichiers exécutables en sortie sont présentées comme étant proches des programmes écrits en langage C. Par rapport à l'utilisation de CPython, le gain de performances lors de la compilation à l'aide de Codon est estimé à 10 à 100 fois pour une exécution monothread. De plus, contrairement à Python, Codon implémente en outre la possibilité d'utiliser le multithreading, ce qui permet une augmentation encore plus importante des performances. Codon vous permet également de compiler au niveau de la fonction individuelle pour utiliser la représentation compilée dans les projets Python existants.

Codon est construit à l'aide d'une architecture modulaire qui vous permet d'augmenter les fonctionnalités grâce à des plugins, avec lesquels vous pouvez ajouter de nouvelles bibliothèques, implémenter des optimisations dans le compilateur et même prendre en charge une syntaxe supplémentaire. Par exemple, plusieurs plugins sont développés en parallèle pour être utilisés en bioinformatique et en mathématiques financières. Le garbage collector Boehm est utilisé pour gérer la mémoire.

Le compilateur prend en charge la plupart de la syntaxe Python, mais la compilation en code machine impose un certain nombre de limitations qui empêchent Codon d'être utilisé comme remplacement transparent de CPython. Par exemple, Codon utilise le type int 64 bits pour les entiers, tandis que CPython utilise une taille illimitée pour les entiers. Les bases de code volumineuses peuvent nécessiter des modifications de code pour assurer la compatibilité avec Codon. En règle générale, les incompatibilités sont causées par le manque d'implémentation pour Codon de certains modules Python et l'impossibilité d'utiliser certaines fonctionnalités dynamiques du langage. Pour chacune de ces incompatibilités, le compilateur émet un message de diagnostic détaillé contenant des informations sur la manière de contourner le problème.

Codon, un compilateur Python, est publié


Source: opennet.ru

Ajouter un commentaire