Shed Skin es un transpilador, que puede traducir programas Python 3 de escrito puro, pero implícitamente, estáticamente, en C ++ optimizado. Puede generar programas independientes o módulos de extensión que se pueden importar y utilizar en programas de Python más grandes.
Además de la restricción de tipificación, los programas no pueden usar libremente la biblioteca estándar de Python (aunque actualmente se admiten alrededor de 25 módulos comunes, como Random y RE,). Además, no se admiten todas las características de Python, como funciones anidadas y números variables de argumentos (ver la documentación para más detalles).
Para un conjunto de 80 programas no triviales (a más de 25,000 líneas en total (Sloccount)), las mediciones muestran una aceleración típica de 1-100 veces sobre CPython.
Compile y ejecute el '¡Hola, mundo!' (test.py) Ejemplo en Linux/OSX:
Prueba de construcción de piel de cobertizo construir/probar
Debajo de las ventanas:
Build de piel construir/depug/test.exe
La piel de cobertizo solo admite un subconjunto restringido de Python, por lo que no se debe esperar que un programa dado compile sin ningún cambio, si es posible. Consulte la documentación para obtener una descripción general de las limitaciones.
La piel de cobertizo depende de algunos otros proyectos, como el recolector de basura Boehm. Consulte la documentación sobre cómo instalarlos.
Algunos tiempos para el ejemplo de 'tamiz' de la piel de cobertizo (n = 100000000) y varias implementaciones/optimizadores de Python:
Cpython 3.10.6: 13.4 segundos Cpython 3.11.0: 11.4 Nuitka 0.6.16: 11.4 Pypy 3.9.12: 5.8 Numba 0.56.4: 2.5 Shedskin 0.9.9: 1.9 Shedskin 0.9.9: 1.8 (usando - -Nowrap - -Nowounds)
Tenga en cuenta que Numba es predeterminado a Int64 como tipo entero, mientras que la piel de cobertizo predeterminada a INT32. El rendimiento es prácticamente igual cuando se usa Shedskin -Long.
Algunas capturas de pantalla de los programas de ejemplo en acción:
(Pylot)
(C64)
(Pycsg)
(Othello2)
(condenar)
Este video muestra la diferencia dramática en el rendimiento del ejemplo de la fatalidad antes y después de la compilación
Las siguientes personas han contribuido al desarrollo de la piel de cobertizo:
Shakeeb Alireza Hakan Ardo Brian Blais Paul Boddie Boutinas François Djamel cherif James Coughlan Mark Dewing Mark Dufour Artem egorkine Michael Elkins Moataz elmasry Enzo erbano Ernesto Ferro Salvatore Ferro FFAO Victor García Luis M. Gonzales Fahrzin hemmati Folkert Van Heusden Karel Heyse Humhue Johan Kristensen Kousuke Denis de Leeuw Duarte Van Lindberg David Marek Douglas McNeil Andy Miller Jeff Miller Danny Milosavljevic Joaquín Abian Monux John Nagle Harri Pasanen Brent Pedersen Joris van Rantwijk Retiro Pierre-Marie de Rodat Jérémie Roquet Mike Schrick Sirnotapearingintutorial Paul Sokolevsky Thomas Spura Joerg Stippa Dan Stromberg Dave Tweed Jaroslaw tworek Tony Veijalainen Yuri Vicorovich Pavel Vinogradov Jason Ye Liu zhenhai Joris Van Zwieten