Erlang/OTP 24.0

This release of Erlang/OTP can be built from source or installed using pre-built packages for your OS or third-party tools (such as kerl or asdf).

docker run -it erlang:24.0

Highlights #

OTP-10391
Application(s):
compiler
Related Id(s):
OTP-16226

Selective receive optimization will now be applied much more often.

The new recv_opt_info compile flag can be used to print diagnostics relating to this optimization.

You can read more about the selective receive optimization in the Efficiency Guide.

OTP-15523
Application(s):
ftp
Related Id(s):
OTP-15352 , PR-1968

Add support for FTPES (explicit FTP over TLS).

OTP-16611
Application(s):
kernel
Related Id(s):
OTP-16749

A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket). Used when setting the kernel application variable inet_backend = socket.

OTP-16686
Application(s):
debugger, erts, kernel, stdlib

Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.

When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail.

For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4.

There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions.

OTP-16706
Application(s):
compiler
Related Id(s):
ERL-1281

Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised).

OTP-16718
Application(s):
erts, kernel, stdlib
Related Id(s):
PR-2735

The process alias feature as outlined by EEP 53 has been introduced. It is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF.

The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26.

The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced.

OTP-16800
Application(s):
wx

The application has been completely rewritten in order to use wxWidgets version 3 as its base.

Add basic documentation generated from the wxWidgets project.

OTP-16824
Application(s):
compiler
Related Id(s):
PR-2664 , PR-3006

*** POTENTIAL INCOMPATIBILITY ***

Compiler warnings and errors now include column numbers in addition to line numbers.

When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line.

The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}).

The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code.

OTP-16885
Application(s):
erts
Related Id(s):
PR-2745

The BeamAsm JIT-compiler has been added to Erlang/OTP. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor).

For more information see the internal documentation of BeamAsm in erts.

OTP-16949
Application(s):
edoc
Related Id(s):
OTP-17192 , PR-2803

*** POTENTIAL INCOMPATIBILITY ***

EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes.

EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0.

The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found.

The ?NO_APP macro in edoc_doclet.hrl has been deprecated. Use the atom no_app instead.

See the Doc chunks chapter in the Edoc User's Guide for more details.

OTP-16964
Application(s):
compiler

Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type (instead of raising an ad-hoc badarg or badarih exception). Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised. Some minor bugs in the compilation of binary comprehensions have also been fixed.

OTP-16981
Application(s):
compiler
Related Id(s):
ERL-1113

Some compiler warnings, such as the warning for an expression whose result is ignored, could not be suppressed by assigning to a variable beginning with '_', but only by assigning to the anonymous variable ('_'). This has now been changed so that any warning that can be suppressed by assigning to the anonymous variable can also be suppressed by assigning to a variable beginning with '_'.

OTP-17044
Application(s):
ssl
Related Id(s):
PR-2654

Make TLS handshakes in Erlang distribution concurrent.

OTP-17142
Application(s):
crypto, public_key, ssl
Related Id(s):
GH-4637 , GH-4650 , PR-4756

TLS connections now support EdDSA certificates.

OTP-17213
Application(s):
wx
Related Id(s):
PR-3027

Added support for wxWebView.

OTP-17226
Application(s):
compiler
Related Id(s):
GH-4019 , PR-4545

The compiler will now inline funs that are used only once immediately after their definition.

OTP-17334
Application(s):
stdlib
Related Id(s):
EEP-56 , PR-4638

Implementation of EEP 56 in supervisor. It adds the concept of significant children as well as the auto_shutdown supervisor flag.

See the supervisor manual page for more information.

Potential Incompatibilities #

OTP-15107
Application(s):
stdlib
Related Id(s):
ERL-1381 , PR-2813

Time-outs in gen_statem with relative time 0 did not behave quite according to the intended model. This has now been corrected.

The correction introduces a small potential incompatibility e.g when combining a state time-out with inserted events, and the inserted event does a state change in the state with the time-out. Before this correction the state time-out could be delivered even after the second state change, but now it is guaranteed that a state time-out is only delivered in the state it was started for, even in this corner case.

OTP-16560
Application(s):
megaco

All the pre-v3 codec(s) (prev3a, prev3b and prev3c) was deprecated in OTP-23.0. They have now been removed.

OTP-16656
Application(s):
crypto

The functions and cipher names that were deprecated in OTP-23.0 are now removed.

OTP-16749
Application(s):
erts, kernel
Related Id(s):
OTP-14601

The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made.

The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data.

Some type names have been changed regarding message headers and control message headers.

socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1.

OTP-16809
Application(s):
kernel
Related Id(s):
ERL-1313

Change the value of the tag head returned by disk_log:info/1 from {ok, Head} to just Head.

OTP-16811
Application(s):
kernel

Remove the support for distributed disk logs. The new function disk_log:all/0 is to be used instead of disk_log:accessible_logs/0. The function disk_log:close/1 is to be used instead of disk_log:lclose/1,2.

OTP-16824
Application(s):
compiler
Related Id(s):
PR-2664 , PR-3006

*** HIGHLIGHT ***

Compiler warnings and errors now include column numbers in addition to line numbers.

When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line.

The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}).

The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code.

OTP-16878
Application(s):
erts

The code loader has been rewritten in order to be able to load JIT:ed code. As a consequence of this, it is no longer possible to load HiPE code.

OTP-16943
Application(s):
os_mon
Related Id(s):
OTP-16906

The temporarily introduced configuration parameter memsup_improved_system_memory_data has been removed.

OTP-16945
Application(s):
erts

Change escripts to output any errors or warnings to standard error instead of standard out.

OTP-16949
Application(s):
edoc
Related Id(s):
OTP-17192 , PR-2803

*** HIGHLIGHT ***

EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes.

EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0.

The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found.

The ?NO_APP macro in edoc_doclet.hrl has been deprecated. Use the atom no_app instead.

See the Doc chunks chapter in the Edoc User's Guide for more details.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16968
Application(s):
kernel

The pg2 module has been removed.

OTP-16970
Application(s):
erl_interface

The registry functionality part of erl_interface has been removed. It was as of OTP 23 deprecated and scheduled for removal in OTP 24.

OTP-16971
Application(s):
stdlib

The filename:src/1 function which was deprecated in OTP 20 has been removed. Use filelib:find_source/1,3 instead.

OTP-16974
Application(s):
ssl

Removed ssl:ssl_accept/1,2,3 and ssl:cipher:suites/0,1 use ssl:handshake/1,2,3 and ssl:cipher_suites/2,3 instead.

OTP-16987
Application(s):
erts

The erlang:monitor_node/2 BIF will now fail with a notalive exception if distribution has not been started on the current node; it used to fail with a badarg exception.

OTP-17062
Application(s):
kernel
Related Id(s):
ERIERL-537 , ERL-1418 , GH-4469

Let disk_log:open/1 change the size if a wrap log is opened for the first time, that is, the disk log process does not exist, and the value of option size does not match the current size of the disk log.

OTP-17156
Application(s):
kernel

Fix various issues with the gen_tcp_socket. Including documenting some incompatibilities.

OTP-17216
Application(s):
kernel
Related Id(s):
PR-2989

The behaviour for gen_tcp:connect/3,4 has been changed to not per default bind to an address, which allows the network stack to delay the address and port selection to when the remote address is known. This allows better port re-use, and thus enables far more outgoing connections, since the ephemeral port range no longer has to be a hard limit.

There is a theoretical possibility that this behaviour change can affect the set of possible error values, or have other small implications on some platforms.

OTP-17219
Application(s):
wx
Related Id(s):
OTP-16800

Due to the support of the new backend versions some API incompatibilities have been introduced. Examples of changes are:

wxWindowDC default creators have been removed wxClientDC default creators have been removed wxPaintDC default creators have been removed wxWindow:setVirtualSizeHints() has been deprecated in wxWidgets and removed
wxWindow:makeModal() has been deprecated in wxWidgets and removed
wxToolBar:add/insertTool without label have been deprecated in wxWidgets and removed
wxStyledTextCtrl some functions have changed arguments from boolean to int
wxSizerItem:new() Some arguments have become options Removed deprecated wxSizerItem:setWindow() use assignWindow()
Removed deprecated wxSizerItem:setSpacer() use assignSpacer()
Removed deprecated wxSizerItem:setSpacer() use assignSpacer()
Removed deprecated wxSizerItem:setSizer() use assignSizer()
wxMenu append/insert/prepend have changed return value and lost IsCheckable argument
wxListCtrl:setItem/4 changed return value wxImage:convertToGreyscale() options have changed wxGridSizer:wxGridSizer() options have changed
wxGrid API have many changes wxGraphicsRenderer:create*GradientBrush() uses GradientStops now
wxGraphicsRenderer:createPen() have been removed wxGraphicsRenderer:create*GradientBrush() uses GradientStops now
wxGLCanvas API is incompatible wxFlexGridSizer:wxFlexGridSizer() options have changed wxDisplay:new() options have changed wxCalendarDateAttr:new(ColText [,OptList]) have been removed
wxBitmapButton:set/getBitmapSelected() have been removed

