Слитая кожа - Shed Skin

Слитая кожа
Оригинальный автор (ы) Марк Дюфур, другие
изначальный выпуск 2005 г.
Стабильный выпуск
0.9.4 / 16 июня 2013 г . ; 8 лет назад ( 2013-06-16 )
Репозиторий Отредактируйте это в Викиданных
Написано в Python , C ++
Операционная система Кроссплатформенность : Linux , Mac OS X , Windows
Доступно в Python
Тип Компилятор исходных текстов
Лицензия GPLv3 , BSD , MIT
Интернет сайт shedskin .github .io

Shed Skin - это компилятор языков программирования с Python до C ++ до версии 2.7 . Он является экспериментальным и может переводить чистые, но неявно статически типизированные программы Python в оптимизированный C ++. Он может создавать автономные программы или модули расширения, которые можно импортировать и использовать в более крупных программах Python.

Shed Skin - это проект с открытым исходным кодом, в котором участвовали многие люди, но главным автором является Марк Дюфур . Работа над Shed Skin ведется с 2005 года.

Функции

Помимо ограничения ввода, программы не могут свободно использовать стандартную библиотеку Python, хотя по состоянию на 2011 год поддерживаются около 20 общих модулей, таких как random, itertoolsи re( регулярные выражения ). Кроме того, не все функции Python, такие как вложенные функции и количество переменных аргументы, поддерживаются. Многие интроспективные динамические части языка не поддерживаются. Например, такие функции, как getattrи hasattr, не поддерживаются.

По состоянию на май 2011 года Юникод не поддерживается.

По состоянию на июнь 2016 года для набора из 75 нетривиальных тестовых программ (всего более 25 000 строк кода) измерения показывают типичное ускорение в 2-20 раз по сравнению с Psyco и в 2-200 раз по сравнению с CPython . Shed Skin все еще находится на ранней стадии разработки, поэтому многие другие программы не будут компилироваться без изменений.

Shed Skin можно использовать для создания автономных исполняемых файлов, которым нужны только библиотеки времени выполнения C ++. Его также можно использовать для создания модулей CPython. Это позволяет компилировать части более крупных программ с помощью Shed Skin, а другие части запускать с помощью обычного CPython.

Другое использование заключалось в том, чтобы обернуть классы C ++ с помощью Shed Skin, чтобы классы C ++ можно было использовать как классы Python.

Лицензия на исходный код Shed Skin состоит из двух частей. Основной код компилятора находится под лицензией GNU General Public License (GPL). Поддерживающий код, который он использует в качестве библиотеки времени выполнения, находится под лицензией BSD или MIT в зависимости от модуля. Это позволяет компилировать программы как под GPL, так и без GPL.

Вывод типа

Shed Skin объединяет алгоритм декартовых произведений (CPA) Оле Агесена с полиморфной по данным частью итеративного анализа потока (IFA) Джона Плевяка. Версия 0.6 представила улучшения масштабируемости, которые многократно анализируют большие версии программы (в дополнение к упомянутым методам), пока она не будет полностью проанализирована. Это позволяет Shed Skin делать вывод типов в более крупных программах, чем раньше. По сути, он начинается с пустого графа вызовов и медленно дополняет его, пока не будет добавлен весь граф вызовов. Автор опубликовал график, показывающий время анализа для 50 программ-примеров, всего около 15 000 строк.

Модули

Для версии 0.9 в основном поддерживаются следующие 25 модулей. Некоторые из них, например 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 .

Смотрите также

использованная литература

внешние ссылки