NEWS

Written by Kenneth, 5 May 2017

OTP 20 Release Candidate 1

This is the first of two release candidates before the OTP 20 release in June 2017.

The intention with this release is that you as users try it and give us feedback if something does not work as expected. Could be a bug, an unexpected incompatibility, a significant change of characteristics in negative direction, etc.

Erlang/OTP 20.0 is a new major release with new features, quite a few (characteristics) improvements, as well as a few incompatibilities.
 

Here are some of the most important news:

Potential Incompatibilities

  • ERTS:

    • The non SMP Erlang VM is deprecated and not built by default
    • Remove deprecated erlang:hash/2
    • erlang:statistics/1 with scheduler_wall_time now also includes info about dirty CPU schedulers.
    • The new purge strategy introduced in OTP 19.1 is mandatory and slightly incompatible for processes holding funs
      see erlang:check_process_code/3.
    • The NIF library reload is not supported anymore.
  • Asn1: Deprecated module and functions removed (asn1rt, asn1ct:encode/3 and decode/3)

  • Ssh: client only option in a call to start a daemon will now fail

Highlights

Erts:

  • Dirty schedulers enabled and supported on VM with SMP support.
  • support for “dirty” BIFs and “dirty” GC.
  • erlang:garbage_collect/2 for control of minor or major GC
  • Erlang literals are no longer copied when sending messages.
  • Improved performance for large ETS tables, >256 entries (except ordered_set)
  • erlang:system_info/1 atom_count and atom_limit
  • Reduced memory pressure by converting sub-binaries to heap-binaries during GC
  • enif_select, map an external event to message

Compiler:

  • Code generation for complicated guards is improved.
  • Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, 'a'=>3} will warn for the repeated key a.
  • By default there is now a warning when export_all is used. Can be disabled
  • Pattern matching for maps is optimized
  • New option deterministic to omit path to source + options info the BEAM file.
  • Atoms may now contain arbitrary unicode characters.
  • compile:file/2 has an option to include extra chunks in the BEAM file.

Misc other applications

  • Unnamed ets tables optimized
  • A new event manager to handle a subset of OS signals in Erlang
  • Optimized sets add_element, del_element and union
  • Added rand:jump/0-1
  • When a gen_server crashes, the stacktrace for the client will be printed to facilitate debugging.
  • take/2 has been added to dict, orddict, and gb_trees.
  • take_any/2 has been added to gb_trees
  • Significantly updated string module with unicode support
  • erl_tar support for long path names and new file formats
  • Dtls: Documented API, experimental
  • SSH: improving security, removing and adding algorithms
  • New math:fmod/2

For more details see
http://erlang.org/download/otp_src_20.0-rc1.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_20.0-rc1.exe
http://erlang.org/download/otp_win64_20.0-rc1.exe

On line documentation can be browsed here:
www.erlang.org/documentation/doc-9.0-rc1/doc/

Thanks to all contributors.

Tags: [ release ]

Written by Kenneth, 15 Mar 2017

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
http://www.erlang.org/download/otp_src_19.3.readme
The Erlang/OTP source can also be found at GitHub on the official Erlang repository,
https://github.com/erlang/otp with tag OTP-19.3

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

https://bugs.erlang.org

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

Thank you!

The Erlang/OTP Team at Ericsson

Tags: [ release ]

Written by Björn-Egil, 14 Dec 2016

Some highlights for 19.2

  • STDLIB: The new behaviour gen_statem has been improved with 3 new features: the possibility to use old style non-proxy timeouts for gen_statem:call/2,3, state entry code, and state timeouts. These are backwards compatible. Minor code and documentation improvements has been performed including a borderline semantics correction of timeout zero handling.
  • SSL: Experimental version of DTLS. It is runnable but not complete and cannot be considered reliable for production usage. To use DTLS add the option {protocol, dtls} to ssl:connect and ssl:listen.
  • SSH: Extended the option silently_accept_hosts for ssh:connect to make it possible for the client to check the SSH host key fingerprint string. Se the reference manual for SSH.
  • ~40 contributions since the previous service release OTP 19.1

