Google’s Summer of Code produces something fantastic each year. Last year, a developer created a set of BitTorrent client libraries using Mono and C# called BitSharp, which was later renamed MonoTorrent. It has just received a major update.
Mono, if you didn’t already know, is an open source implementation of Microsoft’s .NET set of frameworks, on which applications can be built.
The main goal of MonoTorrent (at the time, BitSharp) was to create a set of BitTorrent client libraries that worked with Mono. Jonathan Allen for InfoQ writes that the libraries work with Microsoft’s proprietary .NET platform as well. “While Mono was the primary target, all of the libraries also work with Microsoft’s version of the .NET platform. The libraries should also be accessible by other CLS-compliant languages such as VB, IronPython, and Ruby.Net,” writes Allen.
Since Mono is an open source, cross-platform implementation of .NET, a very robust and light BitTorrent client could be created with MonoTorrent that works on all three major OSes; Linux, Mac OS X and Windows. The developer ran some tests and found that MonoTorrent utilises less than 1/4th the RAM Azureus does.
MonoTorrent has recently received a major update. Here’s a list of what’s been added:
- uPnP support, so that you don’t have to manually create the port mapping in your router.
- Disk writes are now fully asynchronous, and download speed is automatically throttled if it exceeds the rate at which your harddisk can write.
- Upload and download speed calculations have been “improved drastically”.
- There are other minor improvements, including enhanced download performance.
Miguel de Icaza, the developer of Mono and the GNOME Linux desktop environment, is quite pleased with MonoTorrent, but says it really needs a GUI. “The library these days is quite mature and the command line client works well, but we really ought to have a Gnome UI,” wrote Icaza in his weblog.