OTP-17259
Application(s):
ssh
Related Id(s):
ERIERL-619 , OTP-16511

The RSA SHA1 sign/verify variants are disabled by default. That is, ssh-rsa is disabled by default as well as the SHA1 sign/verify with RSA keys from id_rsa and ssh_host_rsa_key. All SHA2 sign/verify are enabled by default.

The reason is that SHA1 is now considered easy to break.

To enable RSA with SHA1, for example for a very old and unsafe peer, see Example 9 in the User's Guide chapter Configuring algorithms in SSH.

OTP-17275
Application(s):
erts
Related Id(s):
PR-4553

The erl command line arguments +Bi, +Bd, and +B erroneously caused reception of the USR1 signal to terminate the runtime system without creating a crash dump. Reception of the USR1 signal now always cause termination *with* creation of a crash dump, regardless of command line arguments passed. This bug has existed at least since OTP R5B.

OTP-17355
Application(s):
kernel
Related Id(s):
OTP-17154

The return values from module socket functions send(), sendto(), sendmsg(), sendfile() and recv() has been changed to return a tuple tagged with select when a SelectInfo was returned, and not sometimes tagged with ok.

This is a backwards incompatible change that improves usability for code using asynchronous operations.

OTP-24.0 #

OTP-17272
Application(s):
otp
Related Id(s):
GH-4626 , PR-4627

Updated autoconf auxiliary files.

OTP-17278
Application(s):
otp
Related Id(s):
GH-4621

Do not allow a mandatory application to be disabled using the configure switch --without-appname.

OTP-17373
Application(s):
otp
Related Id(s):
PR-4645

A build of OTP configured with --without-jinterface now builds without complaining about missing jinterface files.

OTP-17378
Application(s):
otp
Related Id(s):
PR-4791

The documentation about signaling in Erlang has been improved in the Processes chapter of the Erlang Reference Manual.

asn1-5.0.16 #

OTP-17387
Application(s):
asn1
Related Id(s):
OTP-17123

Fixed a bug in the asn1 compiler that potentially could cause it to fail to open a file.

Full runtime dependencies of asn1-5.0.16: erts-7.0, kernel-3.0, stdlib-2.0

common_test-1.20.3 #

OTP-16940
Application(s):
common_test
Related Id(s):
ERL-1335

The option release_shell could crash when used together with the spec option.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of common_test-1.20.3: compiler-6.0, crypto-3.6, debugger-4.1, erts-7.0, ftp-1.0.0, inets-6.0, kernel-4.0, observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0, stdlib-3.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8

compiler-8.0 #

OTP-17077
Application(s):
compiler, erts, stdlib
Related Id(s):
ERL-1431 , PR-2903 , PR-2905 , PR-2906

A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost.

OTP-17104
Application(s):
compiler
Related Id(s):
ERL-1380

A repeated stack trace variable in a try/catch was not rejected. The following example will now cause a compilation error:

try E catch _:A:A -> A end.

OTP-17118
Application(s):
compiler, stdlib
Related Id(s):
PR-2825

Eliminated a Dialyzer crashed when the -MMD option is used to generate a dependency file and a BEAM file a the same time.

OTP-17206
Application(s):
compiler

When the makedep option was given, the compiler would crash if the dependency output contained non-latin1 characters. The compiler will now output the dependency information encoded in UTF-8 to avoid crashing.

OTP-10391
Application(s):
compiler
Related Id(s):
OTP-16226

*** HIGHLIGHT ***

Selective receive optimization will now be applied much more often.

The new recv_opt_info compile flag can be used to print diagnostics relating to this optimization.

You can read more about the selective receive optimization in the Efficiency Guide.

OTP-16334
Application(s):
compiler

erlang:throw/1 will no longer build stack traces when we can prove that they will never be inspected.

OTP-16706
Application(s):
compiler
Related Id(s):
ERL-1281

*** HIGHLIGHT ***

Variables bound between the keywords 'try' and 'of' can now be used in the clauses following the 'of' keyword (that is, in the success case when no exception was raised).

OTP-16824
Application(s):
compiler
Related Id(s):
PR-2664 , PR-3006

*** HIGHLIGHT ***

*** POTENTIAL INCOMPATIBILITY ***

Compiler warnings and errors now include column numbers in addition to line numbers.

When a compiler message is emitted, the source line is printed along with a marker (a ^ character) that indicates the column position of the issue. The option 'brief' removes the printout of the source line.

The compiler option {error_location, line | column} has been added. The default value is column. Besides adding column numbers to compilation warnings and errors, the option also determines whether column numbers are included in abstract code. If tools stop working, setting the environment variable ERL_COMPILER_OPTIONS can help (include {error_location, line}).

The compiler will now call the function PT:parse_transform_info/0 in parse transforms (if it exists). It can be used by parse transforms to signal that they can only handle line numbers in abstract code.

OTP-16867
Application(s):
compiler
Related Id(s):
ERL-1354

Fixed a performance bug that made functions with lots of try/after blocks slow to compile.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16964
Application(s):
compiler

*** HIGHLIGHT ***

Generators in list and binary comprehensions will now raise a {bad_generator,Generator} exception if the generator has an incorrect type (instead of raising an ad-hoc badarg or badarih exception). Similarly, when a filter does not evaluate to a boolean, a {bad_filter,Filter} exception will be raised. Some minor bugs in the compilation of binary comprehensions have also been fixed.

OTP-16981
Application(s):
compiler
Related Id(s):
ERL-1113

*** HIGHLIGHT ***

Some compiler warnings, such as the warning for an expression whose result is ignored, could not be suppressed by assigning to a variable beginning with '_', but only by assigning to the anonymous variable ('_'). This has now been changed so that any warning that can be suppressed by assigning to the anonymous variable can also be suppressed by assigning to a variable beginning with '_'.

OTP-17078
Application(s):
compiler
Related Id(s):
ERL-1430 , PR-2918

The previously undocumented compiler options warn_missing_spec and warn_missing_spec_all are now documented.

OTP-17123
Application(s):
compiler

The compiler will now emit warnings when (previously bound) underscore-prefixed variables are matched.

OTP-17168
Application(s):
compiler

Erlang source files not encoded in utf-8 will no longer be accepted by the compiler unless it contains a "coding: latin-1" comment.

OTP-17172
Application(s):
compiler

New compiler options from_abstr and no_lint have been added. They are useful when implementing other languages running on the BEAM.

OTP-17207
Application(s):
compiler, erts

The bit matching and construction syntax now supports 16-bit floats (IEEE 754-2008).

OTP-17226
Application(s):
compiler
Related Id(s):
GH-4019 , PR-4545

*** HIGHLIGHT ***

The compiler will now inline funs that are used only once immediately after their definition.

OTP-17260
Application(s):
compiler

It is now possible to disable warnings emitted from the compiler's optimization passes with the new options nowarn_opportunistic, nowarn_nomatch, nowarn_ignored, and nowarn_failed.

OTP-17301
Application(s):
compiler, erts
Related Id(s):
GH-4636

Introduce new types nonempty_binary() and nonempty_bitstring().

OTP-17330
Application(s):
compiler, stdlib

Add compiler option {nowarn_unused_record, RecordNames}. Document compiler option nowarn_unused_type.

Full runtime dependencies of compiler-8.0: crypto-3.6, erts-11.0, kernel-7.0, stdlib-3.13

crypto-5.0 #

OTP-16882
Application(s):
crypto

Add /usr/local/opt/openssl to the openssl configure search path. This path is where some tools on OS X place openssl.

OTP-17105
Application(s):
crypto, erts, odbc, wx
Related Id(s):
PR-2872

Fix compiler warnings produced by the clang compiler.

OTP-17254
Application(s):
crypto, erts
Related Id(s):
ERIERL-618 , GH-4230

The configure scripts in crypto and erts now fail if a requested feature cannot be enabled.

Large parts of the configure script of crypto have been rewritten with various improvements and bug fixes. It is now better at finding usable OpenSSL libraries, but will in the following cases fail to detect OpenSSL libraries where it previously sometimes detected the libraries by chance:

-- OpenSSL installations with include directory and lib directory parts installed in different base directories. In order to detect such installations after this change, the user must explicitly specify the locations using the --with-ssl=<path> and the --with-ssl-incl=<path> configure command line arguments.

-- When building with old gcc compilers or other compilers on Debian derivatives with multiarch directories under the lib directory. In order to detect such installations after this change, the user must explicitly specify the multiarch directory name using the --with-ssl-lib-subdir=lib/<multiarch-dir> configure command line argument.

OTP-17312
Application(s):
crypto
Related Id(s):
PR-4723

