Patch Package | OTP 21.2 |
Git Tag | OTP-21.2 |
Date | 2018-12-11 |
Issue Id | |
System | OTP |
Release | 21 |
Application | |
Potential Incompatibilities |
Highlights #
- OTP-13468
-
- Application(s):
- erts, sasl
New counters and atomics modules supplies access to highly efficient operations on mutable fixed word sized variables.
- OTP-14669
-
- Application(s):
- erts
- Related Id(s):
- PR-1989
There is a new module persistent_term that implements a term storage suitable for terms that are frequently used but never or infrequently updated. Lookups are done in constant time without copying the terms.
- OTP-15094
-
- Application(s):
- ssh
- Related Id(s):
- OTP-15419
Added public key methods ssh-ed25519 and ssh-ed448.
Requires OpenSSL 1.1.1 or higher as cryptolib under the OTP application crypto.
- OTP-15449
-
- Application(s):
- ssl
*** POTENTIAL INCOMPATIBILITY ***
ssl now uses active n internally to boost performance. Old active once behavior can be restored by setting application variable see manual page for ssl application (man 6).
- OTP-15475
-
- Application(s):
- erts
- Related Id(s):
- ERIERL-229
Add a new pollset that is made to handle sockets that use {active, true} or {active, N}. The new pollset will not be polled by a pollthread, but instead polled by a normal scheduler.
This change was made because of the overhead associated with constantly having to re-apply the ONESHOT mechanism on fds that all input events were interesting.
The new pollset is only active on platforms that support concurrent kernel poll updates, i.e. Linux and BSD.
Potential Incompatibilities #
- OTP-15364
-
- Application(s):
- kernel
A new function, logger:update_handler_config/3 is added, and the handler callback changing_config now has a new argument, SetOrUpdate, which indicates if the configuration change comes from set_handler_config/2,3 or update_handler_config/2,3.
This allows the handler to consistently merge the new configuration with the old (if the change comes from update_handler_config/2,3) or with the default (if the change comes from set_handler_config/2,3).
The built-in handlers logger_std_h and logger_disk_log_h are updated accordingly. A bug which could cause inconsistency between the handlers' internal state and the stored configuration is also corrected.
- OTP-15449
-
- Application(s):
- ssl
*** HIGHLIGHT ***
ssl now uses active n internally to boost performance. Old active once behavior can be restored by setting application variable see manual page for ssl application (man 6).
asn1-5.0.8 #
The asn1-5.0.8 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15470
-
- Application(s):
- asn1
- Related Id(s):
- ERIERL-278
Handle erroneous length during decode (BER only) without crashing.
Full runtime dependencies of asn1-5.0.8: erts-7.0, kernel-3.0, stdlib-2.0
compiler-7.3 #
The compiler-7.3 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15400
-
- Application(s):
- compiler
- Related Id(s):
- ERL-759
Fixed a rare internal consistency failure caused by a bug in the beam_jump pass. (Thanks to Simon Cornish for reporting this bug.)
- OTP-15435
-
- Application(s):
- compiler
- Related Id(s):
- ERL-778
The compiler could fail with an internal consistency check failure when compiling code that used the is_function/2 BIF.
- OTP-15437
-
- Application(s):
- compiler, stdlib
- Related Id(s):
- ERL-762
When an external fun was used, warnings for unused variables could be suppressed.
- OTP-15481
-
- Application(s):
- compiler
The compiler would crash when compiling an after block that called erlang:raise/3 like this: erlang:raise(Class, Stacktrace, Stacktrace)
- OTP-15245
-
- Application(s):
- compiler, stdlib
- Related Id(s):
- ERL-706
When specified, the +{source,Name} option will now override the actual file name in stack traces, instead of only affecting the return value of Mod:module_info().
The +deterministic flag will also affect stack traces now, omitting all path information except the file name, fixing a long-standing issue where deterministic builds required deterministic paths.
Full runtime dependencies of compiler-7.3: crypto-3.6, erts-9.0, hipe-3.12, kernel-4.0, stdlib-2.5
crypto-4.4 #
The crypto-4.4 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15302
-
- Application(s):
- crypto
Updated the RSA options part in the crypto application's C-code, documentation and tests.
- OTP-15419
-
- Application(s):
- crypto, public_key
- Related Id(s):
- OTP-15094
Added ed25519 and ed448 sign/verify.
Requires OpenSSL 1.1.1 or higher as cryptolib under the OTP application crypto.
- OTP-15467
-
- Application(s):
- crypto
Fixed valgrind warnings.
Full runtime dependencies of crypto-4.4: erts-9.0, kernel-5.3, stdlib-3.4
erts-10.2 #
Note! The erts-10.2 application can *not* be applied independently of other applications on an arbitrary OTP 21 installation. On a full OTP 21 installation, also the following runtime dependencies have to be satisfied: -- kernel-6.1 (first satisfied in OTP 21.1) -- sasl-3.3 (first satisfied in OTP 21.2)
- OTP-12242
-
- Application(s):
- erts
- Related Id(s):
- ERL-561
When a process was waiting for a TCP socket send operation to complete, and another process closed the socket during that send, the sending process could hang. This bug has now been corrected.
- OTP-15343
-
- Application(s):
- erts, stdlib
- Related Id(s):
- PR-1962
Document bit_size in match specifications and allow it in ets:fun2ms.
- OTP-15346
-
- Application(s):
- erts
Fixed bug in ets:select_replace when called with a fully bound key could cause a following call to ets:next or ets:prev to crash the emulator or return invalid result.
- OTP-15360
-
- Application(s):
- erts
When a module has been purged from memory, any literals belonging to that module will be copied to all processes that hold references to them. The max heap size limit would be ignored in the garbage collection initiated when copying literals to a process. If the max heap size was exceeded, the process would typically be terminated in the following garbage collection. Corrected to terminate the process directly if copying a literal would exceed the max heap size.
- OTP-15389
-
- Application(s):
- erts
Fix compilation of run_erl on Solaris 11.4 and later.
- OTP-15436
-
- Application(s):
- erts
Fixed a bug where lists:reverse/1-2 could use far too many reductions. This bug was introduced in OTP 21.1.
- OTP-15446
-
- Application(s):
- erts
- Related Id(s):
- PR-2024
Fixed a bug where a dirty scheduler could stay awake forever if a distribution entry was removed as part of a dirty GC.
- OTP-15450
-
- Application(s):
- erts
- Related Id(s):
- ERIERL-229
Fix microstate accounting handing in various places. Most importantly the GC states when the GC is run on a dirty scheduler are now managed correctly.
- OTP-15461
-
- Application(s):
- erts
- Related Id(s):
- ERL-784
Fixed bug in file:sendfile when the send operation failed. For sockets in active modes it could cause emulator crash or a hanging call. For sockets with {active,false} an unexpected {inet_reply, _, _} message could be sent to the calling process. The bug exists since OTP-21.0.
- OTP-15465
-
- Application(s):
- erts
The erts configure script has been updated to reject any CFLAGS that does not have -O. This in order to prevent the common mistake of forgetting to add -O2 to custom CFLAGS.
- OTP-15474
-
- Application(s):
- erts, stdlib
- Related Id(s):
- ERIERL-229
Fix reduction count in lists:member/2
- OTP-13468
-
- Application(s):
- erts, sasl
*** HIGHLIGHT ***
New counters and atomics modules supplies access to highly efficient operations on mutable fixed word sized variables.
- OTP-14669
-
- Application(s):
- erts
- Related Id(s):
- PR-1989
*** HIGHLIGHT ***
There is a new module persistent_term that implements a term storage suitable for terms that are frequently used but never or infrequently updated. Lookups are done in constant time without copying the terms.
- OTP-15121
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-189 , PR-1974
A function inet:getifaddrs/1 that takes a list with a namespace option has been added, for platforms that support that feature, for example Linux (only?).
- OTP-15357
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERL-698
Added the nopush option for TCP sockets, which corresponds to TCP_NOPUSH on *BSD and TCP_CORK on Linux.
This is also used internally in file:sendfile to reduce latency on subsequent send operations.
- OTP-15371
-
- Application(s):
- erts, stdlib
List subtraction (The -- operator) will now yield properly on large inputs.
- OTP-15471
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-229
Optimize handling of send_delay for tcp sockes to better work with the new pollthread implementation introduced in OTP-21.
- OTP-15472
-
- Application(s):
- erts
- Related Id(s):
- ERIERL-229
Optimize driver_set_timer with a zero timeout to short-circuit and not create any timer structure, but instead schedule the timer immediately.
- OTP-15473
-
- Application(s):
- erts
- Related Id(s):
- ERIERL-229
Add erl_xcomp_code_model_small as a cross configure variable in order to let the emulator be build with the assumption that a small code model will be used on the target machine.
- OTP-15475
-
- Application(s):
- erts
- Related Id(s):
- ERIERL-229
*** HIGHLIGHT ***
Add a new pollset that is made to handle sockets that use {active, true} or {active, N}. The new pollset will not be polled by a pollthread, but instead polled by a normal scheduler.
This change was made because of the overhead associated with constantly having to re-apply the ONESHOT mechanism on fds that all input events were interesting.
The new pollset is only active on platforms that support concurrent kernel poll updates, i.e. Linux and BSD.
- OTP-15478
-
- Application(s):
- erts
- Related Id(s):
- ERL-741
Fix bug where emulator would segfault if a literal message was sent when sequence tracing was enabled.
Full runtime dependencies of erts-10.2: kernel-6.1, sasl-3.3, stdlib-3.5
et-1.6.4 #
The et-1.6.4 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15463
-
- Application(s):
- et
- Related Id(s):
- ERL-780
The scroll bar of the et_viewer window could not be dragged all the way to the top of the window. It would always stop at the second event. This is now corrected.
Full runtime dependencies of et-1.6.4: erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2
hipe-3.18.2 #
The hipe-3.18.2 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15482
-
- Application(s):
- hipe
The code was updated to avoid causing a dialyzer warning because of a tightened spec for beam_lib:info/1.
Full runtime dependencies of hipe-3.18.2: compiler-5.0, erts-9.3, kernel-5.3, stdlib-3.4, syntax_tools-1.6.14
inets-7.0.3 #
The inets-7.0.3 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15338
-
- Application(s):
- inets
- Related Id(s):
- ERL-733
Fixed http client to not send 'content-length' header in chunked encoded requests.
- OTP-15339
-
- Application(s):
- inets
- Related Id(s):
- ERL-736
Fixed http client to not drop explicit 'Content-Type' header in requests without a body such as requests with the 'Content-Type' of application/x-www-form-urlencoded.
Full runtime dependencies of inets-7.0.3: erts-6.0, kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5
kernel-6.2 #
Note! The kernel-6.2 application can *not* be applied independently of other applications on an arbitrary OTP 21 installation. On a full OTP 21 installation, also the following runtime dependency has to be satisfied: -- erts-10.1 (first satisfied in OTP 21.1)
- OTP-15364
-
- Application(s):
- kernel
*** POTENTIAL INCOMPATIBILITY ***
A new function, logger:update_handler_config/3 is added, and the handler callback changing_config now has a new argument, SetOrUpdate, which indicates if the configuration change comes from set_handler_config/2,3 or update_handler_config/2,3.
This allows the handler to consistently merge the new configuration with the old (if the change comes from update_handler_config/2,3) or with the default (if the change comes from set_handler_config/2,3).
The built-in handlers logger_std_h and logger_disk_log_h are updated accordingly. A bug which could cause inconsistency between the handlers' internal state and the stored configuration is also corrected.
- OTP-15388
-
- Application(s):
- kernel
- Related Id(s):
- PR-1983
Fix fallback when custom erl_epmd client does not implement address_please.
- OTP-15453
-
- Application(s):
- kernel
- Related Id(s):
- ERL-782
The logger ets table did not have the read_concurrency option. This is now added.
- OTP-15466
-
- Application(s):
- kernel
- Related Id(s):
- ERL-788
During system start, logger has a simple handler which prints to stdout. After the kernel supervision is started, this handler is removed and replaced by the default handler. Due to a bug, logger earlier issued a debug printout saying it received an unexpected message, which was the EXIT message from the simple handler's process. This is now corrected. The simple handler's process now unlinks from the logger process before terminating.
- OTP-15469
-
- Application(s):
- kernel
The logger handler logger_std_h would not re-create it's log file if it was removed. Due to this it could not be used with tools like 'logrotate'. This is now corrected.
- OTP-15121
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-189 , PR-1974
A function inet:getifaddrs/1 that takes a list with a namespace option has been added, for platforms that support that feature, for example Linux (only?).
- OTP-15357
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERL-698
Added the nopush option for TCP sockets, which corresponds to TCP_NOPUSH on *BSD and TCP_CORK on Linux.
This is also used internally in file:sendfile to reduce latency on subsequent send operations.
- OTP-15471
-
- Application(s):
- erts, kernel
- Related Id(s):
- ERIERL-229
Optimize handling of send_delay for tcp sockes to better work with the new pollthread implementation introduced in OTP-21.
Full runtime dependencies of kernel-6.2: erts-10.1, sasl-3.0, stdlib-3.5
observer-2.8.2 #
The observer-2.8.2 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15365
-
- Application(s):
- observer
- Related Id(s):
- ERL-722
Literals such as #{"one"=>1} dumped to a crash dump would cause crashdump_viewer to crash.
- OTP-15377
-
- Application(s):
- observer
crashdump_viewer would sometimes crash when processing a dump which was truncated in the literals area. This is now corrected.
- OTP-15391
-
- Application(s):
- observer
Since OTP-20.2, crashdump_viewer was very slow when opening a crash dump with many processes. An ets:select per process could be removed, which improved the performance a lot.
A bug when parsing heap data in a crashdump caused crashdump_viewer to crash when multiple Yc lines referenced the same reference counted binary. This is now corrected.
Full runtime dependencies of observer-2.8.2: erts-7.0, et-1.5, kernel-3.0, runtime_tools-1.8.14, stdlib-3.5, wx-1.2
os_mon-2.4.7 #
The os_mon-2.4.7 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15387
-
- Application(s):
- os_mon
- Related Id(s):
- PR-1966
Due to /proc restrictions in newer Android releases enforced by SELinux, cpu_sup is fixed so that it gets some basic CPU stats using the sysinfo syscall rather than reading /proc/loadavg.
Full runtime dependencies of os_mon-2.4.7: erts-6.0, kernel-3.0, mnesia-4.12, otp_mibs-1.0.9, sasl-2.4, snmp-4.25.1, stdlib-2.0
public_key-1.6.4 #
The public_key-1.6.4 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15419
-
- Application(s):
- crypto, public_key
- Related Id(s):
- OTP-15094
Added ed25519 and ed448 sign/verify.
Requires OpenSSL 1.1.1 or higher as cryptolib under the OTP application crypto.
Full runtime dependencies of public_key-1.6.4: asn1-3.0, crypto-3.8, erts-6.0, kernel-3.0, stdlib-3.5
reltool-0.7.8 #
The reltool-0.7.8 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15454
-
- Application(s):
- reltool
Reltool would earlier erroneously split paths like "c:\foo" into ["c","\foo"] when reading the $ERL_LIBS variable on windows. This is now corrected.
Full runtime dependencies of reltool-0.7.8: erts-7.0, kernel-3.0, sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2
sasl-3.3 #
Note! The sasl-3.3 application can *not* be applied independently of other applications on an arbitrary OTP 21 installation. On a full OTP 21 installation, also the following runtime dependency has to be satisfied: -- erts-10.2 (first satisfied in OTP 21.2)
- OTP-13468
-
- Application(s):
- erts, sasl
*** HIGHLIGHT ***
New counters and atomics modules supplies access to highly efficient operations on mutable fixed word sized variables.
Full runtime dependencies of sasl-3.3: erts-10.2, kernel-5.3, stdlib-3.4, tools-2.6.14
ssh-4.7.2 #
The ssh-4.7.2 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15413
-
- Application(s):
- ssh
Incompatibility with newer OpenSSH fixed. Previously versions 7.8 and later could cause Erlang SSH to exit.
- OTP-15416
-
- Application(s):
- ssh
The 'exec' option for ssh daemons had wrong format in the documentation.
- OTP-15094
-
- Application(s):
- ssh
- Related Id(s):
- OTP-15419
*** HIGHLIGHT ***
Added public key methods ssh-ed25519 and ssh-ed448.
Requires OpenSSL 1.1.1 or higher as cryptolib under the OTP application crypto.
- OTP-15312
-
- Application(s):
- ssh
The SSH property tests are now adapted to the PropEr testing tool.
- OTP-15314
-
- Application(s):
- ssh
The term "user" was not documented in the SSH app. A new chapter with terminology is added to the User's Manual where the term "user" is defined.
A reference manual page about the module ssh_file is also added. This is the default callback module for user's keys, host keys etc.
- OTP-15424
-
- Application(s):
- ssh
Host and user key checking is made more robust.
Full runtime dependencies of ssh-4.7.2: crypto-4.2, erts-6.0, kernel-3.0, public_key-1.5.2, stdlib-3.3
ssl-9.1 #
The ssl-9.1 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15368
-
- Application(s):
- ssl
PEM cache was not evicting expired entries due to due to timezone confusion.
- OTP-15384
-
- Application(s):
- ssl
- Related Id(s):
- ERL-756
Make sure an error is returned if a "transport_accept socket" is used in some other call than ssl:handshake* or ssl:controlling_process
- OTP-15402
-
- Application(s):
- ssl
Fix timestamp handling in the PEM-cache could cause entries to not be invalidated at the correct time.
- OTP-15412
-
- Application(s):
- ssl
- Related Id(s):
- ERL-731
Extend check for undelivered data at closing, could under some circumstances fail to deliver all data that was actually received.
- OTP-15415
-
- Application(s):
- ssl
- Related Id(s):
- ERL-763
Correct signature check for TLS-1.2 that allows different algorithms for signature of peer cert and peer cert key. Not all allowed combinations where accepted.
- OTP-15418
-
- Application(s):
- ssl
- Related Id(s):
- ERL-770
Correct gen_statem return value, could cause renegotiation to fail.
- OTP-15420
-
- Application(s):
- ssl
- Related Id(s):
- ERIERL-268
Add engine support for RSA key exchange
- OTP-15449
-
- Application(s):
- ssl
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
ssl now uses active n internally to boost performance. Old active once behavior can be restored by setting application variable see manual page for ssl application (man 6).
Full runtime dependencies of ssl-9.1: crypto-4.2, erts-10.0, inets-5.10.7, kernel-6.0, public_key-1.5, stdlib-3.5
stdlib-3.7 #
The stdlib-3.7 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15343
-
- Application(s):
- erts, stdlib
- Related Id(s):
- PR-1962
Document bit_size in match specifications and allow it in ets:fun2ms.
- OTP-15378
-
- Application(s):
- stdlib
- Related Id(s):
- ERL-696
The beam() type in beam_lib is defined as module() | file:filename() | binary(). The module() is misleading. Giving the module name as an atom will only work if the BEAM file is in a current directory.
To avoid confusion, module() has been removed from the type. That means that there will be a Dialyzer warning for code that call beam_lib with an atom as filename, but the calls will still work.
- OTP-15428
-
- Application(s):
- stdlib
- Related Id(s):
- ERL-777
unicode_util crashed on certain emoji grapheme clusters in binary strings.
- OTP-15437
-
- Application(s):
- compiler, stdlib
- Related Id(s):
- ERL-762
When an external fun was used, warnings for unused variables could be suppressed.
- OTP-15474
-
- Application(s):
- erts, stdlib
- Related Id(s):
- ERIERL-229
Fix reduction count in lists:member/2
- OTP-15245
-
- Application(s):
- compiler, stdlib
- Related Id(s):
- ERL-706
When specified, the +{source,Name} option will now override the actual file name in stack traces, instead of only affecting the return value of Mod:module_info().
The +deterministic flag will also affect stack traces now, omitting all path information except the file name, fixing a long-standing issue where deterministic builds required deterministic paths.
- OTP-15371
-
- Application(s):
- erts, stdlib
List subtraction (The -- operator) will now yield properly on large inputs.
- OTP-15464
-
- Application(s):
- stdlib
calendar:system_time_to_rfc3339/1,2 no longer remove trailing zeros from fractions.
Full runtime dependencies of stdlib-3.7: compiler-5.0, crypto-3.3, erts-10.0, kernel-6.0, sasl-3.0
tools-3.0.2 #
The tools-3.0.2 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15476
-
- Application(s):
- tools
Remove emacs warnings and added more tests.
Full runtime dependencies of tools-3.0.2: compiler-5.0, erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4
wx-1.8.6 #
The wx-1.8.6 application can be applied independently of other applications on a full OTP 21 installation.
- OTP-15426
-
- Application(s):
- wx
- Related Id(s):
- ERL-755
Fixed delayed delete bug which caused wx applications to crash on Mojave.
Full runtime dependencies of wx-1.8.6: erts-6.0, kernel-3.0, stdlib-2.0