Codon, een Python-compiler, wordt gepubliceerd

De startup Exaloop heeft de code gepubliceerd voor het Codon-project, dat een compiler voor de Python-taal ontwikkelt die pure machinecode als uitvoer kan genereren, niet gebonden aan de Python-runtime. De compiler wordt ontwikkeld door de auteurs van de Python-achtige taal Seq en is gepositioneerd als een voortzetting van de ontwikkeling ervan. Het project biedt ook een eigen runtime voor uitvoerbare bestanden en een bibliotheek met functies die bibliotheekaanroepen in Python vervangt. De broncodes van de compiler, runtime en standaardbibliotheek zijn geschreven met behulp van C++ (met behulp van ontwikkelingen uit LLVM) en Python, en worden gedistribueerd onder de BSL (Business Source License).

De BSL-licentie werd door de medeoprichters van MySQL voorgesteld als alternatief voor het Open Core-model. De essentie van BSL is dat de code met geavanceerde functionaliteit in eerste instantie beschikbaar is voor wijziging, maar gedurende enige tijd alleen gratis kan worden gebruikt als aan aanvullende voorwaarden wordt voldaan, die de aanschaf van een commerciële licentie vereisen om te omzeilen. Aanvullende licentievoorwaarden van het Codon-project vereisen dat de code na 2.0 jaar (3 november 1) wordt overgedragen naar de Apache 2025-licentie. Tot die tijd staat de licentie kopiëren, verspreiden en wijzigen toe, op voorwaarde dat dit voor niet-commerciële doeleinden wordt gebruikt.

De prestaties van de uitvoerbare bestanden worden gepresenteerd als vergelijkbaar met programma's die in de C-taal zijn geschreven. Vergeleken met het gebruik van CPython wordt de prestatiewinst bij het compileren met Codon geschat op 10-100 keer voor uitvoering met één thread. Bovendien implementeert Codon, in tegenstelling tot Python, bovendien de mogelijkheid om multithreading te gebruiken, wat een nog grotere prestatieverbetering mogelijk maakt. Met Codon kunt u ook op individueel functieniveau compileren om de gecompileerde representatie in bestaande Python-projecten te gebruiken.

Codon is gebouwd met behulp van een modulaire architectuur waarmee u de functionaliteit kunt vergroten via plug-ins, waarmee u nieuwe bibliotheken kunt toevoegen, optimalisaties in de compiler kunt implementeren en zelfs ondersteuning kunt bieden voor extra syntaxis. Er worden bijvoorbeeld meerdere plug-ins parallel ontwikkeld voor gebruik in de bio-informatica en financiële wiskunde. De Boehm-garbagecollector wordt gebruikt om het geheugen te beheren.

De compiler ondersteunt de meeste Python-syntaxis, maar het compileren naar machinecode brengt een aantal beperkingen met zich mee die voorkomen dat Codon wordt gebruikt als een transparante vervanging voor CPython. Codon gebruikt bijvoorbeeld het 64-bits int-type voor gehele getallen, terwijl CPython een onbeperkte grootte voor gehele getallen gebruikt. Voor grote codebases kunnen codewijzigingen nodig zijn om Codon-compatibiliteit te bereiken. In de regel worden incompatibiliteiten veroorzaakt door het gebrek aan implementatie voor Codon van bepaalde Python-modules en het onvermogen om bepaalde dynamische kenmerken van de taal te gebruiken. Voor elke dergelijke incompatibiliteit geeft de compiler een gedetailleerd diagnostisch bericht uit met informatie over hoe het probleem kan worden omzeild.

Codon, een Python-compiler, wordt gepubliceerd


Bron: opennet.ru

Voeg een reactie