What is it?¶
Pythran is a python to c++ compiler for a subset of the python language. It takes a python module annotated with a few interface description and turns it into a native python module with the same interface, but (hopefully) faster.
It is meant to efficiently compile scientific programs, and takes advantage of multi-cores and SIMD instruction units.
Pythran development is currently done using Python version 2.7.
Pythran sources are hosted on https://github.com/serge-sans-paille/pythran.
Pythran releases are hosted on http://pypi.python.org/pypi/pythran.
Pythran depends on a few Python modules and several C++ libraries. On a debian-like platform, run:
$> sudo apt-get install libboost-python-dev libgoogle-perftools-dev libgmp-dev libboost-dev git cmake $> sudo apt-get install python-ply python-networkx python-numpy
$> easy_install pythran
Add serge_sans_paille’s debian server to your source.list, following the instruction given in http://serge.liyun.free.fr/serge/debian.html
Run the classic:
$> sudo apt-get update $> sudo apt-get install pythran
Using brew (http://brew.sh/):
$> brew install boost-python $> brew install gmp $> brew install cmake $> easy_install ply $> easy_install networkx $> easy_install numpy $> easy_install pythran
Depending on your setup, you may need to add the following to your \~/.pythranrc`` file:
$> yaourt -S python2-pythran-git
A simple pythran input could be
#pythran export dprod(int list, int list) def dprod(l0,l1): return sum(x*y for x,y in zip(l0,l1))
To turn it into a native module, run:
$> pythran dprod.py
That will generate a native dprod.so that can be imported just like the former module.
The user documentation is available in the User Manual file from the doc directory.
A todo list is maintained in the eponymous TODO file.
The Command Line Interface documentation is available from the pythran help command:
$> pythran --help
Some extra developer documentation is also available using pydoc. Beware, this is the computer science incarnation for the famous Where’s Waldo? game:
$> pydoc pythran $> pydoc pythran.typing
pythran/tests/cases/ directory from the sources.
Praise, flame and cookies: