Skip to content

Releases: erlang/otp

OTP 21.0.2

25 Sep 11:39
Compare
Choose a tag to compare
Patch Package:           OTP 21.0.2
Git Tag:                 OTP-21.0.2
Date:                    2018-07-04
Trouble Report Id:       OTP-15067, OTP-15151, OTP-15156, OTP-15157,
                         OTP-15158, OTP-15159, OTP-15166
Seq num:                 ERL-573, ERL-654, ERL-655, ERL-660
System:                  OTP
Release:                 21
Application:             compiler-7.2.2, erts-10.0.2,
                         public_key-1.6.1, stdlib-3.5.1
Predecessor:             OTP 21.0.1

 Check out the git tag OTP-21.0.2, and build a full OTP system
 including documentation. Apply one or more applications from this
 build as patches to your installation using the 'otp_patch_apply'
 tool. For information on install requirements, see descriptions for
 each application version below.

 ---------------------------------------------------------------------
 --- compiler-7.2.2 --------------------------------------------------
 ---------------------------------------------------------------------

 The compiler-7.2.2 application can be applied independently of other
 applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15156    Application(s): compiler
               Related Id(s): ERL-655

               In rare cases involving matching of binary literal
               strings, the compiler could optimize away code that
               should be executed.


  OTP-15157    Application(s): compiler

               There could be an internal consistency check failure
               when compiling code that called map_get(Key, Map) and
               then updated the same map.


  OTP-15166    Application(s): compiler
               Related Id(s): ERL-660

               In rare circumstances, the compiler could crash in
               beam_jump when compiling a floating point operation.


 Full runtime dependencies of compiler-7.2.2: crypto-3.6, erts-9.0,
 hipe-3.12, kernel-4.0, stdlib-2.5


 ---------------------------------------------------------------------
 --- erts-10.0.2 -----------------------------------------------------
 ---------------------------------------------------------------------

 The erts-10.0.2 application can be applied independently of other
 applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15067    Application(s): erts
               Related Id(s): ERL-573

               Fixed a rare bug that could cause processes to be
               scheduled after they had been freed.


  OTP-15158    Application(s): erts
               Related Id(s): ERL-654

               Fixed a race condition in the inet driver that could
               cause receive to hang when the emulator was compiled
               with gcc 8.


 Full runtime dependencies of erts-10.0.2: kernel-6.0, sasl-3.0.1,
 stdlib-3.5


 ---------------------------------------------------------------------
 --- public_key-1.6.1 ------------------------------------------------
 ---------------------------------------------------------------------

 The public_key-1.6.1 application can be applied independently of
 other applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15151    Application(s): public_key
               Related Id(s): OTP-15113

               Some of the keylengths in the newly generated moduli
               file in public_key are not universally supported. This
               could cause the SSH key exchange
               diffie-hellman-group-exchange-sha* to fail.

               Those keylengths are now removed.


 Full runtime dependencies of public_key-1.6.1: asn1-3.0, crypto-3.8,
 erts-6.0, kernel-3.0, stdlib-3.5


 ---------------------------------------------------------------------
 --- stdlib-3.5.1 ----------------------------------------------------
 ---------------------------------------------------------------------

 The stdlib-3.5.1 application can be applied independently of other
 applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15159    Application(s): stdlib

               Fix a bug that could cause a crash when formatting a
               list of non-characters using the control sequences p or
               P and limiting the output with the option chars_limit.


 Full runtime dependencies of stdlib-3.5.1: compiler-5.0, crypto-3.3,
 erts-10.0, kernel-6.0, sasl-3.0


 ---------------------------------------------------------------------
 ---------------------------------------------------------------------
 ---------------------------------------------------------------------

OTP 21.0.1

