Gli sviluppatori del progetto Pyston, che offre un'implementazione ad alte prestazioni del linguaggio Python utilizzando tecnologie moderne di JIT compilation, hanno presentato l'estensione Pyston-lite con un'implementazione del compilatore JIT per CPython. Se Pyston è un ramo del codice sorgente di CPython e si sviluppa in modo autonomo, Pyston-lite è progettato come un'estensione universale, destinata a essere collegata all'interprete standard di Python (CPython).
Pyston-lite consente di utilizzare le tecnologie di base di Pyston senza sostituire l'interprete, tramite l'installazione di un'estensione aggiuntiva tramite il gestore pacchetti PIP o Conda. Pyston-lite è già disponibile nei repository PyPI e Conda e per l'installazione è sufficiente eseguire il comando "pip install pyston_lite_autoload" oppure "conda install pyston_lite_autoload -c pyston". Sono stati offerti due pacchetti: pyston_lite (il JIT stesso) e pyston_lite_autoload (che esegue l'auto-sostituzione del JIT all'avvio del processo Python). È anche possibile controllare programmaticamente l'attivazione del JIT dall'applicazione senza installare il modulo autoload, utilizzando la funzione pyston_lite.enable().
Sebbene Pyston-lite non copra tutte le ottimizzazioni disponibili in Pyston, il suo utilizzo consente un incremento delle prestazioni di circa il 10-25% rispetto al normale Python 3.8. In futuro, è previsto il trasferimento nella versione Pyston-lite della maggior parte delle ottimizzazioni presenti in Pyston, oltre all'espansione delle versioni supportate di CPython (la prima versione supporta solo Python 3.8). Tra i piani più ambiziosi si segnala la collaborazione con il team di CPython per implementare nuove API per JIT, che permetteranno un controllo più completo sul funzionamento di Python. Si sta anche discutendo l'inclusione delle modifiche proposte nella branch di Python 3.12. Idealmente, si sta valutando la possibilità di trasferire tutta la funzionalità da Pyston a un'estensione, il che permetterebbe di abbandonare il mantenimento di un proprio fork di CPython.
Oltre a Pyston-lite, il progetto ha rilasciato anche un aggiornamento del pacchetto completo Pyston 2.3.4, in cui sono state introdotte nuove ottimizzazioni. Nei test di pyperformance, la versione 2.3.4 è più veloce della 2.3.3 di circa il 6%. Il guadagno complessivo in termini di prestazioni rispetto a CPython è stimato al 66%.
È possibile evidenziare anche le ottimizzazioni sviluppate nel ciclo di sviluppo di CPython 3.11 nel progetto principale, che in alcuni test hanno consentito di aumentare le prestazioni del 25%. Ad esempio, in CPython 3.11 è stata migliorata l'efficienza della cache dello stato del bytecode dei moduli di base, il che accelera l'avvio degli script del 10-15%. È stato notevolmente accelerato l'invocazione delle funzioni e sono stati aggiunti interpreti rapidi specializzati per operazioni comuni. Inoltre, si sta lavorando al trasferimento di alcune ottimizzazioni preparate dai progetti Cinder e HotPy.
Inoltre, nell'ambito del progetto nogil, si sta lavorando a una modalità di compilazione sperimentale di CPython senza il blocco globale dell'interprete (GIL, Global Interpreter Lock), che impedisce l'accesso parallelo a oggetti condivisi da thread diversi, ostacolando la parallelizzazione delle operazioni su sistemi multicore. Come altra soluzione al problema del GIL, si sta sviluppando la possibilità di associare un GIL separato a ciascun interprete eseguito all'interno di un processo (in un processo possono essere eseguiti più interpreti, ma l'efficienza della loro esecuzione parallela è limitata dal GIL).
Fonte: opennet.ru
