Codon, Python kompajler, je objavljen

Startup Exaloop je objavio kod za projekat Codon, koji razvija kompajler za jezik Python koji je sposoban da generiše čisti mašinski kod kao izlaz, koji nije vezan za vreme izvođenja Pythona. Kompajler razvijaju autori jezika Seq koji je sličan Python-u i pozicioniran je kao nastavak njegovog razvoja. Projekat također nudi vlastito vrijeme izvođenja za izvršne datoteke i biblioteku funkcija koja zamjenjuje pozive biblioteke u Pythonu. Izvorni kodovi kompajlera, runtimea i standardne biblioteke su napisani koristeći C++ (koristeći razvoj LLVM-a) i Python-a, i distribuiraju se pod BSL-om (Poslovna izvorna licenca).

BSL licencu su predložili suosnivači MySQL-a kao alternativu Open Core modelu. Suština BSL-a je da je kod napredne funkcionalnosti u početku dostupan za izmjenu, ali se neko vrijeme može koristiti besplatno samo ako su ispunjeni dodatni uvjeti koji zahtijevaju kupovinu komercijalne licence za zaobilaženje. Dodatni uslovi licence projekta Codon zahtijevaju da se kod prenese na licencu Apache 2.0 nakon 3 godine (1. novembra 2025.). Do tog vremena, licenca dozvoljava kopiranje, distribuciju i modifikaciju, pod uslovom da se koristi u nekomercijalne svrhe.

Performanse izlaznih izvršnih datoteka predstavljene su kao slične programima napisanim u jeziku C. U poređenju sa korišćenjem CPython-a, povećanje performansi prilikom kompajliranja korišćenjem Codon-a se procenjuje na 10-100 puta za jednonitno izvršavanje. Štaviše, za razliku od Pythona, Codon dodatno implementira mogućnost korištenja višenitnog rada, što omogućava još veće povećanje performansi. Codon vam također omogućava da kompajlirate na nivou pojedinačne funkcije da biste koristili kompajliranu reprezentaciju u postojećim Python projektima.

Codon je izgrađen pomoću modularne arhitekture koja vam omogućava da povećate funkcionalnost putem dodataka, s kojima možete dodati nove biblioteke, implementirati optimizacije u kompajleru, pa čak i pružiti podršku za dodatnu sintaksu. Na primjer, paralelno se razvija nekoliko dodataka za upotrebu u bioinformatici i finansijskoj matematici. Boehmov sakupljač smeća se koristi za upravljanje memorijom.

Kompajler podržava većinu Python sintakse, ali kompajliranje u mašinski kod nameće brojna ograničenja koja sprečavaju da se Codon koristi kao transparentna zamena za CPython. Na primjer, Codon koristi 64-bitni tip int za cijele brojeve, dok CPython koristi neograničenu veličinu za cijele brojeve. Velike baze kodova mogu zahtijevati promjene koda kako bi se postigla Codon kompatibilnost. Po pravilu, nekompatibilnosti su uzrokovane nedostatkom implementacije za Codon određenih Python modula i nemogućnošću korištenja nekih dinamičkih karakteristika jezika. Za svaku takvu nekompatibilnost, kompajler izdaje detaljnu dijagnostičku poruku s informacijama o tome kako zaobići problem.

Codon, Python kompajler, je objavljen


izvor: opennet.ru

Dodajte komentar