The value 'none' was missing in the specs of crypto:sign/4 and crypto:verify/6.

OTP-16656
Application(s):
crypto

*** POTENTIAL INCOMPATIBILITY ***

The functions and cipher names that were deprecated in OTP-23.0 are now removed.

OTP-17001
Application(s):
crypto
Related Id(s):
PR-2852

Removed installed directory priv/obj/ containing superfluous object files.

OTP-17142
Application(s):
crypto, public_key, ssl
Related Id(s):
GH-4637 , GH-4650 , PR-4756

*** HIGHLIGHT ***

TLS connections now support EdDSA certificates.

OTP-17313
Application(s):
crypto
Related Id(s):
PR-4686

Add prop_aead attribute to map from crypto:cipher_info/1.

Full runtime dependencies of crypto-5.0: erts-9.0, kernel-5.3, stdlib-3.4

debugger-5.1 #

OTP-16686
Application(s):
debugger, erts, kernel, stdlib

*** HIGHLIGHT ***

Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.

When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail.

For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4.

There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions.

Full runtime dependencies of debugger-5.1: compiler-5.0, erts-9.0, kernel-5.3, stdlib-3.4, wx-1.2

dialyzer-4.4 #

OTP-16883
Application(s):
dialyzer

Some internal HiPE modules have been moved into the dialyzer application so that dialyzer works when HiPE is disabled.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16986
Application(s):
dialyzer
Related Id(s):
ERL-1379 , ERL-1480 , GH-4033

Add warning option no_underspecs.

OTP-16995
Application(s):
dialyzer
Related Id(s):
ERL-1348

Report filename and location for warnings returned due to the -Wunknown option. When used from the command-line, one location per file is printed.

OTP-17084
Application(s):
dialyzer

Add types and specifications for documentation.

OTP-17177
Application(s):
dialyzer
Related Id(s):
OTP-16824

Add option error_location. The option is recognized if included in the environment variable ERL_COMPILER_OPTIONS.

OTP-17183
Application(s):
dialyzer
Related Id(s):
ERL-892 , GH-4493

Clarify how to declare records used in match patterns.

Full runtime dependencies of dialyzer-4.4: compiler-7.0, erts-9.0, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2

edoc-1.0 #

OTP-17092
Application(s):
edoc

Fix so that the edoc_doclet option file_suffix also effects the links emitted into the module index.

OTP-16949
Application(s):
edoc
Related Id(s):
OTP-17192 , PR-2803

*** HIGHLIGHT ***

*** POTENTIAL INCOMPATIBILITY ***

EDoc, the Erlang documentation engine, hits version 1.0 with this release, which means a few changes.

EDoc is now capable of emitting EEP-48 doc chunks. This means that, with some configuration, community projects can now provide documentation for shell_docs the same way that OTP libraries did since OTP 23.0.

The @spec and @type EDoc tags have been deprecated. These are not supported with the new chunk-generating doclet and layout. Moreover, previously when there was a redundant @spec tag and -spec attribute defined for the same function, the @spec tag would take precedence. Now, the -spec attribute takes precedence and is more important. The same is true for redundant @type tags and -type attributes. Warnings are now emitted when such redundant entries are found.

The ?NO_APP macro in edoc_doclet.hrl has been deprecated. Use the atom no_app instead.

See the Doc chunks chapter in the Edoc User's Guide for more details.

OTP-17095
Application(s):
edoc
Related Id(s):
PR-2914

Edoc has been updated to use -spec to document its own interface instead of @doc@ tags.

Together with this change the inter-application linking for -spec style documentation has been improved.

OTP-17153
Application(s):
edoc
Related Id(s):
PR-2674

Allow user defined edoc macros to be functions.

Full runtime dependencies of edoc-1.0: erts-6.0, inets-5.10, kernel-3.0, stdlib-3.15, syntax_tools-1.6.14, xmerl-1.3.7

erl_docgen-1.1 #

OTP-17122
Application(s):
erl_docgen, stdlib

Fixed bug in shell_docs and erl_docgen that interpreted em tags as strong.

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

OTP-17257
Application(s):
erl_docgen

Fix bug where see* elements within type/name were removed when generating html. Bug has been present since OTP-21.

OTP-16877
Application(s):
erl_docgen

Add support for displaying .svg images.

OTP-17192
Application(s):
erl_docgen
Related Id(s):
PR-2803

Updated the way specs are generated after changes in edoc.

Full runtime dependencies of erl_docgen-1.1: edoc-1.0, erts-9.0, kernel-8.0, stdlib-3.15, xmerl-1.3.7

erl_interface-5.0 #

OTP-17132
Application(s):
erl_interface, kernel

Two options have been added to erl_call. The -fetch_stdout option fetches stdout data resulting from the code invoked by erl_call. The -fetch_stdout option disables printing of the result term. In order to implement the first of these two options a new function called ei_xrpc_from has been added to erl_interface. For details see the erl_call documentation and erl_interface documentation.

OTP-16720
Application(s):
erl_interface, erts, jinterface
Related Id(s):
PR-2680

Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16970
Application(s):
erl_interface

*** POTENTIAL INCOMPATIBILITY ***

The registry functionality part of erl_interface has been removed. It was as of OTP 23 deprecated and scheduled for removal in OTP 24.

OTP-17005
Application(s):
erl_interface, erts, jinterface, kernel, stdlib
Related Id(s):
OTP-16718

Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release.

OTP-17007
Application(s):
erl_interface, erts, jinterface

Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release.

OTP-17270
Application(s):
erl_interface
Related Id(s):
OTP-17127

Support the new link protocol in order to be able to phase out the old link protocol in the future. erl_interface does not support setting up or removing links from the erl_interface side, so the bug present with the old protocol did not effect erl_interface. This since both participants of a link simultaneously needed to operate on the link in order to trigger the bug.

OTP-16607
Application(s):
erl_interface
Related Id(s):
OTP-16608

The ei API for decoding/encoding terms is not fully 64-bit compatible since terms that have a representation on the external term format larger than 2 GB cannot be handled.

erts-12.0 #

OTP-16822
Application(s):
erts
Related Id(s):
PR-2723

file:open/2 now throws an badarg error when opened with both the ram and raw options.

OTP-16879
Application(s):
erts

The estone benchmark has been updated to better reflect changes in the compiler and run-time system.

OTP-16880
Application(s):
erts

Fix profile guided optimization of run-time system when using GCC 7 or later.

OTP-16884
Application(s):
erts

Fix double close of fd when creating crash dump.

OTP-17014
Application(s):
erts

Improve erl error message when unable to open included args_file.

OTP-17020
Application(s):
erts

Remove warning text about the -- operation from documentation

The -- operation was optimized in Erlang/OTP 22 so that its worst case complexity is O(N*log(N)), where N is the total size of the input lists. Therefore, the warning in the documentation saying that the time complexity is proportional to length(A)*length(B) is incorrect and is no longer needed. Notice that Erlang/OTP 21 will no longer be supported when Erlang/OTP 24 gets released.

OTP-17077
Application(s):
compiler, erts, stdlib
Related Id(s):
ERL-1431 , PR-2903 , PR-2905 , PR-2906

A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost.

OTP-17105
Application(s):
crypto, erts, odbc, wx
Related Id(s):
PR-2872

Fix compiler warnings produced by the clang compiler.

OTP-17131
Application(s):
erts
Related Id(s):
GH-4360 , PR-3031

Windows process erl.exe killed if its service process erlsrv.exe terminates.

OTP-17254
Application(s):
crypto, erts
Related Id(s):
ERIERL-618 , GH-4230

The configure scripts in crypto and erts now fail if a requested feature cannot be enabled.

Large parts of the configure script of crypto have been rewritten with various improvements and bug fixes. It is now better at finding usable OpenSSL libraries, but will in the following cases fail to detect OpenSSL libraries where it previously sometimes detected the libraries by chance:

-- OpenSSL installations with include directory and lib directory parts installed in different base directories. In order to detect such installations after this change, the user must explicitly specify the locations using the --with-ssl=<path> and the --with-ssl-incl=<path> configure command line arguments.

-- When building with old gcc compilers or other compilers on Debian derivatives with multiarch directories under the lib directory. In order to detect such installations after this change, the user must explicitly specify the multiarch directory name using the --with-ssl-lib-subdir=lib/<multiarch-dir> configure command line argument.

OTP-17275
Application(s):
erts
Related Id(s):
PR-4553

*** POTENTIAL INCOMPATIBILITY ***

The erl command line arguments +Bi, +Bd, and +B erroneously caused reception of the USR1 signal to terminate the runtime system without creating a crash dump. Reception of the USR1 signal now always cause termination *with* creation of a crash dump, regardless of command line arguments passed. This bug has existed at least since OTP R5B.

OTP-17314
Application(s):
erts
Related Id(s):
GH-4624 , OTP-15926 , PR-

Add check to make sure that when passing an option to erl that requires an argument, but none is given, we report an error. This fixes a bug introduced in OTP-22.1 via OTP-15926.

OTP-17329
Application(s):
erts
Related Id(s):
PR-4730

The "Last calls" section in crash dumps have been updated to print newlines after each non-function save_calls state (send, receive, timeout).

OTP-17372
Application(s):
erts, kernel

Sockets created with socket:accept not counted (socket:info/0).

OTP-14601
Application(s):
erts, kernel
Related Id(s):
OTP-16749 , PR-2641 , PR-2670

The experimental socket module can now use any protocol (by name) the OS supports. Suggested in PR-2641, implemented in PR-2670.

OTP-14753
Application(s):
erts

New functions enif_dynamic_resource_call enables NIFs to call native code in another NIF module. The call is done via a resource callback function dyncall supplied by the user with the new enif_init_resource_type.

OTP-16226
Application(s):
erts
Related Id(s):
OTP-10391

Runtime support for new improved selective receive optimization.

OTP-16653
Application(s):
erts

The deprecated function erlang:get_stacktrace/0 has been removed. Use the new syntax in try/catch to retrieve the stack backtrace.

OTP-16678
Application(s):
erts, stdlib, syntax_tools, tools
Related Id(s):
PR-2627

Support for handling abstract code created before OTP R15 has been dropped.

OTP-16686
Application(s):
debugger, erts, kernel, stdlib

*** HIGHLIGHT ***

Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.

When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail.

For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4.

There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions.

OTP-16687
Application(s):
erts
Related Id(s):
PR-2762 , PR-2996

The erlang module documentation has been updated to improve clarity and description of edge cases.

OTP-16703
Application(s):
erts, kernel
Related Id(s):
PR-2620

An example implementation of Erlang distribution over UDS using distribution processes has been introduced.

Thanks to Jérôme de Bretagne

OTP-16712
Application(s):
erts

Improve code generation when creating funs by adding a new beam instruction make_fun3 that does not do GC and allows for better register allocation.

OTP-16718
Application(s):
erts, kernel, stdlib
Related Id(s):
PR-2735

*** HIGHLIGHT ***

The process alias feature as outlined by EEP 53 has been introduced. It is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF.

The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26.

The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced.

OTP-16720
Application(s):
erl_interface, erts, jinterface
Related Id(s):
PR-2680

Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release.

OTP-16749
Application(s):
erts, kernel
Related Id(s):
OTP-14601

*** POTENTIAL INCOMPATIBILITY ***

The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made.

The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data.

Some type names have been changed regarding message headers and control message headers.

socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1.

OTP-16788
Application(s):
erts

Remove old unused +MYm and ERL_MALLOC_LIB options.

OTP-16814
Application(s):
erts
Related Id(s):
PR-2704

Increase timer resolution on windows.

OTP-16878
Application(s):
erts

*** POTENTIAL INCOMPATIBILITY ***

The code loader has been rewritten in order to be able to load JIT:ed code. As a consequence of this, it is no longer possible to load HiPE code.

OTP-16881
Application(s):
erts

Add support in the Erlang/OTP build system to generate a compilation database that can be used by third-party tools (such as irony in Emacs) to compile the erts C and C++ source code. Create the database using make compdb.

OTP-16885
Application(s):
erts
Related Id(s):
PR-2745

*** HIGHLIGHT ***

The BeamAsm JIT-compiler has been added to Erlang/OTP. The JIT-compiler is enabled by default on most x86 64-bit platforms that have a C++ compiler that can compile C++17. To verify that a JIT enabled emulator is running you can use erlang:system_info(emu_flavor).

For more information see the internal documentation of BeamAsm in erts.

OTP-16898
Application(s):
erts
Related Id(s):
OTP-16856

By default all ERTS internal memory allocators based on alloc_util will now use their own separate carrier pool for migration of carriers instead of using a node global carrier pool. This was the default behavior between OTP 17 and OTP 21, but changed to use a node global carrier pool as of OTP 22.0. Usage of the node global carrier pool proved troublesome since it had a tendency to spread long lived blocks into allocators with normally short lived blocks causing increased memory fragmentation. The node global carrier pool behavior as well as other behaviors can be configured using the +M<S>cp command line argument.

OTP-16936
Application(s):
erts, stdlib
Related Id(s):
ERL-1367

New functions have been added to the maps module: merge_with/3, intersect/2, intersect_with/3, filtermap/2, from_keys/2, and maps:foreach/2.

maps:merge_with/3 is the same as merge/2 but takes an extra fun that is used to combine items with the same key.

maps:intersect/2 computes the intersection of two maps.

maps:intersect_with/3 is the same as intersect/2 but takes an extra fun that is used to combine intersecting items.

maps:filtermap/2 allows filtering and mapping of a map in a single pass.

maps:from_keys/2 constructs a map from a list of keys and a single value and can be used to to optimize sets operations such as from_list/1, filter/2, intersection/2, and subtract/2.

maps:foreach/2 allows iteration over a map without returning any value.

OTP-16945
Application(s):
erts

*** POTENTIAL INCOMPATIBILITY ***

Change escripts to output any errors or warnings to standard error instead of standard out.

OTP-16952
Application(s):
erts, kernel

A new erl parameter for specifying a file descriptor with configuration data has been added. This makes it possible to pass the parameter "-configfd FD" when executing the erl command. When this option is given, the system will try to read and parse configuration parameters from the file descriptor.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16980
Application(s):
erts, stdlib
Related Id(s):
ERL-1308

The pretty printer for floating point number have been changed to make it easier to see if the integer part of the number has been rounded. After the change the digit that may have been rounded always appears last or just before the exponent character (e or E). This is accomplished by always printing the number using scientific notation if it is so large that the integer part could be rounded.

OTP-16987
Application(s):
erts

*** POTENTIAL INCOMPATIBILITY ***

The erlang:monitor_node/2 BIF will now fail with a notalive exception if distribution has not been started on the current node; it used to fail with a badarg exception.

OTP-17005
Application(s):
erl_interface, erts, jinterface, kernel, stdlib
Related Id(s):
OTP-16718

Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release.

OTP-17007
Application(s):
erl_interface, erts, jinterface

Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release.

OTP-17028
Application(s):
erts

One can now pass the ERL_ROOTDIR environment variable to the erl and start scrips. This makes it easier to use Erlang for Android apps. On Android, apps don't control where they will be installed.

OTP-17057
Application(s):
erts, stdlib

All long running functions in the maps API are now yielding. In previous releases the functions maps:from_list/1, maps:keys/1 and maps:values/1 did not yield. This could cause unfair scheduling of processes.

OTP-17154
Application(s):
erts, kernel
Related Id(s):
OTP-16749

socket:sendfile/2,3,4,5 has been implemented, for platforms that support the underlying socket library call.

OTP-17207
Application(s):
compiler, erts

The bit matching and construction syntax now supports 16-bit floats (IEEE 754-2008).

OTP-17285
Application(s):
erts
Related Id(s):
PR-4651

Add process_flag(fullsweep_after, N) to change fullsweep_after value in an already spawned process.

OTP-17293
Application(s):
erts
Related Id(s):
PR-4672

The max_heap_size error report has been updated to include the message queue size.

OTP-17301
Application(s):
compiler, erts
Related Id(s):
GH-4636

Introduce new types nonempty_binary() and nonempty_bitstring().

OTP-17310
Application(s):
erts
Related Id(s):
PR-4656

Optimize updates of large maps with identical keys and values. E.g. in the example below the original Map will be reused as the return of the second update.

1> Map = LargeMap#{ a => b }.

2> Map#{ a := b }.

The same optimization was done for small maps (< 33 keys) in erts-10.4 (OTP 22.0).

OTP-17341
Application(s):
erts
Related Id(s):
PR-2945

The previously undocumented internal -no_epmd option has been made documented and public.

OTP-17368
Application(s):
erts

Reduce memory carrier super alignment on 64-bit architectures. In practice allows more fine grained control over configuration of memory carrier sizes, from increments of 256kb to 16kb.

Full runtime dependencies of erts-12.0: kernel-8.0, sasl-3.3, stdlib-3.13

et-1.6.5 #

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of et-1.6.5: erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2

eunit-2.6.1 #

OTP-17300
Application(s):
eunit
Related Id(s):
PR-4695

The eunit_surefire report handler has been updated to automatically create the directories needed to store the surefire xml file.

Full runtime dependencies of eunit-2.6.1: erts-9.0, kernel-5.3, stdlib-3.4

ftp-1.1 #

OTP-16926
Application(s):
ftp
Related Id(s):
ERL-1450 , GH-4473

Use OTP supervisor as intended, avoiding surprising behavior as the killing of the user's process. Also, FTP state handling logic is improved to avoid race conditions that could result in unexpected errors.

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

