Слитая кожа - Shed Skin
Оригинальный автор (ы) | Марк Дюфур, другие |
---|---|
изначальный выпуск | 2005 |
Стабильный выпуск | 0.9.4 / 16 июня 2013 г. |
Репозиторий | |
Написано в | Python, C ++ |
Операционная система | Кроссплатформенность: Linux, Mac OS X, Windows |
Доступно в | Python |
Тип | Компилятор исходного кода |
Лицензия | GPL 3, BSD, Массачусетский технологический институт |
Интернет сайт | шкура |
Слитая кожа это Python к C ++ язык программирования компилятор. Это экспериментально, и можно переводить чисто, но неявно статически типизированный Программы Python в оптимизированный C ++. Он может создавать автономные программы или модули расширения, которые можно импортировать и использовать в более крупных программах Python.
Shed Skin - это проект с открытым исходным кодом, в который внесли вклад многие люди, однако основным автором является Марк Дюфур. Работа над Shed Skin ведется с 2005 года.[1]
Функции
Помимо ограничения набора текста,[2] программы не могут свободно использовать стандартную библиотеку Python, хотя около 20 общих модулей, таких как случайный
, itertools
и повторно
(обычные выражения ), поддерживаются с 2011 года. Кроме того, не все функции Python, такие как вложенные функции и переменное количество аргументов. Многие интроспективные динамические части языка не поддерживаются. Например, такие функции, как getattr и hasattr, не поддерживаются.
По состоянию на май 2011 г. Unicode не поддерживается.[3]
По состоянию на июнь 2016 г. для набора из 75 нетривиальных тестовых программ (всего более 25000 строк (количество строк)),[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 (GPL). Вспомогательный код, который он использует в качестве библиотеки времени выполнения, находится под BSD или же Массачусетский технологический институт лицензия в зависимости от модуля. Это позволяет компилировать программы, которые рассматриваются под GPL или не рассматриваются под GPL.
Вывод типа
Shed Skin сочетает в себе алгоритм декартового произведения (CPA) Оле Агесена с полиморфной по данным частью итеративного анализа потока (IFA) Джона Плевяка.[11] Версия 0.6 представила улучшения масштабируемости, которые многократно анализируют большие версии программы (в дополнение к упомянутым методам), пока она не будет полностью проанализирована. Это позволяет Shed Skin делать вывод типа на более крупных программах, чем раньше. По сути, он начинается с пустого графа вызовов и медленно дополняет его, пока не будет добавлен весь граф вызовов. Автор опубликовал график, показывающий время анализа для 50 программ-примеров, в общей сложности около 15 000 строк.[12]
Модули
Для версии 0.9 в основном поддерживаются следующие 25 модулей[13]. Некоторые из них, такие как os.path, были скомпилированы на C ++ с использованием Shed Skin.
- множество
- binascii
- делить пополам
- коллекции (defaultdict, deque)
- ConfigParser (без SafeConfigParser)
- копировать
- цвета
- csv (без диалекта, сниффера)
- дата и время
- fnmatch
- Getopt
- шарик
- heapq
- itertools (без карты звездочки)
- математика
- mmap
- Операционные системы
- os.path
- случайный
- повторно
- разъем
- нить
- struct (без Struct, pack_into, unpack_from)
- sys
- время
Обратите внимание, что любой другой модуль, такой как pygame, pyqt или pickle, может использоваться в сочетании с созданным Shed Skin. модуль расширения. Примеры этого см. В Shed Skin. Примеры.
Смотрите также
Рекомендации
- ^ первый релиз Shed Skin
- ^ Изучение раздела книги Python о Shed Skin
- ^ Учебник по Shed Skin (раздел «Ограничения подмножества Python»)
- ^ https://github.com/shedskin/shedskin
- ^ Ускорьте свой Python: Unladen против Shed Skin против PyPy против Cython против C
- ^ Взять на себя Shed-Skin
- ^ Ускорение кода Python с помощью Shed Skin
- ^ MiniLight, тест рендеринга минимального глобального освещения
- ^ Веб-страница Shed Skin
- ^ Обертывание классов C ++ с использованием Shed Skin
- ^ Магистерская диссертация Марка Дюфура, "Shed Skin. Оптимизирующий компилятор Python-C ++", 19 апреля 2006 г.
- ^ Масштабируемость вывода типов, 2010-12
- ^ Примечания к выпуску Shedskin 0.9