Skip to content

Releases: alanmcgovern/monotorrent

v3.0.0-beta-0159

01 Feb 21:53
Compare
Choose a tag to compare
v3.0.0-beta-0159 Pre-release
Pre-release

General

Just adding a little more logging to help diagnose issues in future. Functionally identical to release 3.0.0-beta-0157 when logging is not enabled.

Full Changelog: release-v3.0.0-beta-0157...release-v3.0.0-beta-0159

v3.0.0-beta-0157

01 Feb 21:36
Compare
Choose a tag to compare
v3.0.0-beta-0157 Pre-release
Pre-release

General

This release has several improvements to how IPv6 support is implemented, adding support for IPv6 Tracker Extension and including support for the latest refresh of both BEP 11 and BEP 15.

Additionally, it is now possible to call TorrentManager.MoveFileAsync while a torrent is actively downloading, and support for dynamically moving files is compatible with EngineSettings.UsePartialFiles. There are also several tweaks to BEP52/BEP47 support, improving support for hybrid torrents which contain multiple sequential empty files.

What's Changed

Full Changelog: release-v3.0.0-beta-0106...release-v3.0.0-beta-0157

v2.0.7

23 Dec 17:27
Compare
Choose a tag to compare

What's Changed

  • [core] Skip parsing key if value is an empty string by @winterqt in #584

New Contributors

Full Changelog: release-v2.0.6...release-v2.0.7

v3.0.0-beta-0106

23 Dec 17:20
55770f9
Compare
Choose a tag to compare
v3.0.0-beta-0106 Pre-release
Pre-release

What's Changed

  • [core] Skip parsing key if value is an empty string by @winterqt in #584

New Contributors

Full Changelog: release-v3.0.0-beta-0104...release-v3.0.0-beta-0106

v3.0.0-beta-0104

15 Dec 19:06
d321ab7
Compare
Choose a tag to compare
v3.0.0-beta-0104 Pre-release
Pre-release

What's Changed

Full Changelog: release-v3.0.0-beta-0102...release-v3.0.0-beta-0104

v3.0.0-beta-0102

06 Dec 16:42
85888fa
Compare
Choose a tag to compare
v3.0.0-beta-0102 Pre-release
Pre-release

General

  • Several fixes to how webseeds are implemented/integrated, thanks to @borigas .
  • If a regular block of data is requested from a peer and they do not fulfil that request, a timeout is applied and the connection is closed. The same timeout is now applied when requesting metadata and bittorrent v2 piece hashes from peers. This fixes a bug whereby a peer who does not fulfil the request would result in the engine stalling instead of re-fetching the metadata/v2 piece hash from another peer.

What's Changed

  • [tests] Stop the HttpListener as part of teardown by @alanmcgovern in #574
  • Simplify how modes are implemented in the engine by @alanmcgovern in #575
  • Ensure the engine re-announces on a regular cadence when in Metadata mode (i.e. downloading with a magnet link) and PieceHashes mode (when fetching bittorrent v2 piece hashes from other peers).
  • Start web seed if the speed trigger is 0 by @borigas in #577
  • Web Seed Integration Tests by @borigas in #576. This also includes fixes for several issues with support for bittorrent v2 and padding files (BEP52 and BEP47).
  • [tests] Close the response after writing the status code by @alanmcgovern in #578
  • Specify 'Release' configurations properly by @alanmcgovern in #579

Full Changelog: release-v3.0.0-beta-0068...release-v3.0.0-beta-0102

v3.0.0-beta-0068

12 Nov 15:57
7233923
Compare
Choose a tag to compare
v3.0.0-beta-0068 Pre-release
Pre-release

What's Changed

  • [core] Refactor how announce requests are handled. by @alanmcgovern in #572 . Torrents which have 10, or more, tiers of trackers will have significantly reduced memory consumption in the event trackers within those tiers are non-responsive or offline.

Full Changelog: release-v3.0.0-beta-0064...release-v3.0.0-beta-0068

v3.0.0-beta-0064

06 Nov 23:38
420cb93
Compare
Choose a tag to compare
v3.0.0-beta-0064 Pre-release
Pre-release

What's Changed

  • Removed PieceRequesterSettings.IgnoreChokeState. This was an experiment used to port 'Metadata' mode and 'PieceHashes' mode to use the same piece picking logic as when actual torrent data is downloaded. This was a success and this behaviour was implemented using a custom IRequester instead, eliminating the need for this hacky behaviour.
  • Fixed a bug where 'endgame' mode wasn't enabled when fetching metadata from other peers, resulting in slower performance when fetching the torrent metadata for a magnet link.
  • Fixed a bug where outstanding requests for 'metadata' or bittorrent v2 'piece hahes' were not always cancelled when a peer disconnected.
  • Integration tests by @borigas in #567
  • Handle timeouts requesting metadata by @alanmcgovern in #568

Full Changelog: release-v3.0.0-beta-0050...release-v3.0.0-beta-0064

v3.0.0-beta-0050

02 Nov 23:41
169865c
Compare
Choose a tag to compare
v3.0.0-beta-0050 Pre-release
Pre-release

What's Changed

  • Optimised PeerInfo.CompactPeer so it have a zero-allocation codepath when converting a peer to the 6 byte compact representation for .NET 4.7.2 and newer.
  • When allocating reusable byte buffers under .NET 5.0 or newer, the GC.AllocateUninitializedArray capability is used to allocate pinned arrays in the pinned object heap. This reduces GC fragmentation.
  • Fixed a long standing issues where a peer which has disconnected was unintentionally retained for a short term by the code which manages choking/unchoking peers when all upload slots are in-use. If that peer is unchoked during that time period, an error would be raised.
  • The 'meta version' attribute used to identify bittorrent v2 torrents was not written to the info dictionary as per spec, now it is.
  • [bep52] Fix creating v2 torrents with zero length files by @alanmcgovern in #562
  • More fixes for empty files by @alanmcgovern in #565

Several contributions from @borigas, including identifying all of the issues caused by zero length files.

Full Changelog: release-v3.0.0-beta-0034...release-v3.0.0-beta-0050

release-v3.0.0-beta-0034

18 Oct 05:26
Compare
Choose a tag to compare
Pre-release

What's Changed

  • Set up CI with Azure Pipelines yaml by @alanmcgovern in #552
  • Tidy up DiskWriter by @alanmcgovern in #557
  • Small perf and memory optimisations by @alanmcgovern in #558
  • Added more tweaks to TorrentCreator to improve how events are emitted after the recent refactorings.
  • Misc API changes to migrate some classes to structs, and some structs to readonly structs.
  • Migrated PiecePicker to exclusively use PieceSegment rather than BlockInfo. Selecting pieces just needs the piece index and block index. It does not need the block length, which is what BlockInfo provides. BitTorrent V2 makes block length a much more complex thing to define.
  • Updated how the built-in disk writer handles concurrency when writing to the same file. When targeting .NET 6.0 and above the new, higher performance, RandomAccess API is used to read/write data. For .NET versions older than 6.0 multiple concurrent FileStreams are opened to allow safe concurrent reads/writes.
  • AllowedFast messages are now combined into an AllowedFastBundle to save a small amount of memory
  • Messages used to be decoded using a Dictionary lookup. This was converted to a simple array lookup, which makes it a much cheaper operation for one of the most commonly called codepaths in the library.

Full Changelog: release-v3.0.0-beta-0010...release-v3.0.0-beta-0034