OTP-15523
Application(s):
ftp
Related Id(s):
OTP-15352 , PR-1968

*** HIGHLIGHT ***

Add support for FTPES (explicit FTP over TLS).

Full runtime dependencies of ftp-1.1: erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5

inets-7.4 #

OTP-16722
Application(s):
inets

Drop all support for ftp and tftp in inets code.

OTP-16723
Application(s):
inets

Deprecate following functions in httpd_util module: flatlength/1, lhexlist_to_integer/1, integer_to_hexlist/1, strip/1, and suffix/1.

OTP-16724
Application(s):
inets

Remove support of HTTP 0.9 in httpd.

OTP-16725
Application(s):
inets

Remove support of HTTP 0.9 in httpc.

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of inets-7.4: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5

jinterface-1.12 #

OTP-16720
Application(s):
erl_interface, erts, jinterface
Related Id(s):
PR-2680

Accept 64-bit process identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit pids in a future OTP release.

OTP-17005
Application(s):
erl_interface, erts, jinterface, kernel, stdlib
Related Id(s):
OTP-16718

Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release.

OTP-17007
Application(s):
erl_interface, erts, jinterface

Accept 64-bit port identifiers from external nodes. This is the first step in an upgrade path toward using 64-bit port identifiers in a future OTP release.

OTP-17170
Application(s):
jinterface
Related Id(s):
PR-3005

Make OtpErlangExternalFun's fields module, function and arity public.

kernel-8.0 #

OTP-14700
Application(s):
kernel
Related Id(s):
PR-2848

A bug has been fixed for the internal inet_res resolver cache that handled a resolver configuration file status timer incorrectly and caused performance problems due to many unnecessary file system accesses.

OTP-16809
Application(s):
kernel
Related Id(s):
ERL-1313

*** POTENTIAL INCOMPATIBILITY ***

Change the value of the tag head returned by disk_log:info/1 from {ok, Head} to just Head.

OTP-17132
Application(s):
erl_interface, kernel

Two options have been added to erl_call. The -fetch_stdout option fetches stdout data resulting from the code invoked by erl_call. The -fetch_stdout option disables printing of the result term. In order to implement the first of these two options a new function called ei_xrpc_from has been added to erl_interface. For details see the erl_call documentation and erl_interface documentation.

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

OTP-17262
Application(s):
kernel
Related Id(s):
GH-4588 , OTP-16487 , PR-4604

inet:get_rc/0 has been corrected to return host entries as separate entries instead of (incorrectly) in a list within the list. This bug was introduced by OTP-16487 in OTP-23.0-rc1.

OTP-17277
Application(s):
kernel

The type gen_tcp:option_name() had a duplicate pktoptions value.

OTP-17286
Application(s):
kernel
Related Id(s):
PR-4619

Fixed removal of empty groups from internal state in pg.

OTP-17287
Application(s):
kernel
Related Id(s):
PR-4581

erl -remsh now prints an error message when it fails to connect to the remote node.

OTP-17288
Application(s):
kernel
Related Id(s):
PR-4581

Fix bugs related to corrupt shell history files.

Error messages printed by shell history are now logged as logger error reports instead of written to standard error.

OTP-17315
Application(s):
kernel
Related Id(s):
GH-4626

A logger warning is now issues when too many arguments are given to -name or -sname. Example: erl -name a b.

OTP-17344
Application(s):
kernel
Related Id(s):
GH-4631 , OTP-12136 , OTP-14485 , PR-4633

The cache used by inet_res now, again, can handle multiple IP addresses per domain name, and thus fixes a bug introduced in PR-3041 (OTP-13126) and PR-2891 (OTP-14485).

OTP-17372
Application(s):
erts, kernel

Sockets created with socket:accept not counted (socket:info/0).

OTP-17374
Application(s):
kernel
Related Id(s):
GH-4680 , OTP-17216 , PR-2989 , PR-4787

The {fd, Fd} option to gen_tcp:listen/2 did not work for inet_backend socket, which has been fixed.

OTP-13126
Application(s):
kernel
Related Id(s):
PR-3041

The cache used by the DNS resolver inet_res has been improved to use ETS lookups instead of server calls. This is a considerable speed improvement for cache hits.

OTP-14485
Application(s):
kernel
Related Id(s):
PR-2891

The cache ETS table type for the internal DNS resolver inet_res has changed type (internally) to get better speed and atomicity.

OTP-14601
Application(s):
erts, kernel
Related Id(s):
OTP-16749 , PR-2641 , PR-2670

The experimental socket module can now use any protocol (by name) the OS supports. Suggested in PR-2641, implemented in PR-2670.

OTP-16517
Application(s):
kernel
Related Id(s):
PR-2827

The DNS resolver inet_res has been updated to support CAA (RFC 6844) and URI (RFC 7553) records.

OTP-16611
Application(s):
kernel
Related Id(s):
OTP-16749

*** HIGHLIGHT ***

A compatibility adaptor for gen_tcp to use the new socket API has been implemented (gen_tcp_socket). Used when setting the kernel application variable inet_backend = socket.

OTP-16686
Application(s):
debugger, erts, kernel, stdlib

*** HIGHLIGHT ***

Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.

When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail.

For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4.

There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions.

OTP-16698
Application(s):
kernel
Related Id(s):
PR-2634

The file server can now be bypassed in file:delete/1,2 with the raw option.

OTP-16703
Application(s):
erts, kernel
Related Id(s):
PR-2620

An example implementation of Erlang distribution over UDS using distribution processes has been introduced.

Thanks to Jérôme de Bretagne

OTP-16718
Application(s):
erts, kernel, stdlib
Related Id(s):
PR-2735

*** HIGHLIGHT ***

The process alias feature as outlined by EEP 53 has been introduced. It is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF.

The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26.

The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced.

OTP-16749
Application(s):
erts, kernel
Related Id(s):
OTP-14601

*** POTENTIAL INCOMPATIBILITY ***

The experimental new socket API has been further developed. Some backwards incompatible changes with respect to OTP 23 have been made.

The control message format has been changed so a decoded value is now in the 'value' field instead of in the 'data' field. The 'data' field now always contains binary data.

Some type names have been changed regarding message headers and control message headers.

socket:bind/2 now returns plain ok instead of {ok, Port} which was only relevant for the inet and inet6 address families and often not interesting. To find out which port was chosen use socket:sockname/1.

OTP-16793
Application(s):
kernel
Related Id(s):
ERL-1332 , PR-2740

New function os:env/0 returns all OS environment variables as a list of 2-tuples.

OTP-16811
Application(s):
kernel

*** POTENTIAL INCOMPATIBILITY ***

Remove the support for distributed disk logs. The new function disk_log:all/0 is to be used instead of disk_log:accessible_logs/0. The function disk_log:close/1 is to be used instead of disk_log:lclose/1,2.

OTP-16947
Application(s):
kernel
Related Id(s):
PR-2781

Expand the spec for erl_epmd:listen_port_please/2 to mirror erl_epmd:port_please/2.

OTP-16952
Application(s):
erts, kernel

A new erl parameter for specifying a file descriptor with configuration data has been added. This makes it possible to pass the parameter "-configfd FD" when executing the erl command. When this option is given, the system will try to read and parse configuration parameters from the file descriptor.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16968
Application(s):
kernel

*** POTENTIAL INCOMPATIBILITY ***

The pg2 module has been removed.

OTP-17005
Application(s):
erl_interface, erts, jinterface, kernel, stdlib
Related Id(s):
OTP-16718

Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release.

OTP-17015
Application(s):
kernel

Allow utf-8 binaries as parts of logger_formatter template.

OTP-17062
Application(s):
kernel
Related Id(s):
ERIERL-537 , ERL-1418 , GH-4469

*** POTENTIAL INCOMPATIBILITY ***

Let disk_log:open/1 change the size if a wrap log is opened for the first time, that is, the disk log process does not exist, and the value of option size does not match the current size of the disk log.

OTP-17103
Application(s):
kernel
Related Id(s):
PR-2949

Allow the shell history of an erlang node to be fetched and stores using a custom callback module. See shell_history configuration parameter in the kernel documentation for more details.

OTP-17106
Application(s):
kernel
Related Id(s):
PR-2885

The simple logger (used to log events that happen before kernel has been started) has been improved to print prettier error messages.

OTP-17154
Application(s):
erts, kernel
Related Id(s):
OTP-16749

socket:sendfile/2,3,4,5 has been implemented, for platforms that support the underlying socket library call.

OTP-17155
Application(s):
kernel

Add socket monitor(s) for all types sockets.

OTP-17156
Application(s):
kernel

*** POTENTIAL INCOMPATIBILITY ***

Fix various issues with the gen_tcp_socket. Including documenting some incompatibilities.

OTP-17157
Application(s):
kernel

