Rilascio di Nuitka 2.0, un compilatore per il linguaggio Python

È disponibile una versione del progetto Nuitka 2.0, che sviluppa un compilatore per tradurre script Python in una rappresentazione C, che può quindi essere compilata in un file eseguibile utilizzando libpython per la massima compatibilità con CPython (utilizzando strumenti CPython nativi per manipolare oggetti). Fornita piena compatibilità con le versioni correnti di Python 2.6, 2.7, 3.3 - 3.11. Rispetto a CPython, gli script compilati mostrano un miglioramento delle prestazioni del 335% nei test pystone. Il codice del progetto è distribuito con licenza Apache.

Tra le novità della nuova versione:

  • Aggiunta la possibilità di utilizzare variabili nella configurazione del pacchetto, consentendo di interrogare i valori dei pacchetti installati in fase di compilazione e utilizzare tali valori per definire il backend. Il supporto per le variabili nella configurazione consente di risolvere molte attività in modi standard che in precedenza richiedevano la connessione di plug-in.
  • Aggiunto supporto per parametri definiti dall'utente per influenzare la configurazione di ciascun pacchetto. I parametri possono essere letti utilizzando la nuova funzione get_parameter e utilizzati per selezionare il comportamento dei moduli (ad esempio, è possibile impostare un parametro per disabilitare Numba JIT o Torch JIT).
  • Aggiunta l'opzione "--include-onefile-external-data" per specificare i modelli di file di dati definiti nella configurazione ma che devono essere forniti separatamente dal file eseguibile durante la creazione in modalità onefile.
  • Aggiunta l'opzione “--cf-protection” per impostare la modalità di protezione CFI (Control Flow Integrity) in GCC, che blocca le violazioni del normale ordine di esecuzione (flusso di controllo).
  • Per i file yaml del plugin è stata implementata la possibilità di creare checksum per i controlli di integrità, che in futuro si prevede di utilizzare per organizzare la verifica in fase di esecuzione.
  • Le azioni consentono di specificare più opzioni, separate da linee (una nuova riga viene utilizzata come delimitatore). Ad esempio: include-data-dir: | a=bc=d
  • È stata implementata un'analisi delle tipologie di loop che verrà utilizzata in futuro per implementare ottimizzazioni selettive.
  • Aggiunte ottimizzazioni per accelerare il lavoro con variabili non condivise e con escape.
  • Sono state ampliate le funzionalità del plugin anti-bloat, che ora può essere utilizzato per ridurre il numero di pacchetti quando si utilizzano le librerie streamlit, torch, knetworkx, distribuite, skimage, bitsandbytes, tf_keras, pip, networkx e pywt (sostanzialmente, binding a pytest, IPython, nose, triton è escluso e dask).

Fonte: opennet.ru

Aggiungi un commento