Tuesday, July 31, 2007

Tis that time of the month again! MonoTorrent 0.13 has been tagged in SVN, so tis time to update again. As per usual, there's a long list of changes. The biggest of which has been the commit of the latest version of the piece picker. It's a big step up efficiency-wise as compared to the older piece picking algorithm. While the core algorithms are essentially the same, they've been refined and honed into a sleek beast of a class ;) Here's a partial list of changes, but the piece picker change is the biggest reason to update sooner rather than later.

[Improvements]
If a peer sends data too slowly, its piece requests are reassigned to another peer
Smarter piece picker - Allows multiple peers to download the blocks from the same piece.
- Has significantly less overhead than with the old piece picker code
- Significantly faster endgame mode with the new code
Optimised Socket.BeginRead to need approximately 15% less calls to BeginRead.
Optimised the loading of fast resume data.
It is possible to safely call .Stop() on a torrent while it is hashing.


[Bugfixes]
Peers sending a HaveAll are correctly marked as seeders
Fixed bug which resulted in crashes under MS.NET with encryption code
Fixed potential issues with ConnectionListener race conditions
Stale fast-resume data is deleted so it isn't reloaded by accident


[Features]
Added a 'Complete' bool to TorrentManager
Exposed the PeerEncryption stuff so it is possible to tell what encryption method a connection is using
Marked EngineSettings and TorrentSettings as Serializable
It is now possible to create .torrents in a non-blocking way using the async BeginCreate method. The operation is also cancellable.
All eventargs now contain a reference to the TorrentManager that fired the event.

3 comments:

Anonymous said...

Very awesome indeed, however I am experiencing a bit of trouble making this work on Fedora Development. I have a x86_64 and multilib is enabled by default meaning that all libraries for 64bit are in /usr/lib64, the build scripts seem to assume /usr/lib in several places.

This tends to cause a problem, I tried changing them all manually but that resulted in the files not getting installed properly.. I assume I missed something but it would be absolutely wonderful if monotorrent has a means of setting the libdir when configuring it.

Alan said...

Ah, unfortunately i have 'zero' experience with make files. I didn't even write the ones in SVN ;)

I am looking into upgrading them into new slicker versions which work 'properly' on different systems. Your best bet is to go to http://monotorrent.forumer.com and lodge a complaint there so i don't forget ;)

jsight said...

Cool, thanks for the update!

Hit Counter