Hello.
PyPy has seen some dramatic progress in the past year with each release
delivering roughly 30% speed improvements over the previous one. I think
with a roughly 3-month release cycle, this is a pretty good achievement and
you haven't seen all of it yet :) We have quite a few improvements in process,
with the current trunk already showing faster performance than 1.7, even
though only a month has passed.
It might be worth mentioning that PyPy has many facets and progress is done
by multiple people in various directions. Examples include:
- STM work done by Armin, read details
- NumPy speed improvements, done mostly by Alex Gaynor and myself
- NumPy completeness, done by a lot of people, including myself, Alex, Matti
Picus and some others, if you're interested in this progressing faster, feel
free to donate towards NumPy on PyPy - Specialized object-instances, worked by Carl Friedrich Bolz and
Lukas Diekmann and various other specialized types - ARM JIT backend, work by David Schneider and Armin
- PPC JIT backend, work by Sven Hager and David Edelsohn, with help from
David Schneider - Speed improvements, done by everyone
Overall this is about 30 commits daily -- quite a bit of activity.
Things I can do professionally that can help the community
There is however another aspect of PyPy development, which is things that are
interesting, would work but potentially are useful only to some, but are
out of the current focus of core developers. Personally, I'm working full
time on PyPy, even though I did not receive any compensation for it for the
last half a year. I hope to make working on PyPy my full-time job from
both the donation-based income like numpy donations and pypy consulting.
I promise not to spend all the numpy-related donations on surfing addiction :-)
Examples of what I can professionally do include, but are not limited to:
- Faster json decoder. Fast json encoder was done and details can be found.
- Finshing matplotlib hacks to support full matplotlib and scipy.
- Make your favorite module X work on PyPy.
- Make your favorite module X faster on PyPy.
Additionally, I recently started offering consulting services for PyPy,
please consult my website for details.
Cheers,
Maciej FijaĆkowski
Social part
The social aspects are quite often omitted. How pleasant is it to work on a problem
and how reasonable is it to expect achieving one's goals within the foreseeable
future. This is a really tricky but important part. If your project is run by volunteers
only, it has to have some sort of "coolness" factor, otherwise people
won't contribute. Some people also won't contribute if the intermediate result
is not useful to them at all, so we want something usable (albeit limited)
from the very beginning. There is a great difference here between cpyext
approach which is either adding boring APIs or fixing ugly segfaults (with the
latter being more common and more annoying) and writing RPython code,
which is a relatively pleasant language. With PyPy's numpy we had already
quite good success with people popping up from the blue and implementing
a single piece that they really need as of now. In my opinion this is how
you can make things happen - one unittest at a time.