25 Sep 11:39
Compare
Choose a tag to compare
Patch Package:           OTP 21.0.1
Git Tag:                 OTP-21.0.1
Date:                    2018-06-26
Trouble Report Id:       OTP-15147, OTP-15150
Seq num:                 ERL-644, ERL-650
System:                  OTP
Release:                 21
Application:             compiler-7.2.1, erts-10.0.1
Predecessor:             OTP 21.0

 Check out the git tag OTP-21.0.1, and build a full OTP system
 including documentation. Apply one or more applications from this
 build as patches to your installation using the 'otp_patch_apply'
 tool. For information on install requirements, see descriptions for
 each application version below.

 ---------------------------------------------------------------------
 --- compiler-7.2.1 --------------------------------------------------
 ---------------------------------------------------------------------

 The compiler-7.2.1 application can be applied independently of other
 applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15150    Application(s): compiler
               Related Id(s): ERL-650

               The compiler could could crash when compiling a
               complicated function that used the binary syntax.


 Full runtime dependencies of compiler-7.2.1: crypto-3.6, erts-9.0,
 hipe-3.12, kernel-4.0, stdlib-2.5


 ---------------------------------------------------------------------
 --- erts-10.0.1 -----------------------------------------------------
 ---------------------------------------------------------------------

 The erts-10.0.1 application can be applied independently of other
 applications on a full OTP 21 installation.

 --- Fixed Bugs and Malfunctions ---

  OTP-15147    Application(s): erts
               Related Id(s): ERL-644

               The keys used in os:getenv and os:putenv are
               case-insensitive again on Windows.


 Full runtime dependencies of erts-10.0.1: kernel-6.0, sasl-3.0.1,
 stdlib-3.5


 ---------------------------------------------------------------------
 ---------------------------------------------------------------------
 ---------------------------------------------------------------------

OTP 21.0

19 Jun 14:10
Compare
Choose a tag to compare

Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities.

Potential Incompatibilities

  • All Corba applications are now moved from the OTP repository
  • A new Corba repository will be created https://github.com/erlang
  • New applications ftp and tftp, moved from inets
  • ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default
  • Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception. Instead a monitor will be created, but it will only supervise the connection to the node.

Highlights
Erts:

  • Enhanced IO scalability
  • Support for usage of distribution controller processes for alternative transports, routing etc
  • compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code
  • Rewrite of the efile-driver with NIFs and "Dirty schedulers" resulting in faster file operations
    non-smp VM removed
  • link and monitor optimized for scalability
  • os:getenv/putenv now work on thread-safe emulation. No longer in sync with libc getenv(3). Manual synchronization will be needed.

Compiler:

  • Misc compiler optimizations including contributions from the Elixir team resulting in 10% improvements in benchmarks
  • "Tuple calls" have been removed from the run-time system.
  • Code such as f({ok, Val}) -> {ok, Val} is now automatically rewritten to f({ok, Val} = Tuple) -> Tuple. this reduces code size, execution time, and removed GC pressure.
  • More information in stacktrace from a number of operators
  • erlang:get_stacktrace/0 deprecated to be replaced with try ... catch C:R:Stacktrace -> ...
  • Creation of small maps with literal keys optimized.
  • A new predefined macro OTP_RELEASE and preprocessor directives -if and -elif

Security:

  • DTLS is now supported in the SSL application
  • Enhanced support for distribution over TLS
  • "unsecure" ciphers removed from defaults in SSL and SSH.
  • A new option value defined to facilitate implementing exec servers. Old option kept for compatibility, but now gives errors on stderror.

Standard libraries:

  • New API for logging, logger
  • New uri_string module for parsing URIs according to "The standard"
  • New function lists:search(list,fun/1) -> {ok, Value} | false
  • Changed default behaviour of .erlang loading. escript, erlc, dialyzer and typer no longer load an .erlang at all.

For more details see
http://erlang.org/download/otp_src_21.0.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_21.0.exe
http://erlang.org/download/otp_win64_21.0.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-10.0/doc

OTP 21.0 Release Candidate 2

30 May 09:13
Compare
Choose a tag to compare
Pre-release

OTP 21 Release Candidate 2

This is the second of two planned release candidates before the OTP 21 release.

The intention whit this release is that you as users try it and give us feedback

Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities.
Potential Incompatibilities

  • All Corba applications are now moved from the OTP repository
  • A new Corba repository will be created https://github.com/erlang
  • New applications ftp and tftp, moved from inets
  • ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default
  • Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception. Instead a monitor will be created, but it will only supervise the connection to the node.

Highlights
Erts:

  • Enhanced IO scalability
  • Support for usage of distribution controller processes for alternative transports, routing etc
  • compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code
  • Rewrite of the efile-driver with NIFs and "Dirty schedulers" resulting in faster file operations
    non-smp VM removed
  • link and monitor optimized for scalability
  • os:getenv/putenv now work on thread-safe emulation. No longer in sync with libc getenv(3). Manual synchronization will be needed.

Compiler:

  • Misc compiler optimizations including contributions from the Elixir team resulting in 10% improvements in benchmarks
  • "Tuple calls" have been removed from the run-time system.
  • Code such as f({ok, Val}) -> {ok, Val} is now automatically rewritten to f({ok, Val} = Tuple) -> Tuple. this reduces code size, execution time, and removed GC pressure.
  • More information in stacktrace from a number of operators
  • erlang:get_stacktrace/0 deprecated to be replaced with try ... catch C:R:Stacktrace -> ...
  • Creation of small maps with literal keys optimized.

Security:

  • DTLS support in SSL
  • Enhanced support for distribution over TLS
  • "unsecure" ciphers removed from defaults in SSL and SSH.
  • A new option value defined to facilitate implementing exec servers. Old option kept for compatibility, but now gives errors on stderror.

Standard libraries:

  • New API for logging, logger
  • New uri_string module for parsing URIs according to "The standard"
  • New function lists:search(list,fun/1) -> {ok, Value} | false
  • Changed default behaviour of .erlang loading. escript, erlc, dialyzer and typer no longer load an .erlang at all.

For more details see
http://erlang.org/download/otp_src_21.0-rc2.readme

Pre built versions for Windows can be fetched here:
http://erlang.org/download/otp_win32_21.0-rc2.exe
http://erlang.org/download/otp_win64_21.0-rc2.exe

Online documentation can be browsed here:
http://erlang.org/documentation/doc-10.0-rc2/doc

OTP 21.0 Release Candidate 1

02 May 11:35
Compare
Choose a tag to compare
Pre-release

OTP 21 Release Candidate 1

This is the first of two planned release candidates before the OTP 21 release.

The intention whit this release is that you as users try it and give us feedback

Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities.
Potential Incompatibilities

  • All Corba applications are now moved from the OTP repository
  • A new Corba repository will be created https://github.com/erlang
  • New applications ftp and tftp, moved from inets
  • ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default
  • Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception. Instead a monitor will be created, but it will only supervise the connection to the node.

Highlights
Erts:

  • Enhanced IO scalability
  • Support for usage of distribution controller processes for alternative transports, routing etc
  • compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code
  • Rewrite of the efile-driver with NIFs and "Dirty schedulers" resulting in faster file operations
    non-smp VM removed
  • link and monitor optimized for scalability
  • os:getenv/putenv now work on thread-safe emulation. No longer in sync with libc getenv(3). Manual synchronization will be needed.

Compiler:

  • Misc compiler optimizations including contributions from the Elixir team resulting in 10% improvements in benchmarks
  • "Tuple calls" have been removed from the run-time system.
  • Code such as f({ok, Val}) -> {ok, Val} is now automatically rewritten to f({ok, Val} = Tuple) -> Tuple. this reduces code size, execution time, and removed GC pressure.
  • More information in stacktrace from a number of operators
  • erlang:get_stacktrace/0 deprecated to be replaced with try ... catch C:R:Stacktrace -> ...
  • Creation of small maps with literal keys optimized.

Security:

  • DTLS support in SSL
  • Enhanced support for distribution over TLS
  • "unsecure" ciphers removed from defaults in SSL and SSH.
  • A new option value defined to facilitate implementing exec servers. Old option kept for compatibility, but now gives errors on stderror.

Standard libraries:

  • New API for logging, logger
  • New uri_string module for parsing URIs according to "The standard"
  • New function lists:search(list,fun/1) -> {ok, Value} | false
  • Changed default behaviour of .erlang loading. escript, erlc, dialyzer and typer no longer load an .erlang at all.

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

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

