MonoTorrent 2.0.0-alpha.unstable.rev0017

MonoTorrent is a cross platform and open source implementation of the BitTorrent protocol. It supports many advanced features such as Encryption, DHT, Peer Exchange, Web Seeding and Magnet Links.
Notable features include:
-Encryption
-Dht
-Peer Exchange (uTorrent style)
-Local Peer Discovery
-Web Seeding (getright style)
-Magnet Links / Metadata download
-IPV6
-FAST Extensions
-Sparse files (NTFS file system)
-Multi-tracker torrents
-Compact tracker responses
-IP Address white listing / black listing
-Fast Resume
-Initial Seeding (super seeding)
-Selective downloading
-Prioritised downloading
-Full bittorrent tracker
-Dynamic request queue size
-Memory Cache
-Endgame mode
-Per torrent and global rate limiting
-Individual file relocation

This is a prerelease version of MonoTorrent.
There is a newer prerelease version of this package available.
See the version list below for details.
Install-Package MonoTorrent -Version 2.0.0-alpha.unstable.rev0017
dotnet add package MonoTorrent --version 2.0.0-alpha.unstable.rev0017
<PackageReference Include="MonoTorrent" Version="2.0.0-alpha.unstable.rev0017" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add MonoTorrent --version 2.0.0-alpha.unstable.rev0017
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: MonoTorrent, 2.0.0-alpha.unstable.rev0017"
For F# scripts that support #r syntax, copy this into the source code to reference the package.
// Install MonoTorrent as a Cake Addin
#addin nuget:?package=MonoTorrent&version=2.0.0-alpha.unstable.rev0017&prerelease

// Install MonoTorrent as a Cake Tool
#tool nuget:?package=MonoTorrent&version=2.0.0-alpha.unstable.rev0017&prerelease
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Warning

This release contains API breaking changes in comparison to MonoTorrent 1.x series. There may be further API breakages before 2.x is finalised.

General

Changes since previous alpha:

  • EngineSettings and TorrentSettings are now immutable objects. You can use EngineSettingsBuilder and TorrentSettingsBuilder to create a new Settings object from scratch, or to create one based on an existing Settings object. Once a new immutable Settings object has been created, you must call ClientEngine.UpdateSettingsAsync or TorrentManager.UpdateSettingsAsync, as appropriate. The new settings will have been applied once the returned Task completes. If any listen ports are altered, and port forwarding is enabled, the old port will be unmapped and the new port will be mapped.

  • Any EngineSetting associated with a TCP or UDP port can be set to '-1' to disable the feature, '0' to dynamically select any available port, or a specific port number to bind to. If '0' is specified and port forwarding is enabled, the dynamically bound port will be forwarded automatically.

  • Small tweak to use a low-allocation custom implementation of SemaphoreSlim built on top of ReusableTask. Reduces allocations by about 25%.

  • Improved how the PiecePicker allocates blocks from a single piece to multiple peers. The new approach is less proactive about assigning multiple peers to a single block, which in turn greatly improves the efficiency of Incremental Hashing without affecting download speeds. Recent experiments have shown that over 98% of pieces can be hashed without having to write the block to disk and read it back at a later point.

  • MonoTorrent now defaults to using a 5 megabyte memory cache for pieces which need to be written to disk. This further improves the efficiency of Incremental Hashing as blocks which are received out-of-order will be available in-memory rather than having to be read from disk.

Warning

This release contains API breaking changes in comparison to MonoTorrent 1.x series. There may be further API breakages before 2.x is finalised.

General

