Erlang OTP 23.0 Released

Henrik Nord X henrik.x.nord@REDACTED
Wed May 13 10:48:13 CEST 2020


OTP 23

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

    SSL:
        Support for SSL 3.0 is completely removed.
        TLS 1.3 is added to the list of default supported versions.
    erl_interface: Removed the deprecated parts of erl_interface
(erl_interface.h and essentially all C functions with prefix erl_).
    The deprecated erlang:get_stacktrace/0 BIF now returns an empty
list instead of a stacktrace. erlang:get_stacktrace/0 is scheduled for
removal in OTP 24.

Improvements and new features

    ssh:
        OpenSSH 6.5 introduced a new file representation of keys called
openssh-key-v1. This is now supported with the exception of handling
encrypted keys.
        Algorithm configuration could now be done in a .config file.
This is useful for example to enable an algorithm that is disabled by
default without need to change the code.

    SSL:
        Support for the middlebox compatibility mode makes the TLS 1.3
handshake look more like a TLS 1.2 handshake and increases the chance
of successfully establishing TLS 1.3 connections through legacy
middleboxes.
        Add support for key exchange with Edward curves and PSS-RSA
padding in signature verification

    The possibility to run Erlang distribution without relying on EPMD
has been extended. To achieve this a couple of new options to the inet
distribution has been added.
        -dist_listen false Setup the distribution channel, but do not
listen for incoming connection.
        -erl_epmd_port Port Configure a default port that the built-in
EPMD client should return.

    A first EXPERIMENTAL socket backend to
    gen_tcp and inet has been implemented. gen_udp and gen_sctp will
follow.
    Putting {inet_backend, socket} as first option to listen() or
connect() makes it easy to try this for existing code

    A new module erpc in kernel which implements an enhanced subset of
the operations provided by the rpc module. Enhanced in the sense that
it makes it possible to distinguish between returned value, raised
exceptions and other errors. erpc also has better performance and
scalability than the original rpc implementation. This by utilizing the
newly introduced spawn_request() BIF. Also the rpc module benefits from
these improvements by utilizing erpc when possible.

    Scalability and performance Improvements plus new functionality
regarding distributed spawn operations.

    In binary matching, the size of the segment to be matched is now
allowed to be a guard expression (EEP-52)

    When matching with maps the keys can now be guard expressions (EEP-
52).

    ssh: support for TCP/IP port forwarding, a.k.a tunnelling a.k.a as
tcp-forward/direct-tcp is implemented. In the OpenSSH client, this
corresponds to the options -L and -R.

    Allow underscores in numeric literals to improve readability.
Examples: 123_456_789, 16#1234_ABCD.

    New functions in the shell for displaying documentation for Erlang
modules, functions and types. The
    functions are:
        h/1,2,3 -- Print the documentation for a Module:Function/Arity.
        ht/1,2,3 -- Print the type documentation for a
Module:Type/Arity.
        The embedded documentation is created as docchunks (EEP 48)
when building the Erlang/OTP documentation.

    kernel: The module pg with a new implementation of distributed
named process groups is introduced. The old module pg2 is deprecated
and scheduled for removal in OTP 24.

    Our tool chain for building the Windows packages is upgraded with
new C++ compiler, Java compiler, OpenSSL libraries and wxWidgets
versions. We are now using WSL (the Linux Subsystem for Windows when
building) which makes it easier to handle the build environment.

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

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

Online documentation can be browsed here:
http://erlang.org/documentation/doc-11.0/doc
The Erlang/OTP source can also be found at GitHub on the official
Erlang repository,
https://github.com/erlang/otp

As always:
Than you all for your contributions.
Erlang/OTP Team 
Ericsson AB


More information about the erlang-questions mailing list