soc progress 8

So I have managed to reduce the report lag by a few days, expect the next one on the (regular) Tuesday. Hopefully. Anyway, since the last report, a lot has happened.

I got a new laptop a few weeks back (a Lenovo X200 — I installed the base system on 30th of June), which enabled me to play around with more resource-hungry software than before (this beast has 2G of RAM and two 2.4GHz CPUs). The thing I tried was installing VirtualBox and a copy of Windows XP inside (I have an academic license, hopefully I am within the rules). This worked fairly well (the VM is pretty fast, actually) and enabled me to play with darcs on a win32 system. After installing the Haskell Platform (congrats to all the folks who worked on this: this piece of software is awesome) and MSYS, I got cabal install darcs-beta rolling. Turned out that darcs 2.3 didn’t work very well on windows (well, about 30 tests failed, and darcs whatsnew was completely unusable). It took about two days time to kick all the parts into obedience: I patched all of mmap, hashed-storage and darcs. The net result is that darcs now passes its testsuite on win32 (this never quite worked before). In the meantime, I have already released new beta, darcs 2.3 beta 4 which has all the win32 fixes in it. In addition, I made the hashed-storage testsuite pass on Windows, which should make it much easier in the future to track down problems.

I have also made some coding progress on hashed-storage: first, the packed format prototyping is advancing, and before next report, I hope to have a workable prototype. Some code already went into hashed-storage repository, and there’s already some testing coverage. Which brings me to the other thing, that is that I have improved test coverage of hashed-storage significantly (we now have 10 QC properties and 18 testcases that together cover of 77% toplevels, 66% alternatives and 83% expressions, as reported by HPC).

In darcs-hs, I have done some work on optimising darcs show contents --match, as this seems to be an important operation for repository browsers (or at least for trac, but I imagine others may benefit from this). I have also figured that large part of the tracdarcs inefficiency comes from calling darcs show contents on way old revisions: based on this, Lele has implemented an optimisation that instead looks at the latest revision that has a given version of the file, and for HEAD revisions omits —match altogether. I have deployed the optimised version on my own tracdarcs instance (for another project) and I can confirm that it is much more usable than before. I’ll set up a test instance for GHC repository just for the kicks of it. (Maybe we could then get Hackage folks to install tracdarcs into their trac instances? Now that would be cool.)

The summary of hashed-storage changes for the week:

and for darcs-hs: