Опубліковано Codon, компілятор для мови Python

Стартап 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, компілятор для мови Python


Джерело: opennet.ru

Додати коментар або відгук