Today we are releasing a beta of the upcoming PyPy 1.1 release. There are some Windows and OS X issues left that we would like to address between now and the final release but apart from this things should be working. We would appreciate feedback.
The PyPy development team.
PyPy 1.1: Compatibility & Consolidation
Welcome to the PyPy 1.1 release - the first release after the end of EU funding. This release focuses on making PyPy's Python interpreter more compatible with CPython (currently CPython 2.5) and on making the interpreter more stable and bug-free.
PyPy's Getting Started lives at:
http://codespeak.net/pypy/dist/pypy/doc/getting-started.html
Highlights of This Release
More of CPython's standard library extension modules are supported, among them ctypes, sqlite3, csv, and many more. Most of these extension modules are fully supported under Windows as well.
http://codespeak.net/pypy/dist/pypy/doc/cpython_differences.html http://morepypy.blogspot.com/2008/06/pypy-improvements.html
Through a large number of tweaks, performance has been improved by 10%-50% since the 1.0 release. The Python interpreter is now between 0.8-2x (and in some corner case 3-4x) slower than CPython. A large part of these speed-ups come from our new generational garbage collectors.
http://codespeak.net/pypy/dist/pypy/doc/garbage_collection.html
Our Python interpreter now supports distutils as well as easy_install for pure-Python modules.
We have tested PyPy with a number of third-party libraries. PyPy can run now: Django, Pylons, BitTorrent, Twisted, SymPy, Pyglet, Nevow, Pinax:
http://morepypy.blogspot.com/2008/08/pypy-runs-unmodified-django-10-beta.html http://morepypy.blogspot.com/2008/07/pypys-python-runs-pinax-django.html http://morepypy.blogspot.com/2008/06/running-nevow-on-top-of-pypy.html
A buildbot was set up to run the various tests that PyPy is using nightly on Windows and Linux machines:
Sandboxing support: It is possible to translate the Python interpreter in a special way so that the result is fully sandboxed.
http://codespeak.net/pypy/dist/pypy/doc/sandbox.html http://blog.sandbox.lt/en/WSGI%20and%20PyPy%20sandbox
Other Changes
The clr module was greatly improved. This module is used to interface with .NET libraries when translating the Python interpreter to the CLI.
http://codespeak.net/pypy/dist/pypy/doc/clr-module.html http://morepypy.blogspot.com/2008/01/pypynet-goes-windows-forms.html http://morepypy.blogspot.com/2008/01/improve-net-integration.html
Stackless improvements: PyPy's stackless module is now more complete. We added channel preferences which change details of the scheduling semantics. In addition, the pickling of tasklets has been improved to work in more cases.
Classic classes are enabled by default now. In addition, they have been greatly optimized and debugged:
http://morepypy.blogspot.com/2007/12/faster-implementation-of-classic.html
PyPy's Python interpreter can be translated to Java bytecode now to produce a pypy-jvm. At the moment there is no integration with Java libraries yet, so this is not really useful.
We added cross-compilation machinery to our translation toolchain to make it possible to cross-compile our Python interpreter to Nokia's Maemo platform:
Some effort was spent to make the Python interpreter more memory-efficient. This includes the implementation of a mark-compact GC which uses less memory than other GCs during collection. Additionally there were various optimizations that make Python objects smaller, e.g. class instances are often only 50% of the size of CPython.
http://morepypy.blogspot.com/2008/10/dsseldorf-sprint-report-days-1-3.html
The support for the trace hook in the Python interpreter was improved to be able to trace the execution of builtin functions and methods. With this, we implemented the _lsprof module, which is the core of the cProfile module.
A number of rarely used features of PyPy were removed since the previous release because they were unmaintained and/or buggy. Those are: The LLVM and the JS backends, the aspect-oriented programming features, the logic object space, the extension compiler and the first incarnation of the JIT generator. The new JIT generator is in active development, but not included in the release.
http://codespeak.net/pipermail/pypy-dev/2009q2/005143.html http://morepypy.blogspot.com/2009/03/good-news-everyone.html http://morepypy.blogspot.com/2009/03/jit-bit-of-look-inside.html
What is PyPy?
Technically, PyPy is both a Python interpreter implementation and an advanced compiler, or more precisely a framework for implementing dynamic languages and generating virtual machines for them.
The framework allows for alternative frontends and for alternative backends, currently C, Java and .NET. For our main target "C", we can "mix in" different garbage collectors and threading models, including micro-threads aka "Stackless". The inherent complexity that arises from this ambitious approach is mostly kept away from the Python interpreter implementation, our main frontend.
Socially, PyPy is a collaborative effort of many individuals working together in a distributed and sprint-driven way since 2003. PyPy would not have gotten as far as it has without the coding, feedback and general support from numerous people.
Have fun,
the PyPy release team, [in alphabetical order]
Amaury Forgeot d'Arc, Anders Hammerquist, Antonio Cuni, Armin Rigo, Carl Friedrich Bolz, Christian Tismer, Holger Krekel, Maciek Fijalkowski, Samuele Pedroni
and many others: http://codespeak.net/pypy/dist/pypy/doc/contributor.html
Congratulations! PyPy is becoming more and more viable every day. I hope I can continue to become more involved in this awesome project.
ReplyDeletepypy is a very interesting project!
ReplyDeletei have a question. do you think pypy-c without jit can ever reach the speed of c-python? why is it slower?
or will you put all the optimization efforts into the jit now? doesn't the performance difference matter because the jit will make it up anyway?
PyPy without jit can (and is sometimes) be faster than cpython, for various reasons, including garbage collector.
ReplyDeleteOn the other hand, we rather won't sacrifice simplicity for speed and we hope that jit will go that part. Also the funny thing is that since we generate our jit, it gets better as interpreter gets simpler, because jit generator is able to find out more on it's own. So in fact we might give up on some optimizations in favor of simplicity, because jit will be happier.
Cheers,
fijal
Sorry for my anxiety, but is there any rough estimation on when the jit will be in a usable state?
ReplyDeletePersonally, I'm doing it in my free time. That means I'm giving no estimates, because it makes no sense. If you wish to go into some contractual obligations on our sides, we're up to discuss I suppose :-)
ReplyDeleteMaciej, I know how hard you are working on this. I didn't mean to sound disrespectful and I don't want to bother you... It's just that as everyone else, I'm anxoiusly looking forward to seeing pypy's magic in action. By the way, the new post is very much appreciated. Thanks!
ReplyDeleteI am desperately looking for some help building PyPy. I have posted a an Issue (#443) about my issues in the PyPy site.
ReplyDeleteIf anyone from the release/Dev. team can give me a hand, I would seriously appreciate this!
I can be reached at wnyrodeo@yahoo.com
Thanks.