Выпуск Nuitka 0.5.9, компилятора для языка Python

Представлен новый выпуск проекта Nuitka, в рамках которого развивается компилятор, позволяющий транслировать скрипт на языке Python в представление на C++, которое затем можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). Обеспечена полная совместимость с Python 2.6, 2.7, 3.2, 3.3 и 3.4. По сравнению с CPython скомпилированные скрипты демонстрируют в тестах pystone повышение производительности на 258%. Код проекта распространяется под лицензией Apache.

В новой версии:

  • Оптимизации:
    • Встроенная функция getattr оптимизируется во время компиляции;
    • При вызовах PyCFunction не происходит построения кортежа (tuple) для вызова функции без параметра или с одним параметром;
  • Работа над ошибками:
    • Совместимость. Проверки итераторов осуществлялись при помощи PyIter_Check, которая работает неправильно за пределами ядра python-интерпретатора. Теперь проверка осуществляется при помощи helper’a HAS_ITERNEXT, который сравнивает извлеченные (real non-iterator) указатели на объекты.
    • Python3. Ошибка при создании словарей классов при выхове __prepare__;
    • Генерация исполнимых файлов для MacOS. Разделяемые библиотеки и модули расширения не обновляли пути для загрузки своих разделяемых библиотек;
    • Генерация исполнимых файлов для Linux. Разделяемые библиотеки копировались в подкаталог .dist, доступный только для чтения, что потенциально мешало исполнению chrpath;
    • Генерация исполнимых файлов. При «заморозке» (freezing) стандартной библиотеки пути к компилятору Nuitka и текущая директория оставались в переменной текущих путей, что могло привести к использованию неправильных файлов.
  • Новые возможности
    • Добавлена опция «—recurse-pattern» для указания модулей по именам файлов, что для Python3 единственный способ указать только необходимые модули в пакете (а не все);
    • Добавлена опция «—generate-c++-only» для только перегенерации исходных текстов (без запуска компилятора);
    • Опция «—с++-only» переименована в «—recompile-c++-only» для перекомпиляции исходных текстов;
  • Тестирование
    • Добавлена поддержка тестов покрытия (code coverage tests) результатов работы на определенном тестовом входном файле и на всём наборе тестов;
    • Добавлено уведомление о пропущенных тестах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.