Releases: alanmcgovern/monotorrent
v3.0.0-beta-0000
General
This is the first beta release of the 3.0.0 series. This release supports the BitTorrent V2 spec and also has many performance and memory
improvements over the 2.x series.
What's Changed
- [dht] Fix a DHT initialization issue by @alanmcgovern in #546
- [core] Cache bittorrent v2 hashes after retrieving them by @alanmcgovern in #547
Full Changelog: release-v3.0.0-alpha-0233...release-v3.0.0-beta-0000
v3.0.0-alpha-0233
What's Changed
- [piecewriter] Add a cache policy so reads can be cached by @alanmcgovern in #542
- Add support for creating V1/V2 hybrid torrents, and V2 torrents by @alanmcgovern in #543
- Full support for downloading V1/V2 hybrid torrents. The swarms for the V1 and V2 info hash are combined, and both infohashes are announced to DHT, local peer discovery as well as normal trackers.
- [core] Optimise TorrentCreator performance by @alanmcgovern in #544
Full Changelog: release-v3.0.0-alpha-0217...release-v3.0.0-alpha-0233
v3.0.0-alpha-0217
New features
- Support for BEP47 has been added, thanks to @jpmikkers .
- Support for BEP52 is progressing well. It is now possible to fully download and verify BEP52 torrents using a magnet link. Metadata, and v2 piece hashes, can be dynamically requested from peers.
General improvements
- The most frequently invoked
BitField
method,BitField.NAnd
has been improved to fast-path several common cases. - The BitField class has been refactored to follow the same pattern as
Memory
andReadOnlyMemory
.BitField
class is mutable and can be transparently cast toReadOnlyBitfield
.
What's Changed
- [bep52] Modify the API to support dynamically retrieving Bep52 hashes by @alanmcgovern in #529
- [bep52] Ensure nothing is downloaded before piece hashes are available by @alanmcgovern in #530
- [core] Better read-only bitfield support by @alanmcgovern in #531
- Add the beginnings of a 'FetchHashes' mode. by @alanmcgovern in #527
- bep47 by @jpmikkers in #526
- Use PiecePicker for arbitrary things by @alanmcgovern in #536
Full Changelog: release-v3.0.0-alpha-0158...release-v3.0.0-alpha-0217
v3.0.0-alpha-0158
What's Changed
- V2 only magnetlink support by @jpmikkers in #521
- Removed the obsolete API to use an alternative PieceWriter.
- ClientEngine.RestoreStateAsync has an overload which takes a
Factories
object IDhtEngine
has been wrapped in a simpler way, ensuring users don't get confused as to whether or not they need to manage it themselves.- Saving/Loading
FastResume
data is now a proper async operation, reducing the possibility of improper/unsafe use. - Hybrid torrents were loaded as V2 only torrents, but when verifying pieces the engine still attempted to validate both V1 and V2 hashes, which caused every piece to fail. This has been fixed and now only the V2 hashes are validated in this scenario.
- V2 hashes are truncated before being sent as part of an
Announce
orScrape
request. Thanks to @jpmikkers .
NOTE: This hasn't been released on NuGet.org as they API is still changing and BitTorrent V2/BEP52 support is not complete yet.
Full Changelog: release-v3.0.0-alpha-0142...release-v3.0.0-alpha-0158
v3.0.0-alpha-0142
General
First release of the new 3.0 series. Adds support for BitTorrent V2 (BEP52) torrents as well as many performance, reliability and extensibility improvements.
The library has been optimised for modern .NET frameworks, with significant performance improvements available when running under .NET Core 3.x+ or .NET 5+ as compared to .NET 4.7.2.
It needs a once-over before being officially uploaded to nuget.org so i'm soft-releasing on GitHub first.
What's Changed
- Split library by @alanmcgovern in #454
- Partial files by @alanmcgovern in #445
- [core] Better piece picker integration by @alanmcgovern in #456
- [core] Rename IConnection to IPeerConnection by @alanmcgovern in #458
- Create a Connections project too by @alanmcgovern in #457
- [core] Properly store metadata for streaming torrents by @alanmcgovern in #469
- [core] Use an immutable approach to overriding core functionality by @alanmcgovern in #466
- Update README.md by @alanmcgovern in #472
- [core] Suppress ExecutionContext flow for socket operations by @alanmcgovern in #473
- [core] Migrate to HttpClient everywhere by @alanmcgovern in #475
- [core] Move trackers to their own project by @alanmcgovern in #476
- Move DHT to it's own library by @alanmcgovern in #479
- Migrate all buffer manipulations to Memory and Span by @alanmcgovern in #482
- [bep52] Add parser support for the new style file dict by @alanmcgovern in #487
- [core] Improve the documentation for ConnectionMonitor by @alanmcgovern in #489
- [dht] Use SpeedMonitor to calculate DHT data rates by @alanmcgovern in #490
- [core] Replace invalid characters in the generated path by @alanmcgovern in #493
- Piece picking perf improvements by @alanmcgovern in #495
- [core] Allow to load FastResume objects from a stream by @samhocevar in #498
- [core] Ensure the dht node cahe is written safely by @alanmcgovern in #500
- [bep52] Validate 'piece layers' when loading BEP52 torrents by @alanmcgovern in #503
- Hashesv2 by @alanmcgovern in #504
- [bep52] Support dynamic piece sizes by @alanmcgovern in #508
- Download a v2 torrent by @alanmcgovern in #513
- Nullable reference types by @alanmcgovern in #519
- Disregard certain path segments by @issueg2k4g34j2g in #518
New Contributors
- @issueg2k4g34j2g made their first contribution in #518
Full Changelog: release-v2.0.0...release-v3.0.0-alpha-0142
v2.0.5
General
- Backported a patch which ensures that all
FileStream
s are closed when a torrent transitions fromDownloading
toSeeding
mode. - Backported a patch which ensures the same torrents cannot be loaded twice.
- Backported a patch which discards empty strings when generating the path for files contained within a torrent. Some torrents (apparently created by
ruTorrent
, incorrectly prepend an empty bencoded string to in theBEncodedList
representing the path for files in the torrent.
v2.0.4
General
- Fixed a bug where the dht cache could fail to be written correctly if different TorrentManager's are Stopped/Started concurrently. A workaround for the issue is to set
EngineSettings.AutoSaveLoadDhtCache
tofalse
, and then manually save/load the dht node cache usingClientEngine.DhtEngine
any time. Thanks to @razaqq for the bug report.
v1.0.30
General
- Fixed a regression from v1.0.28 where Torrent.TorrentPath was not being set correctly. Patch provided by @samhocevar .
v2.0.3
General
- Invalid characters are escaped when TorrentSettings.CreateContainingDirectory is enabled, and Torrent.Name contains characters which are not valid in paths. The path for each file contained within the torrent was already escaped correctly when generating ITorrentFileInfo.FullPath.
- Adds a new property, TorrentManager.ContainingDirectory where the escaped path can be accessed.
v2.0.2
General
- Workaround for a bug/regression in .NET 6.0 where HashAlgorithm.Initialize did not actually re-initialization the underlying provider correctly. ( dotnet/runtime#62397 )
- Small tweak to the DHT engine to ensure it does not report a 'Ready' status if bootstrapping into the DHT table actually fails.