Erlang/OTP 18.3

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:18.3

Highlights #

OTP-13363
Application(s):
ssl

Use application:ensure_all_started/2 instead of hard-coding dependencies

asn1-4.0.2 #

The asn1-4.0.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13257
Application(s):
asn1

When compiling to the PER format, the ASN.1 compiler would crash when attempting to compile an ASN.1 module with a constrained INTEGER with more than 65536 values and named values. (Thanks to Ingars for reporting this bug.)

OTP-13324
Application(s):
asn1

The ASN.1 compiler will now emit Dialyzer suppressions for improper lists. Thus, there is no longer any need to use --Wno_improper_lists when analyzing modules generated by the ASN.1 compiler.

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

common_test-1.12 #

The common_test-1.12 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13003
Application(s):
common_test
Related Id(s):
seq13005

This update fixes the problem with generic printouts in the html log file not having special characters escaped. Printouts made with io:format/2 and ct:pal/2 will now get special characters escaped automatically. Common Test will not attempt to escape characters printed with ct:log/2 since it is assumed that the user may want to print html tagged data using this function. A new function, ct:log/5, has been added, which offers optional escaping of characters. The latter function may also be used to print text to the log without headers and CSS class wrapping (analogue to io:format/2).

OTP-13386
Application(s):
common_test

Commit 4cf832f1ad163f5b25dd8a6f2d314c169c23c82f erroneously removed logging of open and close of netconf connections. This is now corrected.

OTP-13388
Application(s):
common_test, test_server

The directory to which nodes started with test_server:start_node/3 writes their erl_crash.dump is changed. The crashdumps were earlier written to the directory of test_server.beam, but in later versions of Microsoft Windows this is no longer writable (even for administrators). The framework (common_test) log directory is now used instead.

OTP-13241
Application(s):
common_test
Related Id(s):
seq12979

This update makes it possible to specify multiple instances of the same group or test case in one test specification term in order to repeat execution. Example: {groups, "./", my_SUITE, [my_group, my_group], {cases, all}}, or {cases, "./", my_SUITE, [my_tc, my_tc, my_tc]}.

OTP-13242
Application(s):
common_test, test_server
Related Id(s):
seq12991

Two new CT hook functions have been added: post_init_per_testcase/4 and pre_end_per_testcase/3. With these hook functions, it is possible to perform arbitrary actions (including modifications of test execution, test state and results) immediately before and after the execution of the test case.

OTP-13338
Application(s):
common_test
Related Id(s):
seq13053 , seq13069

The ct_netconfc was earlier very restrictive as to which SSH options the user could set. This is now changed, and any SSH option is now allowed. The netconf client will simply pass on any option, which it does not recognize, to SSH.

Full runtime dependencies of common_test-1.12: compiler-6.0, crypto-3.6, debugger-4.1, erts-7.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-2.5, test_server-3.9, tools-2.8, xmerl-1.3.8

compiler-6.0.3 #

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

OTP-13208
Application(s):
compiler

An complicated guard expression in a function call could crash the compiler. (Thanks to Thomas Arts for reporting this bug.)

OTP-13223
Application(s):
compiler

Constructing a map in a guard in a catch could crash the compiler. (Thanks to Thomas Arts for reporting this bug.)

OTP-13231
Application(s):
compiler

Updating a fun as if it were a map would cause the compiler to crash. (Thanks to Thomas Arts for reporting this bug.)

OTP-13238
Application(s):
compiler, dialyzer, hipe

Fix pretty printing of Core Maps

Literal maps could cause Dialyzer to crash when pretty printing the results.

OTP-13309
Application(s):
compiler

A complex combination of bit syntax matching operations would cause an internal consistency check failure during compilation. (Thanks to Jose Valim for reporting this bug.)

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

cosNotification-1.2.1 #

The cosNotification-1.2.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

Full runtime dependencies of cosNotification-1.2.1: cosEvent-2.1.15, cosTime-1.1.14, erts-7.0, kernel-3.0, orber-3.6.27, stdlib-2.5

cosTime-1.2.1 #

The cosTime-1.2.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

Full runtime dependencies of cosTime-1.2.1: cosEvent-2.1.15, erts-7.0, kernel-3.0, orber-3.6.27, stdlib-2.0

cosTransactions-1.3.1 #

The cosTransactions-1.3.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

