Monday, July 13, 2009

Bazaar on IronPython

The IronPython team are extremely interested in IronPython's compatibility with CPython. One easy way of finding incompatibilities (bugs) is running large Python applications on IronPython. Jeff Hardy has done a lot of work on this front by running Django and setuptools with IronPython, and now the Bazaar (Distributed Version Control System written in Python) team are joining in the fun.
In short, see the attached patch for getting bazaar to run on IronPython. It only passes a subset of the tests, but can do some of the basics like creating a new repo, adding and diffing, and committing the changes. This is not intended for merging, many of the changes are addressing interpreter bugs and differences rather than problems with the code. However there are a number of issues raised that might be of interest to bazaar developers.

Having nibbled round the edges of the bzrlib.osutils module, I wanted a task that would serve as an excuse to look over the platform related code as a whole. I'd downloaded IronPython some months back and not had cause to play with it, and seeing that Adrian Wilkins investigated this a year ago and wrote up some helpful tips, it seemed achievable.

My basic strategy was to get selftest working then deal with categories of test failures. I mostly used IronPython 2.0.0 though I tried the first 2.6 beta towards the end, which threw up a few extra issues, but may have been a better choice to start as it's less compiling-the-world slow on every invocation. There's still work to be done to make bazaar generally usable under IronPython, and fair bit of low hanging fruit (for instance I left warnings about terminal encodings untouched as a useful progress indicator).
This threw up a bunch of issues in IronPython. As usual Dino (and team) worked their magic and posted the following reply to the IronPython mailing list a matter of days later:
With this morning's source push all of these should be fixed now except for the zlib and re.RE_Pattern issues.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.