Philip Jenvey  committed 36da5bb

update #13 (forgot to commit this before)

  • Participants
  • Parent commits 0ee593f

Comments (0)

Files changed (1)

File blog/draft/py3k-status-update-13.rst

+Py3k status update #13
+This is the 13th status update about our work on the `py3k branch`_, which we
+can work on thanks to all of the people who donated_ to the `py3k proposal`_.
+We're just finishing up a cleanup of int/long types. This work helps the py3k
+branch unify these types into the Python 3 int and restore `JIT compilation of
+machine sized integers`_.
+This cleanup also removes `multimethods`_ from these types. PyPy has
+historically used a clever implementation of multimethod dispatch for declaring
+methods of the __builtin__ types in RPython.
+This multimethod scheme provides some convenient features for doing this,
+however we've come to the conclusion that it may be more trouble than it's
+worth. A major problem of multimethods is that they generate a large amount of
+stub methods which burden the already lengthy and memory hungry RPython
+translation process. Also, their implementation and behavior can be somewhat
+The alternative to multimethods involves doing the work of the type checking
+and dispatching rules in a more verbose, manual way. It's a little more work in
+the end but less magical.
+Recently, Manuel Jacob finished a large cleanup effort of the
+unicode/string/bytearray types that also removed their multimethods. This work
+also benefits the py3k branch: it'll help with future `PEP 393`_ (or `PEP 393
+alternative`_) work. This effort was partly sponsored by Google's Summer of
+Code: thanks Manuel and Google!
+Now there's only a couple major pieces left in the multimethod removal (the
+float/complex types and special marshaling code) and a few minor pieces that
+should be relatively easy.
+In conclusion, there's been some good progress made on py3k and multimethod
+removal this winter, albeit a bit slower than we would have liked.
+.. _donated:
+.. _`py3k proposal`:
+.. _`py3k branch`:
+.. _`JIT compilation of machine sized integers`:
+.. _`multimethods`:
+.. _`PEP 393`:
+.. _`PEP 393 alternative`: