Skip to main content

Shed Skin is a restricted-Python-to-C++ compiler.

Project description

https://img.shields.io/travis/shedskin/shedskin.svg http://img.shields.io/badge/benchmarked%20by-asv-green.svg?style=flat

Shed Skin

Shed Skin is a transpiler, that can translate pure, but implicitly statically typed Python 3 programs into optimized C++. It can generate stand-alone programs or extension modules that can be imported and used in larger Python programs.

Besides the typing restriction, programs cannot freely use the Python standard library (although about 25 common modules, such as random and re, are currently supported). Also, not all Python features, such as nested functions and variable numbers of arguments, are supported (see the documentation for details).

For a set of over 80 non-trivial programs (at over 25,000 lines in total (sloccount)), measurements show a typical speedup of 1-100 times over CPython (median 12 times, average 20 times).

Usage

Compile and run the ‘hello, world!’ (test.py) example under Linux/OSX:

shedskin build test
build/test

Under Windows:

shedskin build test
build\Release\test.exe

Restrictions

Shed Skin only supports a restricted subset of Python, so one should not expect a given program to compile without any changes, if possible at all. See the documentation for an overview of the limitations.

Installation

Shed Skin depends on some others projects, such as the Boehm garbage collector. Please see the documentation on how to install these.

Comparison

Some timings for the Shed Skin ‘sieve’ example (n=100000000) and several Python implementations/optimizers:

cpython 3.10.6:     13.4 seconds
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  (using --nowrap --nobounds)

Note that Numba defaults to int64 as integer type, while Shed Skin defaults to int32. Performance is practically equal when using shedskin –long.

Screenhots

Some screenshots of the example programs in action:

(pylot)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm3.png

(c64)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm1.png

(pycsg)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm7.png

(othello2)

https://raw.githubusercontent.com/shedskin/shedskin/master/docs/assets/screenshots/harm6.png

(doom)

Left floating image

This video shows the dramatic difference in performance for the DOOM example before and after compilation

Contributors

The following people have contributed to Shed Skin development:

Shakeeb Alireza
Hakan Ardo
Brian Blais
Paul Boddie
François Boutines
Wyatt S. Carpenter
Djamel Cherif
James Coughlan
Mark Dewing
Mark Dufour
Artem Egorkine
Michael Elkins
Moataz Elmasry
Enzo Erbano
Ernesto Ferro
Salvatore Ferro
FFAO
Victor Garcia
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
Joaquin Abian Monux
John Nagle
Harri Pasanen
Brent Pedersen
Joris van Rantwijk
Retsyo
Pierre-Marie de Rodat
Jérémie Roquet
Mike Schrick
SirNotAppearingInThisTutorial
Paul Sokolevsky
Thomas Spura
Joerg Stippa
Dan Stromberg
Dave Tweed
Jaroslaw Tworek
Tony Veijalainen
Yuri Victorovich
Pavel Vinogradov
Jason Ye
Liu Zhenhai
Joris van Zwieten

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shed_skin-0.9.11.tar.gz (3.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shed_skin-0.9.11-py3-none-any.whl (370.8 kB view details)

Uploaded Python 3

File details

Details for the file shed_skin-0.9.11.tar.gz.

File metadata

  • Download URL: shed_skin-0.9.11.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for shed_skin-0.9.11.tar.gz
Algorithm Hash digest
SHA256 d1ddd8a7ca1ce817c5650eeb77c06f82a1a088000754126d80cca7e589c005a0
MD5 02e2f65c7b9d32183e98d53d04c0fce3
BLAKE2b-256 58eb9bf017fa1b671ad5c08929f5954238b499c1f02cfe042e005eec71431ced

See more details on using hashes here.

File details

Details for the file shed_skin-0.9.11-py3-none-any.whl.

File metadata

  • Download URL: shed_skin-0.9.11-py3-none-any.whl
  • Upload date:
  • Size: 370.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for shed_skin-0.9.11-py3-none-any.whl
Algorithm Hash digest
SHA256 7e3762c5f3e91b5f85ce795e78ca145ff3286c61f524046ac3654d394c6358d8
MD5 d6986d529e335dd12894d26642d3a02e
BLAKE2b-256 5fbe4c4627e9e58feb231436ecdb9a0a536c5fa6831b8f04030a6803e1805eff

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page