Даступны выпуск праекта Nuitka 2.0, які развівае кампілятар для трансляцыі скрыптоў на мове Python у прадстаўленне на мове C, якое затым можна скампіляваць у выкананы файл, які выкарыстоўвае libpython для забеспячэння максімальнай сумяшчальнасці з CPython (выкарыстоўваюцца штатныя сродкі CPython для кіравання аб'ектамі). Забяспечана поўная сумяшчальнасць з актуальнымі выпускамі Python 2.6, 2.7, 3.3 - 3.11. У параўнанні з CPython скампіляваныя скрыпты дэманструюць у тэстах pystone павышэнне прадукцыйнасці на 335%. Код праекту распаўсюджваецца пад ліцэнзіяй Apache.
Сярод змен у новай версіі:
- Дададзена магчымасць выкарыстання зменных у канфігурацыі пакета, якая дазваляе падчас кампіляцыі запытваць значэння з усталяваных пакетаў і выкарыстоўваць гэтыя значэння для вызначэння бэкенда. Падтрымка зменных у канфігурацыі дазваляе вырашыць штатнымі спосабамі шматлікія задачы, для якіх раней патрабавалася падлучэнне плагінаў.
- Дададзена падтрымка параметраў, якія задаюцца карыстальнікам для ўплыву на канфігурацыю кожнага пакета. Параметры могуць быць прачытаныя пры дапамозе новай функцыі get_parameter і скарыстаны для выбару паводзін модуляў (напрыклад, можна выставіць параметр для адключэння Numba JIT або Torch JIT).
- Дададзена опцыя "—include-onefile-external-data" для задання шаблонаў файлаў з дадзенымі, якія вызначаны ў канфігурацыі але павінны пастаўляцца асобна ад выкананага файла пры зборцы ў аднафайлавым рэжыме (onefile).
- Дададзена опцыя «-cf-protection» для выстаўлення ў GCC рэжыму абароны CFI (Control Flow Integrity), які блакуе парушэнні звычайнага парадку выканання (control flow).
- Для yaml-файлаў убудоў рэалізавана магчымасць стварэння кантрольных сум для праверкі цэласнасці, якія ў будучыні плануюць выкарыстоўваць для арганізацыі верыфікацыі падчас выканання.
- У Actions дазволена ўказанне некалькіх опцый, падзеленых па радках (новы радок выкарыстоўваецца як падзельнік). Напрыклад: include-data-dir: | a=bc=d
- Рэалізаваны аналіз тыпаў цыклаў, які ў будучым будзе задзейнічаны для рэалізацыі выбарачных аптымізацый.
- Дададзеныя аптымізацыі для паскарэння працы з непадзельнымі і экранаваны зменнымі.
- Пашыраны магчымасці плагіна anti-bloat, які зараз можа прымяняцца для памяншэння колькасці пакетаў пры выкарыстанні бібліятэк streamlit, torch, knetworkx, distributed, skimage, bitsandbytes, tf_keras, pip, networkx і pywt (у асноўным выключана прывязка да pytest, IPython, nose, і dask).
Крыніца: opennet.ru