inet:i/0 now also shows existing gen_tcp compatibility sockets (based on 'socket').

OTP-17181
Application(s):
kernel
Related Id(s):
PR-2457

Added support in logger for setting primary metadata. The primary metadata is passed as a base metadata to all log events in the system. See Metadata in the Logger chapter of the Kernel User's Guide for more details.

OTP-17189
Application(s):
kernel, reltool, sasl
Related Id(s):
PR-2675

Recognize new key 'optional_applications' in application resource files.

OTP-17198
Application(s):
kernel
Related Id(s):
PR-2721

The Fun's passed to logger:log/2,3,4 can now return metadata that will only be fetched when needed. See logger:log/2,3,4 for more details.

OTP-17201
Application(s):
kernel
Related Id(s):
PR-4534

erpc:multicall() has been rewritten to be able to utilize the newly introduced and improved selective receive optimization.

OTP-17203
Application(s):
kernel
Related Id(s):
OTP-17156

Add utility fiunction inet:info/1 to provide miscellaneous info about a socket.

OTP-17216
Application(s):
kernel
Related Id(s):
PR-2989

*** POTENTIAL INCOMPATIBILITY ***

The behaviour for gen_tcp:connect/3,4 has been changed to not per default bind to an address, which allows the network stack to delay the address and port selection to when the remote address is known. This allows better port re-use, and thus enables far more outgoing connections, since the ephemeral port range no longer has to be a hard limit.

There is a theoretical possibility that this behaviour change can affect the set of possible error values, or have other small implications on some platforms.

OTP-17266
Application(s):
kernel
Related Id(s):
PR-4564

An option {nxdomain_reply, boolean()} has been implemented in the DNS resolver inet_res. It is useful since an nxdomain error from a name server does contain the SOA record if the domain exists at all. This record is useful to determine a TTL for negative caching of the failed entry.

OTP-17284
Application(s):
kernel
Related Id(s):
PR-4615

Optimized lookup of local processes part of groups in pg.

OTP-17355
Application(s):
kernel
Related Id(s):
OTP-17154

*** POTENTIAL INCOMPATIBILITY ***

The return values from module socket functions send(), sendto(), sendmsg(), sendfile() and recv() has been changed to return a tuple tagged with select when a SelectInfo was returned, and not sometimes tagged with ok.

This is a backwards incompatible change that improves usability for code using asynchronous operations.

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of kernel-8.0: crypto-5.0, erts-12.0, sasl-3.0, stdlib-3.13

megaco-4.0 #

OTP-16560
Application(s):
megaco

*** POTENTIAL INCOMPATIBILITY ***

All the pre-v3 codec(s) (prev3a, prev3b and prev3c) was deprecated in OTP-23.0. They have now been removed.

OTP-17049
Application(s):
megaco, snmp

Removed deprecated functions marked for removal.

Full runtime dependencies of megaco-4.0: asn1-3.0, debugger-4.0, erts-7.0, et-1.5, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5

mnesia-4.19.1 #

OTP-17217
Application(s):
mnesia

Suppression of deprecation warnings has been added to the source files of the Mnesia application.

OTP-17294
Application(s):
mnesia
Related Id(s):
GH-4525 , PR-4674

Fixed that the backend plugin initialization is done only once.

Full runtime dependencies of mnesia-4.19.1: erts-9.0, kernel-5.3, stdlib-3.4

observer-2.9.6 #

OTP-17214
Application(s):
observer

Updated gui parts to work with the new wx version.

Full runtime dependencies of observer-2.9.6: erts-11.0, et-1.5, kernel-7.0, runtime_tools-1.8.14, stdlib-3.13, wx-1.2

odbc-2.13.4 #

OTP-17105
Application(s):
crypto, erts, odbc, wx
Related Id(s):
PR-2872

Fix compiler warnings produced by the clang compiler.

Full runtime dependencies of odbc-2.13.4: erts-6.0, kernel-3.0, stdlib-2.0

os_mon-2.7 #

OTP-16943
Application(s):
os_mon
Related Id(s):
OTP-16906

*** POTENTIAL INCOMPATIBILITY ***

The temporarily introduced configuration parameter memsup_improved_system_memory_data has been removed.

OTP-16944
Application(s):
os_mon
Related Id(s):
PR-2787

Fix disk_sup to also search the system PATH on linux when looking for the df program.

Full runtime dependencies of os_mon-2.7: erts-6.0, kernel-3.0, sasl-2.4, stdlib-2.0

parsetools-2.3 #

OTP-16957
Application(s):
parsetools, tools

Add types and specifications for documentation.

OTP-17023
Application(s):
parsetools

Let Leex and Yecc recognize the environment variable ERL_COMPILER_OPTIONS. Add Yecc option {error_location, column | line}.

Full runtime dependencies of parsetools-2.3: erts-6.0, kernel-3.0, stdlib-2.5

public_key-1.11 #

OTP-17142
Application(s):
crypto, public_key, ssl
Related Id(s):
GH-4637 , GH-4650 , PR-4756

*** HIGHLIGHT ***

TLS connections now support EdDSA certificates.

OTP-17352
Application(s):
public_key, ssh

The functions public_key:ssh_encode/2, public_key:ssh_decode/2, public_key:ssh_hostkey_fingerprint/1 and public_key:ssh_hostkey_fingerprint/2 are deprecated.

Replacement functions are available in SSH, see the Deprecations chapter in the Erlang/OTP documentation.

OTP-17384
Application(s):
public_key, ssl
Related Id(s):
GH-4800

Enhance documentation and logging of certificate handling.

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

reltool-0.9 #

OTP-17189
Application(s):
kernel, reltool, sasl
Related Id(s):
PR-2675

Recognize new key 'optional_applications' in application resource files.

OTP-17292
Application(s):
reltool, sasl
Related Id(s):
PR-4684 , PR-4685

Removed timestamps from files generated by sasl and reltool to enable deterministic builds.

Full runtime dependencies of reltool-0.9: erts-7.0, kernel-3.0, sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2

runtime_tools-1.16.2 #

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

Full runtime dependencies of runtime_tools-1.16.2: erts-11.0, kernel-7.0, mnesia-4.12, stdlib-3.13

sasl-4.1 #

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-17189
Application(s):
kernel, reltool, sasl
Related Id(s):
PR-2675

Recognize new key 'optional_applications' in application resource files.

OTP-17292
Application(s):
reltool, sasl
Related Id(s):
PR-4684 , PR-4685

Removed timestamps from files generated by sasl and reltool to enable deterministic builds.

Full runtime dependencies of sasl-4.1: erts-10.2, kernel-5.3, stdlib-3.4, tools-2.6.14

snmp-5.9 #

OTP-17049
Application(s):
megaco, snmp

Removed deprecated functions marked for removal.

OTP-17354
Application(s):
snmp

Removed timestamps from files generated by snmp to enable deterministic builds.

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of snmp-5.9: crypto-3.3, erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5

ssh-4.12 #

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

OTP-17353
Application(s):
ssh

The send window handling is changed to not initialize a too large window on some occasions.

OTP-16750
Application(s):
ssh

Removed usage of erlang:is_port/1 from the SSH implementation.

OTP-17051
Application(s):
ssh

Internal connection setup refactoring.

OTP-17140
Application(s):
ssh

Refactor SSH fsm into a (hopefully) more comprehensible set of gen_statem callback-files.

OTP-17259
Application(s):
ssh
Related Id(s):
ERIERL-619 , OTP-16511

*** POTENTIAL INCOMPATIBILITY ***

The RSA SHA1 sign/verify variants are disabled by default. That is, ssh-rsa is disabled by default as well as the SHA1 sign/verify with RSA keys from id_rsa and ssh_host_rsa_key. All SHA2 sign/verify are enabled by default.

The reason is that SHA1 is now considered easy to break.

To enable RSA with SHA1, for example for a very old and unsafe peer, see Example 9 in the User's Guide chapter Configuring algorithms in SSH.

OTP-17322
Application(s):
ssh
Related Id(s):
EEP-56 , OTP-17334 , PR-4638

Adapt ssh supervisors to the new 'significant' and 'auto_shutdown' flags in supervisor.

OTP-17352
Application(s):
public_key, ssh

The functions public_key:ssh_encode/2, public_key:ssh_decode/2, public_key:ssh_hostkey_fingerprint/1 and public_key:ssh_hostkey_fingerprint/2 are deprecated.

Replacement functions are available in SSH, see the Deprecations chapter in the Erlang/OTP documentation.

Full runtime dependencies of ssh-4.12: crypto-5.0, erts-9.0, kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15

ssl-10.4 #

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

OTP-17343
Application(s):
ssl

TLS handshake should fail if OCSP staple is requested but missing. Note that OCSP support is still considered experimental and only partially implemented.

OTP-16974
Application(s):
ssl

*** POTENTIAL INCOMPATIBILITY ***

