Codon, en Python-kompilator, publiceras

Startupen Exaloop har publicerat koden för Codon-projektet, som utvecklar en kompilator för Python-språket som kan generera ren maskinkod som utdata, inte kopplad till Python-körtiden. Kompilatorn utvecklas av författarna till det Python-liknande språket Seq och är placerad som en fortsättning på dess utveckling. Projektet erbjuder också en egen körtid för körbara filer och ett bibliotek med funktioner som ersätter biblioteksanrop i Python. Källkoderna för kompilatorn, runtime och standardbiblioteket är skrivna med C++ (med hjälp av utvecklingar från LLVM) och Python, och distribueras under BSL (Business Source License).

BSL-licensen föreslogs av medgrundarna av MySQL som ett alternativ till Open Core-modellen. Kärnan i BSL är att koden för avancerad funktionalitet initialt är tillgänglig för modifiering, men under en tid kan användas kostnadsfritt endast om ytterligare villkor är uppfyllda, som kräver köp av en kommersiell licens för att kringgå. Ytterligare licensvillkor för Codon-projektet kräver att koden överförs till Apache 2.0-licensen efter 3 år (1 november 2025). Tills dess tillåter licensen kopiering, distribution och modifiering, förutsatt att den används för icke-kommersiella ändamål.

Prestandan för de körbara utdatafilerna presenteras som nära program skrivna på C-språket. Jämfört med att använda CPython uppskattas prestandavinsten vid kompilering med Codon vara 10-100 gånger för entrådad exekvering. Dessutom, till skillnad från Python, implementerar Codon dessutom möjligheten att använda multithreading, vilket möjliggör en ännu större ökning av prestanda. Codon låter dig också kompilera på individuell funktionsnivå för att använda den kompilerade representationen i befintliga Python-projekt.

Codon är byggd med en modulär arkitektur som låter dig öka funktionaliteten genom plugins, med vilka du kan lägga till nya bibliotek, implementera optimeringar i kompilatorn och till och med ge stöd för ytterligare syntax. Till exempel utvecklas flera plugins parallellt för användning inom bioinformatik och finansiell matematik. Boehm sopsamlare används för att hantera minne.

Kompilatorn stöder de flesta Python-syntaxer, men kompilering till maskinkod medför ett antal begränsningar som hindrar Codon från att användas som en transparent ersättning för CPython. Till exempel använder Codon 64-bitars int-typen för heltal, medan CPython använder en obegränsad storlek för heltal. Stora kodbaser kan kräva kodändringar för att uppnå Codon-kompatibilitet. Som regel orsakas inkompatibiliteter av bristen på implementering för Codon av vissa Python-moduler och oförmågan att använda vissa dynamiska funktioner i språket. För varje sådan inkompatibilitet utfärdar kompilatorn ett detaljerat diagnostiskt meddelande med information om hur man kringgår problemet.

Codon, en Python-kompilator, publiceras


Källa: opennet.ru

Lägg en kommentar