Erlang/OTP 19.3 is a service release containing mostly bug fixes, as well as a number of new features and characteristics improvements

OTP 19.3 Readme File

OTP 19.3 Source File (102147031)

OTP 19.3 Windows 32-bit Binary File (102147031)

OTP 19.3 Windows 64-bit Binary File (103012097)

OTP 19.3 HTML Documentation File (35818689)

OTP 19.3 Man Pages File (1410781)

Some highlights for 19.3

  • crypto, ssh: The implementation of the key exchange algorithms diffie-hellman-group-exchange-sha* are optimized, up to a factor of 11 for the slowest ( = biggest and safest) group size.
  • dialyzer: The peak memory consumption is reduced.
    Analyzing modules with binary construction with huge strings is now much faster.
  • erts: A received SIGTERM signal to beam will generate a 'stop' message to the init process and terminate the Erlang VM nicely. This is equivalent to calling init:stop/0.
  • kernel: The functions in the 'file' module that take a list of paths (e.g. file:path_consult/2) will now continue to search in the path if the path contains something that is not a directory.
    Two OTP processes that are known to receive many messages are 'rex' (used by 'rpc') and 'error_logger'. Those processes will now store unprocessed messages outside the process heap, this will improve their capability to handle large message queues.
  • public_key: New function pkix_verify_hostname/2,3 Implements certificate hostname checking. See the manual and RFC 6125.
  • public_key, ssh: The ssh host key fingerprint generation now also takes a list of algorithms and returns a list of corresponding fingerprints. See public_key:ssh_hostkey_fingerprint/2 and the option silently_accept_hosts in ssh:connect.
  • ssl: Move PEM cache to a dedicated process, to avoid making the SSL manager process a bottleneck. This improves scalability of TLS connections.
  • stdlib: filename:safe_relative_path/1 to sanitize a relative path has been added.
  • Thanks to more than 20 different contributors

You can find the README and the full listing of changes for this service release at
The Erlang/OTP source can also be found at GitHub on the official Erlang repository, with tag OTP-19.3

Please report any new issues via Erlang/OTPs public issue tracker

We want to thank all of those who sent us patches, suggestions and bug reports!

Thank you!

The Erlang/OTP Team at Ericsson

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.

Finding a source version

Follow this link that presents all released source versions, a link to the GitHub source tag, and to the README.

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).