Tiek publicēts Python kompilators Codon

Starta uzņēmums Exaloop ir publicējis kodu Codon projektam, kas izstrādā Python valodas kompilatoru, kas spēj ģenerēt tīru mašīnas kodu kā izvadi, kas nav saistīts ar Python izpildlaiku. Kompilatoru izstrādā Python līdzīgas valodas Seq autori, un tas tiek pozicionēts kā tā izstrādes turpinājums. Projekts piedāvā arī savu izpildlaiku izpildāmajiem failiem un funkciju bibliotēku, kas aizstāj bibliotēkas zvanus Python. Kompilatora, izpildlaika un standarta bibliotēkas avota kodi ir rakstīti, izmantojot C++ (izmantojot LLVM izstrādi) un Python, un tiek izplatīti saskaņā ar BSL (Business Source License).

BSL licenci ierosināja MySQL līdzdibinātāji kā alternatīvu Open Core modelim. BSL būtība ir tāda, ka uzlabotās funkcionalitātes kods sākotnēji ir pieejams modificēšanai, taču kādu laiku bez maksas var izmantot tikai tad, ja tiek izpildīti papildu nosacījumi, kuru apiešanai nepieciešams iegādāties komerclicenci. Codon projekta papildu licences nosacījumi paredz, ka kods pēc 2.0 gadiem (3. gada 1. novembrī) ir jāpārnes uz Apache 2025 licenci. Līdz šim laikam licence atļauj kopēšanu, izplatīšanu un modifikāciju, ja tā tiek izmantota nekomerciāliem nolūkiem.

Izvades izpildāmo failu veiktspēja tiek parādīta kā līdzīga programmām, kas rakstītas C valodā. Salīdzinot ar CPython izmantošanu, veiktspējas pieaugums, veicot kompilēšanu, izmantojot Codon, tiek lēsts 10–100 reizes viena pavediena izpildei. Turklāt, atšķirībā no Python, Codon papildus ievieš iespēju izmantot daudzpavedienu, kas ļauj vēl vairāk palielināt veiktspēju. Codon ļauj arī kompilēt atsevišķu funkciju līmenī, lai izmantotu apkopoto attēlojumu esošajos Python projektos.

Codon ir izveidots, izmantojot modulāru arhitektūru, kas ļauj palielināt funkcionalitāti, izmantojot spraudņus, ar kuriem varat pievienot jaunas bibliotēkas, ieviest optimizāciju kompilatorā un pat nodrošināt papildu sintakses atbalstu. Piemēram, paralēli tiek izstrādāti vairāki spraudņi izmantošanai bioinformātikā un finanšu matemātikā. Boehm atkritumu savācējs tiek izmantots, lai pārvaldītu atmiņu.

Kompilators atbalsta lielāko daļu Python sintakses, taču kompilēšana mašīnkodā uzliek vairākus ierobežojumus, kas neļauj izmantot Codon kā caurspīdīgu CPython aizstājēju. Piemēram, Codon veseliem skaitļiem izmanto 64 bitu int tipu, savukārt CPython veseliem skaitļiem izmanto neierobežotu izmēru. Lielām kodu bāzēm var būt nepieciešamas koda izmaiņas, lai panāktu Codon saderību. Parasti nesaderības izraisa dažu Python moduļu Codon ieviešanas trūkums un nespēja izmantot dažas dinamiskas valodas funkcijas. Par katru šādu nesaderību kompilators izdod detalizētu diagnostikas ziņojumu ar informāciju par to, kā apiet problēmu.

Tiek publicēts Python kompilators Codon


Avots: opennet.ru

Pievieno komentāru