Full runtime dependencies of cosTransactions-1.3.1: erts-7.0, kernel-3.0, orber-3.6.27, stdlib-2.0

crypto-3.6.3 #

The crypto-3.6.3 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13249
Application(s):
crypto

Fix bug for aes_ecb block crypto when data is larger than 16 bytes.

OTP-13311
Application(s):
crypto, ssl

Improve portability of ECC tests in Crypto and SSL for "exotic" OpenSSL versions.

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

debugger-4.1.2 #

The debugger-4.1.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12994
Application(s):
debugger, observer

Documentation corrections.

Full runtime dependencies of debugger-4.1.2: compiler-5.0, erts-6.0, kernel-3.0, stdlib-2.5, wx-1.2

dialyzer-2.9 #

Note! The dialyzer-2.9 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependency has to be satisfied: -- hipe-3.13 (first satisfied in OTP 18.1)

OTP-13103
Application(s):
dialyzer
Related Id(s):
ERL-40

Dialyzer no longer asserts that files and directories to be removed from a PLT exist.

OTP-13237
Application(s):
dialyzer

Fix a bug concerning parameterized opaque types.

OTP-13238
Application(s):
compiler, dialyzer, hipe

Fix pretty printing of Core Maps

Literal maps could cause Dialyzer to crash when pretty printing the results.

OTP-13287
Application(s):
dialyzer

If a behavior module contains an non-exported function with the same name as one of the behavior's callbacks, the callback info was inadvertently deleted from the PLT as the dialyzer_plt:delete_list/2 function was cleaning up the callback table.

OTP-13312
Application(s):
dialyzer

Correct the contract for erlang:byte_size/1

Correct the handling of comparison operators for map and bit string operands.

OTP-13217
Application(s):
dialyzer

Dialyzer recognizes calls to M:F/A where M, F, and A are all literals.

Full runtime dependencies of dialyzer-2.9: compiler-5.0, erts-7.0, hipe-3.13, kernel-3.0, stdlib-2.5, syntax_tools-1.6.14, wx-1.2

diameter-1.11.2 #

The diameter-1.11.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13164
Application(s):
diameter

Make peer handling more efficient.

Inefficient lookup and manipulation of peer lists could result in poor performance when many outgoing requests were sent simultaneously, or when many peers connected simultaneously. Filtering peer lists on realm/host is now also more efficient in many cases.

OTP-13342
Application(s):
diameter

Fix handling of shared peer connections in watchdog state SUSPECT.

A peer connection shared from a remote node was regarded as being up for the lifetime of the connection, ignoring watchdog transitions into state SUSPECT.

Full runtime dependencies of diameter-1.11.2: erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-2.0

edoc-0.7.18 #

The edoc-0.7.18 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13234
Application(s):
edoc
Related Id(s):
ERL-63

Assign correct names to list arguments.

OTP-13302
Application(s):
edoc

Unless the sort_functions option is true, edoc_layout does not sort functions.

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

eldap-1.2.1 #

The eldap-1.2.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13327
Application(s):
eldap

ELDAP did not send an 'unBind' request before closing the connection.

OTP-12272
Application(s):
eldap

Handles the referral result code from LDAP servers. Adds the return value {ok, {referral,UrlList}} to some functions. See the Eldap reference manual for details.

Full runtime dependencies of eldap-1.2.1: asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-2.0

erl_docgen-0.4.2 #

The erl_docgen-0.4.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12955
Application(s):
erl_docgen

Correctly generate anno tags for maps keys

Full runtime dependencies of erl_docgen-0.4.2: edoc-0.7.13, erts-6.0, stdlib-2.5, xmerl-1.3.7

erl_interface-3.8.2 #

The erl_interface-3.8.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13328
Application(s):
erl_interface

Fix Erl_Interface build error on Debian/Hurd and Debian/kFreeBSD. (Thanks to Sergei Golovan)

OTP-13364
Application(s):
erl_interface, kernel, wx

EPMD supports both IPv4 and IPv6

Also affects oldest supported windows version.

erts-7.3 #

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

OTP-13060
Application(s):
erts

The '-path' flag to 'erl' has been documented. This flag replaces the path specified in the boot script. It has always existed, but was earlier only documented in SASL (script).

OTP-13216
Application(s):
erts

The call_time tracing functionality internally used a time based on OS system time in order to measure call time which could cause erroneous results if OS system time was changed during tracing.