Removed ssl:ssl_accept/1,2,3 and ssl:cipher:suites/0,1 use ssl:handshake/1,2,3 and ssl:cipher_suites/2,3 instead.

OTP-17044
Application(s):
ssl
Related Id(s):
PR-2654

*** HIGHLIGHT ***

Make TLS handshakes in Erlang distribution concurrent.

OTP-17117
Application(s):
ssl
Related Id(s):
PR-2933

Randomize internal {active,n} optimization when running Erlang distribution over TLS to spread RAM/CPU spike that may occur when starting up a big cluster.

OTP-17142
Application(s):
crypto, public_key, ssl
Related Id(s):
GH-4637 , GH-4650 , PR-4756

*** HIGHLIGHT ***

TLS connections now support EdDSA certificates.

OTP-17384
Application(s):
public_key, ssl
Related Id(s):
GH-4800

Enhance documentation and logging of certificate handling.

Full runtime dependencies of ssl-10.4: crypto-4.2, erts-10.0, inets-5.10.7, kernel-6.0, public_key-1.8, runtime_tools-1.15.1, stdlib-3.12

stdlib-3.15 #

OTP-15107
Application(s):
stdlib
Related Id(s):
ERL-1381 , PR-2813

*** POTENTIAL INCOMPATIBILITY ***

Time-outs in gen_statem with relative time 0 did not behave quite according to the intended model. This has now been corrected.

The correction introduces a small potential incompatibility e.g when combining a state time-out with inserted events, and the inserted event does a state change in the state with the time-out. Before this correction the state time-out could be delivered even after the second state change, but now it is guaranteed that a state time-out is only delivered in the state it was started for, even in this corner case.

OTP-16865
Application(s):
stdlib

Fix bugs in erl_eval concerning bitstring comprehensions.

OTP-16905
Application(s):
stdlib

