Skip to content

Releases: Joy-less/TCPMaid

v7.0

17 Feb 01:16
Compare
Choose a tag to compare
  • Changed message IDs from long to Guid (breaking change)
  • Made internal message types internal (breaking change)
  • Refactored message fragments to make more use of MemoryPack
  • Ensured int bytes are always read/written with little-endian byte order

v6.0

27 Jan 02:23
Compare
Choose a tag to compare
  • Change Message to record (breaking change) - you will have to change class to record, but now you can avoid boilerplate properties to match the constructor arguments if you choose

v5.0

25 Jan 21:15
Compare
Choose a tag to compare
  • Made MaxClients non-nullable and set default to int.MaxValue (breaking change)
  • Fixed Encrypted property and renamed to IsSsl (breaking change)
  • Made Channel constructor internal (breaking change)
  • Replaced Predicate<T> with Func<T, bool> (breaking change)
  • Fixed potential stack overflow when accepting clients
  • Fixed potential exception breaking server when accepting clients
  • Improved dispose pattern
  • Improved async/await usage
  • Improved documentation
  • Source code clarity improvements
  • Made Maid.Options public

v4.0

25 Jan 03:03
Compare
Choose a tag to compare
  • Removed net6.0, net7.0, netstandard2.1 target frameworks in favour of net8.0, net9.0 (breaking change)
  • Renamed Message Internal property to IsInternal method (breaking change)
  • Renamed SSL to Ssl (breaking change)
  • Renamed Silently to AlertRemote (breaking change)
  • Reduced memory allocations using CollectionsMarshal.AsSpan and ReadOnlySpan
  • Reduced default buffer size from 100kB to 32kiB
  • Used FrozenDictionary for MessageTypes
  • Reduced unnecessary event listener for ReceiveFragment when null parameter
  • Used ConfigureAwait(false) in all awaits to avoid UI deadlocks
  • Upgraded from .sln to .slnx
  • Source code clarity improvements

v3.0

07 Dec 19:21
Compare
Choose a tag to compare
  • Renamed Message.ID to Message.Id and changed its type from ulong to long (breaking change)
  • Renamed Options to MaidOptions, ClientOptions to ClientMaidOptions, ServerOptions to ServerMaidOptions (breaking change)
  • Changed public fields to properties (breaking change)
  • Changed Channel.Latency from double seconds to TimeSpan and removed LatencyMs (breaking change)
  • Moved memory usage limit check after message parser (allows last fragment to exceed memory limit)
  • Avoided allocating a new Stopwatch for every ping, instead using timestamps
  • Added support for .NET 9.0
  • Changed license from Apache 2.0 to MIT
  • Updated MemoryPack dependency
  • Potentially improved performance
  • Improved various comments
  • Changed versioning scheme from Major.Minor.Patch to Major.Minor

v2.4.1

13 Apr 22:49
Compare
Choose a tag to compare
  • Increased default buffer size
  • Updated MemoryPack version
  • Improved comment clarity

v2.4.0

31 Mar 12:22
Compare
Choose a tag to compare
  • Removed Requests and Responses in favour of Messages
  • Added SendStreamAsync and ReceiveStreamAsync
  • Fixed OnReceiveFragment not being called
  • Fixed fast responses arriving before RequestAsync starts listening

v2.3.0

30 Mar 22:02
Compare
Choose a tag to compare
  • Added Channel.LatencyMs property
  • Added OnReceiveFragment for RequestAsync
  • Patched possible memory leak
  • Added support for custom server certificate common name
  • Removed Where for RequestAsync (it didn't make sense)

v2.2.0

29 Mar 00:35
Compare
Choose a tag to compare
  • Added support for .NET Standard 2.1
  • Bumped MemoryPack version to v1.21.0
  • Source code readability improvements
  • Renamed EachClientAsync to ForEachClientAsync for clarity

v2.1.1

17 Mar 21:32
Compare
Choose a tag to compare
  • Fixed incorrectly fragmenting large messages
  • Added documentation comments