Shed Skin is an experimental Python-to-C++ compiler. Shed Skin accepts pure Python programs, and generates optimized C++ code. This means that, in combination with a C++ compiler, it allows for translation of Python programs into highly efficient machine language. For a set of 16 non-trivial test programs, measurements show a typical speedup of 2-40 over Psyco, about 12 on average, and 2-220 over CPython, about 45 on average (see Section 5 of my Master's Thesis on the right). Shed Skin also outputs annotated source code.
The high performance and elegant approach of Shed Skin (it is only 6000 lines!) come at a cost. First, it currently only accepts programs that are statically typed. This simply means that variables can only ever have a single type. So e.g. a = 1; a = '1' is not allowed. Of course, a single type can be abstract or generic (as in C++), so that e.g. a = A(); a = B(), where A and B have a common base class, is allowed.
Second, Python programs cannot currently freely use the Python standard library. However, some common imports are supported (see *_.py), and many others can be easily added. The problem is a practical one, since in theory it is possible to create bindings for most library modules. A simple work-around can be to only compile critical parts of a Python program, and communicate with it through e.g. files and standard in- and output. This way, the 'main' program can use the full Python dynamics and standard library, and the whole program is written in pure Python.
Shed Skin is still alpha software, and there are some other minor, mostly temporary, limitations. Please read the Limitations section carefully, before trying to compile a program. The only thing I ask in return for making the software available under the GPL, is that you send me an email when you encounter a problem, that is not listed among these limitations. This is the fastest way to getting your program supported, since I typically do not fix problems I do not know about. Please also let me know if you would like me to implement certain library calls.
What's New in This Release: [ read full changelog ]
· Scalability was again greatly improved.
· Performance of file I/O and complex numbers was greatly improved.
· Three new modules are supported.
· Six new example programs were added.
· There were many other bugfixes and improvements.