File names that start with a dot (such as ".gitignore" are now treated as file names and not extensions by filename:extension/1 and filename:rootname/1.

OTP-16950
Application(s):
stdlib
Related Id(s):
ERL-1378

Fixed a bug where beam_lib:chunks/3 with the allow_missing_chunks option would crash if a named chunk was missing.

OTP-17077
Application(s):
compiler, erts, stdlib
Related Id(s):
ERL-1431 , PR-2903 , PR-2905 , PR-2906

A floating point zero (0.0) can be both positive (+0.0) and negative (-0.0). Multiple bugs in the compiler, runtime system, and STDLIB have been fixed to ensure that the minus sign on 0.0 is not lost.

OTP-17118
Application(s):
compiler, stdlib
Related Id(s):
PR-2825

Eliminated a Dialyzer crashed when the -MMD option is used to generate a dependency file and a BEAM file a the same time.

OTP-17122
Application(s):
erl_docgen, stdlib

Fixed bug in shell_docs and erl_docgen that interpreted em tags as strong.

OTP-17133
Application(s):
stdlib

On Solaris, the math:acos/1 and math:asin/1 functions would not fail for arguments outside the valid domain.

OTP-17186
Application(s):
stdlib

Silence unused_record warnings when using ms_transform. The parse transform ms_transform replaces records with tuples, which can cause the Erlang code linter to emit warnings about unused records.

OTP-17222
Application(s):
stdlib
Related Id(s):
GH-4544

Documented a deficiency in the re module regarding the [:ascii:] character class matching Latin-1 characters.

OTP-17342
Application(s):
stdlib
Related Id(s):
GH-4725 , PR-4726

Fixed spec of start functions in generic behaviors.

OTP-17364
Application(s):
stdlib
Related Id(s):
PR-4747

Supervisors rejected child specs with a shutdown value of 0.

OTP-14646
Application(s):
stdlib
Related Id(s):
PR-2920

In the rand module it is now possible to seed the default algorithm using an algorithm alias: default.

Generating pseudo random binaries has been implemented with rand:bytes/1 and rand:bytes_s/2.

OTP-14647
Application(s):
stdlib
Related Id(s):
PR-2910

New functions have been added to the proplists module: to_map/1,2 and from_map/1.

OTP-14650
Application(s):
stdlib
Related Id(s):
PR-2850

New functions have been added to the queue module: all/2, any/2, delete/2, delete_r/2, delete_with/2, and delete_with_r/2.

OTP-14793
Application(s):
stdlib
Related Id(s):
PR-2791

New function have been added to the queue module: fold/2 and filtermap/2.

OTP-16678
Application(s):
erts, stdlib, syntax_tools, tools
Related Id(s):
PR-2627

Support for handling abstract code created before OTP R15 has been dropped.

OTP-16686
Application(s):
debugger, erts, kernel, stdlib

*** HIGHLIGHT ***

Extended error information for failing BIF calls as proposed in EEP 54 has been implemented.

When a BIF call from the Erlang shell fails, more information about which argument or arguments that were in error will be printed. The same extended error information will by proc_lib, common_test, and qlc when BIF calls fail.

For applications that wish to provide the same extended error information, there are new functions erl_error:format_exception/3 and erl_error:format_exception/4.

There is a new error/3 BIF that allows applications or libraries to provide extended error information in the same way for their own exceptions.

OTP-16718
Application(s):
erts, kernel, stdlib
Related Id(s):
PR-2735

*** HIGHLIGHT ***

The process alias feature as outlined by EEP 53 has been introduced. It is introduced in order to provide a lightweight mechanism that can prevent late replies after timeout or connection loss. For more information, see EEP 53 and the documentation of the new alias/1 BIF and the new options to the monitor/3 BIF.

The call operation in the framework used by gen_server, gen_statem, and gen_event has been updated to utilize alias in order to prevent late responses. The gen_statem behavior still use a proxy process in the distributed case, since it has always prevented late replies and aliases wont work against pre OTP 24 nodes. The proxy process can be removed in OTP 26.

The alias feature also made it possible to introduce new functions similar to the erpc:receive_response() function in the gen behaviors, so the new functions gen_server:receive_response(), gen_statem:receive_response(), gen_event:receive_response() have also been introduced.

OTP-16910
Application(s):
stdlib
Related Id(s):
PR-2771

Improved documentation about exit signals emitted when a gen_server terminates.

OTP-16936
Application(s):
erts, stdlib
Related Id(s):
ERL-1367

New functions have been added to the maps module: merge_with/3, intersect/2, intersect_with/3, filtermap/2, from_keys/2, and maps:foreach/2.

maps:merge_with/3 is the same as merge/2 but takes an extra fun that is used to combine items with the same key.

maps:intersect/2 computes the intersection of two maps.

maps:intersect_with/3 is the same as intersect/2 but takes an extra fun that is used to combine intersecting items.

maps:filtermap/2 allows filtering and mapping of a map in a single pass.

maps:from_keys/2 constructs a map from a list of keys and a single value and can be used to to optimize sets operations such as from_list/1, filter/2, intersection/2, and subtract/2.

maps:foreach/2 allows iteration over a map without returning any value.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-16971
Application(s):
stdlib

*** POTENTIAL INCOMPATIBILITY ***

The filename:src/1 function which was deprecated in OTP 20 has been removed. Use filelib:find_source/1,3 instead.

OTP-16980
Application(s):
erts, stdlib
Related Id(s):
ERL-1308

The pretty printer for floating point number have been changed to make it easier to see if the integer part of the number has been rounded. After the change the digit that may have been rounded always appears last or just before the exponent character (e or E). This is accomplished by always printing the number using scientific notation if it is so large that the integer part could be rounded.

OTP-17005
Application(s):
erl_interface, erts, jinterface, kernel, stdlib
Related Id(s):
OTP-16718

Accept references up to a size of 160-bits from remote nodes. This is the first step in an upgrade path toward using references up to 160-bits in a future OTP release.

OTP-17024
Application(s):
stdlib

Add option location to erl_parse:abstract/2.

OTP-17057
Application(s):
erts, stdlib

All long running functions in the maps API are now yielding. In previous releases the functions maps:from_list/1, maps:keys/1 and maps:values/1 did not yield. This could cause unfair scheduling of processes.

OTP-17059
Application(s):
stdlib
Related Id(s):
PR-2864

The sets module now has an optional map-based implementation, as described in EEP 50.

To use this implementation, pass the {version,2} option to sets:new/1 or sets:from_list/2.

OTP-17120
Application(s):
stdlib

Added shell_docs:supported_tags/0. This function can be used to retrieve the tags currently supported by shell_docs.

OTP-17121
Application(s):
stdlib

The application/erlang+html documentation storage format used by shell_docs has been updated to include the tags b, strong, h4, h5 and h6.

OTP-17169
Application(s):
stdlib
Related Id(s):
PR-2584

Do not pretty-print catch expressions with unnecessary parentheses. The re-write of the Erlang parser grammar in PR-2584 implies that parentheses around catch expressions are in many cases no longer required.

OTP-17171
Application(s):
stdlib
Related Id(s):
PR-3011

Improved explanation of {continue,Continue} in Module:init/1 of the gen_server documentation.

OTP-17175
Application(s):
stdlib

The erl_eval module now accepts a map for keeping track of bindings. Using an orddict for bindings will still work.

OTP-17199
Application(s):
stdlib
Related Id(s):
PR-2658

Documented epp:scan_erl_form/1 and added epp:scan_file/2.

OTP-17210
Application(s):
stdlib

The standard floating point printing algorithm used by the io and io_lib modules has been changed from the algorithm described in [1] to the Ryu algorithm [2]. This gives a significant speed improvement for the printing of most floating point numbers and a small memory consumption improvement.

[1]: Robert G. Burger and R. Kent Dybvig. 1996. Printing floating-point numbers quickly and accurately. In Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation (PLDI '96). Association for Computing Machinery, New York, NY, USA, 108–116. DOI:https://doi.org/10.1145/231379.231397

[2]: Ulf Adams. 2018. Ryū: fast float-to-string conversion. In Proceedings of the 39th ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2018). Association for Computing Machinery, New York, NY, USA, 270–282. DOI:https://doi.org/10.1145/3192366.3192369

Thanks to Thomas Depierre

OTP-17236
Application(s):
stdlib
Related Id(s):
PR-3014

Add hex encoding and decoding functions in the binary module.

OTP-17263
Application(s):
stdlib

The undocumented and partially broken ets:filter/3 function has been removed.

OTP-17267
Application(s):
stdlib

Add support in shell_docs to display any "text" documentation format. This means that h(Module) in the shell now can display the "text/markdown" of Elixir documentation.

OTP-17276
Application(s):
stdlib
Related Id(s):
PR-2979

The internal hashing of keys within ETS tables of types set, bag, duplicate_bag has been salted to diverge from erlang:phash2. This to avoid bad hashing if phash2 is used to distribute the keys over separate tables/nodes.

OTP-17327
Application(s):
stdlib
Related Id(s):
PR-4707

Updated to the Unicode 13.0 specification.

OTP-17330
Application(s):
compiler, stdlib

Add compiler option {nowarn_unused_record, RecordNames}. Document compiler option nowarn_unused_type.

OTP-17334
Application(s):
stdlib
Related Id(s):
EEP-56 , PR-4638

*** HIGHLIGHT ***

Implementation of EEP 56 in supervisor. It adds the concept of significant children as well as the auto_shutdown supervisor flag.

See the supervisor manual page for more information.

OTP-17385
Application(s):
common_test, et, inets, kernel, snmp, stdlib
Related Id(s):
OTP-17123

Fixed warnings in code matching on underscore prefixed variables.

Full runtime dependencies of stdlib-3.15: compiler-5.0, crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0

syntax_tools-2.6 #

OTP-17302
Application(s):
syntax_tools
Related Id(s):
PR-4705

The type spec of erl_syntax:function_type/2 has been fixed.

OTP-17321
Application(s):
syntax_tools

Output parentheses around BitStringExpr when pretty-printing binary comprehensions.

OTP-16678
Application(s):
erts, stdlib, syntax_tools, tools
Related Id(s):
PR-2627

Support for handling abstract code created before OTP R15 has been dropped.

OTP-17180
Application(s):
syntax_tools

The igor and erl_tidy modules have been the removed and are now maintained by their original author Richard Carlsson. They can be found at github.com/richcarl/igor and github.com/richcarl/erl_tidy, respectively.

Full runtime dependencies of syntax_tools-2.6: compiler-7.0, erts-9.0, kernel-5.0, stdlib-3.4

tftp-1.0.3 #

OTP-17243
Application(s):
erl_docgen, ftp, kernel, ssh, ssl, tftp
Related Id(s):
PR-4557

Missing runtime dependencies has been added to this application.

Full runtime dependencies of tftp-1.0.3: erts-6.0, kernel-6.0, stdlib-3.5

tools-3.5 #

OTP-17221
Application(s):
tools
Related Id(s):
PR-4547

For cover-compiled code, the error behaviour of list and binary comprehensions that used andalso/orelse in guards could be changed so that a filter that was supposed be evaluated in guard context was evaluated in body context. That is, there was a possibility that comprehensions that did not raise exceptions could raise exceptions when being run using cover.

OTP-16678
Application(s):
erts, stdlib, syntax_tools, tools
Related Id(s):
PR-2627

Support for handling abstract code created before OTP R15 has been dropped.

OTP-16957
Application(s):
parsetools, tools

Add types and specifications for documentation.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

Full runtime dependencies of tools-3.5: compiler-5.0, erts-11.0, erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4

wx-2.0 #

OTP-17105
Application(s):
crypto, erts, odbc, wx
Related Id(s):
PR-2872

Fix compiler warnings produced by the clang compiler.

OTP-16800
Application(s):
wx

*** HIGHLIGHT ***

The application has been completely rewritten in order to use wxWidgets version 3 as its base.

Add basic documentation generated from the wxWidgets project.

OTP-16963
Application(s):
common_test, compiler, dialyzer, erl_interface, erts, kernel, runtime_tools, sasl, stdlib, tools, wx

*** POTENTIAL INCOMPATIBILITY ***

The experimental HiPE application has been removed, together with all related functionality in other applications.

OTP-17213
Application(s):
wx
Related Id(s):
PR-3027

*** HIGHLIGHT ***

Added support for wxWebView.

OTP-17219
Application(s):
wx
Related Id(s):
OTP-16800

*** POTENTIAL INCOMPATIBILITY ***

Due to the support of the new backend versions some API incompatibilities have been introduced. Examples of changes are:

wxWindowDC default creators have been removed wxClientDC default creators have been removed wxPaintDC default creators have been removed wxWindow:setVirtualSizeHints() has been deprecated in wxWidgets and removed
wxWindow:makeModal() has been deprecated in wxWidgets and removed
wxToolBar:add/insertTool without label have been deprecated in wxWidgets and removed
wxStyledTextCtrl some functions have changed arguments from boolean to int
wxSizerItem:new() Some arguments have become options Removed deprecated wxSizerItem:setWindow() use assignWindow()
Removed deprecated wxSizerItem:setSpacer() use assignSpacer()
Removed deprecated wxSizerItem:setSpacer() use assignSpacer()
Removed deprecated wxSizerItem:setSizer() use assignSizer()
wxMenu append/insert/prepend have changed return value and lost IsCheckable argument
wxListCtrl:setItem/4 changed return value wxImage:convertToGreyscale() options have changed wxGridSizer:wxGridSizer() options have changed
wxGrid API have many changes wxGraphicsRenderer:create*GradientBrush() uses GradientStops now
wxGraphicsRenderer:createPen() have been removed wxGraphicsRenderer:create*GradientBrush() uses GradientStops now
wxGLCanvas API is incompatible wxFlexGridSizer:wxFlexGridSizer() options have changed wxDisplay:new() options have changed wxCalendarDateAttr:new(ColText [,OptList]) have been removed
wxBitmapButton:set/getBitmapSelected() have been removed

Full runtime dependencies of wx-2.0: erts-6.0, kernel-3.0, stdlib-2.0

xmerl-1.3.28 #

OTP-17388
Application(s):
xmerl
Related Id(s):
OTP-17123

Fixed a bug that could cause parsing to crash.

Full runtime dependencies of xmerl-1.3.28: erts-6.0, kernel-3.0, stdlib-2.5

Thanks To #

Alexander Clouter, Alexander Petrovsky, Andreas Schultz, Bryan Paxton, Cheng Zhe, Dominic Letz, Eksperimental, Erlend Hamberg, Filipe Cristovao, Frej Drejhammar, Henrik Lagebrand, Jesper Eskilson, Jonathan Klabunde Tomer, José Valim, João Henrique Ferreira de Freitas, Jérôme de Bretagne, Leo Liu, Linus.yuan, Loïc Hoguin, Luca Favatella, Luis Rascao, Luke Bakken, Maria Scott, Maria-12648430, Mariano Guerra, Mattias Hansson, Max Nordlund, Maxim Fedorov, Michal Palka, Michal Piotrowski, Michal Slaski, Michał Muskała, Mikael Pettersson, Nalin Ranjan, Nelson Vides, Nico Piderman, Oskar, Paulo F. Oliveira, Philip Kuryloski, Philipp Klaus Krause, Pierre Allix, Péter Gömöri, Radek Szymczyszyn, Richard Carlsson, Ruud Kamphuis, Stavros Aronis, Taras Halturin, Thomas Depierre, Tianon Gravi, Tony Rogvall, Ulf Wiger, Viktor Söderqvist, Wojtek Mach, Zeyu Zhang, ergl, gearnode, ilya-klyuchnikov, juhlig, lagebr, plan-do-break-fix, skatepalli, vans163, yfractal, Łukasz Niemier