TODO

Plenty of ideas for the brave! If you want to work on one of these, please tell pythran@freelists.org before, as it is good to discuss before coding!

Detect positive array indexing

long-term job for serge-sans-paille

When indexing a list / array:

a[i]

there is a sign test involved over i. However in may cases, such as:

for i in range(len(a)):
    a[i] += 1

it is possible to statically ensure that i >=0. Beware, this requires array preconditions analysis.

Support random module

The random module should be completely supported. Take into account parallelism!

Support str module

Because current implementation sucks. Not that important for the kind of code we target, but still...

Automatic vectorization of list comprehension

Because when you see:

[x*x for x in l]

you must think: what a good vectorization opportunity!

Support import a_user_module

So that Pythran user can split their code base into several files. This should not require that much work, but a good understanding (and a slight rework) of the module management in Pythran.

Distutils integration

There is an extension mechanism in distutils to compile native modules when running setup.py. Pythran should provide a compatibility layer. There is a first draft in the europar2013 branch, this is an easy go for newcomers.

Pythran tutorial

Building a tutorial that makes it easier to understand Pythran usage would be nice. As Pythran is sooooooo easy to use, that should not be hard, so to make the task more interesting, the tutorial should be automatically tested when running setup.py test.

Named arguments

Named arguments are not supported in Pythran... Yet! Alias aliasing to the rescue!

Performance issues detection

There is a big benchmark / test cases codebase in Pythran. We should monitor it and detect performance bottleneck, as well as track speedup changes upon new commits.

Try Except around import module statements

When we use Try Except around an import module statement, it is possible to have a specific behaviour if the imported modules doesn’t exist (using sur ImportError exception). While pythran, raise an error if module doesn’t exist, it should branch in the except part of the code.

ConstantFolding timeout

Sometime we can have a code which compute a constant but it is really long and we want to compile it to have the result faster. For now, pythran will compute it through CPython which makes it slower. A time out can avoid this issue. It might be possible to save current computation at the end of the timeout.