Unworkable 0.5 Released - Fast Extension, Fast Resume and many bugfixes

Niall O'Higgins @ 22 September, 2008 (20:44) | BitTorrent Protocol, P2P Software

Better late than never

After more than six months of working on our data-mining and statistical analysis software, I’ve finally had some free time to work on our high-performance cross-platform BitTorrent implementation, Unworkable. My interest in Unworkable was greatly renewed by the fact that Michael Stapelberg is using it as a basis for his distributed user-land file system (via FUSE) called DustFS. Michael sent me a bunch of useful patches and fixes for this release. Watch this space for an article and interview with Michael from us, hopefully in a week or two.

Whats new

In any case, Unworkable 0.5 is a great improvement. There were a number of critical bug fixes, eliminating potential crashes and properly handling certain bitwise operations. When taken together, these fixes make Unworkable a much more effective participant in BitTorrent swarms. While the main focus of this release was to improve stability and effectiveness, I also added two nice new features. Firstly, I implemented initial support for the BitTorrent Fast Extension, a.k.a. BEP 6. This extension eliminates some potential race conditions inherent in the choking algorithm, and also has some bandwidth saving messages - for example the peer can easily just say “I have all the data” and “I have none of the data” in a single short message, instead of sending its entire bitfield representation of which pieces it does and does not have. For large torrents, this bitfield can get quite long. There is some quite in-depth discussion about the Fast Extension / BEP 6 from BitTorrent, Inc developers David Harrison and Bram Cohen on the BitTorrent.org forum if you would like more info.

I also implemented - at long last - a fast resume mechanism. For large torrents, and especially on slower computers, the initial hash check for a torrent can take a long time. With the fast resume support in Unworkable 0.5, how much data you have is recorded in a small on-disk file. If this file is present, the hash check can be skipped. In practice, this means you can quit torrents and resume them almost instantaneously.

As usual for this release, I have made some portability improvements. Somehow I neglected in the past to build Unworkable with 64-bit file offsets under Linux, which was a major oversight on my part. Also as usual, I have been developing Unworkable on both fast (2Ghz amd64) and slow (270Mhz UltraSparc II) machines. My 270 Mhz Sun Microsystems Ultra 5 with 192M ram can happily download large Linux distro DVD images at speeds saturating my DSL connection!

Whats next

Now that Unworkable is pretty stable, I would like to work more on adding features such as native rate-limiting, multi-torrent support, and improvements to the control protocol. Once these features are complete, work on the GUI can be resumed and we should have quite a compelling BitTorrent client!

Download

Download the sources for Unworkable 0.5. Builds and runs on OpenBSD, FreeBSD 6.2, Ubuntu Linux 8.04, Centos 5, Fedora 7 (on EC 2), Gentoo Linux, Arch Linux, Mac OS X, Solaris 10 and Windows XP (cygwin).

Share and Enjoy:
  • Digg
  • del.icio.us
  • Google
  • Reddit
  • Technorati

Write a comment