You can find the README and the full listing of changes for this service release at

  http://www.erlang.org/download/otp_src_19.2.readme
  
The source distribution and binary distributions for Windows can be
downloaded from

  http://www.erlang.org/download/otp_src_19.2.tar.gz
  http://www.erlang.org/download/otp_win32_19.2.exe
  http://www.erlang.org/download/otp_win64_19.2.exe
  
Note: To unpack the TAR archive you need a GNU TAR compatible program.

For installation instructions please consult the README file that is part of the distribution.

The Erlang/OTP source can also be found at GitHub on the official Erlang
repository, https://github.com/erlang/otp with tag OTP-19.2

The on-line documentation can be found at: http://www.erlang.org/doc/
You can also download the complete HTML documentation or the Unix manual files

  http://www.erlang.org/download/otp_doc_html_19.2.tar.gz
  http://www.erlang.org/download/otp_doc_man_19.2.tar.gz
  
Please report any new issues via Erlang/OTPs public issue tracker 

   https://bugs.erlang.org
   
We want to thank all of those who sent us patches, suggestions and bug reports!

Thank you!

The Erlang/OTP Team at Ericsson

Tags: [ release OTP-19.2 ]

Written by Henrik, 21 Sep 2016

Some highlights of the release are:

  • erts: Improved dirty scheduler support. A purge of a module will not have to wait for completion of all ongoing dirty NIF calls.
  • erts: Improved accuracy of timeouts on MacOS X.
  • kernel: Add net_kernel:setopts/2 and net_kernel:getopts/2 to control options for distribution sockets in runtime.
  • asn1: Compiling multiple ASN.1 modules in the same directory with parallel make (make -j) should now be safe.
  • httpd: support for PUT and DELETE in mod_esi
  • ~30 contributions since 19.0

You can find the Release Notes with more detailed info at

http://www.erlang.org/download/otp_src_19.1.readme

You can download the full source distribution from http://www.erlang.org/download/otp_src_19.1.tar.gz

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 the source code at github.com in the official Erlang repository. Git tag OTP-19.1
https://github.com/erlang/otp/tree/OTP-19.1

The Windows binary distributions can be downloaded from

http://www.erlang.org/download/otp_win32_19.1.exe

http://www.erlang.org/download/otp_win64_19.1.exe

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

http://www.erlang.org/download/otp_doc_html_19.1.tar.gz
http://www.erlang.org/download/otp_doc_man_19.1.tar.gz


You can also read the documentation on-line here:
(see the Release Notes mentioned above for release notes which
are not updated in the doc, but the new functionality is)

http://www.erlang.org/doc/

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

If you find bugs in Erlang/OTP report them via the public issue tracker at http://bugs.erlang.org

The Erlang/OTP Team at Ericsson

Tags: [ release OTP-19.1 ]

Written by Henrik, 22 Jun 2016

Some highlights of the release are:
 
  • compiler, stdlib:
    • New preprocessor macros ?FUNCTION_NAME, ?FUNCTION_ARITY
    • New preprocessor directives -error(Term) and -warning(Term) to cause a compilation error or warning, respectively.
  • gen_statem a new state machine behavior
  • mnesia_ext: plugin of external storage solutions to mnesia
  • crypto: uses EVP interface in OpenSSL resulting in generally better performance and support for HW acceleration
  • ssh: performance improvements, uses the new gen_statem behavior
  • ssl: enhanced error log messages
  • dialyzer: the support for maps is very much extended both the type specification syntax and the type analysis.
  • erts:
    • erlang:open_port(spawn, ...) 3-5 times faster
    • tracing, extensive improvements (scalability, speed, match specifications on send/receive, support for lttng, ...)
    • dirty schedulers improved
    • per process configurable handling of message_queue
    • fast loading of multiple modules
    • max_heap_size process flag
  • erts/kernel:
    • Experimental support for Unix Domain Sockets
      Example: gen_udp:open(0, [{ifaddr,{local,"/tmp/socket"}}])
  • and much more ....
You can find the Release Notes with more detailed info at

  http://www.erlang.org/download/otp_src_19.0.readme

You find the source code at github.com in the official Erlang repository.

Git tag OTP-19.0

https://github.com/erlang/otp/tree/OTP-19.0

You can also read the documentation on-line here:
(see the Release Notes mentioned above for release notes which
are not updated in the doc, but the new functionality is)

http://www.erlang.org/doc

We also want to thank all of you that have contributed with new features, bug-fixes, suggestions and bug reports.

The Erlang/OTP Team at Ericsson

Tags: [ release OTP-19.0 ]

Written by Henrik, 16 Mar 2016

Some highlights of the release are:

  • New statistics info about runnable and active processes & ports. 
    Call erlang:statistics with total_run_queue_lengths | run_queue_lengths | total_active_tasks | active_tasks.
  • Time warp improvements: dbg:p/2 and erlang:trace/3 with monotonic_timestamp | strict_monotonic_timestamp.
  • Introduced a validation callback for heart.
  • The module overload in sasl has been deprecated.
  • ~90 contributions since 18.2

 

You can find the Release Notes with more detailed info at

http://www.erlang.org/download/otp_src_18.3.readme

You can download the full source distribution from http://www.erlang.org/download/otp_src_18.3.tar.gz

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 the source code at github.com in the official Erlang repository. Git tag OTP-18.3
https://github.com/erlang/otp/tree/OTP-18.3

The Windows binary distributions can be downloaded from

http://www.erlang.org/download/otp_win32_18.3.exe

http://www.erlang.org/download/otp_win64_18.3.exe

 

 

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

http://www.erlang.org/download/otp_doc_html_18.3.tar.gz 
http://www.erlang.org/download/otp_doc_man_18.3.tar.gz


You can also read the documentation on-line here: 
(see the Release Notes mentioned above for release notes which 
are not updated in the doc, but the new functionality is)

http://www.erlang.org/doc/

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

The Erlang/OTP Team at Ericsson

Tags: [ release OTP-18.3 ]

Written by Henrik, 1 Apr 2015

Some highlights of the release are:
  • ERTS: Added command line argument option for setting the initial size of process dictionaries.
  • Diameter: configurable incoming_max len and string_decode for diameter messages
  • Bugfixes and minor small features in applications such as compiler, common_test, crypto, debugger, eldap, erts, hipe, inets, ssh, ssl, ...
  • 43 contributions from 32 different contributors

For more details see the README file at http://www.erlang.org/download/otp_src_17.5.readme

You can download the full source distribution from http://www.erlang.org/download/otp_src_17.5.tar.gz

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: https://github.com/erlang/otp tagged "OTP-17.5"

The Windows binary distribution can be downloaded from

http://www.erlang.org/download/otp_win32_17.5.exe

http://www.erlang.org/download/otp_win64_17.5.exe

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

http://www.erlang.org/download/otp_doc_html_17.5.tar.gz
http://www.erlang.org/download/otp_doc_man_17.5.tar.gz

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

 

You can find more detailed info and download the release at the download page

The Erlang/OTP Team at Ericsson

Tags: [ release ]

Written by Kenneth, 26 Mar 2015

Erlang/OTP 18.0-rc1 is available for testing.

 

This is an alpha release, which will be followed by a planned beta release in May and a final OTP 18.0 product release in June 2015.

Between the alpha and beta and 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 18.0 is a new major release with new features, quite a few (characteristics) improvements, as well as a few incompatibilities. 

See the Release Notes and the documentation for more details.

We would like to ask you to build and test the alpha release and send us your feedback as soon as possible, so that we can make the necessary corrections before OTP 18.0-rc2 and OTP 18.0, respectively.

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

IMPORTANT INFO when building your own code with this OTP release

Since erlang:now is deprecated your build might stop if you are using "warnings as errors".

To let the build through you can turn of warnings for deprecated functions by setting an environment variable like this:

