Potential Incompatibilities
- Erlang run-time system
- 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.
- The deprecated
- 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 prefixerl_
).
- Removed the deprecated parts of
- stdlib
- In OTP-23.2 a bug fix in uri_string causes decoding of percent-encoded characters to potentially not behave is before.
For a full list see OTP 23.0 - Potential Incompatibilities.
Highlights
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.
- 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.
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.
- Support for key exchange with Edward curves and PSS-RSA padding in signature verification
Language and run-time
- 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).
- 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 aModule:Function/Arity
.ht/1,2,3
– Print the type documentation for aModule:Type/Arity
.
The embedded documentation is created as docchunks (EEP 48) when building the Erlang/OTP documentation.
- 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.
Networking
- 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 togen_tcp
andinet
has been implemented.gen_udp
andgen_sctp
will follow. Putting{inet_backend, socket}
as first option tolisten()
orconnect()
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 therpc
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 originalrpc
implementation. This by utilizing the newly introducedspawn_request()
BIF. Also therpc
module benefits from these improvements by utilizingerpc
when possible. - Scalability and performance Improvements plus new functionality regarding distributed spawn operations.
- The module
pg
with a new implementation of distributed named process groups is introduced. The old modulepg2
is deprecated and scheduled for removal in OTP 24.