Wydanie Nuitka 2.0, kompilatora języka Python

Dostępna jest wersja projektu Nuitka 2.0, rozwijająca kompilator do tłumaczenia skryptów Pythona na reprezentację C, którą można następnie skompilować do pliku wykonywalnego przy użyciu libpython w celu uzyskania maksymalnej zgodności z CPython (przy użyciu natywnych narzędzi CPython do manipulowania obiektami). Zapewniono pełną kompatybilność z aktualnymi wersjami Pythona 2.6, 2.7, 3.3 - 3.11. W porównaniu z CPythonem skompilowane skrypty wykazują 335% poprawę wydajności w testach pystone. Kod projektu jest dystrybuowany na licencji Apache.

Wśród zmian w nowej wersji:

  • Dodano możliwość wykorzystania zmiennych w konfiguracji pakietu, co pozwala na odpytywanie wartości z zainstalowanych pakietów w czasie kompilacji i używanie tych wartości do definiowania backendu. Obsługa zmiennych w konfiguracji pozwala rozwiązać wiele zadań w standardowy sposób, który wcześniej wymagał podłączenia wtyczek.
  • Dodano obsługę parametrów zdefiniowanych przez użytkownika, które mają wpływ na konfigurację każdego pakietu. Parametry można odczytać za pomocą nowej funkcji get_parameter i wykorzystać do wybrania zachowania modułów (np. można ustawić parametr tak, aby wyłączyć Numba JIT lub Torch JIT).
  • Dodano opcję „--include-onefile-external-data”, aby określić szablony plików danych, które są zdefiniowane w konfiguracji, ale muszą być dostarczone oddzielnie od pliku wykonywalnego podczas budowania w trybie jednego pliku.
  • Dodano opcję „--cf-protection”, aby ustawić tryb ochrony CFI (Integralność przepływu sterowania) w GCC, który blokuje naruszenia normalnego porządku wykonania (przepływu sterowania).
  • W przypadku plików yaml wtyczek zaimplementowano możliwość tworzenia sum kontrolnych do sprawdzania integralności, które w przyszłości planują wykorzystać do zorganizowania weryfikacji w czasie wykonywania.
  • Akcje umożliwiają określenie wielu opcji oddzielonych liniami (nowa linia służy jako ogranicznik). Na przykład: katalog-dołączonych danych: | a=bc=d
  • Zaimplementowano analizę typów pętli, która w przyszłości posłuży do realizacji selektywnych optymalizacji.
  • Dodano optymalizacje przyspieszające pracę ze zmiennymi niewspółdzielonymi i zmiennymi ucieczki.
  • Rozszerzono możliwości wtyczki przeciwdziałającej wzdęciom, którą można teraz wykorzystać do zmniejszenia liczby pakietów podczas korzystania z bibliotek streamlit, torch, knetworkx, rozproszonych, skimage, bitsandbytes, tf_keras, pip, networkx i pywt (w zasadzie wiązanie do pytest, IPython, nos, triton jest wykluczony i dask).

Źródło: opennet.ru

Dodaj komentarz