release-v3.0.0-beta-0034
Pre-release
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 usePieceSegment
rather thanBlockInfo
. 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