Erlang/OTP 17.0-rc2 has been released

February 27, 2014 · by Kenneth Lundin

Erlang/OTP 17.0-rc2 has been released. #

This is a beta release, which will be followed by the final OTP 17.0 product release in the beginning of April.

Between this beta and the final release there will be new updates of the master branch with corrections and minor new features. Occasionally there might be new tags which we in that case will communicate and ask you to test.

Erlang/OTP 17.0 is a new major release with new features, quite a few (characteristics) improvements, as well as some incompatibilities. See the README file and the documentation for more details.

We would like to ask you to download and test the beta release and send us your feedback as soon as possible, so that we can make the necessary corrections before OTP 17.0.

The release contains many changes and a few potential incompatibilities. Please try to build and run your current products/applications and let us know about any problems.

One known, but previously insufficiently documented incompatibility that we would like to highlight is:

OTP-11719 == erts ==

The default encoding of Erlang files has been changed from ISO-8859-1 to UTF-8. The encoding of XML files has also been changed to UTF-8.

Please verify that your source code compiles with Erlang/OTP 17. If your (ISO-8559-1 / Latin-1 encoded) source code files contain characters that are outside of the bit 7-bit ASCII character set, you will receive a compiler error similar to the following: tst.erl:1: cannot parse file, giving up tst.erl:1: no module definition tst.erl:1: cannot translate from UTF-8 In this case, you need to apply one of the following alternatives to each (impacted) file:

Alternative 1: Encode the file in UTF-8 (instead of Latin-1). If the file is going to be compiled with both OTP 17 and previous versions, insert a comment stating the encoding at the beginning of the file: %% -- coding: utf-8 -- Alternative 2: Leave the file encoded as Latin-1 and insert a comment stating the encoding at the beginning of the file: %% -- coding: latin-1 -- For detailed information, see the STDLIB User’s Guide, 2 Using Unicode in Erlang

The 17.0 release contains many changes; thus, some unexpected incompatibilities or issues may have slipped through our tests. Please try to build and run your current products/applications and let us know about any problems.

Note! The new datatype MAP is not properly documented yet but the EEP 43 will provide a good start. Also note that it is a limited implementation of maps implemented so far:

  • no variable keys are allowed
  • native code can not be generated for modules using maps

Some other highlights of the release are:

  • Erlang/OTP has been ported to the realtime operating system OSE.
  • Maps, a new dictionary data type (experimental)
  • A more natural mapping from ASN.1 OCTET STRING and BIT STRING to Erlang types, and other ASN.1 improvements and optimizations
  • The {active, N} socket option for TCP, UDP, and SCTP
  • A new (optional) scheduler utilization balancing mechanism
  • Migration of memory carriers has been enabled by default on all ERTS internal memory allocators
  • Increased garbage collection tenure rate
  • Experimental “dirty schedulers” functionality
  • Funs can now be given names
  • Miscellaneous unicode support enhancements
  • A new, semantic version scheme for OTP and its applications

You can find the README file with more detailed info at

You can download the full source distribution from

Note: To unpack the TAR archive you need a GNU TAR compatible program. For installation instructions please read the README that is part of the distribution.

You can also find this release at the official Erlang/OTP Git-repository at Github here: tagged OTP_17.0-rc2

The Windows binary distribution can be downloaded from and

You can also download the complete HTML documentation or the Unix manual files

We also want to thank those that sent us patches, suggestions and bug reports.

The Erlang/OTP Team at Ericsson