--- title: Erlang Version Requirements displayed_sidebar: docsSidebar --- # Erlang Version Requirements ## Introduction {#intro} This guide covers Erlang/OTP version requirements, [Erlang version support policy](#supported-version-policy), a RabbitMQ/Erlang [compatibility matrix](#compatibility-matrix), version-specific notes and [ways of provisioning](#erlang-repositories) recent Erlang/OTP releases. :::warning Erlang 28 is **only supported for brand new clusters**: upgrades of clusters running RabbitMQ with Khepri on Erlang 27 to Erlang 28 can run into a known issue that affects mixed-version clusters and thus rolling upgrades. ::: ## Supported Erlang Version Policy {#supported-version-policy} The fully supported series is Erlang `27.x`, with `28.x` partially supported (see below). ### Erlang 29 Support Erlang 29 is **not supported** by RabbitMQ 4.3. ### Erlang 28 Support Erlang 28 is **partially supported** by RabbitMQ 4.3.x: upgrades of clusters running Khepri have known issues directly related to the breaking changes in Erlang 28 that equally affect Erlang 29. ### Erlang 27 Support Erlang 27 is supported. ### Erlang 26 Support Erlang 26 has reached end of life and is **no longer supported**. ## RabbitMQ and Erlang/OTP Compatibility Matrix {#compatibility-matrix} The table below provides an Erlang compatibility matrix of currently supported RabbitMQ release series. For RabbitMQ releases that have reached end of life, see [Unsupported Series Compatibility Matrix](#eol-series).
RabbitMQ version Minimum required Erlang/OTP Maximum supported Erlang/OTP Notes
  • 4.3.5
  • 4.3.4
  • 4.3.3
  • 4.2.10
  • 4.2.9
  • 27.0
  • 27.x
  • Erlang 29 is not supported by RabbitMQ.
  • Erlang 28 is **only supported for brand new clusters**: upgrades of clusters running RabbitMQ with Khepri on Erlang 27 to Erlang 28 can run into a known issue that affects mixed-version clusters and thus rolling upgrades.
  • 4.3.2
  • 4.3.1
  • 4.3.0
  • 4.2.8
  • 4.2.7
  • 4.2.6
  • 4.2.5
  • 4.2.4
  • 4.2.3
  • 4.2.2
  • 4.2.1
  • 4.2.0
  • 4.1.4
  • 4.1.3
  • 4.1.2
  • 4.1.1
  • 4.1.0
  • 4.0.9
  • 4.0.8
  • 4.0.7
  • 4.0.6
  • 4.0.5
  • 4.0.4
  • 26.2
  • 27.x
  • Erlang 29 is not supported by RabbitMQ.
  • Erlang 28 is partially supported starting with RabbitMQ 4.2.0.
  • Erlang 28 is **only supported for brand new clusters**: upgrades of clusters running RabbitMQ with Khepri on Erlang 27 to Erlang 28 can run into a known issue that affects mixed-version clusters and thus rolling upgrades.
  • Starting with the 4.0.4 release, the 4.0.x release series is compatible with Erlang 27.
  • Erlang 26 has reached end of life and is no longer supported.
  • 4.0.3
  • 4.0.2
  • 4.0.1
  • 26.2
  • 26.2.x
  • The 4.0 release series is compatible with Erlang 26.2.
  • 3.13.7
  • 3.13.6
  • 3.13.5
  • 3.13.4
  • 3.13.3
  • 3.13.2
  • 3.13.1
  • 3.13.0
  • 26.0
  • 26.2.x
