Udgivelse af Nuitka 2.0, en compiler til Python-sproget

En udgivelse af Nuitka 2.0-projektet er tilgængelig, der udvikler en compiler til at oversætte Python-scripts til en C-repræsentation, som derefter kan kompileres til en eksekverbar fil ved hjælp af libpython for maksimal kompatibilitet med CPython (ved hjælp af native CPython-værktøjer til at manipulere objekter). Leveret fuld kompatibilitet med aktuelle udgivelser af Python 2.6, 2.7, 3.3 - 3.11. Sammenlignet med CPython viser kompilerede scripts en præstationsforbedring på 335 % i pystone-tests. Projektkoden distribueres under Apache-licensen.

Blandt ændringerne i den nye version:

  • Tilføjet muligheden for at bruge variabler i pakkekonfigurationen, så du kan forespørge værdier fra installerede pakker på kompileringstidspunktet og bruge disse værdier til at definere backend. Understøttelse af variabler i konfigurationen giver dig mulighed for at løse mange opgaver på standardmåder, som tidligere krævede tilslutning af plugins.
  • Tilføjet understøttelse af brugerdefinerede parametre for at påvirke konfigurationen af ​​hver pakke. Parametre kan læses ved hjælp af den nye get_parameter funktion og bruges til at vælge opførsel af moduler (du kan f.eks. indstille en parameter til at deaktivere Numba JIT eller Torch JIT).
  • Tilføjet mulighed "--include-onefile-external-data" for at specificere datafilskabeloner, der er defineret i konfigurationen, men som skal leveres separat fra den eksekverbare fil, når der bygges i énfil-tilstand.
  • Tilføjet "--cf-protection" mulighed for at indstille CFI (Control Flow Integrity) beskyttelsestilstand i GCC, som blokerer overtrædelser af den normale udførelsesordre (kontrolflow).
  • For plugin yaml-filer er muligheden for at oprette kontrolsummer til integritetstjek implementeret, som de i fremtiden planlægger at bruge til at organisere runtime-verifikation.
  • Handlinger gør det muligt at angive flere muligheder, adskilt af linjer (en ny linje bruges som afgrænsning). For eksempel: include-data-dir: | a=bc=d
  • Der er implementeret en analyse af sløjfetyper, som i fremtiden vil blive brugt til at implementere selektive optimeringer.
  • Tilføjede optimeringer for at fremskynde arbejdet med ikke-delte og undslupne variabler.
  • Mulighederne for anti-bloat-plugin'et er blevet udvidet, som nu kan bruges til at reducere antallet af pakker, når du bruger streamlit-, torch-, knetworkx-, distributed-, skimage-, bitsandbytes-, tf_keras-, pip-, networkx- og pywt-bibliotekerne (dybest set binding). til pytest er IPython, næse, triton udelukket og dask).

Kilde: opennet.ru

Tilføj en kommentar