This functionality now use Erlang monotonic time in order to measure time. Besides fixing the erroneous results due to OS system time being used, the results are often also better since Erlang monotonic time often has better accuracy and precision.

OTP-13220
Application(s):
erts

Fix behaviour of -delay_write command line switch of epmd, which is used for debugging - in some cases epmd was sleeping twice the requested amount of time.

OTP-13245
Application(s):
erts

Fix race between timeout and exit signal that could cause a process to ignore the exit signal and continue execution. Bug exist since OTP 18.0.

OTP-13251
Application(s):
erts
Related Id(s):
ERL-49

Fix bug in erlang:halt/1,2 for large exit status values, causing either badarg (on 32-bit) or exit with a crash dump and/or core dump (on 64-bit). Make erlang:halt/1,2 tolerate any non negative integer as exit status and truncate high order bits if the OS does not support it.

OTP-13254
Application(s):
erts, kernel
Related Id(s):
OTP-11997 , OTP-13222

gen_tcp:accept/2 was not time warp safe. This since it used the same time as returned by erlang:now/0 when calculating timeout. This has now been fixed.

OTP-13270
Application(s):
erts

Fix faulty error handling when writing to a compressed file.

OTP-13271
Application(s):
erts

Fix sendfile usage for large files on FreeBSD

OTP-13282
Application(s):
erts
Related Id(s):
ERL-79

Fix bug that could cause process_info(P,current_location) to crash emulator for hipe compiled modules.

OTP-13292
Application(s):
erts

Out of memory errors have been changed to cause an exit instead of abort.

OTP-13298
Application(s):
erts
Related Id(s):
OTP-11388

When calling garbage_collect/[1,2] or check_process_code/[2,3] from a process with a higher priority than the priority of the process operated on, the run queues could end up in an inconsistent state. This bug has now been fixed.

OTP-13326
Application(s):
erts
Related Id(s):
ERL-80

A workaround for an issue with older gcc versions (less than 5) and inline assembly on 32-bit x86 caused an emulator crash when it had been compiled with a newer gcc version. An improved configure test, run when building OTP, now detects whether the workaround should be used or not.

OTP-13201
Application(s):
erts

Introduced new statistics functionality in order to more efficiently retrieve information about run able and active processes and ports. For more information see:

-- statistics(total_run_queue_lengths)

-- statistics(run_queue_lengths)

-- statistics(total_active_tasks)

-- statistics(active_tasks)

OTP-13222
Application(s):
erts, kernel, stdlib
Related Id(s):
OTP-11997

Time warp safety improvements.

Introduced the options monotonic_timestamp, and strict_monotonic_timestamp to the trace, sequential trace, and system profile functionality. This since the already existing timestamp option is not time warp safe.

Introduced the option safe_fixed_monotonic_time to ets:info/2 and dets:info/2. This since the already existing safe_fixed option is not time warp safe.

OTP-13301
Application(s):
erts

Fix a register race where down nodes goes undetected in epmd

OTP-13336
Application(s):
erts

Improved the gcc inline assembly implementing double word atomic compare and exchange on x86/x86_64 so that it also can be used when compiling with clang.

OTP-13365
Application(s):
erts
Related Id(s):
OTP-9892

An optimization preventing a long wait for a scheduler thread looking up information about a process executing on another scheduler thread had unintentionally been lost in erts-5.10 (OTP R16A). This optimization has now been reintroduced.

Full runtime dependencies of erts-7.3: kernel-4.0, sasl-2.4, stdlib-2.5

eunit-2.2.13 #

The eunit-2.2.13 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

Full runtime dependencies of eunit-2.2.13: erts-6.0, kernel-3.0, stdlib-2.5

hipe-3.15 #

Note! The hipe-3.15 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependency has to be satisfied: -- erts-7.1 (first satisfied in OTP 18.1)

OTP-13238
Application(s):
compiler, dialyzer, hipe

Fix pretty printing of Core Maps

Literal maps could cause Dialyzer to crash when pretty printing the results.

OTP-13379
Application(s):
hipe

Dialyzer warnings removed.

OTP-13269
Application(s):
hipe

Fix HiPE ErLLVM code generation for pattern matching with UTF binaries.

OTP-13272
Application(s):
hipe

Fix various binary construction inconsistencies for hipe compiled code.