export ERL_COMPILER_OPTIONS=nowarn_deprecated_function

Some highlights of the release are:

  • dialyzer: The -dialyzer() attribute can be used for suppressing warnings in a module by specifying functions or warning options. It can also be used for requesting warnings in a module.
  • erts: The time functionality has been extended. This includes a new API for time, as well as "time warp" modes which alters the behavior when system time changes. You are strongly encouraged to use the new API instead of the old API based on erlang:now/0. erlang:now/0 has been deprecated since it will always be a scalability bottleneck. For more information see the Time and Time Correction chapter of the ERTS User's Guide. Here is a link http://www.erlang.org/documentation/doc-7.0-rc1/erts-7.0/doc/html/time_correction.html
  •  
  • erts: Beside the API changes and time warp modes a lot of scalability and performance improvements regarding time management has been made. Examples are:
    • scheduler specific timer wheels,
    • scheduler specific BIF timer management,
    • parallel retrieval of monotonic time and system time on OS:es that support it.
  • erts: The previously introduced "eager check I/O" feature is now enabled by default.
  • erts/compiler: enhanced support for maps. Big maps new uses a HAMT (Hash Array Mapped Trie) representation internally which makes them more efficient. There is now also support for variables as map keys.  
  • ssl: Remove default support for SSL-3.0 and added padding check for TLS-1.0 due to the Poodle vulnerability.
  • ssl: Remove default support for RC4 cipher suites, as they are consider too weak.
  • stdlib: Allow maps for supervisor flags and child specs

 

You can find the Release Notes with more detailed info at http://www.erlang.org/download/otp18rc1_relnotes.pdf

You find the source code at github.com in the official Erlang repository.

Git tag OTP-18.0-rc1

https://github.com/erlang/otp/tree/OTP-18.0-rc1

You can also read the documentation on-line here: (see the Release Notes mentioned above for release notes which are not updated in the doc, but the new functionality is)

http://www.erlang.org/documentation/doc-7.0-rc1/doc/

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

The Erlang/OTP Team at Ericsson

Tags: [ release ]

Written by Kenneth, 25 Jun 2014

Erlang/OTP 17.1 is a service release on the 17 track with mostly bug fixes, but is does contain a number of new features and characteristics improvements as well.

Some highlights of the release are:

  • crypto: Add aes_cfb8 cypher to crypto:block_encrypt and block_decrypt.
  • diameter: Add result code counters for CEA, DWA, and DPA.
  • erts: The following built in functions in the erlang and binary modules now bump an appropriate amount
    of reductions and yield when out of reductions:
    binary_to_list/1, binary_to_list/3, bitstring_to_list/1, list_to_binary/1,
    iolist_to_binary/1, list_to_bitstring/1, binary:list_to_bin/1
  • hipe: Handle Maps instructions get_map_elements, put_map_assoc,
    put_map_exact in the HiPE native code compiler.
  • mnesia: The time for inserting locks for a transaction with large
    number of locks is reduced significantly.
  • ssh: Option max_sessions added to ssh:daemon/{2,3}.
  • stdlib: Add maps:get/3 to maps module. The function will return the
    supplied default value if the key does not exist in the map.

Many thanks to 24 different contributors in this release

You can find more info and download the release at the download page.

 

Tags: [ release ]

Written by Kenneth, 9 Apr 2014

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

Some 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 version scheme for OTP its applications has been introduced

You can find more information and download the release at the download page.

Tags: [ release ]

Written by Kenneth, 14 Dec 2011

Erlang/OTP R15B has been released as planned on December 14:th 2011.

See the release notes in the readme file.

Download the new release from the download page.

Highlights:

  • Line number and filename information are now included in exception backtraces. This information will be pretty-printed in the shell and used in crash reports etc. In practice it will be much easier to find where something failed.
  • The driver interface has been changed to enable 64-bit aware drivers. Most importantly the return types for ErlDrvEntry callbacks 'call' and 'control' has been changed which require drivers to be changed.
  • New in this release is the support for 64 bit  Windows. The self extracting installer can be found here.
  • CommonTest hooks are now in a final supported version.
  • There is a new GUI tool in the observer application which integrates pman, etop, appmon and tv into one tool. The tool does also contain functions for activating tracing in an easy way.
  • The Erlang distribution can now be run over the new SSL implementation.

