Hello,
This is a summary of what was accomplished and worked on during last sprint
in Leysin. Leysin is a village in the Swiss Alps, home to Armin Rigo. The
views of the surrounding mountains were spectacular. It seemed to inspire us
to work harder. Thanks to Armin for organizing it:
* All project participants met and worked together for the first time. We introduced newcomers to the project to the PyPy code base and the development process. We gave introductions to the basic functioning and the structure of the code base. py.test our unit testing framework was introduced to those who hadn't seen it before.
* We also got to know our Process Manager, Bea D�ring from Changemaker. Bea will produce her own report. If you don't know the difference between 'project management', 'people management', and 'process management' then you probably would enjoy learning the differences from Bea. Bea interviewed the sprint participants to find out about their expectations, dissemination and more general ideas about the PyPy project and where it should go in the future. This Sprint went extremely well, but future ones should go even better, since we are learning how to improve all the time. Bea is making a report that discusses this more.
* We made plans for new and improved infrastructure. Thank you svn, we can change our repository layout whenever we feel it would be a good idea. :-)
But as for technical changes to pypy itself:
* The flow object space now uses variable names derived from the original python ones and propagate them as possible. (Armin, Olivier Dormond)
* The typedunwrap branch has been merged back to the trunk. (Armin, Samuele)
Type specific unwraps (int_w, str_w, ...) should be used everywhere possible. The type generic unwrap should be used only in tests, at bootstrap time and or temporarily in cases where we are borrowing heavily from underlying CPython, because it is annotator unfriendly and is able to unwrap mixed types containers which are not reasonably RPythonic.
* Updated documentation to describe new type specific unwrap operations. (Michael, Samuele)
* We can now import and run the CPython tests on top of PyPy. This
found lots of small problems, and a few not so small ones. So we
made lots of small fixes, and implemented missing stuff, which was a
good way for newcomers to get to know the codebase. We added or
completed functionality to sys module:
- _getframe()
- set/getrecursionlevel()
- exc_clear() ...
(Adrien Di Mascio, Anders Chrigstr�m, Armin, Christian, Holger, Jacek Generowicz, Ludovic Aubry, Olivier, Samuele, Laura)
* Work on the annotator: - SomeBuiltin.call
- implemented annotation for some built-ins that were missing
- SomeSlice support and annotating some ops involving them
- iter built-in
- dict methods support for SomeDict
- preserve instance types when unifying with None
- dict object dummy value is a W_Root subclass instance, so as not
to confuse the annotator- taught the annotator how to deduce the type of e in
try:
...
except SomeException, e:
... <-- here
- removal of most *args call sites used in the multi-method slicing
mechanism, like what was done for gateways. The annotator no longer
chokes on such call sites. :-) - wrote a small test case to show the remaining problems with the
current setup of BuiltinCode and BuiltinFrame subclasses and the
highly polymorphic BuiltinCode.func callable attribute.(Adrien, Michael, Samuele, some design discussion with Armin)
* Added shortcuts is_w(.,.) (= space.is_true(space.is_(.,.))), eq_w(.,.) (= space.is_true(space.eq(.,.))) to base object space. (Adrien)
* Allow arguments to be named in the stdobjspace's type's methods. As a first example, this enables list.sort(cmp=...). (Armin)
* Generated app-level exceptions module and from there using geninterplevel an interp-level module (in particular this circumvent bootstrap issues). (Christian)
This implementation approach for built-in modules should be polished and generalized.
* Added python library as of 2.3.4 to our tree as dist/lib-python-2.3.4. After discussion, it was agreed that this should be left unchanged and modules needing modifications should be copied to pypy/lib (renamed from appspace) and modified there, also new pypy-specific app-level modules should live there. That means that as general rule we should copy and borrow from this specific Python version, in the not too distant future we will switch to Python 2.4.
Pypy specific modified or new app-level tests should go to pypy/lib/test2. (Holger)
Work is needed on how those should be run, we would like to be able to run them both on PyPy and on CPython.
* py.test support for unittest and output-comparing tests has been added to dist/lib-python-2.3.4 (this is a special exception to the above rules), as conftest.py and pypy_unittest.py in dist/lib-python-2.3.4/test. Look at conftest.py for details, there are lists of passing tests there (Anders, Holger)
* Work on our sio based file implementation. (Armin did a major rework)
* Support for __del__ on user-defined classes. For now borrowing functionality from underlying CPython. (Armin)
* Work has been started on an app-level implementation for old-style classes, we have a good chunk of the implementation but it is not that much tested nor integrated for now. (Christian, Samuele)
* Marcus Denker gave a presentation on Squeak, its continuations based web framework Seaside and Croquet. We discussed whether PyPy is a sensible approach to give in the future comprehensive Python support as scripting language to Squeak/Croquet.
* We set tasks for the next few weeks, and now begin to prepare for the next Sprint, before PyCon.
regards. Samuele and Laura
PS: I (Samuele) did the listing of tech changes, sorry if I missed someone's credits.
_______________________________________________ [email protected] http://codespeak.net/mailman/listinfo/pypy-dev
