Апублікаваны 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

Дадаць каментар