Tags: [ release ]

Written by Kenneth, 5 Oct 2011

Erlang/OTP R14B04 has been released as planned on October 5:th 2011. It is the fourth R14 service release.

See the release notes in the readme file.

Download the new release from the download page.

This release is mainly a stabilization of the R14B03 release (but as
usual there are
some new functionality as well).

Tags: [ release ]

Written by Kenneth, 25 May 2011

Erlang/OTP R14B03 has been released as planned on May 25:th 2011. It is the third R14 service release.

See the release notes in the readme file

Download the new release from the download page.

Highlights:

  • Diameter is a brand new application in this release. The application support the diameter protocol specified in RFC 3588 and is intended to provide an Authentication, Authorization and Accounting (AAA) framework for applications. 
  • The documentation for stdlib and kernel now uses type specifications from the source modules which should guarantee that the documentation and code are consistent with regard to the type information.

Tags: [ release ]

Written by Kenneth, 17 Mar 2011

Erlang/OTP R14B02 has been released as planned on March 16:th 2011. It is the second R14 service release.

See the release notes in the readme file

Download the new release from the download page.

Highlights:

  • The "halfword" emulator is now official. A 64-bit emulator that uses less memory than the full 64-bit emulator.
  • EDoc handles Erlang specifications and types.
  • All test suites now run with CommonTest

Tags: [ release ]

Written by Raimo, 8 Dec 2010

Erlang/OTP R14B01 has been released as planned on September 15:th 2010. It is the first R14 service release.

See the release notes in the readme file

Download the new release from the download page.

Tags: [ release ]

Written by Raimo, 15 Sep 2010

Erlang/OTP R14B has been released as planned on September 15:th 2010. It is the first non-beta R14 release.

See the release notes in the readme file

Download the new release from the download page.

Tags: [ release ]

Written by Raimo, 16 Jun 2010

Erlang/OTP R14A has been released. R14A is a beta release before the R14B release which is planned for September 1:st.

See the release notes in the readme file

Download the new release from the download page.

Tags: [ release ]

Written by Kenneth, 4 Feb 2010

Erlang/OTP R13B04 has been released. R13B04 is a service release for R13B. There are mostly error corrections, but also some new functionality.
This is the first release after the introduction of the official Git repository at Github and it is amazing to notice that the number of contributions from the community has increased significantly. As many as 32 contributors have provided 1 or more patches each until now, resulting in 51 integrated patches from the open source community in this service release.
In addition to the contributions provided by the community we have the following examples of highlights in the release:

  • The documentation can now be built from the source.
  • The Native Implemented Functions (NIFs) are still in beta, but much enhanced.
  • The garbage collection of binaries is further enhanced.
  • Support for user defined prompt in the shell. A small but useful new function.
  • Enhanced cross compilation support

Download the new release from the download page.

Tags: [ release ]

Written by Raimo, 25 Nov 2009

Erlang/OTP R13B03 has been released. R13B03 is a service release for R13B. There are mostly error corrections, but also some new functionality. Some highlights in the R13B03 release are:

  • Native Implemented Functions (NIFs) still experimental but very useful. Feedback is welcome.
  • Beginning with this release we will maintain (and update on a daily basis) a GIT repository on GitHub. The intention is that this will make it easier for users to contribute with bugfixes and new functionality and also easier for us to receive the contributions.
  • The documentation is built in a new way using xsltproc and Apache FOP. The layout is changed both in HTML and PDF versions. This is the first step, more changes and improvements will come in the following releases.
  • A completely new erlang.org web site (this one) is also on its way but slightly delayed. Will be launched really soon now.

Download the new release from the download page.

Tags: [ release ]