-- Passing bad field sizes to binary constructions would throw badarith rather than badarg. Worse, in guards, when the unit size of the field was 1, the exception would leak rather than failing the function clause match.

-- Passing bignums as field sizes to binary constructions would always fail (and always with badarg).

-- A bug in bs_init_bits that cased binary constructions to fail with system_limit if they were at least 1/8th of the actual limit.

-- Compiler crashes when matches against an integer literal whose size fits an unsigned word, but not a signed word or matches against an integer literal that whose size is larger than the largest allowed bignum.

-- Very large binary constructions that should fail with system_limit could instead fail with badarg or even succeed with a faulty result.

-- Add missing check for unit size match when inserting a binary. For example, a faulty expression like >/binary>> would succeed.

Full runtime dependencies of hipe-3.15: compiler-5.0, erts-7.1, kernel-3.0, stdlib-2.5, syntax_tools-1.6.14

inets-6.2 #

The inets-6.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13403
Application(s):
inets

The TFTP client/server has been fixed to allow file sizes larger than 32MB block by allowing the 16 bit block counter to wrap. Since this is a commonly accepted behavior we regard it as a bug fix.

OTP-13286
Application(s):
inets

Handle HTTP PATCH method in client.

OTP-13389
Application(s):
inets

Expected termination should not be logged as an application error.

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

kernel-4.2 #

Note! The kernel-4.2 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- erts-7.3 (first satisfied in OTP 18.3) -- sasl-2.6 (first satisfied in OTP 18.1) -- stdlib-2.6 (first satisfied in OTP 18.1)

OTP-13254
Application(s):
erts, kernel
Related Id(s):
OTP-11997 , OTP-13222

gen_tcp:accept/2 was not time warp safe. This since it used the same time as returned by erlang:now/0 when calculating timeout. This has now been fixed.

OTP-13335
Application(s):
kernel
Related Id(s):
ERL-95

Correct the contract for inet:getifaddrs/1.

OTP-9375
Application(s):
kernel

code:load_abs([10100]) would bring down the entire runtime system and create a crash dump. Corrected to generate an error exception in the calling process.

Also corrected specs for code loading functions and added more information in the documentation about the error reasons returned by code-loading functions.

OTP-13222
Application(s):
erts, kernel, stdlib
Related Id(s):
OTP-11997

Time warp safety improvements.

Introduced the options monotonic_timestamp, and strict_monotonic_timestamp to the trace, sequential trace, and system profile functionality. This since the already existing timestamp option is not time warp safe.

Introduced the option safe_fixed_monotonic_time to ets:info/2 and dets:info/2. This since the already existing safe_fixed option is not time warp safe.

OTP-13250
Application(s):
kernel

Add validation callback for heart

The erlang heart process may now have a validation callback installed. The validation callback will be executed, if present, before any heartbeat to heart port program. If the validation fails, or stalls, no heartbeat will be sent and the node will go down.

With the option 'check_schedulers' heart executes a responsiveness check of the schedulers before a heartbeat is sent to the port program. If the responsiveness check fails, the heartbeat will not be performed (as intended).

OTP-13299
Application(s):
kernel

Clarify documentation of net_kernel:allow/1

OTP-13364
Application(s):
erl_interface, kernel, wx

EPMD supports both IPv4 and IPv6

Also affects oldest supported windows version.

Full runtime dependencies of kernel-4.2: erts-7.3, sasl-2.6, stdlib-2.6

mnesia-4.13.3 #

The mnesia-4.13.3 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13284
Application(s):
mnesia

Avoid deadlock possibility in mnesia:del_table_copy/2

Full runtime dependencies of mnesia-4.13.3: erts-7.0, kernel-3.0, stdlib-2.0

observer-2.1.2 #

The observer-2.1.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12994
Application(s):
debugger, observer

Documentation corrections.

Full runtime dependencies of observer-2.1.2: erts-7.0, et-1.5, inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.0, wx-1.2

orber-3.8.1 #

The orber-3.8.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

Full runtime dependencies of orber-3.8.1: erts-7.0, inets-5.10, kernel-3.0, mnesia-4.12, ssl-5.3.4, stdlib-2.5

public_key-1.1.1 #

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

OTP-13381
Application(s):
public_key
Related Id(s):
seq13070

An encapsulated PEM header shall be followed by a blank line

Full runtime dependencies of public_key-1.1.1: asn1-3.0, crypto-3.3, erts-6.0, kernel-3.0, stdlib-2.0

