I'm happy to announce RubyTorrent 0.3, which I've decided is good enough
to be called a beta. :)

From http://rubytorrent.rubyforge.org/:

RubyTorrent is a pure-Ruby BitTorrent peer library and toolset. You can
use it to download or serve files over BitTorrent from any Ruby program.
RubyTorrent is released under the GNU GPL.

Note that RubyTorrent doesn't include a tracker, although plans are in
the works. Nor does it include a fancy client program (though it does
include a reasonable one, mostly for debugging). At this point, it's
"only" a BitTorrent peer and tracker communication library. 

Release notes for 0.3:

Many more bug fixes. Speed is now basically comparable to Bram's client---at
least in my limited experiments.

The following are known issues with this release:

- Ruby threads don't play well with curses. Non-blocking getch hangs.
  See [ruby-talk:130620]. So we use ncurses.

- Ruby threads don't play well with TCP sockets on Windows. There is a
  20-second *global* freeze every time an outgoing connection is made to a
  non-responsive host. See [ruby-talk:129578], [ruby-core:04364]. As you can
  imagine, this can be quite a performance hit in a program that can make
  potentially hundreds of such connections. In fact, it renders RubyTorrent
  almost useless on Windows. A patch exists (indeed, has existed for many
  months), and if I bug Matz

- Ruby threads don't play well with writing data over TCP sockets. At least,
  that's what I glean from [ruby-talk:130480], and it might explain the
  occasional freezing behavior I see (3 to 30 seconds, sporadic) under heavy
  loads in Linux.

Other than that :) everything works. I think.

-- 
William <wmorgan-rubytorrent-devel / masanjin.net>