Codon, a Python alakojo, ti wa ni atejade

Стартап Exaloop опубликовал код проекта Codon, развивающего компилятор для языка Python, способный генерировать на выходе чистый машинный код, не привязанный к Python runtime. Компилятор развивается авторами Python-подобного языка Seq и позиционируется как продолжение его развития. Проектом также предлагается собственный runtime для исполняемых файлов и библиотека функций, заменяющая библиотечные вызовы на языке Python. Исходные тексты компилятора, runtime и стандартной библиотеки написаны с использованием языков C++ (с привлечением наработок из LLVM) и Python, и распространяются под лицензией BSL (Business Source License).

Лицензия BSL была предложена сооснователями MySQL в качестве альтернативы модели Open Core. Суть BSL в том, что код расширенной функциональности изначально доступен для внесения изменений, но в течение какого-то времени может применяться бесплатно только при соблюдении дополнительных условий, для обхода которых требуется приобретение коммерческой лицензии. Дополнительные лицензионные условия проекта Сodon предписывают перевод кода на лицензию Apache 2.0 через 3 года (1 ноября 2025 года). До этого времени лицензия разрешает копирование, распространение и модификацию, при условии использования не в коммерческих целях.

Производительность выдаваемых на выходе исполняемых файлов преподносится как близкая к программам, написанным на языке Си. По сравнению с использованием CPython прирост производительности при компиляции с использованием Codon оценивается в 10-100 раз для однопоточном выполнении. При этом в отличие от Python в Codon дополнительно реализована возможность применения многопоточности, которая позволяет добиться ещё большего увеличения производительности. Codon также позволяет выполнять компиляцию на уровне отдельных функций для использования скомпилированного представления в существующих Python-проектах.

Codon построен с использованием модульной архитектуры, позволяющей наращивать функциональность через плагины, при помощи которых можно добавлять новые библиотеки, реализовывать оптимизации в компиляторе и даже обеспечивать поддержку дополнительного синтаксиса. Например, параллельно развивается несколько плагинов для использования в биоинформатике и финансовой математике. Для управления памятью используется сборщик мусора Boehm.

Компилятором поддерживается большая часть синтаксиса Python, но компиляция в машинный код накладывает ряд ограничений, мешающих использованию Codon в качестве прозрачной замены CPython. Например, в Codon для целых чисел используется 64-разрядный тип int, в то время как в CPython размерность целых чисел не ограничена. Для достижения совместимости с Codon больших кодовых баз может потребоваться внесение изменений в код. Как правило несовместимости вызваны отсутствием реализации для Codon определённых Python-модулей и невозможностью использования некоторых динамических возможностей языка. Для каждой подобной несовместимости компилятор выдаёт детальное диагностическое сообщение с информацией как можно обойти возникшую проблему.

Codon, a Python alakojo, ti wa ni atejade


orisun: opennet.ru

Fi ọrọìwòye kun