Veröffentlichung von Nuitka 2.0, einem Compiler für die Python-Sprache

Es ist eine Version des Nuitka 2.0-Projekts verfügbar, das einen Compiler für die Übersetzung von Python-Skripten in eine C-Darstellung entwickelt, die dann mit libpython in eine ausführbare Datei kompiliert werden kann, um maximale Kompatibilität mit CPython zu gewährleisten (unter Verwendung nativer CPython-Tools zum Bearbeiten von Objekten). Bietet vollständige Kompatibilität mit aktuellen Versionen von Python 2.6, 2.7, 3.3 – 3.11. Im Vergleich zu CPython zeigen kompilierte Skripte in Pystone-Tests eine Leistungsverbesserung von 335 %. Der Projektcode wird unter der Apache-Lizenz verteilt.

Zu den Änderungen in der neuen Version:

  • Es wurde die Möglichkeit hinzugefügt, Variablen in der Paketkonfiguration zu verwenden, sodass Sie zur Kompilierungszeit Werte von installierten Paketen abfragen und diese Werte zum Definieren des Backends verwenden können. Durch die Unterstützung von Variablen in der Konfiguration können Sie viele Aufgaben auf Standardmethoden lösen, für die zuvor die Verbindung von Plugins erforderlich war.
  • Unterstützung für benutzerdefinierte Parameter hinzugefügt, um die Konfiguration jedes Pakets zu beeinflussen. Parameter können mit der neuen Funktion get_parameter gelesen und zur Auswahl des Verhaltens von Modulen verwendet werden (Sie können beispielsweise einen Parameter festlegen, um Numba JIT oder Torch JIT zu deaktivieren).
  • Option „--include-onefile-external-data“ hinzugefügt, um Datendateivorlagen anzugeben, die in der Konfiguration definiert sind, aber beim Erstellen im Onefile-Modus separat von der ausführbaren Datei bereitgestellt werden müssen.
  • Option „--cf-protection“ hinzugefügt, um den CFI-Schutzmodus (Control Flow Integrity) in GCC festzulegen, der Verstöße gegen die normale Ausführungsreihenfolge (Kontrollfluss) blockiert.
  • Für Plugin-Yaml-Dateien wurde die Möglichkeit implementiert, Prüfsummen für Integritätsprüfungen zu erstellen, die in Zukunft zur Organisation der Laufzeitüberprüfung genutzt werden sollen.
  • Aktionen ermöglichen die Angabe mehrerer Optionen, getrennt durch Zeilen (eine neue Zeile wird als Trennzeichen verwendet). Beispiel: include-data-dir: | a=bc=d
  • Es wurde eine Analyse von Schleifentypen implementiert, die künftig zur Umsetzung selektiver Optimierungen genutzt werden soll.
  • Optimierungen hinzugefügt, um die Arbeit mit nicht gemeinsam genutzten und maskierten Variablen zu beschleunigen.
  • Die Funktionen des Anti-Bloat-Plugins wurden erweitert, wodurch nun die Anzahl der Pakete bei Verwendung der Bibliotheken Streamlit, Torch, Knetworkx, Distributed, Skimage, Bitsandbytes, TF_Keras, Pip, NetworkX und Pywt reduziert werden kann (im Wesentlichen Binding). zu pytest, IPython, Nose, Triton ist ausgeschlossen und dask).

Source: opennet.ru

Kommentar hinzufügen