Shed Skin - это транспилер, который может транслировать чистый, но неявно статически напечатать программы Python 3 в оптимизированный C ++. Он может генерировать автономные программы или модули расширения, которые могут быть импортированы и использованы в более крупных программах Python.
Помимо ограничения на текст, программы не могут свободно использовать стандартную библиотеку Python (хотя в настоящее время поддерживаются около 25 распространенных модулей, таких как случайные и RE). Кроме того, поддерживаются не все функции Python, такие как вложенные функции и переменные номера аргументов (подробности см. В документации).
Для набора из 80 нетривиальных программ (всего более 25 000 строк (Sloccount)) измерения показывают типичное ускорение в 1-100 раз по сравнению с CPYTHON.
Скомпилируйте и запустите «Привет, мир!» (test.py) Пример под Linux/OSX:
Тест на сборку сарайки сборка/тест
Под окнами:
Сборка сарайки -тест Build/Debug/test.exe
Shed Skin поддерживает только ограниченное подмножество Python, поэтому не следует ожидать данной программы для компиляции без каких -либо изменений, если возможно. Смотрите документацию для обзора ограничений.
Shed Skin зависит от некоторых других проектов, таких как сборщик мусора Boehm. Пожалуйста, смотрите документацию о том, как их установить.
Некоторые времена для примера Shed Skin Sieve '(n = 10000000000) и несколько реализаций/оптимизаторов Python:
CPYTHON 3.10.6: 13,4 секунды CPYTHON 3.11.0: 11.4 Nuitka 0.6.16: 11.4 PYPY 3.9.12: 5.8 Numba 0,56,4: 2,5 Sedsciel 0.9.9: 1,9 Shedskin 0.9.9: 1,8 (с помощью -Nowrap -Службы)
Обратите внимание, что NUMBA по умолчанию в Int64 как целочисленный тип, в то время как кожу по умолчанию по умолчанию на INT32. Производительность практически равна при использовании Shedskin -длин.
Некоторые скриншоты примеров программ в действии:
(Пилот)
(C64)
(pycsg)
(Othello2)
(рок)
Это видео показывает драматическую разницу в производительности для примера Doom до и после компиляции
Следующие люди внесли свой вклад в развитие кожи:
Shakeeb alireza Хакан Ардо Брайан Блейс Пол Бодди Франсуа Джамел Шериф Джеймс Кофлан Марк Дьюинг Марк Дюфур Артем Эгокин Майкл Элкинс Моатаз Эльмаса Энцо Эрбано Эрнесто Ферро Сальваторе Ферро FFAO Виктор Гарсия Луис М. Гонсалес Фахрзин Хеммати Фолкерт Ван Хеусден Карел Хейз Humhue Йохан Кристенсен Коуске Денис де Леуу Дуарте Ван Линдберг Дэвид Марек Дуглас Макнил Энди Миллер Джефф Миллер Дэнни Милосавльевич Хоакин Абиан Монукс Джон Нагл Харри Пасанен Брент Педерсен Йорис Ван Рантвидж Ретсио Пьер-Мари де Родат Jérémie Roquet Майк Шрик SirnotapeAringInthistutorior Пол Соколевский Томас Сурра Джог Стиппа Дэн Стромберг Дэйв Твид Ярослав Турек Тони Вейджалайнен Юрий Викторович Павел Виноградов Джейсон Йе Лю Чженай Йорис Ван Цвитен