Lansarea Nuitka 2.0, un compilator pentru limbajul Python

Este disponibilă o versiune a proiectului Nuitka 2.0, care dezvoltă un compilator pentru traducerea scripturilor Python într-o reprezentare C, care poate fi apoi compilat într-un fișier executabil folosind libpython pentru compatibilitate maximă cu CPython (folosind instrumente native CPython pentru manipularea obiectelor). Compatibilitate completă cu versiunile curente ale Python 2.6, 2.7, 3.3 - 3.11. În comparație cu CPython, scripturile compilate arată o îmbunătățire a performanței cu 335% la testele pystone. Codul proiectului este distribuit sub licența Apache.

Printre modificările din noua versiune:

  • S-a adăugat posibilitatea de a utiliza variabile în configurația pachetului, permițându-vă să interogați valorile din pachetele instalate în timpul compilării și să utilizați acele valori pentru a defini backend-ul. Suportul pentru variabile în configurație vă permite să rezolvați multe sarcini în moduri standard care anterior necesitau conectarea pluginurilor.
  • S-a adăugat suport pentru parametri definiți de utilizator pentru a influența configurația fiecărui pachet. Parametrii pot fi citiți folosind noua funcție get_parameter și utilizați pentru a selecta comportamentul modulelor (de exemplu, puteți seta un parametru pentru a dezactiva Numba JIT sau Torch JIT).
  • A fost adăugată opțiunea „--include-onefile-external-data” pentru a specifica șabloanele de fișiere de date care sunt definite în configurație, dar care trebuie furnizate separat de fișierul executabil atunci când se construiesc în modul onefile.
  • S-a adăugat opțiunea „--cf-protection” pentru a seta modul de protecție CFI (Control Flow Integrity) în GCC, care blochează încălcările ordinului normal de execuție (flux de control).
  • Pentru fișierele plugin-ul yaml, a fost implementată capacitatea de a crea sume de control pentru verificările de integritate, pe care intenționează să le folosească în viitor pentru a organiza verificarea în timpul execuției.
  • Actions permite specificarea mai multor optiuni, separate prin linii (o linie noua este folosita ca delimitator). De exemplu: include-data-dir: | a=bc=d
  • A fost implementată o analiză a tipurilor de bucle, care va fi folosită în viitor pentru implementarea optimizărilor selective.
  • S-au adăugat optimizări pentru a accelera lucrul cu variabile nepartajate și cu evadare.
  • Capacitățile pluginului anti-bloat au fost extinse, care pot fi folosite acum pentru a reduce numărul de pachete atunci când se utilizează bibliotecile streamlit, torch, knetworkx, distribuite, skimage, bitsandbytes, tf_keras, pip, networkx și pywt (în principiu, obligatorii). la pytest, IPython, nose, triton este exclus și dask).

Sursa: opennet.ru

Adauga un comentariu