Skip to content

Commit d8057c9

Browse files
More detailed changelog
1 parent 9d7240f commit d8057c9

File tree

1 file changed

+72
-16
lines changed

1 file changed

+72
-16
lines changed

CHANGELOG.md

Lines changed: 72 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,76 @@
11
## Changes Between 5.2.0 and 6.0.0
22

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
29+
function.
30+
31+
GitHub issue: [#732](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/732)
32+
33+
### Timeouts Use `System.TimeSpan`
34+
35+
All timeout arguments now use `System.TimeSpan` values.
36+
37+
GitHub issue: [#688](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/688)
38+
39+
### Reduced Public API Surface
40+
41+
No major changes here but this is potentially breaking. Only public classes that were never meant
42+
to be publicly used have been turned internal to the client.
43+
44+
GitHub issue: [#714](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/714)
445

5-
[GitHub `6.0.0` Milestone](https://github.com/rabbitmq/rabbitmq-dotnet-client/milestone/41?closed=1)
46+
### Requires .NET Framework 4.6.1 or .NET Standard 2.0
47+
48+
The client now requires .NET Framework 4.6.1 or .NET Standard 2.0. Earlier versions are no longer
49+
supported.
50+
51+
GitHub issue: [#686](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/686)
52+
53+
### `Microsoft.Diagnostics.Tracing.EventSource` Dependency Dropped
54+
55+
`Microsoft.Diagnostics.Tracing.EventSource` dependency has been removed. It was an annoying
56+
dependency to have for some environments.
57+
58+
### Source Linking
59+
60+
The library now supports source linking.
61+
62+
GitHub issue: [#697](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/697)
63+
64+
### NuGet Source Packages
65+
66+
Source packages are now also distributed via NuGet.
67+
68+
### CRL Checks for Server x.509 (TLS) Certificates
69+
70+
Added a TLS option to enforce CRL checks for server certificates.
71+
72+
GitHub issue: [#500](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/500)
673

7-
* **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))
18-
* NuGet source packages are published
1974

2075

2176
## Changes Between 5.1.2 and 5.2.0
@@ -28,13 +83,14 @@ Selected highlights:
2883

2984
### Add support for `netstandard2.0`
3085

31-
GitHub Issue: https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/428
32-
GitHub PR: https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/435
86+
GitHub issues: [#428](https://github.com/rabbitmq/rabbitmq-dotnet-client/issues/428), [#435](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/435)
3387

3488
### Re-introduce lock for all socket writes
3589

3690
GitHub PR: [rabbitmq-dotnet-client#702](https://github.com/rabbitmq/rabbitmq-dotnet-client/pull/702)
3791

92+
93+
3894
## Changes Between 5.1.1 and 5.1.2
3995

4096
### Bump System.Net.Security to 4.3.2

0 commit comments

Comments
 (0)