Pyston-lite, introdotto il compilatore JIT per Python standard

Gli sviluppatori del progetto Pyston, che offre un'implementazione ad alte prestazioni del linguaggio Python utilizzando moderne tecnologie di compilazione JIT, hanno presentato l'estensione Pyston-lite con un'implementazione del compilatore JIT per CPython. Mentre Pyston è un ramo della codebase CPython ed è sviluppato separatamente, Pyston-lite è progettato come un'estensione universale progettata per connettersi all'interprete Python standard (CPython).

Pyston-lite ti consente di utilizzare le tecnologie Pyston di base senza modificare l'interprete, installando un'estensione aggiuntiva utilizzando il gestore pacchetti PIP o Conda. Pyston-lite è già ospitato nei repository PyPI e Conda e per installarlo basta eseguire il comando “pip install pyston_lite_autoload” o “conda install pyston_lite_autoload -c pyston”. Vengono offerti due pacchetti: pyston_lite (direttamente JIT) e pyston_lite_autoload (esegue la sostituzione JIT automatica all'avvio del processo Python). È anche possibile controllare a livello di codice l'inclusione di JIT dall'applicazione senza installare il modulo di caricamento automatico, utilizzando la funzione pyston_lite.enable().

Sebbene Pyston-lite non copra tutte le ottimizzazioni disponibili in Pyston, il suo utilizzo può migliorare le prestazioni di circa il 10-25% rispetto al normale Python 3.8. In futuro si prevede di trasferire la maggior parte delle ottimizzazioni presenti in Pyston su Pyston-lite, nonché di espandere le versioni supportate di CPython (la prima versione supporta solo Python 3.8). Piani più globali includono la collaborazione con il team CPython per implementare nuove API per JIT, consentendo un controllo più completo sul lavoro di Python. È in discussione l'inclusione delle modifiche proposte nel ramo Python 3.12. Idealmente si sta valutando la possibilità di spostare tutte le funzionalità da Pyston nell'estensione, il che ci permetterà di evitare di mantenere il nostro fork CPython.

Oltre a Pyston-lite, il progetto ha rilasciato anche un aggiornamento al pacchetto completo Pyston 2.3.4, che offre nuove ottimizzazioni. Nel test pyperformance, la versione 2.3.4 è più veloce della versione 2.3.3 di circa il 6%. Il miglioramento complessivo delle prestazioni rispetto a CPython è stimato al 66%.

Inoltre possiamo notare le ottimizzazioni sviluppate all'interno del ciclo di sviluppo CPython 3.11 nel progetto principale, che in alcuni test hanno permesso di aumentare le prestazioni del 25%. Ad esempio, in CPython 3.11, l'efficienza della memorizzazione nella cache dello stato del bytecode dei moduli di base è stata aumentata, il che accelererà l'avvio degli script del 10-15%. Le chiamate alle funzioni sono state notevolmente accelerate e sono stati aggiunti interpreti veloci specializzati delle operazioni standard. È inoltre in corso il lavoro per trasferire alcune ottimizzazioni preparate dai progetti Cinder e HotPy.

Inoltre, nell'ambito del progetto Nogil, è in corso il lavoro su una modalità sperimentale per costruire CPython senza un blocco globale dell'interprete (GIL, Global Interpreter Lock), che non consente l'accesso parallelo a oggetti condivisi da thread diversi, il che impedisce la parallelizzazione delle operazioni su multi -sistemi centrali. Come ulteriore soluzione al problema GIL, è in fase di sviluppo la capacità di associare un GIL separato a ciascun interprete in esecuzione all'interno di un processo (più interpreti possono essere in esecuzione in un processo, ma l'efficienza della loro esecuzione parallela dipende dal GIL).

Fonte: opennet.ru

Aggiungi un commento