Представлен (http://nuitka.net/posts/nuitka-release-059.html) новый выпуск проекта Nuitka (http://nuitka.net/), в рамках которого развивается компилятор, позволяющий транслировать скрипт на языке 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__;
- Генерация исполнимых файлов для OS X. Разделяемые библиотеки и модули расширения не обновляли пути для загрузки своих разделяемых библиотек;
- Генерация исполнимых файлов для Linux. Разделяемые библиотеки копировались в подкаталог .dist, доступный только для чтения, что потенциально мешало исполнению chrpath;
- Генерация исполнимых файлов. При "заморозке" (freezing) стандартной библиотеки пути к компилятору Nuitka и текущая директория оставались в переменной текущих путей, что могло привести к использованию неправильных файлов.
- Новые возможности
- Добавлена опция "--recurse-pattern" для указания модулей по именам файлов, что для Python3 единственный способ указать только необходимые модули в пакете (а не все);
- Добавлена опция "--generate-c++-only" для только перегенерации исходных текстов (без запуска компилятора);
- Опция "--с++-only" переименована в "--recompile-c++-only" для перекомпиляции исходных текстов;
- Тестирование
- Добавлена поддержка тестов покрытия (code coverage tests) результатов работы на определенном тестовом входном файле и на всём наборе тестов;
- Добавлено уведомление о пропущенных тестах.
URL: http://nuitka.net/posts/nuitka-release-059.html
Новость: http://www.opennet.dev/opennews/art.shtml?num=41729