Je publikovaný Codon, kompilátor Pythonu

Startup Exaloop zverejnil kód pre projekt Codon, ktorý vyvíja kompilátor pre jazyk Python schopný generovať čistý strojový kód ako výstup, ktorý nie je viazaný na runtime Pythonu. Kompilátor je vyvíjaný autormi jazyka podobného Pythonu Seq a je umiestnený ako pokračovanie jeho vývoja. Projekt ponúka aj vlastný runtime pre spustiteľné súbory a knižnicu funkcií, ktorá nahrádza volania knižnice v Pythone. Zdrojové kódy kompilátora, runtime a štandardnej knižnice sú napísané pomocou C++ (pomocou vývoja z LLVM) a Pythonu a sú distribuované pod BSL (Business Source License).

Licenciu BSL navrhli spoluzakladatelia MySQL ako alternatívu k modelu Open Core. Podstatou BSL je, že kód pokročilej funkcionality je spočiatku k dispozícii na úpravu, ale po určitú dobu je možné ho bezplatne používať, iba ak sú splnené ďalšie podmienky, ktoré si vyžadujú zakúpenie komerčnej licencie na obchádzanie. Dodatočné licenčné podmienky projektu Codon vyžadujú, aby bol kód prenesený do licencie Apache 2.0 po 3 rokoch (1. novembra 2025). Do tejto doby licencia povoľuje kopírovanie, distribúciu a úpravu za predpokladu, že bude použitá na nekomerčné účely.

Výkon výstupných spustiteľných súborov je prezentovaný ako podobný programom napísaným v jazyku C. V porovnaní s použitím CPythonu sa zvýšenie výkonu pri kompilácii pomocou Codon odhaduje na 10-100-násobok pre jednovláknové vykonávanie. Navyše, na rozdiel od Pythonu, Codon navyše implementuje schopnosť používať multithreading, čo umožňuje ešte väčšie zvýšenie výkonu. Codon vám tiež umožňuje kompilovať na úrovni jednotlivých funkcií, aby ste mohli použiť kompilovanú reprezentáciu v existujúcich projektoch Pythonu.

Codon je zostavený pomocou modulárnej architektúry, ktorá vám umožňuje zvýšiť funkčnosť pomocou doplnkov, pomocou ktorých môžete pridávať nové knižnice, implementovať optimalizácie v kompilátore a dokonca poskytovať podporu pre ďalšiu syntax. Paralelne sa napríklad vyvíja niekoľko pluginov pre využitie v bioinformatike a finančnej matematike. Na správu pamäte sa používa zberač odpadu Boehm.

Kompilátor podporuje väčšinu syntaxe Pythonu, ale kompilácia do strojového kódu ukladá množstvo obmedzení, ktoré bránia použitiu Codonu ako transparentnej náhrady za CPython. Napríklad Codon používa 64-bitový typ int pre celé čísla, zatiaľ čo CPython používa neobmedzenú veľkosť pre celé čísla. Veľké kódové základne môžu vyžadovať zmeny kódu, aby sa dosiahla kompatibilita s kodónmi. Nekompatibility sú spravidla spôsobené nedostatočnou implementáciou pre Codon určitých modulov Pythonu a neschopnosťou používať niektoré dynamické vlastnosti jazyka. Pre každú takúto nekompatibilitu kompilátor vydá podrobnú diagnostickú správu s informáciami, ako problém obísť.

Je publikovaný Codon, kompilátor Pythonu


Zdroj: opennet.ru

Pridať komentár