Недавно Представлен стартап Exaloop через твит релиз кода проекта кодон, кто разрабатывает компилятор для языка Python который может генерировать чистый машинный код в качестве вывода, не привязанный к среде выполнения Python.
Компилятор разработан авторами Python-подобного языка Seq и позиционируется как продолжение его разработки. Проект также предлагает собственную среду выполнения для исполняемых файлов и библиотека функций, которая заменяет вызовы библиотек на языке Python.
О кодоне
Представление выходных исполняемых файлов Он позиционируется как близкий к программам, написанным на языке C. По сравнению с использованием CPython прирост производительности при компиляции с помощью Codon оценивается в 10-100 раз для однопоточного выполнения. При этом, в отличие от Python, в Codon дополнительно реализована возможность использования многопоточности, что позволяет добиться еще большего прироста производительности. кодон также позволяет компилировать на функциональном уровне для использования скомпилированного представления в существующих проектах Python.
кодонов построен с использованием модульной архитектуры который позволяет расширять функциональность с помощью плагинов, которые могут добавлять новые библиотеки, реализовывать оптимизацию компилятора и даже обеспечивать поддержку дополнительного синтаксиса.
Например, параллельно разрабатывается несколько плагинов для использования в биоинформатике и финансовой математике. Сборщик мусора Boehm используется для управления памятью.
компилятор поддерживает большую часть синтаксиса Python, но компиляция в собственный код накладывает ряд ограничений, которые не позволяют использовать Codon в качестве прозрачной замены CPython. Например, Codon использует 64-битный тип int для целых чисел, в то время как CPython имеет неограниченные целые числа.
Поддержка кодонов для больших баз кода может потребовать изменения кода. Несовместимости обычно вызваны отсутствием реализации Codon для определенных модулей Python и невозможностью использования некоторых динамических функций языка. Для каждой из этих несовместимостей компилятор выдает подробное диагностическое сообщение с информацией о том, как решить проблему.
Исходный код компилятора, среды выполнения и стандартной библиотеки написан на C++ (с использованием разработок LLVM) и Python. распространяется под лицензией BSL (Лицензия на бизнес-источник). Суть BSL заключается в том, что код расширенного функционала изначально доступен для модификации, но какое-то время его можно использовать бесплатно только при соблюдении дополнительных условий, для обхода которых требуется покупка коммерческой лицензии.
Дополнительные условия лицензии проекта Codon требуют, чтобы код был переведен на лицензию Apache 2.0 через 3 года (1 ноября 2025 г.). До тех пор лицензия разрешает копирование, распространение и модификацию, если она используется в некоммерческих целях.
Как установить Кодон на Linux?
Для тех, кто заинтересован в возможности установить этот компилятор, они должны знать, что они могут сделать это довольно легко, просто откройте терминал и выполните следующую команду, которая загрузит и установит скрипт установки:
/bin/bash -c "$(curl -fsSL https://exaloop.io/install.sh)"
Что касается тех, кто заинтересован в возможности компиляции самостоятельно, они могут сделать это, выполнив следующие команды:
git clone --depth 1 -b codon https://github.com/exaloop/llvm-project
cmake -S llvm-project/llvm -B llvm-project/build -G Ninja
-DCMAKE_BUILD_TYPE=Release
-DLLVM_INCLUDE_TESTS=OFF
-DLLVM_ENABLE_RTTI=ON
-DLLVM_ENABLE_ZLIB=OFF
-DLLVM_ENABLE_TERMINFO=OFF
-DLLVM_TARGETS_TO_BUILD=all
cmake --build llvm-project/build
cmake --install llvm-project/build
После этого приступают к сборке:
cmake -S . -B build -G Ninja
-DCMAKE_BUILD_TYPE=Release
-DLLVM_DIR=$(llvm-config --cmakedir)
-DCMAKE_C_COMPILER=clang
-DCMAKE_CXX_COMPILER=clang++
cmake --build build --config Release
Завершениеи я оставляю вам следующую ссылку, где вы можете проконсультироваться больше о деталях компиляции, а также о том, где можно найти дополнительную информацию об использовании этого компилятора (руководство, примеры, функции и т. д.).