Online documentation can be browsed here:
http://erlang.org/documentation/doc-10.0-rc1/doc

OTP 20.3

14 Mar 09:52
Compare
Choose a tag to compare

Erlang/OTP 20.3 is the third service release for the 20 major release.
The service release contains mostly bug fixes and characteristics
improvements but also some new features.

Some highlights for 20.3

  • ssl:

    • Added new API functions to facilitate cipher suite
      handling
  • erts, observer:

    • More crash dump info such as: process binary virtual
      heap stats, full info for process causing out-of-mem
      during GC, more port related info, and dirty scheduler
      info.
  • inets:

    • Add support for unix domain sockets in the http client.

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

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

The source distribution and binary distributions for Windows can be
downloaded from

http://www.erlang.org/download/otp_src_20.3.tar.gz
http://www.erlang.org/download/otp_win32_20.3.exe
http://www.erlang.org/download/otp_win64_20.3.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-20.3

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_20.3.tar.gz
http://www.erlang.org/download/otp_doc_man_20.3.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

OTP 20.2

13 Dec 09:32
Compare
Choose a tag to compare

Erlang/OTP 20.2 is the second service release for the 20 major release.
The service release contains mostly bug fixes and characteristics
improvements but also some new features.

Some highlights for 20.2

  • crypto, ssl:

    • The crypto API is extended to use private/public keys
      stored in an Engine for sign/verify or encrypt/decrypt
      operations.
  • The ssl application provides an API to use this new
    engine concept in TLS.

  • ssh:

    • SSH can now fetch the host key from the private keys
      stored in an Engine. See the crypto application for
      details about Engines.
  • ssl:

    • A new command line option -ssl_dist_optfile has been
      added to facilitate specifying the many options needed
      when using SSL as the distribution protocol.
  • stdlib:

    • Improve performance of the new string functionality
      when handling ASCII characters.

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

http://www.erlang.org/download/otp_src_20.2.readme

The source distribution and binary distributions for Windows can be
downloaded from

http://www.erlang.org/download/otp_src_20.2.tar.gz
http://www.erlang.org/download/otp_win32_20.2.exe
http://www.erlang.org/download/otp_win64_20.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-20.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_20.2.tar.gz
http://www.erlang.org/download/otp_doc_man_20.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

OTP 20.1

26 Sep 14:45
Compare
Choose a tag to compare

Erlang/OTP 20.1 is the first service release for the 20 major release.
The service release contains mostly bug fixes and characteristics improvements but also some new features.