Changes since previous alpha:

  • EngineSettings and TorrentSettings are now immutable objects. You can use EngineSettingsBuilder and TorrentSettingsBuilder to create a new Settings object from scratch, or to create one based on an existing Settings object. Once a new immutable Settings object has been created, you must call ClientEngine.UpdateSettingsAsync or TorrentManager.UpdateSettingsAsync, as appropriate. The new settings will have been applied once the returned Task completes. If any listen ports are altered, and port forwarding is enabled, the old port will be unmapped and the new port will be mapped.

  • Any EngineSetting associated with a TCP or UDP port can be set to '-1' to disable the feature, '0' to dynamically select any available port, or a specific port number to bind to. If '0' is specified and port forwarding is enabled, the dynamically bound port will be forwarded automatically.

  • Small tweak to use a low-allocation custom implementation of SemaphoreSlim built on top of ReusableTask. Reduces allocations by about 25%.

  • Improved how the PiecePicker allocates blocks from a single piece to multiple peers. The new approach is less proactive about assigning multiple peers to a single block, which in turn greatly improves the efficiency of Incremental Hashing without affecting download speeds. Recent experiments have shown that over 98% of pieces can be hashed without having to write the block to disk and read it back at a later point.

  • MonoTorrent now defaults to using a 5 megabyte memory cache for pieces which need to be written to disk. This further improves the efficiency of Incremental Hashing as blocks which are received out-of-order will be available in-memory rather than having to be read from disk.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on MonoTorrent:

Package Downloads
H.Runners.TorrentRunner
Allows you to download torrents.
BitTorrentStorage
Bit Torrent Storage

GitHub repositories (3)

Showing the top 3 popular GitHub repositories that depend on MonoTorrent:

Repository Stars
Radarr/Radarr
A fork of Sonarr to work with movies à la Couchpotato.
lidarr/Lidarr
Looks and smells like Sonarr but made for music.
Readarr/Readarr
Book Manager and Automation (Sonarr for Ebooks)

Version History

Version Downloads Last updated
2.0.0-alpha.unstable.rev0193 31 4/3/2021
2.0.0-alpha.unstable.rev0192 49 4/2/2021
2.0.0-alpha.unstable.rev0167 59 3/18/2021
2.0.0-alpha.unstable.rev0147 62 3/13/2021
2.0.0-alpha.unstable.rev0132 66 2/25/2021
2.0.0-alpha.unstable.rev0123 65 2/20/2021
2.0.0-alpha.unstable.rev0122 39 2/18/2021
2.0.0-alpha.unstable.rev0112 66 2/17/2021
2.0.0-alpha.unstable.rev0107 50 2/10/2021
2.0.0-alpha.unstable.rev0037 124 12/19/2020
2.0.0-alpha.unstable.rev0031 84 12/18/2020
2.0.0-alpha.unstable.rev0017 97 12/10/2020
2.0.0-alpha.unstable.build1 112 12/7/2020
1.0.29 622 2/16/2021
1.0.28 1,142 11/25/2020
1.0.27 132 11/24/2020
1.0.26 127 11/24/2020
1.0.25 235 11/14/2020
1.0.24 981 8/12/2020
1.0.23 667 7/6/2020
1.0.22 3,015 5/26/2020
1.0.21 1,718 4/24/2020
1.0.20 637 4/13/2020
1.0.19 12,517 3/27/2020
1.0.18 1,143 3/16/2020
1.0.17 287 3/9/2020
1.0.16 255 3/3/2020
1.0.16-alpha 237 2/5/2020
1.0.15 329 2/2/2020
1.0.14 204 1/30/2020
1.0.13 273 1/30/2020
1.0.12 301 1/16/2020
1.0.11 2,626 1/8/2020
1.0.10 495 12/11/2019
1.0.9 342 12/2/2019
1.0.9-beta 223 11/28/2019
1.0.8 280 11/19/2019
1.0.7 285 11/2/2019
1.0.6 231 11/1/2019
1.0.5 247 11/1/2019
1.0.4 237 10/30/2019
1.0.3 307 10/16/2019
1.0.2 303 9/27/2019
1.0.1 326 9/6/2019
1.0.0 318 9/6/2019
0.99.136-beta 229 9/6/2019
0.99.134-beta 221 9/5/2019
0.99.119-alpha 217 9/4/2019
0.9.0 8,693 6/10/2011
Show less