Выпуск 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) результатов работы на определенном тестовом входном файле и на всём наборе тестов; Добавлено уведомление о пропущенных тестах.

© OpenNet