runtime_tools-1.9.3 #

The runtime_tools-1.9.3 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13279
Application(s):
runtime_tools

dbg:trace_client() now uses a read buffer to speed up reading of trace files.

Full runtime dependencies of runtime_tools-1.9.3: erts-7.0, kernel-3.0, mnesia-4.12, stdlib-2.0

sasl-2.7 #

Note! The sasl-2.7 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- kernel-4.1 (first satisfied in OTP 18.1) -- stdlib-2.8 (first satisfied in OTP 18.3)

OTP-13291
Application(s):
sasl

During upgrade, the release_handler collects a list of supervisor pids in order to list all processes in the supervisor tree. If one of the supervisors (legitimately) exits before release_handler can examine it, then sys:get_status/1 would earlier be called with a dead pid, causing a 'noproc' error. This has been corrected.

OTP-13057
Application(s):
sasl

The module overload is deprecated and will be removed in OTP 19.

OTP-13290
Application(s):
sasl, stdlib

Improve implementation of supervisor child count, making it faster and more accurate for dynamic processes of a simple_one_for_one supervisor.

Full runtime dependencies of sasl-2.7: erts-6.0, kernel-4.1, stdlib-2.8, tools-2.6.14

snmp-5.2.2 #

The snmp-5.2.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13264
Application(s):
snmp

Snmp agent now properly handles vacmViewTreeFamily masks.

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

ssh-4.2.2 #

The ssh-4.2.2 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13305
Application(s):
ssh
Related Id(s):
ERL-87

Documentation correction of ssh_sftp:position/4

Thanks to Rabbe Fogelholm.

Full runtime dependencies of ssh-4.2.2: crypto-3.3, erts-6.0, kernel-3.0, public_key-0.22, stdlib-2.3

ssl-7.3 #

The ssl-7.3 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13185
Application(s):
ssl

Make sure there is only one poller validator at a time for validating the session cache.

OTP-13253
Application(s):
ssl

A timing related issue could cause ssl to hang, especially happened with newer versions of OpenSSL in combination with ECC ciphers.

OTP-13268
Application(s):
ssl

Work around a race condition in the TLS distribution start.

OTP-13306
Application(s):
ssl

Big handshake messages are now correctly fragmented in the TLS record layer.

OTP-13311
Application(s):
crypto, ssl

Improve portability of ECC tests in Crypto and SSL for "exotic" OpenSSL versions.

OTP-13377
Application(s):
ssl

Certificate extensions marked as critical are ignored when using verify_none

OTP-13378
Application(s):
ssl

If a certificate doesn't contain a CRL Distribution Points extension, and the relevant CRL is not in the cache, and the crl_check option is not set to best_effort , the revocation check should fail.

OTP-13391
Application(s):
ssl

Enable TLS distribution over IPv6

OTP-13219
Application(s):
ssl

Improve error reporting for TLS distribution

OTP-13232
Application(s):
ssl

Include options from connect, listen and accept in connection_information/1,2

OTP-13285
Application(s):
ssl

Allow adding extra options for outgoing TLS distribution connections, as supported for plain TCP connections.

OTP-13300
Application(s):
ssl

Use loopback as server option in TLS-distribution module

OTP-13334
Application(s):
ssl

Verify certificate signature against original certificate binary.

This avoids bugs due to encoding errors when re-encoding a decode certificate. As there exists several decode step and using of different ASN.1 specification this is a risk worth avoiding.

OTP-13363
Application(s):
ssl

*** HIGHLIGHT ***

Use application:ensure_all_started/2 instead of hard-coding dependencies

Full runtime dependencies of ssl-7.3: crypto-3.3, erts-7.0, inets-5.10.7, kernel-3.0, public_key-1.0, stdlib-2.0

stdlib-2.8 #

Note! The stdlib-2.8 application can *not* be applied independently of other applications on an arbitrary OTP 18 installation. On a full OTP 18 installation, also the following runtime dependencies have to be satisfied: -- erts-7.3 (first satisfied in OTP 18.3) -- kernel-4.1 (first satisfied in OTP 18.1) -- sasl-2.6 (first satisfied in OTP 18.1)

OTP-13218
Application(s):
stdlib

Fix evaluation in matching of bound map key variables in the interpreter.

