Shed Skin

Software Screenshot:
Shed Skin
Software Details:
Version: 0.9.1
Upload Date: 15 Apr 15
Developer: Mark Dufour
Distribution Type: Freeware
Downloads: 26

Rating: 4.0/5 (Total Votes: 2)

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 is new in this release:

  • 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.

What is new in version 0.8:

  • Support was added for the "struct" and "array" modules.
  • Three new examples were added, for a total of 57.
  • The C64 example was updated, and is now more than 3,000 lines (sloccount).
  • An option was added to display exception tracebacks (shedskin -x).
  • Many bugs were fixed.

What is new in version 0.1:

  • Improved support for 'os' (UNIX).
  • The addition of a JPEG decoder (1200 lines) and some other programs to the set of example programs. Extension module fixes.
  • Improved compiler flags under OS X.
  • An important type inference fix.
  • Improved variable overloading.
  • Casting improvements.
  • Fixes for setslice and delslice corner cases.
  • xrange returns an xrange object, not iterator.
  • There are several minor bugfixes.

What is new in version 0.0.30:

  • User-defined class support in extension modules.
  • Very fast set implementation (FFAO).
  • Complex number support.
  • Many string formatting improvements.
  • None maps to NULL instead of 0, and prints as 'None'.
  • re.match_object.group accepts multiple arguments.
  • Casting improvements.
  • Inheritance from builtin exceptions other than Exception.
  • Hashing None should work now.
  • An important type inference fix, and many other bugfixes.

What is new in version 0.0.29:

  • datetime and ConfigParser support.
  • staticmethod and property decorators.
  • FreeBSD, OpenSolaris, and 64-bit support.
  • GCC 4.3 fixes.
  • Support for mapping keys ('%(key)x..' % some_dict).
  • Improvements to the import mechanism. __init__ is much less of a special case now.
  • Many fixes for calling ancestor methods (e.g. Parent.__init__).
  • All example programs now compile as extension modules.
  • There are many bugfixes.

Similar Software

GNU Octave
GNU Octave

22 Jun 18

Mozart
Mozart

3 Jun 15

Susie
Susie

2 Jun 15

KBasic
KBasic

2 Jun 15

Comments to Shed Skin

Comments not found
Add Comment
Turn on images!