I don't know whether any of the changed areas are hot spots, but you could change Workspace.py so that the methods like workingctx() are defined like
if Version.at_least(...): def workingctx(self): blah else: def workingctx(self): otherblah so that you wouldn't have to do the version check every time you called workingctx(). In Version.py, I would probably drop the use of the re module, and just do a try/except clause in _split_version() around the map() call. I might also cache hgver (or even the result of at_least()), though if most of the calls are done only once, then perhaps it's not necessary. The rest looks fine, as best as I can tell. Danek