Erlang/OTP 22.3 is the last planned patch package for the 22 major release with both new features and bugfixes

OTP 22.3 Readme File

OTP 22.3 Source File (92703609)

OTP 22.3 Windows 32-bit Binary File (92703609)

OTP 22.3 Windows 64-bit Binary File (95003088)

OTP 22.3 HTML Documentation File (34041790)

OTP 22.3 Man Pages File (1366911)

Erlang/OTP 22.3 is the last planned patch package for the 22 major release with new features, improvements and bugfixes. Below follows some highlights.


  • ssl/public_key:
    • Implementation of the key and initialization vector
      update feature, and general hardening of TLS 1.3.
      There are cryptographic limits on the amount of
      plaintext which can be safely encrypted under a given set of keys.
      This change enforces those limits by triggering
      automatic key updates on TLS 1.3 connections.
    • Add support for TLS 1.3 Session Tickets (stateful and
      stateless). This allows session resumption using keying
      material from a previous successful handshake.
    • Add support for key exchange with Edward curves and
      PSS-RSA padding in signature verification.
  • erts:
    • A socket "registry" has been added making it possible to list current open sockets.
    • Add a "full featured" version of getifaddrs in the net module.
  • ssh:
    • The new functions ssh:set_sock_opts/2 and ssh:get_sock_opts/2 sets and reads option values for
      the underlying TCP stream.
    • Changes to the internal api of the experimental ssh_dbg tool.
  • common_test: The ct_property_test has now a report function for
    results of stateful testing.
  • stdlib:
    • Implement uri_string:resolve/{2,3} that can be used to
      resolve a URI reference against a base URI.
    • In gen_statem it is now possible to change the callback
      module for a running server. See gen_statem's
      documentation for change_callback_module,
      push_callback_module, and pop_callback_module.

For more details see
Pre built versions for Windows can be fetched here:
Online documentation can be browsed here:
The source tarball can be fetched here:
The documentation can be fetched here:
The man pages can be fetched here:
The Erlang/OTP source can also be found at GitHub on the official Erlang repository:

Thank you for all your contributions!

Compiling Erlang from source

You can build Erlang from source on your own, following the building and installation instructions. Or use the Kerl script. Kerl is a script that lets you easily build Erlang with a few commands. Follow the instructions to build.

Source Versions and Windows Binaries for Patches

Information about all released OTP versions since OTP 17.0 can be found at the OTP Versions Tree page. This information includes a link to the GitHub source tag, and a link to the README. As of OTP 23, Windows binaries can also be downloaded from here for all patches.

Pre-built Binary Packages

Most OS package managers provide pre-built binary packages. You can also download the latest stable releases from Erlang Solutions. Erlang Solutions provides pre-built binary packages for OS X, Windows, Ubuntu, Debian, Fedora, CentOS, Raspbian and other operating systems. 

  • For Homebrew on OS X: brew install erlang
  • For MacPorts on OS X: port install erlang
  • For Ubuntu and Debianapt-get install erlang
  • For Fedorayum install erlang
  • For FreeBSDpkg install erlang


Since OTP 18.0, Erlang/OTP is released under Apache License 2.0. The older releases prior to 18.0 were released under Erlang Public License (EPL), a derivative work of the Mozilla Public License (MPL).