Viene pubblicato Codon, un compilatore Python

La startup Exaloop ha pubblicato il codice del progetto Codon, che sviluppa un compilatore per il linguaggio Python in grado di generare come output puro codice macchina, non legato al runtime Python. Il compilatore è stato sviluppato dagli autori del linguaggio simile a Python Seq e si posiziona come una continuazione del suo sviluppo. Il progetto offre anche un proprio runtime per file eseguibili e una libreria di funzioni che sostituisce le chiamate di libreria in Python. I codici sorgente del compilatore, del runtime e della libreria standard sono scritti utilizzando C++ (utilizzando gli sviluppi di LLVM) e Python e sono distribuiti sotto la BSL (Business Source License).

La licenza BSL è stata proposta dai cofondatori di MySQL come alternativa al modello Open Core. L'essenza di BSL è che il codice delle funzionalità avanzate è inizialmente disponibile per la modifica, ma per qualche tempo può essere utilizzato gratuitamente solo se vengono soddisfatte condizioni aggiuntive, che richiedono l'acquisto di una licenza commerciale per aggirarlo. Ulteriori termini di licenza del progetto Codon richiedono che il codice venga trasferito alla licenza Apache 2.0 dopo 3 anni (1 novembre 2025). Fino a quel momento, la licenza consente la copia, la distribuzione e la modifica, a condizione che vengano utilizzate per scopi non commerciali.

Le prestazioni dei file eseguibili di output vengono presentate come vicine a quelle dei programmi scritti in linguaggio C. Rispetto all'utilizzo di CPython, si stima che il miglioramento delle prestazioni durante la compilazione utilizzando Codon sia di 10-100 volte per l'esecuzione a thread singolo. Inoltre, a differenza di Python, Codon implementa inoltre la possibilità di utilizzare il multithreading, che consente un aumento ancora maggiore delle prestazioni. Codon consente inoltre di compilare a livello di singola funzione per utilizzare la rappresentazione compilata nei progetti Python esistenti.

Codon è costruito utilizzando un'architettura modulare che consente di aumentare le funzionalità tramite plugin, con i quali è possibile aggiungere nuove librerie, implementare ottimizzazioni nel compilatore e persino fornire supporto per sintassi aggiuntiva. Ad esempio, vengono sviluppati parallelamente diversi plugin da utilizzare nella bioinformatica e nella matematica finanziaria. Il garbage collector Boehm viene utilizzato per gestire la memoria.

Il compilatore supporta la maggior parte della sintassi Python, ma la compilazione in codice nativo impone una serie di limitazioni che impediscono l'utilizzo di Codon come sostituto trasparente di CPython. Ad esempio, Codon utilizza il tipo int a 64 bit per gli interi, mentre CPython utilizza una dimensione illimitata per gli interi. Basi di codice di grandi dimensioni potrebbero richiedere modifiche al codice per ottenere la compatibilità del codone. Di norma, le incompatibilità sono causate dalla mancata implementazione di Codon di alcuni moduli Python e dall'impossibilità di utilizzare alcune funzionalità dinamiche del linguaggio. Per ciascuna di queste incompatibilità, il compilatore emette un messaggio diagnostico dettagliato con informazioni su come aggirare il problema.

Viene pubblicato Codon, un compilatore Python


Fonte: opennet.ru

Aggiungi un commento