Выпуск Nuitka 2.0, кампілятара для мовы Python

Даступны выпуск праекта 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

Дадаць каментар