Prior to this patch, the following code would not evaluate: X = key,(fun(#{X := value}) -> true end)(#{X => value})

OTP-13228
Application(s):
stdlib
Related Id(s):
ERL-32

Fix erl_eval not using non-local function handler.

OTP-13230
Application(s):
stdlib
Related Id(s):
ERL-62

The Erlang Code Linter no longer crashes if there is a -deprecated() attribute but no -module() declaration.

OTP-13239
Application(s):
stdlib
Related Id(s):
OTP-11997

The timestamp in the result returned by dets:info(Tab, safe_fixed) was unintentionally broken as a result of the time API rewrites in OTP 18.0. This has now been fixed.

OTP-13278
Application(s):
stdlib

A rare race condition in beam_lib when using encrypted abstract format has been eliminated.

OTP-13376
Application(s):
stdlib

Improved maps:with/2 and maps:without/2 algorithms

The new implementation speeds up the execution significantly for all sizes of input.

OTP-13222
Application(s):
erts, kernel, stdlib
Related Id(s):
OTP-11997

Time warp safety improvements.

Introduced the options monotonic_timestamp, and strict_monotonic_timestamp to the trace, sequential trace, and system profile functionality. This since the already existing timestamp option is not time warp safe.

Introduced the option safe_fixed_monotonic_time to ets:info/2 and dets:info/2. This since the already existing safe_fixed option is not time warp safe.

OTP-13281
Application(s):
stdlib

In the shell Ctrl+W (delete word) will no longer consider "." as being part of a word.

Full runtime dependencies of stdlib-2.8: compiler-5.0, crypto-3.3, erts-7.3, kernel-4.1, sasl-2.6

test_server-3.10 #

The test_server-3.10 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13242
Application(s):
common_test, test_server
Related Id(s):
seq12991

Two new CT hook functions have been added: post_init_per_testcase/4 and pre_end_per_testcase/3. With these hook functions, it is possible to perform arbitrary actions (including modifications of test execution, test state and results) immediately before and after the execution of the test case.

Full runtime dependencies of test_server-3.10: erts-7.0, inets-6.0, kernel-4.0, observer-2.1, runtime_tools-1.8.16, stdlib-2.5, syntax_tools-1.7, tools-2.8

tools-2.8.3 #

The tools-2.8.3 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13200
Application(s):
tools

cover:compile_beam/1 and cover:compile_beam_directory/1,2 crashed when trying to compile a beam file without a 'file' attribute. This has been corrected and an error is returned instead.

Thanks to Louis-Philippe Gauthier for reporting this bug.

OTP-13277
Application(s):
tools
Related Id(s):
856 , PR

Fix a bit string comprehension bug in Cover.

Full runtime dependencies of tools-2.8.3: compiler-5.0, erts-7.0, inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5, webtool-0.8.10

webtool-0.9.1 #

The webtool-0.9.1 application can be applied independently of other applications on a full OTP 18 installation.

OTP-13406
Application(s):
webtool

Remove dependency to inets mod_include in configuration.

Full runtime dependencies of webtool-0.9.1: erts-6.0, inets-5.10, kernel-3.0, observer-2.0, stdlib-2.0

wx-1.6.1 #

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

OTP-13404
Application(s):
wx

Fixed commands with multiple binaries, such as wxImage:new/4. Added wxWindow:SetDoubleBuffered/1, wxWindow:isDoubleBuffered/1, wxWindow:setTransparent/2 and wxWindow:canSetTransparent/1. Fixed timing issues.

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

xmerl-1.3.10 #

The xmerl-1.3.10 application can be applied independently of other applications on a full OTP 18 installation.

OTP-12862
Application(s):
cosNotification, cosTime, cosTransactions, eunit, orber, xmerl

Suppress Dialyzer warnings.

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

Thanks To #

Alex Wilson, Alexey Lebedeff, Andrew Bennett, Ben Wilson, Bernard Duggan, Dániel Szoboszlay, Hamidreza Soleimani, JP, José Valim, Kostis Sagonas, Luca Favatella, Luis Rascao, Magnus Henoch, Magnus Lång, Matt Campbell, Michael Santos, Mikael Pettersson, Pablo Lamela, Pavel Abalihin, Péter Gömöri, Prayag Verma, Richard Jones, Rory Byrne, Stavros Aronis, Steve Vinoski, Tuncer Ayaz, tmanevik, xsipewe