Publícase Codon, un compilador de Python

A startup Exaloop publicou o código para o proxecto Codon, que desenvolve un compilador para a linguaxe Python capaz de xerar código máquina puro como saída, non vinculado ao tempo de execución de Python. O compilador está a ser desenvolvido polos autores da linguaxe similar a Python Seq e sitúase como unha continuación do seu desenvolvemento. O proxecto tamén ofrece o seu propio tempo de execución para ficheiros executables e unha biblioteca de funcións que substitúe as chamadas de biblioteca en Python. Os códigos fonte do compilador, o tempo de execución e a biblioteca estándar están escritos usando C++ (usando desenvolvementos de LLVM) e Python, e distribúense baixo a BSL (Business Source License).

A licenza BSL foi proposta polos cofundadores de MySQL como unha alternativa ao modelo Open Core. A esencia de BSL é que o código de funcionalidade avanzada está inicialmente dispoñible para a súa modificación, pero durante algún tempo pódese usar gratuitamente só se se cumpren condicións adicionais, que requiren a compra dunha licenza comercial para evitar. Os termos de licenza adicionais do proxecto Codon requiren que o código se transfira á licenza Apache 2.0 despois de 3 anos (1 de novembro de 2025). Ata este momento, a licenza permite a copia, distribución e modificación, sempre que se utilice con fins non comerciais.

O rendemento dos ficheiros executables de saída preséntase como próximo aos programas escritos en linguaxe C. En comparación co uso de CPython, a ganancia de rendemento ao compilar usando Codon estímase en 10-100 veces para a execución dun só fío. Ademais, a diferenza de Python, Codon implementa ademais a capacidade de usar multithreading, o que permite un aumento aínda maior do rendemento. Codon tamén permite compilar a nivel de función individual para usar a representación compilada en proxectos Python existentes.

Codon constrúese mediante unha arquitectura modular que permite aumentar a funcionalidade a través de complementos, cos que pode engadir novas bibliotecas, implementar optimizacións no compilador e mesmo proporcionar soporte para sintaxe adicional. Por exemplo, están a desenvolverse en paralelo varios complementos para o seu uso en bioinformática e matemáticas financeiras. O colector de lixo de Boehm úsase para xestionar a memoria.

O compilador admite a maioría da sintaxe de Python, pero a compilación en código máquina impón unha serie de limitacións que impiden que Codon se use como substituto transparente de CPython. Por exemplo, Codon usa o tipo int de 64 bits para os enteiros, mentres que CPython usa un tamaño ilimitado para os enteiros. As bases de código grandes poden requirir cambios de código para conseguir a compatibilidade de Codon. Como regra xeral, as incompatibilidades son causadas pola falta de implementación para Codon de certos módulos de Python e a incapacidade de utilizar algunhas características dinámicas da linguaxe. Para cada unha destas incompatibilidades, o compilador emite unha mensaxe de diagnóstico detallada con información sobre como evitar o problema.

Publícase Codon, un compilador de Python


Fonte: opennet.ru

Engadir un comentario