rabbitmq-server/release-notes/3.13.0.md

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

157 lines
4.8 KiB
Markdown
Raw Normal View History

## RabbitMQ 3.13.0
RabbitMQ `3.12.0` is a new feature release.
## Highlights
This release includes several new features, optimizations, and graduates (makes mandatory) a number of feature flags.
The user-facing areas that have seen the biggest improvements in this release are
* Classic queues use version 2 of the format format. This should significantly improve performance.
This release also features many internal API improvements in preparation to 4.0
with [Khepri](https://www.youtube.com/watch?v=huT-zmXvfuM).
See Compatibility Notes below to learn about breaking or potentially breaking changes in this release.
## Release Artifacts
RabbitMQ releases are distributed via [GitHub](https://github.com/rabbitmq/rabbitmq-server/releases).
[Debian](https://rabbitmq.com/install-debian.html) and [RPM packages](https://rabbitmq.com/install-rpm.html) are available via Cloudsmith mirrors, as well as [PackageCloud](https://packagecloud.io/rabbitmq).
[Community Docker image](https://hub.docker.com/_/rabbitmq/), [Chocolatey package](https://community.chocolatey.org/packages/rabbitmq), and the [Homebrew formula](https://rabbitmq.com/install-homebrew.html)
are other installation options. They are updated with a delay (usually a few days).
## Erlang/OTP Compatibility Notes
This release [requires Erlang 25.0](https://www.rabbitmq.com/which-erlang.html) or later.
This introduces feature parity for x86- and ARM64-based CPUs: Erlang 25 offers the JIT and
[modern Flame Graph profiling](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/) tooling
for both of those major CPU architectures.
[Provisioning Latest Erlang Releases](https://www.rabbitmq.com/which-erlang.html#erlang-repositories) explains
what package repositories and tools can be used to provision latest patch versions of Erlang 25.x.
## Upgrading to 3.13
### Documentation guides on upgrades
See the [Upgrading guide](https://www.rabbitmq.com/upgrade.html) for documentation on upgrades and [RabbitMQ change log](https://www.rabbitmq.com/changelog.html)
for release notes of other releases.
### Required Feature Flags
### Mixed version cluster compatibility
RabbitMQ 3.13.0 nodes can run alongside `3.12.x` nodes. `3.12.x`-specific features can only be made available when all nodes in the cluster
upgrade to 3.13.0 or any other patch release in the new series.
While operating in mixed version mode, some aspects of the system may not behave as expected. The list of known behavior changes is covered below.
Once all nodes are upgraded to 3.13.0, these irregularities will go away.
Mixed version clusters are a mechanism that allows rolling upgrade and are not meant to be run for extended
periods of time (no more than a few hours).
## Compatibility Notes
### More Feature Flags Gratuate to Core Features ("Always Enabled")
### Minimum Supported Erlang Version
Starting with this release, RabbitMQ requires Erlang 25.0 or later versions. Nodes **will fail to start**
on older Erlang releases.
Erlang 25 as our new baseline means much improved performance on ARM64 architectures, [profiling with flame graphs](https://blog.rabbitmq.com/posts/2022/05/flame-graphs/)
across all architectures, and the most recent TLS 1.3 implementation available to all RabbitMQ 3.11 users.
### Client Library Compatibility
Client libraries that were compatible with RabbitMQ `3.12.x` will be compatible with `3.13.0`.
### Getting Help
Any questions about this release, upgrades or RabbitMQ in general are welcome on the [RabbitMQ mailing list](https://groups.google.com/forum/#!forum/rabbitmq-users).
## Changes Worth Mentioning
Release notes are kept under [rabbitmq-server/release-notes](https://github.com/rabbitmq/rabbitmq-server/tree/v3.11.x/release-notes).
### Core Server
#### Enhancements
* Reduced memory footprint, improved memory use predictability and throughput of classic queues (version 2, or CQv2).
This particularly benefits classic queues with longer backlogs.
Classic queue v2 (CQv2) storage implementation **is now the default**. It is possible to switch
the default back to CQv1 using `rabbitmq.conf`:
``` ini
# uses CQv1 by default
classic_queue.default_version = 1
```
Individual queues can be declared by passing `x-queue-version` argument and/or through a `queue-version` policy.
#### Bug Fixes
This release includes all bug fixes shipped in the `3.12.x` series.
### CLI Tools
#### Enhancements
#### Bug Fixes
### MQTT Plugin
#### Enhancements
### Management Plugin
#### Enhancements
#### Bug Fixes
### OAuth 2 AuthN/AuthZ Backend Plugin
#### Enhancement
### HTTPS AuthN/AuthZ Backend Plugin
#### Bug Fixes
### Consul Peer Discovery Plugin
#### Bug Fixes
### Dependency Changes
## Source Code Archives
To obtain source code of the entire distribution, please download the archive named `rabbitmq-server-3.13.0.tar.xz`
instead of the source tarball produced by GitHub.