Se publica Codon, un compilador de Python

La startup Exaloop ha publicado el código del proyecto Codon, que desarrolla un compilador para el lenguaje Python capaz de generar código de máquina puro como salida, no vinculado al tiempo de ejecución de Python. El compilador está siendo desarrollado por los autores del lenguaje Seq similar a Python y se posiciona como una continuación de su desarrollo. El proyecto también ofrece su propio tiempo de ejecución para archivos ejecutables y una biblioteca de funciones que reemplaza las llamadas a la biblioteca en Python. Los códigos fuente del compilador, el tiempo de ejecución y la biblioteca estándar están escritos en C++ (utilizando desarrollos de LLVM) y Python, y se distribuyen bajo BSL (Business Source License).

La licencia BSL fue propuesta por los cofundadores de MySQL como alternativa al modelo Open Core. La esencia de BSL es que el código de funcionalidad avanzada está inicialmente disponible para su modificación, pero durante algún tiempo puede usarse de forma gratuita solo si se cumplen condiciones adicionales, que requieren la compra de una licencia comercial para poder eludirlo. Los términos de licencia adicionales del proyecto Codon requieren que el código se transfiera a la licencia Apache 2.0 después de 3 años (1 de noviembre de 2025). Hasta ese momento, la licencia permite la copia, distribución y modificación, siempre que se utilice para fines no comerciales.

El rendimiento de los archivos ejecutables de salida se presenta similar al de los programas escritos en lenguaje C. En comparación con el uso de CPython, se estima que la ganancia de rendimiento al compilar con Codon es de 10 a 100 veces para la ejecución de un solo subproceso. Además, a diferencia de Python, Codon implementa además la capacidad de utilizar subprocesos múltiples, lo que permite un aumento aún mayor del rendimiento. Codon también le permite compilar a nivel de función individual para usar la representación compilada en proyectos Python existentes.

Codon está construido utilizando una arquitectura modular que le permite aumentar la funcionalidad a través de complementos, con los que puede agregar nuevas bibliotecas, implementar optimizaciones en el compilador e incluso brindar soporte para sintaxis adicional. Por ejemplo, se están desarrollando en paralelo varios complementos para su uso en bioinformática y matemáticas financieras. El recolector de basura Boehm se utiliza para administrar la memoria.

El compilador admite la mayor parte de la sintaxis de Python, pero la compilación en código de máquina impone una serie de limitaciones que impiden que Codon se utilice como un reemplazo transparente de CPython. Por ejemplo, Codon usa el tipo int de 64 bits para números enteros, mientras que CPython usa un tamaño ilimitado para números enteros. Las bases de código grandes pueden requerir cambios de código para lograr la compatibilidad con Codon. Como regla general, las incompatibilidades se deben a la falta de implementación de Codon de ciertos módulos de Python y la imposibilidad de utilizar algunas características dinámicas del lenguaje. Para cada una de estas incompatibilidades, el compilador emite un mensaje de diagnóstico detallado con información sobre cómo evitar el problema.

Se publica Codon, un compilador de Python


Fuente: opennet.ru

Añadir un comentario