ANN: HaskellTorrent/Combinatorrent v0.2.0

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 http://github.com/jlouis/combinatorrent 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): NEW STUFF: * 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 automatically. * 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. Fix. -- J.

Jesper Louis Andersen wrote:
* 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!
That's interesting! Honestly, CML put me off. But that was by assumption only: with an Erlang background I am very aware of actor concurrency, but feared to miss Erlang's very loose coupling of processes, together with registering processes by name and fighting Haskell's precise typing. I bet CML has the solutions, but STM/shared memory feels much more natural outside Erlang.
* 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.
Interesting too, but the graphs are still way too small and have way too few data to be intuitive. I recommend the Chart library that is the foundation to the Criterion graphs as well. Astro

On Sat, Apr 17, 2010 at 9:05 PM, Stephan Maka
* 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.
Interesting too, but the graphs are still way too small and have way too few data to be intuitive. I recommend the Chart library that is the foundation to the Criterion graphs as well.
I don't disagree. This is why I have kept the data in its raw form so one can have them to play with. If you want access to the data, I can easily push it to the repo. On a side note, I pushed v0.2.1 and v0.2.2, the latter of which really cuts down on the space leaks. I am still on leak-hunting with the heap profiler, but it seem much better now compared to the v0.2.0 release - which was pretty bad. -- J.
participants (2)
-
Jesper Louis Andersen
-
Stephan Maka