Plenty of ideas for the brave! If you want to work on one of these, please
email@example.com 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:
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
random module should be completely supported. Take into account parallelism!
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!
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.
There is an extension mechanism in
distutils to compile native modules when
setup.py. Pythran should provide a compatibility layer. There is a
first draft in the europar2013 branch, this is an easy go for newcomers.
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
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.
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.