Випуск 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

Додати коментар або відгук