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