soc progress 9
Uh, I have slipped by two days again — well, almost. The problem is that in the last two days, I have been somewhat busy with e-mail at darcs-users@… — a sudden peak of traffic hit the list. Basically, two threads created a lot of traffic, the David’s darcs one started by me, and the cheap in-repo branching one. And since this was lot of writing on my part, I didn’t quite feel like writing also the report. But I’m still a day closer to the original Tuesday (and it’s still not even noon here, so that’s more like a day and a half!). I’ll try again to get on track next week.
I have worked some more on the packed format bits in hashed-storage, and I have worked on getting rid of “unsafeDiff” in darcs-hs. The latter is down to 2 uses, one in “darcs replace” and the other in Darcs.Resolution. The replace one should be relatively easy, actually. The resolution one hopefully too, but we have no testsuite coverage of the external merge, which would be better added before I break it… For the changes already done, I have ported over check/repair (I still need to run this through a heap profiler, since I suspect I introduced some space leaks) and “darcs remove” which is now also neater and more readable (at least I think it is). And since we never use unsafeDiff to compare working against pristine anymore, I have nuked a bunch of code that deals with timestamps.
I have also done a little work on HPC reports for darcs itself: I put a current HPC report online, and there’s some automation in place, so it should get updated whenever I push into the repository (it is supposed to be a 1:1 mirror of http://darcs.net). There are still some issues, like the TIXDIR taking over a gigabyte of space (I know how to fix this, but haven’t had the time yet — it involves a relatively easy support in ShellHarness).
Also on the mainline darcs (and this is not strictly SoC work, but worth reporting anyway), we have removed autoconf support. Finally. There are still some ongoing issues, like we need the user manual to be built by Cabal (we kept some bits of the GNUmakefile to address this for now) and some other features are currently not available with cabal (see also this thread).
- Clean up the interface implementing darcs hashed trees in object storage.
- In hatch, discard objects that are already in the storage.
- Improve haddock.
- Add a testcase for readOS.
- Add a small testcase for diffTree of identical trees.
- Add a testcase for writePlainTree.
- Add a simple QC property for restrict.
- Add another QC property for restrict.
- Expand the expandPath testcase to cover more possibilities.
- Also cover the items part of the expandPath-produced Tree.
- Obliterate embarassingly useless iterateM and fix mfixFrom (IO is too strict…).
- Implement rudimentary darcsPristineRefs (for chasing references).
- Test live object collection for darcs pristine trees.
- Add a function to postorder-traverse and update a Tree.
- More utilities for darcs hashed trees embedded in an object storage.
- Implement post-compaction cleanup for loose hatcheries.
- More complete OS field initialisation (although dummy so far).
- Use readOS after create to populate the in-memory structure.
- A rudimentary implementation of createPack (which in turn enables compaction).
- Do not fail when a nonexistent file is marked as changed in Monad.
- Do not remove associated Tree hashes in filter.
- Minor formatting fix.
- Avoid removing an in-use file on win32.
And darcs-hs changes:
- Port the replay (check/repair) functionality to hashed-storage.
- Remove the support for writing out new checkpoints.
- Remove the —checkpoint option from the UI.
- Remove now-unused checkPristineAgainstSlurpy.
- Add support for skipping tests (exit 200).
- Avoid removing in-use files on win32.
- Re-implement makeremovepatch in remove command, replacing Slurps with Trees.
- Obliterate all instances of sync_repo and friends, since they are useless now.
- Obliterate timestamp manipulation in HashedIO.