You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+72-16Lines changed: 72 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -1,21 +1,76 @@
1
1
## Changes Between 5.2.0 and 6.0.0
2
2
3
-
Please see the milestone for all changes:
3
+
This major release of this client introduces substantial improvements
4
+
in terms of memory footprint and throughput. They come at the cost
5
+
of minor but important **breaking API changes** covered below.
6
+
7
+
The client now requires .NET Framework 4.6.1 or .NET Standard 2.0.
8
+
Earlier versions are no longer supported by the `6.x` series.
9
+
10
+
Key improvements in this release have been the result of hard work by
11
+
our stellar community members (in no particular order): @stebet, @bording,
12
+
@Anarh2404, @danielmarbach, and others.
13
+
14
+
A full list of changes can be found in the GitHub milestone: [`6.0.0`](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/41?closed=1).
15
+
16
+
### The Switch to System.Memory (and Significantly Lower Memory Footprint that Comes with It)
17
+
18
+
The client now uses the [`System.Memory` library]() for message and command payloads. This significantly
19
+
reduces object allocation and GC pressure for heavy workloads but also
20
+
**potentially requires application changes**: consumer delivery payloads are now of instance [`System.ReadOnlyMemory<byte>`](https://docs.microsoft.com/en-us/dotnet/api/system.readonlymemory-1?view=netcore-3.1)
21
+
instead of `byte[]`.
22
+
23
+
While there's an implicit conversion for these types,
24
+
instances of `System.ReadOnlyMemory<byte>`**must be copied or consumed/deserialised before delivery handler completes**.
25
+
Holding on to delivered payloads and referencing them at a later point **is no longer safe**.
26
+
27
+
The same applies to publishers and the `IModel.BasicPublish` method: prefer using `System.ReadOnlyMemory<byte>`
28
+
over `byte[]` and dont' assume that this memory can be retained and used outside of the scope of the publishing
***NOTE:** you must copy or otherwise use the bytes returned in a message within the scope of your message handling function. The memory will be re-used once the function exits ([comment](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/732#issuecomment-591392925)).
8
-
* Memory allocation improvements via use of `System.Memory` library. ([PR](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/732))
9
-
* API changes
10
-
* See the note above about the lifespan of message data returned from your AMQP broker
11
-
*`byte[]` arguments to methods have been replaced via `ReadOnlyMemory` instances
12
-
* All timeouts are `System.TimeSpan` values ([PR](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/688))
13
-
* Public API surface has been reduced ([Issue](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/714))
14
-
* Supports .NET Framework 4.6.1 and .NET Standard 2.0 ([Issue](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/686))
15
-
*`Microsoft.Diagnostics.Tracing.EventSource` dependency is removed
16
-
* Added an option to enforce CRL checks for server certificates ([PR](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/500))
17
-
* Source linking is supported ([Issue](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/697))
0 commit comments