As a guideline, most recent minor and patch versions of each supported Erlang/OTP series are recommended. ## Provisioning Latest Erlang Releases {#erlang-repositories} Most recent versions can be obtained from a number of sources: * [Team RabbitMQ Debian repositories](install-debian#apt-repositories) or [Launchpad](install-debian#apt-launchpad-erlang) * [Zero dependency Erlang RPM](https://github.com/rabbitmq/erlang-rpm) from Team RabbitMQ, also available [from a `dnf`/`yum` repository](install-rpm#dnf-repositories) * As part of [RabbitMQ Docker image](https://github.com/docker-library/rabbitmq/) * [erlang.org](https://www.erlang.org/downloads#prebuilt) provides binary builds of patch releases for Windows * Building from source with [kerl](https://github.com/kerl/kerl) ## Installing Erlang/OTP on Debian or Ubuntu {#debian} Standard Debian and Ubuntu repositories provide Erlang/OTP but it is heavily sliced and diced into dozens of packages. In addition, unless the system has backport repositories enabled, the versions tend to be quite old. See [Debian and Ubuntu installation guide](./install-debian) for more information on the essential packages, dependencies, and alternative apt repositories. ## Installing Erlang/OTP on RHEL, CentOS and Fedora {#redhat} There are multiple RPM packages available for Erlang/OTP. The recommended option is the [zero-dependency Erlang RPM](https://github.com/rabbitmq/erlang-rpm) from the RabbitMQ team. It closely follows the latest Erlang/OTP patch release schedule. See [CentOS, RHEL and Fedora installation guide](./install-rpm) for more information on the available options. ## Erlang Versions in Clusters {#clusters} It is **highly recommended** that the same major version of Erlang is used across all [cluster nodes](./upgrade#rabbitmq-erlang-version-requirement) (e.g. `27.x`). RabbitMQ will check for internal protocol versions of Erlang and its distributed libraries when a node joins a cluster, refusing to cluster if there's a potentially incompatible combination detected. Outside of a reasonably long upgrade time window, it is recommended that all nodes use exactly the same version of Erlang. ## Building Erlang from Source {#building-from-source} If a sufficiently recent Erlang package is not available for a given operating system, Erlang/OTP can be [built from source](http://www.erlang.org/doc/installation_guide/INSTALL.html). This requires a build environment that satisfies the Erlang build dependencies, such as a modern OpenSSL version. [kerl](https://github.com/kerl/kerl) makes building Erlang/OTP releases from source, including specific tags from GitHub, a much more pleasant experience. ## Older RabbitMQ and Erlang Releases {#old-timers} ### Unsupported RabbitMQ Series {#eol-series}
Unsupported RabbitMQ Series Minimum required Erlang/OTP Maximum supported Erlang/OTP Notes
  • 3.12.13
  • 3.12.12
  • 3.12.11
  • 3.12.10
  • 25.0
  • 26.2.x
  • 3.12.9
  • 3.12.8
  • 3.12.7
  • 3.12.6
  • 3.12.5
  • 25.0
  • 26.1.x
  • 3.12.4
  • 3.12.3
  • 3.12.2
  • 3.12.1
  • 3.12.0
  • 25.0
  • 26.0.x
  • The 3.12 release series is compatible with Erlang 26.
  • OpenSSL 3 support in Erlang is considered to be mature enough for production.
  • 3.11.28
  • 3.11.27
  • 3.11.26
  • 3.11.25
  • 3.11.24
  • 3.11.23
  • 3.11.22
  • 3.11.21
  • 3.11.20
  • 3.11.19
  • 3.11.18
  • 3.11.17
  • 3.11.16
  • 3.11.15
  • 3.11.14
  • 3.11.13
  • 3.11.12
  • 3.11.11
  • 3.11.10
  • 3.11.9
  • 3.11.8
  • 3.11.7
  • 3.11.6
  • 3.11.5
  • 3.11.4
  • 3.11.3
  • 3.11.2
  • 3.11.1
  • 3.11.0
  • 25.0
  • 25.3.x
  • Erlang 26 is supported starting with RabbitMQ 3.12.0.
  • As of Erlang 25.1, OpenSSL 3.0 support in Erlang is considered to be mature enough for production.
  • Erlang 25 before 25.0.2 is affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • 3.10.25
  • 3.10.24
  • 3.10.23
  • 3.10.22
  • 3.10.21
  • 3.10.20
  • 3.10.19
  • 24.3.4.8
  • 25.3.x
  • 24.3 is the only maintained (updated) series of Erlang 24.
  • As of Erlang 25.1, OpenSSL 3.0 support in Erlang is considered to be mature enough to consider for production.
  • Erlang 25 before 25.0.2 and 24 before 24.3.4.2 are affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • 3.10.18
  • 3.10.17
  • 3.10.16
  • 3.10.14
  • 24.3
  • 25.2
  • 24.3 is the only maintained (updated) series of Erlang 24.
  • As of Erlang 25.1, OpenSSL 3.0 support in Erlang is considered to be mature enough to consider for production.
  • Erlang 25 before 25.0.2 and 24 before 24.3.4.2 are affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • 3.10.13
  • 3.10.12
  • 3.10.11
  • 3.10.10
  • 3.10.9
  • 3.10.8
  • 24.2
  • 25.2
  • As of Erlang 25.1, OpenSSL 3.0 support in Erlang is considered to be mature enough to consider for production.
  • Erlang 25 before 25.0.2 and 24 before 24.3.4.2 are affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • 3.10.7
  • 3.10.6
  • 3.10.5
  • 23.2
  • 25.2
  • Erlang 25 is the recommended series.
  • Erlang 25 before 25.0.2 and 24 before 24.3.4.2 are affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • Erlang 23 support was discontinued on July 31st, 2022.
  • 3.10.4
  • 3.10.2
  • 3.10.1
  • 3.10.0
  • 23.2
  • 24.3
  • Erlang 24.3 is the recommended series.
  • Erlang 23 support was discontinued on July 31st, 2022.
  • 3.9.29
  • 3.9.28
  • 24.3.4.2
  • 25.2
  • 24.3 is the only maintained (updated) series of Erlang 24.
  • As of Erlang 25.1, OpenSSL 3.0 support in Erlang is considered to be mature enough to consider for production.
  • Erlang 25 before 25.0.2 and 24 before 24.3.4.2 are affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • 3.9.27
  • 3.9.26
  • 3.9.25
  • 3.9.24
  • 3.9.23
  • 3.9.22
  • 24.2
  • 24.3
  • Erlang 24 before 24.3.4.2 is affected by CVE-2022-37026, a CVE with critical severity (CVSS 3.x Base Score: 9.8)
  • Erlang 23 support was discontinued on July 31st, 2022.
  • 3.9.21
  • 3.9.20
  • 3.9.19
  • 3.9.18
  • 3.9.17
  • 3.9.16
  • 3.9.15
  • 23.3
  • 24.3
  • Erlang 24.3 introduces LDAP client changes that are breaking for projects compiled on earlier releases (including RabbitMQ). RabbitMQ 3.9.15 is the first release to support Erlang 24.3.
  • Erlang 23 support was discontinued on July 31st, 2022.
  • 3.9.14
  • 3.9.13
  • 3.9.12
  • 3.9.11
  • 3.9.10
  • 3.9.9
  • 3.9.8
  • 3.9.7
  • 3.9.6
  • 3.9.5
  • 3.9.4
  • 3.9.3
  • 3.9.2
  • 3.9.1
  • 3.9.0
  • 23.2
  • 24.2
  • 3.8.35
  • 3.8.34
  • 3.8.33
  • 3.8.32
  • 3.8.31
  • 3.8.30
  • 3.8.29
  • 23.2
  • 24.3
  • RabbitMQ 3.8 was released in October 2019, and reached end of life on July 31st, 2022, we strongly discourage its use
  • Erlang 24.3 introduces LDAP client changes that are breaking for projects compiled on earlier releases (including RabbitMQ). RabbitMQ 3.8.29 is the first release in the 3.8.x-series to support Erlang 24.3.
  • 3.8.28
  • 3.8.27
  • 3.8.26
  • 3.8.25
  • 3.8.24
  • 3.8.23
  • 3.8.22
  • 3.8.21
  • 3.8.20
  • 3.8.19
  • 3.8.18
  • 3.8.17
  • 3.8.16
  • 23.2
  • 24.2
  • RabbitMQ 3.8 was released in October 2019, and reached end of life on July 31st, 2022, we strongly discourage its use
  • 3.8.15
  • 3.8.14
  • 3.8.13
  • 3.8.12
  • 3.8.11
  • 3.8.10
  • 3.8.9
  • 22.3
  • 23.x
  • RabbitMQ 3.8 was released in October 2019, and reached end of life on July 31st, 2022, we strongly discourage its use
  • 3.8.8
  • 3.8.7
  • 3.8.6
  • 3.8.5
  • 3.8.4
  • 21.3
  • 23.x
  • RabbitMQ 3.8 was released in October 2019, and reached end of life on July 31st, 2022, we strongly discourage its use
  • 3.8.3
  • 3.8.2
  • 3.8.1
  • 3.8.0
  • 21.3
  • 22.x
  • RabbitMQ 3.8 was released in October 2019, and reached end of life on July 31st, 2022, we strongly discourage its use
  • 3.7.27
  • 3.7.26
  • 3.7.25
  • 3.7.24
  • 3.7.23
  • 3.7.22
  • 3.7.21
  • 3.7.20
  • 3.7.19
  • 21.3
  • 22.x
  • RabbitMQ 3.7 was released on 2017-11-28, and reached end of life on 2020-09-30, we strongly discourage its use
  • 3.7.18
  • 3.7.17
  • 3.7.16
  • 3.7.15
  • 20.3
  • 22.x
  • RabbitMQ 3.7 was released on 2017-11-28, and reached end of life on 2020-09-30, we strongly discourage its use
  • 3.7.14
  • 3.7.13
  • 3.7.12
  • 3.7.11
  • 20.3
  • 21.x
  • RabbitMQ 3.7 was released on 2017-11-28, and reached end of life on 2020-09-30, we strongly discourage its use
  • 3.7.10
  • 3.7.9
  • 3.7.8
  • 3.7.7
  • 19.3
  • 21.x
  • RabbitMQ 3.7 was released on 2017-11-28, and reached end of life on 2020-09-30, we strongly discourage its use
  • 3.7.6
  • 3.7.5
  • 3.7.4
  • 3.7.3
  • 3.7.2
  • 3.7.1
  • 3.7.0
  • 19.3
  • 20.x
  • RabbitMQ 3.7 was released on 2017-11-28, and reached end of life on 2020-09-30, we strongly discourage its use
  • 3.6.16
  • 3.6.15
  • 19.3
  • 20.3.x
  • RabbitMQ 3.6 was released on 2015-12-22, and reached end of life on 2018-05-31, we strongly discourage its use
  • 3.6.14
  • 3.6.13
  • 3.6.12
  • 3.6.11
  • R16B03
  • 20.1.x
  • RabbitMQ 3.6 was released on 2015-12-22, and reached end of life on 2018-05-31, we strongly discourage its use
  • 3.6.10
  • 3.6.9
  • 3.6.8
  • 3.6.7
  • 3.6.6
  • 3.6.5
  • 3.6.4
  • R16B03
  • 19.3.x
  • RabbitMQ 3.6 was released on 2015-12-22, and reached end of life on 2018-05-31, we strongly discourage its use
  • 3.6.3
  • 3.6.2
  • 3.6.1
  • 3.6.0
  • R16B03
  • 18.3.x
  • RabbitMQ 3.6 was released on 2015-12-22, and reached end of life on 2018-05-31, we strongly discourage its use
  • 3.5.x
  • R14B04
  • 17.5.x
  • RabbitMQ 3.5 was released on 2015-03-11, and reached end of life on 2016-10-31, we strongly discourage its use
  • 3.4.x
  • R13B03
  • 16B03
  • RabbitMQ 3.4 was released 2014-10-21, and reached end of life 2015-10-31, we strongly discourage its use
### Last Version to Support R16B03 {#r16b03} If you absolutely must use an older version of Erlang, RabbitMQ 3.6.14 is the newest version compatible with R16B03. ### Last Version to Support R13B03 {#r13b03} If you absolutely must use an older version of Erlang, [RabbitMQ 3.5.8](https://github.com/rabbitmq/rabbitmq-server/releases/tag/rabbitmq_v3_5_8) is the newest version compatible with R13B03.