Je k dispozici vydání projektu Nuitka 2.0, vyvíjející kompilátor pro překlad skriptů Python do reprezentace C, které lze následně zkompilovat do spustitelného souboru pomocí libpythonu pro maximální kompatibilitu s CPythonem (pomocí nativních nástrojů CPythonu pro manipulaci s objekty). Poskytuje plnou kompatibilitu s aktuálními verzemi Pythonu 2.6, 2.7, 3.3 - 3.11. Ve srovnání s CPythonem vykazují kompilované skripty 335% zlepšení výkonu v testech pystone. Kód projektu je distribuován pod licencí Apache.
Mezi změny v nové verzi:
- Přidali jsme možnost používat proměnné v konfiguracích balíčků, což vám umožňuje dotazovat se na hodnoty z nainstalovaných balíčků během kompilace a použít tyto hodnoty k určení backendu. Podpora proměnných v konfiguracích vám umožňuje vyřešit mnoho problémů, které dříve vyžadovaly pluginy.
- Přidána podpora pro uživatelem definované parametry, které ovlivňují konfiguraci každého balíčku. Parametry lze číst pomocí nové funkce get_parameter a používat k řízení chování modulů (například můžete nastavit parametr pro zakázání Numba JIT nebo Torch JIT).
- Přidána volba „--include-onefile-external-data“ pro určení šablon pro datové soubory, které jsou definovány v konfiguraci, ale musí být dodány odděleně od spustitelného souboru při sestavování v režimu onefile.
- Přidána volba „--cf-protection“ pro nastavení režimu ochrany CFI (Control Flow Integrity) v GCC, který blokuje narušení řídicího toku.
- Pro soubory YAML pluginů byla implementována možnost generování kontrolních součtů pro ověření integrity, které se v budoucnu plánují používat pro ověření za běhu.
- Akce umožňují zadat více možností oddělených řádky (s novým řádkem jako oddělovačem). Například: include-data-dir: | a=bc=d
- Byla provedena analýza typů cyklů, která bude v budoucnu využita k implementaci selektivních optimalizací.
- Přidány optimalizace pro urychlení práce s nesdílenými a escapovanými proměnnými.
- Plugin proti nafouknutí byl rozšířen, aby se snížil počet balíčků při použití knihoven streamlit, torch, knetworkx, distributed, skimage, bitsandbytes, tf_keras, pip, networkx a pywt (většinou odstraněny závislosti pytest, IPython, nose, triton a dask).
Zdroj: opennet.ru
