[Haskell-cafe] ANN: HaskellTorrent/Combinatorrent v0.2.0

Jesper Louis Andersen jesper.louis.andersen at gmail.com
Mon Apr 5 07:51:35 EDT 2010

Goodbye HaskellTorrent, hello Combinatorrent!

Due to the internationally acclaimed Boing!'er Shae Erisson, HaskellTorrent has
been renamed into Combinatorrent. We thus present Combinatorrent v0.2, Easter
eggs release. This release marks yet another milestone in getting a decent
bittorrent client for Haskell.

There are still some performance regressions to be eliminated, but overall it
looks far better than in the v0.1.1 release. Also, the system leaks memory,
albeit very slowly (or so sayeth the great heap profiler). This is the focus
for the next version. We might also look into integrating the FAST extension,
since it plugs a series of problematic spots in the original bittorrent
protocol specification.

If you want to hack on Combinatorrent, there are a lot of interesting things to
do. I try, deliberately, to keep tasks around which can be used to gain
foothold in the source code. Any level of skill is needed and I am happy to
help a newbie if he or she gets stuck on something. The source code is at


should you want to tinker with it. Any kind of patch is welcome, be it fixes or
improvements to the goat teleporter. So come help us avoiding success!

Apart from numerous small optimizations and bug fixes, we can present the
following big whats-new thingies (with an imaginary neon-red blinking what's
new sign):


* Directory Watching:
    Every 5 seconds, we wake up to check a directory for new torrents. A
    .torrent file dropped into the directory will subsequently be downloaded

* Support multiple torrents at once:
    If given multiple torrents on the command-line the client will now download
    all of them.

* Download rarest piece first:
    Use the psqueue package for getting access to a priority search queue and
    use it to maintain a histogram over rare pieces. Always try to get the
    rarest piece first.

* Change all use of CML to STM:
    Overall, it looks like this change improved the code. There are still some
    need for cleanup after the bomb was thrown, but it does look like it will
    turn out positively. If CML put you off the track for hacking on
    Combinatorrent, you can now do it with STM!

* Introduce RTS benchmarks:
    See http://jlouis.github.com/combinatorrent where we plot SVG-based
    sparklines for various key RTS parameters over time (works best in Opera or
    Chrome). A slow-changing regression has a much harder time hiding now.

* Fix issue #3:
    A grave bug in the Piece Manager made the assertions fail when endgaming.


More information about the Haskell-Cafe mailing list