@@ -7,14 +7,60 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77## [ Unreleased]
88
99
10+ ## [ 3.0.0]
11+ There is a few changes to the public API, but most people shouldn't be affected by this unless they have extended/overriden functionality.
12+ Basic usage should not see any or only minor changes compared to v2.3.0.
13+
14+ Implemented async support for parsing/encoding.
15+
16+ Added build targets for .NET Core 2.1 and .NET Core 3.0 to take advantage of performance improvements
17+ in ` Stream ` and ` Encoding ` APIs for .NET Core 2.1 or later.
18+
19+ Rewrite of internal parsing for better performance, taking advantage of new ` Span<T> ` /` Memory<T> `
20+ types - faster parsing and less memory allocation.
21+
22+ Removed support for .NET Framework 4.5 and .NET Standard 1.3.
23+ Lowest supported versions are now .NET Framework 4.6.1 (4.7.2 highly recommended) and .NET Standard 2.0.
24+
25+
26+ ### Added
27+ - Implemented parsing/encoding using ` PipeReader ` /` PipeWriter `
28+ - Added ` BencodeReader ` as replacement for ` BencodeStream `
29+ - Added ` IBObject.GetSizeInBytes() ` method, returning the size of the object in number of bytes.
30+
31+ ### Changed
32+ - Improved parsing/encoding performance
33+ - Reduced memory allocation on parsing/encoding
34+ - Made ` BString ` , ` BNumber ` , ` BList ` and ` BDictionary ` classes ` sealed `
35+ - Made parse methods of ` BencodeParser ` virtual so it can be overriden if needed by anyone
36+ - Constructor ` BString(IEnumerable<byte> bytes, Encoding encoding = null) ` changed to ` BString(byte[] bytes, Encoding encoding = null) `
37+ - Exposed value type of ` BString ` changed from ` IReadOnlyList<byte> ` (` byte[] ` internally) to ` ReadOnlyMemory<byte> `
38+ - Removed parse method overloads on ` IBencodeParser ` and added matching extension methods instead
39+ - Removed encode method overloads on ` IBObject ` and added matching extension methods instead
40+ - Torrent parse mode now default to ` TorrentParserMode.Tolerant ` instead of ` TorrentParserMode.Strict `
41+ - Torrent related classes moved to ` BencodeNET.Torrents ` namespace
42+
43+ ### Removed
44+ - Removed ` BencodeStream ` and replaced with ` BencodeReader `
45+ - Dropped .NET Standard 1.3 support; .NET Standard 2.0 is now lowest supported version
46+ - Dropped .NET Framework 4.5 support; .NET Framework 4.6.1 is now lowest supported version (but 4.7.2 is highly recommended)
47+ - Removed most constructors on ` BencodeParser ` leaving only ` BencodeParser(Encoding encoding = null) ` and
48+ added ` BencodeParser.Encoding ` property to enable changing encoding. Parsers can still be added/replaced/removed
49+ through ` BencodeParser.Parsers ` property.
50+
51+ ### Fixed
52+ - Parsing from non-seekable ` Stream ` s is now possible
53+ - Fixed issue parsing torrent files with non-standard 'announce-list' (#39 )
54+
55+
1056## [ 2.3.0] - 2019-02-11
1157### Added
12- - ` BNumber ` casting operators to ` int? ` and ` long? `
58+ - Added ` BNumber ` casting operators to ` int? ` and ` long? `
1359
1460
1561## [ 2.2.9] - 2017-08-05
1662### Added
17- - Tolerant parse mode for torrents, which skips validation
63+ - Added tolerant parse mode for torrents, which skips validation
1864- Save original info hash when parsing torrent
1965
2066### Changed
@@ -75,7 +121,8 @@ and generally better usability; albeit a bit more complex.
75121## [ 1.0.0] - 2015-09-19
76122
77123
78- [ Unreleased ] : ../../compare/v2.3.0...HEAD
124+ [ Unreleased ] : ../../compare/v3.0.0...HEAD
125+ [ 3.0.0 ] : ../../compare/v2.3.0...v3.0.0
79126[ 2.3.0 ] : ../../compare/v2.2.9...v2.3.0
80127[ 2.2.9 ] : ../../compare/v2.2.0...v2.2.9
81128[ 2.2.2 ] : ../../compare/v2.1.0...v2.2.2
0 commit comments