Сброшенная кожа
Оригинальный автор(ы) | Марк Дюфур и другие |
---|---|
Первоначальный выпуск | 2005 |
Стабильная версия | 0.9.6 / 10 декабря 2022 г |
Репозиторий | |
Написано в | Питон , С++ |
Операционная система | Кроссплатформенность : Linux , Mac OS X , Windows. |
Доступно в | Питон |
Тип | Компилятор исходного кода |
Лицензия | GPLv3 , BSD , Массачусетский технологический институт |
Веб-сайт | линька |
Shed Skin — это экспериментальный с Python (3.8+) на C++ языка программирования компилятор с ограниченным доступом . Он может транслировать чистые, но неявно статически типизированные программы Python в оптимизированный C++. Он может создавать автономные программы или модули расширения, которые можно импортировать и использовать в более крупных программах Python.
Shed Skin — проект с открытым исходным кодом, в котором приняли участие многие люди, однако основным автором является Марк Дюфур . Работа над Shed Skin ведется с 2005 года. [1]
Функции
[ редактировать ]Помимо ограничения набора текста, [2] программы не могут свободно использовать стандартную библиотеку Python, хотя около 20 общих модулей, таких как random
, itertools
и re
( регулярные выражения ) поддерживаются с 2011 года. Кроме того, не все функции Python, такие как вложенные функции поддерживаются и переменное количество аргументов. Многие интроспективные динамические части языка не поддерживаются. Например, такие функции, как getattr
, и hasattr
не поддерживаются.
По состоянию на май 2011 г. Юникод не поддерживается. [3]
По состоянию на июнь 2016 года для набора из 75 нетривиальных тестовых программ (всего более 25 000 строк кода) [4] измерения показывают типичное ускорение в 2–20 раз по сравнению с Psyco и в 2–200 раз по сравнению с CPython . [5] [6] [7] [8] Shed Skin все еще находится на ранней стадии разработки, поэтому многие другие программы не будут компилироваться в неизмененном виде. [9]
Shed Skin можно использовать для создания автономных исполняемых файлов, которым нужны только библиотеки времени выполнения C++. Его также можно использовать для создания модулей CPython. Это позволяет компилировать части более крупных программ с помощью Shed Skin, одновременно запуская другие части с использованием обычного CPython.
Другое применение заключалось в обертке классов C++ с помощью Shed Skin, чтобы позволить использовать классы C++ как классы Python. [10]
Лицензия на исходный код Shed Skin состоит из двух частей. Основной код компилятора находится под лицензией GNU General Public License (GPL). Вспомогательный код, который он использует в качестве библиотеки времени выполнения, находится под лицензией BSD или MIT в зависимости от модуля. Это позволяет компилировать программы как под лицензией GPL, так и без нее.
Вывод типа
[ редактировать ]Shed Skin сочетает в себе алгоритм декартового произведения (CPA) Оле Агесена с полиморфной частью итеративного потокового анализа (IFA) Джона Плевьяка. [11] В версии 0.6 представлены улучшения масштабируемости, которые позволяют многократно анализировать более крупные версии программы (в дополнение к упомянутым методам) до тех пор, пока она не будет полностью проанализирована. Это позволяет Shed Skin выполнять вывод типов в более крупных программах, чем раньше. По сути, он начинается с пустого графа вызовов и медленно добавляется к нему, пока не будет добавлен весь граф вызовов. Автор опубликовал график, показывающий время анализа для 50 примеров программ общим объемом около 15 000 строк. [12]
Модули
[ редактировать ]Для версии 0.9 в основном поддерживаются следующие 25 модулей. [13] Некоторые из них, например os.path, были скомпилированы на C++ с помощью Shed Skin.
- множество
- Бинаскии
- разделить пополам
- коллекции (defaultdict, deque)
- ConfigParser (без SafeConfigParser)
- копировать
- Colorsys
- csv (без диалекта, сниффера)
- дата и время
- фнматч
- увенчанный
- шарик
- куча
- itertools (без звездной карты)
- математика
- ммап
- ты
- путь к ОС
- случайный
- ре
- розетка
- нить
- структура (без структуры, package_into, unpack_from)
- система
- время
Обратите внимание, что любой другой модуль, такой как pygame, pyqt или Pickle, может использоваться в сочетании с модулем расширения, созданным Shed Skin . Примеры этого см. в разделе « Примеры скинов Shed» .
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ первый выпуск Shed Skin
- ^ Раздел книги «Изучение Python» на Shed Skin
- ^ Учебное пособие по Shed Skin (раздел «Ограничения подмножества Python»)
- ^ «Шедскин/Шедскин» . Гитхаб . 17 мая 2022 г.
- ^ Ускорьте свой Python: Unladen против Shed Skin против PyPy против Cython против C
- ^ Взятие Shed-Skin
- ^ Ускорение кода Python с помощью Shed Skin.
- ^ MiniLight, тест рендеринга минимального глобального освещения.
- ^ Веб-страница Shed Skin
- ^ Обертка классов C++ с использованием Shed Skin
- ^ Магистерская диссертация Марк Дюфур, «Сбросить кожу. Оптимизирующий компилятор Python-C++» , 19 апреля 2006 г.
- ^ Масштабируемость вывода типа , 2010-12
- ^ Примечания к выпуску Shedskin 0.9