Some highlights for 20.1

  • crypto, public_key: Extend crypto and public_key functions sign and verify with:

    • support for RSASSA-PS padding for signatures and for
      saltlength setting
    • X9.31 RSA padding.
    • sha, sha224, sha256, sha384, and sha512 for dss
      signatures as mentioned in NIST SP 800-57 Part 1.
    • ripemd160 to be used for rsa signatures.
  • A new tuple in crypto:supports/0 reports supported MAC
    algorithms.

  • diameter:

    • Add service option decode_format to allow incoming messages to be decoded into maps
      instead of records.
    • Decode performance has been improved.
    • Add service/transport option avp_dictionaries to give better support for dictionaries only defining AVPs.
  • erts: Upgraded the ERTS internal PCRE library from version 8.40 to version 8.41.

  • erts, kernel, tools: Profiling with lock counting can now be fully toggled at runtime in
    the lock counting emulator (-emu_type lcnt). Everything
    is enabled by default to match the old behavior, but
    specific categories can be toggled at will with minimal
    runtime overhead when disabled. Refer to the
    documentation on lcnt:rt_mask/1 for details.

    lcnt:collect and lcnt:clear will no longer block all
    other threads in the runtime system. This makes it possible to run the lock counting
    under heavier load.

  • erts: The zlib module has been refactored and all its operations will now yield appropriately,
    allowing them to be used freely in concurrent applications.

  • erts, tools: Add erlang:iolist_to_iovec/1, which converts an
    iolist() to an erlang:iovec(), which is suitable for use
    with enif_inspect_iovec().

  • erts: Add new nif API functions for managing an I/O Queue.
    The added functions are: enif_ioq_create(), enif_ioq_destroy(), enif_ioq_enq_binary(),
    enif_ioq_enqv(), enif_ioq_deq(), enif_ioq_peek(), enif_inspect_iovec(), enif_free_iovec()

  • observer/crashdump_viewer:

    • Reading of crash dumps with many binaries is optimized.
    • A progress bar is shown when the detail view for a process is opened.
    • The cdv script now sets ERL_CRASH_DUMP_SECONDS=0 to
      avoid generating a new crash dump from the node running the Crashdump Viewer.
  • observer:
    Add system statistics and limits to frontpage in
    observer.

  • public_key, ssl**:
    Improved error propagation and reports

  • ssh: A new option modify_algorithms is implemented. It
    enables specifying changes on the default algorithms
    list. See the reference manual and the SSH User's Guide
    chapter "Configuring algorithms in SSH".

  • tools/xref: The predefined Xref analysis locals_not_used now understands
    the -on_load() attribute and does not report unused functions.

  • tools/fprof: When sampling multiple processes and analyzing
    with totals set to true, the output now sums together
    all caller and callee entries which concerns the same
    function. Previous behaviour was to report each
    contributing entry separately.

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

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

The source distribution and binary distributions for Windows can be
downloaded from

http://www.erlang.org/download/otp_src_20.1.tar.gz
http://www.erlang.org/download/otp_win32_20.1.exe
http://www.erlang.org/download/otp_win64_20.1.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-20.1

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_20.1.tar.gz
http://www.erlang.org/download/otp_doc_man_20.1.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

OTP 20.0

21 Jun 12:21
Compare
Choose a tag to compare

Erlang/OTP 20.0

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

There are only minor changes compared to the second release candidate, some of them listed below:

  • ERTS:
    • In the OTP 20 release candidates the function erlang:term_to_binary/1 changed the encoding of all atoms from ATOM_EXT to ATOM_UTF8_EXT and SMALL_ATOM_UTF8_EXT. This is now changed so that only atoms actually containing unicode characters are encoded with the UTF8 tags while other atoms are encoded ATOM_EXT just as before.

Here are some of the most important news in OTP 20:

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.
    • Atoms can now contain arbitrary unicode characters which means that the DFLAG_UTF8_ATOMS capability in the distribution protocol must be supported if an OTP 20 node should accept the connection with another node or library. Third party libraries which uses the distribution protocol need to be updated with this.
  • 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
  • Improvements of timers internally in the VM resulting in reduced memory consumption and more efficient administration for timers

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

  • Significantly updated string module with unicode support and many new functions
  • crypto now supports OpenSSL 1.1
  • Unnamed ets tables optimized
  • gen_fsm is deprecated and replaced by gen_statem
  • 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
  • erl_tar support for long path names and new file formats
  • asn1: the new maps option changes the representation of SEQUENCE to be maps instead of records
  • A TLS client will by default call public_key:pkix_verify_hostname/2 to verify the hostname
  • ssl: DTLS documented in the 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.readme

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

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

Thanks to all contributors.

OTP 20.0 Release Candidate 2

31 May 16:12
Compare
Choose a tag to compare
Pre-release

OTP 20 Release Candidate 2

This is the second of two release candidates before the OTP 20 release. 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.

There are only minor changes compared to the first release candidate, some of them listed below:

  • erts: ./configure --enable-lock-counter will enable building of an additional emulator that has support for
    lock counting. (The option previously existed, but would turn on lock counting in the default emulator
    being built.) To start the lock-counting emulator, use erl -emu_type lcnt.
  • kernel: Added the process_flag message_queue_data = off_heap to the code_server process in order to
    improve characteristics during code upgrade, which can generate a huge amount of messages.

Here are some of the most important news in OTP 20 (same as in RC1):

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-rc2.readme

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

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

Thanks to all contributors.