[darcs-users] soc progress 10

Petr Rockai me at mornfall.net
Wed Jul 29 20:04:32 UTC 2009

Wow, tenth progress report. That's a long time now. Still a day late, but
getting on track slowly (slower than expected I guess). Last week has seen the
release of darcs 2.3. Nonetheless, this release has seen partial integration of
hashed-storage work. Unfortunately, the release was also a major motivation
drain -- RMing darcs is a lot of (fairly hard) work.

On the unsafeDiff front, I'm at a standstill (there are still the same 2
instances that I reported about last week). I haven't progressed on the HPC
issue either, but that can wait and it's not directly relevant to SoC.

I have worked on profiling my last-week's check/repair port. Fortunately, the
implementation does not leak memory, and is slightly slower (some 20%) than the
old version. Most of the extra goes into filepath juggling (due to
representation differences between darcs and hashed-storage). See my
[darcs-users post] [1] for more details about this.

In other news, I have forked an 0.3 branch of hashed-storage and flipped the
switch to 0.4 in mainline. The first compatibility-breaker is the Hash type
refactor, which improved things a fair bit. Also, we now represent hashes
in-memory (and in the binary index) by 32-byte binary vectors (represented as
bytestrings) instead of using the 64-byte ascii-hex representation. Also, this
has removed a lot of Maybe wrapping, since the new Hash type comes with a
"NoHash" constructor.

Other than that, I have taken a break after the release. I still have some
motivational issues, but I should improve my output rate over the next
week. The major todo on is file benchmarking (since Eric keeps nagging me about
this, and I still haven't figured how to do this properly) and actual
implementation of the (internal) pack format.

[1]: http://lists.osuosl.org/pipermail/darcs-users/2009-July/020642.html

Hashed-storage changes:

  * Do not include _darcs/index in the testdata.
  * Move floatPath into the AnchoredPath module.
  * Do not forget to reset changesize in Monad, upon sync.
  * Avoid calling expandPath when not needed, in Monad.
  * Do not forget to update hashes before syncing a hashed tree in Monad.
  * Refactor Hash datatypes extensively.
  * Bump version to 0.4.0.
  * We can now base64/url-encode (and decode) all Hash types.
  * Add a generic sha256 function to the Hash module.
  * Sprinkle a few haddocks around the Hash module.
  * Add a NEWS file.
  * Bundle NEWS in source distribution.
  * Move the darcs-specific packing bits into Darcs.
  * Use "plain" hashes in Packed (instead of the size-carrying darcs ones).
  * The hatchery cleanup for compact is a removeFile (for now, anyway).
  * Rename readOS to load.
  * Haddock header for Packed.
  * Fix collateral from using plain hashes in object storage. (Ow, ugly.)

And darcs-hs changes:

  * Bump version to 2.3.0.
  * Update autoconf release data to 2.3.0.
  * Update NEWS.
  * Ship the NEWS file in cabal tarballs as well.
  * Port to hashed-storage 0.4 Hash changes.

More information about the darcs-users mailing list