diff options
Diffstat (limited to 'release-notes')
118 files changed, 67704 insertions, 0 deletions
diff --git a/release-notes/OTP-18.3.4.1.1.README.txt b/release-notes/OTP-18.3.4.1.1.README.txt new file mode 100644 index 0000000..b98ba1c --- /dev/null +++ b/release-notes/OTP-18.3.4.1.1.README.txt @@ -0,0 +1,88 @@ +Patch Package: OTP 18.3.4.1.1 +Git Tag: OTP-18.3.4.1.1 +Date: 2017-11-22 +Trouble Report Id: OTP-14748 +Seq num: +System: OTP +Release: 18 +Application: ssl-7.3.3.0.1 +Predecessor: OTP 18.3.4.1 + + Check out the git tag OTP-18.3.4.1.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- ssl-7.3.3.0.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-7.3.3.0.1 application can be applied independently of other + applications on a full OTP 18 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-14748 Application(s): ssl + + An erlang TLS server configured with cipher suites + using rsa key exchange, may be vulnerable to an + Adaptive Chosen Ciphertext attack (AKA Bleichenbacher + attack) against RSA, which when exploited, may result + in plaintext recovery of encrypted messages and/or a + Man-in-the-middle (MiTM) attack, despite the attacker + not having gained access to the server’s private key + itself. CVE-2017-1000385 + + Exploiting this vulnerability to perform plaintext + recovery of encrypted messages will, in most practical + cases, allow an attacker to read the plaintext only + after the session has completed. Only TLS sessions + established using RSA key exchange are vulnerable to + this attack. + + Exploiting this vulnerability to conduct a MiTM attack + requires the attacker to complete the initial attack, + which may require thousands of server requests, during + the handshake phase of the targeted session within the + window of the configured handshake timeout. This attack + may be conducted against any TLS session using RSA + signatures, but only if cipher suites using RSA key + exchange are also enabled on the server. The limited + window of opportunity, limitations in bandwidth, and + latency make this attack significantly more difficult + to execute. + + RSA key exchange is enabled by default although least + prioritized if server order is honored. For such a + cipher suite to be chosen it must also be supported by + the client and probably the only shared cipher suite. + + Captured TLS sessions encrypted with ephemeral cipher + suites (DHE or ECDHE) are not at risk for subsequent + decryption due to this vulnerability. + + As a workaround if default cipher suite configuration + was used you can configure the server to not use + vulnerable suites with the ciphers option like this: + + {ciphers, [Suite || Suite <- ssl:cipher_suites(), + element(1,Suite) =/= rsa]} + + that is your code will look somethingh like this: + + ssl:listen(Port, [{ciphers, [Suite || Suite <- + ssl:cipher_suites(), element(1,S) =/= rsa]} | + Options]). + + Thanks to Hanno Böck, Juraj Somorovsky and Craig Young + for reporting this vulnerability. + + + Full runtime dependencies of ssl-7.3.3.0.1: crypto-3.3, erts-6.0, + inets-5.10.7, kernel-3.0, public_key-1.0, stdlib-2.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- diff --git a/release-notes/OTP-20.3.2.1.README.txt b/release-notes/OTP-20.3.2.1.README.txt new file mode 100644 index 0000000..f6c051d --- /dev/null +++ b/release-notes/OTP-20.3.2.1.README.txt @@ -0,0 +1,44 @@ +Patch Package: OTP 20.3.2.1 +Git Tag: OTP-20.3.2.1 +Date: 2019-02-18 +Trouble Report Id: OTP-15584 +Seq num: ERIERL-282 +System: OTP +Release: 20 +Application: common_test-1.15.4.0.1 +Predecessor: OTP 20.3.2 + + Check out the git tag OTP-20.3.2.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.15.4.0.1 ------------------------------------------ + --------------------------------------------------------------------- + + The common_test-1.15.4.0.1 application can be applied independently + of other applications on a full OTP 20 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-15584 Application(s): common_test + Related Id(s): ERIERL-282 + + The status of a test case which failed with timetrap + timeout in end_per_testcase could not be modified by + returning {fail,Reason} from a post_end_per_testcase + hook function. This is now corrected. + + + Full runtime dependencies of common_test-1.15.4.0.1: 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-3.4, syntax_tools-1.7, tools-2.8, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-22.3.4.27.README.txt b/release-notes/OTP-22.3.4.27.README.txt new file mode 100644 index 0000000..3fc578b --- /dev/null +++ b/release-notes/OTP-22.3.4.27.README.txt @@ -0,0 +1,145 @@ +Patch Package: OTP 22.3.4.27 +Git Tag: OTP-22.3.4.27 +Date: 2024-03-18 +Trouble Report Id: OTP-18169, OTP-18170, OTP-18175, OTP-18197, + OTP-18258, OTP-18897, OTP-19002 +Seq num: ERIERL-1041, GH-6165, GH-6309, PR-6134, + PR-6135, PR-6142, PR-6213, PR-6324 +System: OTP +Release: 22 +Application: erts-10.7.2.19, ssh-4.9.1.5 +Predecessor: OTP 22.3.4.26 + + Check out the git tag OTP-22.3.4.27, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18897 Application(s): ssh + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH User's Guide. + + + --------------------------------------------------------------------- + --- erts-10.7.2.19 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-10.7.2.19 application *cannot* be applied + independently of other applications on an arbitrary OTP 22 + installation. + + On a full OTP 22 installation, also the following runtime + dependency has to be satisfied: + -- kernel-6.5.2.5 (first satisfied in OTP 22.3.4.25) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18169 Application(s): erts + Related Id(s): PR-6134 + + A race could cause process_info(Pid, message_queue_len) + on other processes to return invalid results. + + + OTP-18170 Application(s): erts + Related Id(s): PR-6135 + + Fixed reduction counting for handling process system + tasks. + + + OTP-18175 Application(s): erts + Related Id(s): PR-6142 + + Priority elevation of terminating processes did not + work which could cause execution of such processes to + be delayed. + + + OTP-18197 Application(s): erts + Related Id(s): GH-6165, PR-6213 + + The erlang:monotonic_time/1, erlang:system_time/1, + erlang:time_offset/1, and os:system_time/1 BIFs + erroneously failed when passed the argument native. + + + OTP-18258 Application(s): erts + Related Id(s): GH-6309, PR-6324 + + Notifications about available distribution data sent to + distribution controller processes could be lost. + Distribution controller processes can be used when + implementing an alternative distribution carrier. The + default distribution over tcp was not effected and the + bug was also not present on x86/x86_64 platforms. + + + Full runtime dependencies of erts-10.7.2.19: kernel-6.5.2.5, + sasl-3.3, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.9.1.5 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssh-4.9.1.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 22 installation. + + On a full OTP 22 installation, also the following runtime + dependency has to be satisfied: + -- crypto-4.6.4 (first satisfied in OTP 22.2.2) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18897 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH User's Guide. + + + OTP-19002 Application(s): ssh + Related Id(s): ERIERL-1041 + + With this change, KEX strict terminal message is + emitted with debug verbosity. + + + Full runtime dependencies of ssh-4.9.1.5: crypto-4.6.4, erts-9.0, + kernel-5.3, public_key-1.6.1, stdlib-3.4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.2.7.5.README.txt b/release-notes/OTP-23.2.7.5.README.txt new file mode 100644 index 0000000..bc6f40e --- /dev/null +++ b/release-notes/OTP-23.2.7.5.README.txt @@ -0,0 +1,40 @@ +Patch Package: OTP 23.2.7.5 +Git Tag: OTP-23.2.7.5 +Date: 2022-06-22 +Trouble Report Id: OTP-18145 +Seq num: +System: OTP +Release: 23 +Application: ssl-10.2.4.4 +Predecessor: OTP 23.2.7.4 + + Check out the git tag OTP-23.2.7.5, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- ssl-10.2.4.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-10.2.4.4 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18145 Application(s): ssl + + Improved handling of unexpected messages during the + handshake, taking the right action for unexpected + messages. + + + Full runtime dependencies of ssl-10.2.4.4: crypto-4.2, erts-10.0, + inets-5.10.7, kernel-6.0, public_key-1.8, stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.15.README.txt b/release-notes/OTP-23.3.4.15.README.txt new file mode 100644 index 0000000..b793170 --- /dev/null +++ b/release-notes/OTP-23.3.4.15.README.txt @@ -0,0 +1,145 @@ +Patch Package: OTP 23.3.4.15 +Git Tag: OTP-23.3.4.15 +Date: 2022-06-21 +Trouble Report Id: OTP-17858, OTP-18093, OTP-18094, OTP-18123, + OTP-18144, OTP-18145, OTP-18152 +Seq num: ERIERL-728, GH-5981, GH-5994 +System: OTP +Release: 23 +Application: crypto-4.9.0.3, erts-11.2.2.14, ssh-4.11.1.6, + ssl-10.3.1.3 +Predecessor: OTP 23.3.4.14 + + Check out the git tag OTP-23.3.4.15, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-4.9.0.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-4.9.0.3 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-17858 Application(s): crypto + Related Id(s): ERIERL-728 + + Fix timing bug in ensure_engine_loaded + + When two ensure_engine_loaded() calls were done in + parallel there was a possibility that a crypto lib + function was called by both instead of just one of them + which resulted in an error. This is solved by moving + the implementation from erlang down into a NIF function + that uses a mutex to protect the sensitive part. + + + OTP-18152 Application(s): crypto + + Remove all references correctly in the garbage + collection if an engine handle was not explicit + unloaded. + + + Full runtime dependencies of crypto-4.9.0.3: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-11.2.2.14 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-11.2.2.14 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18093 Application(s): erts + Related Id(s): OTP-18104, PR-5987 + + Accept funs (NEW_FUN_EXT) with incorrectly encoded size + field. This is a workaround for a bug (OTP-18104) + existing in OTP 23 and 24 that could cause incorrect + size fields in certain cases. The emulator does not use + the decoded size field, but erl_interface still does + and is not helped by this workaround. + + + OTP-18123 Application(s): erts + Related Id(s): GH-5994 + + The zlib built in to the runtime system has been + updated to version 1.2.12. (Note that on most + platforms, the platform's own zlib is used.) + + + OTP-18144 Application(s): erts + Related Id(s): GH-5981 + + Fixed emulator crash that could happen during crashdump + generation of ETS tables with options ordered_set and + {write_concurrency,true}. + + + Full runtime dependencies of erts-11.2.2.14: kernel-7.3.1.5, + sasl-3.3, stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssh-4.11.1.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.11.1.6 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18094 Application(s): ssh + + Binaries can be limited in logs with the parameter + max_log_item_len. The default value is 500 bytes. + + + Full runtime dependencies of ssh-4.11.1.6: crypto-4.6.4, erts-9.0, + kernel-5.3, public_key-1.6.1, stdlib-3.4.1 + + + --------------------------------------------------------------------- + --- ssl-10.3.1.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.3.1.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 23 installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.10.0.1 (first satisfied in OTP 23.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18145 Application(s): ssl + + Improved handling of unexpected messages during the + handshake, taking the right action for unexpected + messages. + + + Full runtime dependencies of ssl-10.3.1.3: crypto-4.2, erts-10.0, + inets-5.10.7, kernel-6.0, public_key-1.10.0.1, stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.16.README.txt b/release-notes/OTP-23.3.4.16.README.txt new file mode 100644 index 0000000..a4bb7dd --- /dev/null +++ b/release-notes/OTP-23.3.4.16.README.txt @@ -0,0 +1,205 @@ +Patch Package: OTP 23.3.4.16 +Git Tag: OTP-23.3.4.16 +Date: 2022-07-13 +Trouble Report Id: OTP-18104, OTP-18172, OTP-18173 +Seq num: ERIERL-826 +System: OTP +Release: 23 +Application: crypto-4.9.0.4, erts-11.2.2.15, ssl-10.3.1.4 +Predecessor: OTP 23.3.4.15 + + Check out the git tag OTP-23.3.4.16, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + --------------------------------------------------------------------- + --- crypto-4.9.0.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-4.9.0.4 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + Full runtime dependencies of crypto-4.9.0.4: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-11.2.2.15 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-11.2.2.15 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18104 Application(s): erts + Related Id(s): OTP-18093 + + Fix faulty distribution encoding of terms with either + + -- a fun with bit-string or export-fun in its + environment when encoded toward a not yet established + (pending) connection + + -- or a fun with a binary/bitstring, in its + environment, referring to an off-heap binary (larger + than 64 bytes). + + The symptom could be failed decoding on the receiving + side leading to aborted connection. Fix OTP-18093 is a + workaround for theses bugs that makes the VM accepts + such faulty encoded funs. + + The first encoding bug toward pending connection exists + only in OTP 23 and 24, but the second one exists also + on OTP 25. + + + Full runtime dependencies of erts-11.2.2.15: kernel-7.3.1.5, + sasl-3.3, stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssl-10.3.1.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.3.1.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 23 installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.10.0.1 (first satisfied in OTP 23.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18173 Application(s): ssl + + The link to crypto:engine_load refered the function + with wrong arity. + + + Full runtime dependencies of ssl-10.3.1.4: crypto-4.2, erts-10.0, + inets-5.10.7, kernel-6.0, public_key-1.10.0.1, stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.17.README.txt b/release-notes/OTP-23.3.4.17.README.txt new file mode 100644 index 0000000..3590189 --- /dev/null +++ b/release-notes/OTP-23.3.4.17.README.txt @@ -0,0 +1,230 @@ +Patch Package: OTP 23.3.4.17 +Git Tag: OTP-23.3.4.17 +Date: 2022-09-05 +Trouble Report Id: OTP-18164, OTP-18169, OTP-18170, OTP-18175, + OTP-18177, OTP-18193, OTP-18197, OTP-18198, + OTP-18222, OTP-18224 +Seq num: GH-6122, GH-6129, GH-6165, GH-6242 +System: OTP +Release: 23 +Application: erts-11.2.2.16, inets-7.3.2.3, + kernel-7.3.1.6, ssl-10.3.1.5 +Predecessor: OTP 23.3.4.16 + + Check out the git tag OTP-23.3.4.17, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-11.2.2.16 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-11.2.2.16 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18164 Application(s): erts + Related Id(s): PR-6114 + + Distributed exit signals could be lost under the + following conditions: + + -- An exit signal from a parent process to a child + process was lost if: + + -- the parent process terminated before the spawn + request that created the child had completed, + + -- the spawn request set up a link between parent and + child + + -- the spawn request was distributed, and + + -- the exit reason was larger than one machine word. + + -- Loss of a connection over which a not yet completed + spawn request was ongoing could cause loss of exit + signals. Such loss of exit signals was very rare. + Besides the above described connection loss also the + following conditions had to be satisfied: + + -- The spawn request that was interrupted by the + connection loss also had to set up a link between the + parent process and the child process. + + -- The parent process that issued the spawn request + also had to be terminating while the spawn request was + interrupted by the connection loss. + + -- The same parent process also had to have made other + spawn requests to other nodes than to the node to which + the connection was lost. + + -- These spawn requests to the other nodes also had to + set up links. + + -- These spawn requests to the other nodes also had to + be not yet completed at the time of the connection + loss. That is, the spawn reply from the child process + had not yet reached the parent process. + + If all the conditions above were met, exit signals to + the children spawned due to the above described spawn + requests to other nodes *could* be lost. + + The above bug also caused a significant memory leak + when it was triggered since the destruction of the + parent process never completed. + + + OTP-18169 Application(s): erts + Related Id(s): PR-6134 + + A race could cause process_info(Pid, message_queue_len) + on other processes to return invalid results. + + + OTP-18170 Application(s): erts + Related Id(s): PR-6135 + + Fixed reduction counting for handling process system + tasks. + + + OTP-18175 Application(s): erts + Related Id(s): PR-6142 + + Priority elevation of terminating processes did not + work which could cause execution of such processes to + be delayed. + + + OTP-18177 Application(s): erts + Related Id(s): PR-6150 + + An unlink operation made by a process that terminated + before the unlink operation completed, i.e., before it + had received an unlink-ack signal from the linked + process, caused an exit signal to erroneously be sent + from the terminating process to the process being + unlinked. This exit signal would most often be ignored + by the receiver, but if the receiver of the exit signal + concurrently set up a new link, it could receive the + exit signal with the actual exit reason of the + terminating process instead of a noproc exit reason. It + is however very hard to detect that this has happened + and has no obvious negative consequences, so it should + be considered harmless. + + A distributed unlink-ack signal received by a + terminating process was also not properly removed which + could cause a minor memory leak. + + + OTP-18197 Application(s): erts + Related Id(s): GH-6165, PR-6213 + + The erlang:monotonic_time/1, erlang:system_time/1, + erlang:time_offset/1, and os:system_time/1 BIFs + erroneously failed when passed the argument native. + + + OTP-18222 Application(s): erts + Related Id(s): GH-6242, PR-6248 + + Fix writing and reading of more than 2 GB in a single + read/write operation on macOS. Before this fix + attempting to read/write more than 2GB would result in + {error,einval}. + + + Full runtime dependencies of erts-11.2.2.16: kernel-7.3.1.5, + sasl-3.3, stdlib-3.13 + + + --------------------------------------------------------------------- + --- inets-7.3.2.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-7.3.2.3 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Improvements and New Features --- + + OTP-18193 Application(s): inets + Related Id(s): GH-6122 + + Remove documentation of no longer supported callback. + + + Full runtime dependencies of inets-7.3.2.3: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 + + + --------------------------------------------------------------------- + --- kernel-7.3.1.6 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-7.3.1.6 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- erts-11.2.2.11 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18198 Application(s): kernel + Related Id(s): GH-6129, PR-6216 + + A call to net_kernel:setopts(new, Opts) at the same + time as a connection was being set up could cause a + deadlock between the net_kernel process and the process + setting up the connection. + + + Full runtime dependencies of kernel-7.3.1.6: erts-11.2.2.11, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssl-10.3.1.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.3.1.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 23 installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.10.0.1 (first satisfied in OTP 23.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18224 Application(s): ssl + + Correct corner case of unexpected message handling for + pre TLS-1.3 versions, could cause "late failure" and + make the server dependent on its handshake timeout to + prevent possible DoS attacks. + + + Full runtime dependencies of ssl-10.3.1.5: crypto-4.2, erts-10.0, + inets-5.10.7, kernel-6.0, public_key-1.10.0.1, stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.18.README.txt b/release-notes/OTP-23.3.4.18.README.txt new file mode 100644 index 0000000..4a28010 --- /dev/null +++ b/release-notes/OTP-23.3.4.18.README.txt @@ -0,0 +1,98 @@ +Patch Package: OTP 23.3.4.18 +Git Tag: OTP-23.3.4.18 +Date: 2022-10-04 +Trouble Report Id: OTP-18232, OTP-18258, OTP-18263 +Seq num: ERIERL-821, GH-6309 +System: OTP +Release: 23 +Application: dialyzer-4.3.1.2, erts-11.2.2.17, + kernel-7.3.1.7 +Predecessor: OTP 23.3.4.17 + + Check out the git tag OTP-23.3.4.18, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- dialyzer-4.3.1.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The dialyzer-4.3.1.2 application can be applied independently of + other applications on a full OTP 23 installation. + + --- Improvements and New Features --- + + OTP-18263 Application(s): dialyzer + Related Id(s): ERIERL-821 + + The --input_list_file option has been added. + + + Full runtime dependencies of dialyzer-4.3.1.2: compiler-7.0, + erts-9.0, hipe-3.16.1, kernel-5.3, stdlib-3.4, syntax_tools-2.0, + wx-1.2 + + + --------------------------------------------------------------------- + --- erts-11.2.2.17 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-11.2.2.17 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18258 Application(s): erts + Related Id(s): GH-6309, PR-6324 + + Notifications about available distribution data sent to + distribution controller processes could be lost. + Distribution controller processes can be used when + implementing an alternative distribution carrier. The + default distribution over tcp was not effected and the + bug was also not present on x86/x86_64 platforms. + + + Full runtime dependencies of erts-11.2.2.17: kernel-7.3.1.5, + sasl-3.3, stdlib-3.13 + + + --------------------------------------------------------------------- + --- kernel-7.3.1.7 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-7.3.1.7 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- erts-11.2.2.11 (first satisfied in OTP 23.3.4.12) + + + --- Improvements and New Features --- + + OTP-18232 Application(s): kernel + Related Id(s): OTP-17843, PR-6264 + + A new function global:disconnect/0 has been introduced + with which one can cleanly disconnect a node from all + other nodes in a cluster of global nodes. + + + Full runtime dependencies of kernel-7.3.1.7: erts-11.2.2.11, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.19.README.txt b/release-notes/OTP-23.3.4.19.README.txt new file mode 100644 index 0000000..8e691ce --- /dev/null +++ b/release-notes/OTP-23.3.4.19.README.txt @@ -0,0 +1,217 @@ +Patch Package: OTP 23.3.4.19 +Git Tag: OTP-23.3.4.19 +Date: 2023-06-08 +Trouble Report Id: OTP-18321, OTP-18325, OTP-18365, OTP-18388, + OTP-18421, OTP-18463, OTP-18470, OTP-18525, + OTP-18570, OTP-18595 +Seq num: ERIERL-944, GH-6465, GH-6466, GH-6873 +System: OTP +Release: 23 +Application: compiler-7.6.9.3, erts-11.2.2.18, + stdlib-3.14.2.3, xmerl-1.3.27.1 +Predecessor: OTP 23.3.4.18 + + Check out the git tag OTP-23.3.4.19, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-7.6.9.3 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-7.6.9.3 application can be applied independently of + other applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + OTP-18365 Application(s): compiler + + Fixed a bug that could cause legal code to fail + validation. + + + OTP-18470 Application(s): compiler + Related Id(s): GH-6873, PR-6877 + + The compiler would generate incorrect code for the + following type of expression: + + Pattern = BoundVar1 = . . . = BoundVarN = Expression + + An exception should be raised if any of the bound + variables have different values than Expression. The + compiler would generate code that would cause the bound + variables to be bound to the value of Expressionwhether + the value matched or not. + + + Full runtime dependencies of compiler-7.6.9.3: crypto-3.6, erts-11.0, + hipe-3.12, kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- erts-11.2.2.18 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-11.2.2.18 application *cannot* be applied + independently of other applications on an arbitrary OTP 23 + installation. + + On a full OTP 23 installation, also the following runtime + dependency has to be satisfied: + -- kernel-7.3.1.5 (first satisfied in OTP 23.3.4.12) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18321 Application(s): erts + + Fix list_to_atom/1 for negative code points. Could + either return with a positive code point or fail with + an incorrect exception. + + + OTP-18388 Application(s): erts + Related Id(s): OTP-17462, PR-6662 + + A race condition which was very rarely triggered could + cause the signal queue of a process to become + inconsistent causing the runtime system to crash. + + + OTP-18421 Application(s): erts + Related Id(s): PR-6806 + + process_info(Pid, status) when Pid /= self() could + return an erroneous result. + + + OTP-18463 Application(s): erts + Related Id(s): PR-6858 + + In rare circumstances, when a process exceeded its + allowed heap size set by option max_heap_size, it would + not be killed as it should be, but instead enter a kind + of zombie state it would never get out of. + + + OTP-18525 Application(s): erts + Related Id(s): PR-7049 + + Implementations of the call() driver callback that + returned a faulty encoded result could cause a memory + leak and could cause invalid data on the heap of the + processes calling erlang:port_call/3. + + + OTP-18570 Application(s): erts + Related Id(s): PR-7190 + + If a runtime system which was starting the distribution + already had existing pids, ports, or references + referring to a node with the same nodename/creation + pair that the runtime system was about to use, these + already existing pids, ports, or references would not + work as expected in various situations after the node + had gone alive. This could only occur if the runtime + system was communicated such pids, ports, or references + prior to the distribution was started. That is, it was + extremely unlikely to happen unless the distribution + was started dynamically and was even then very unlikely + to happen. The runtime system now checks for already + existing pids, ports, and references with the same + nodename/creation pair that it is about to use. If such + are found another creation will be chosen in order to + avoid these issues. + + + Full runtime dependencies of erts-11.2.2.18: kernel-7.3.1.5, + sasl-3.3, stdlib-3.13 + + + --------------------------------------------------------------------- + --- stdlib-3.14.2.3 ------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-3.14.2.3 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + Full runtime dependencies of stdlib-3.14.2.3: compiler-5.0, + crypto-3.3, erts-11.0, kernel-7.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.27.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.27.1 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18595 Application(s): xmerl + Related Id(s): ERIERL-944 + + New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some + XML security issues. + + xmerl_scan gets one new option: + + -- {allow_entities, Boolean} -- Gives the possibility + to disallow entities by setting this option to false + (true is default) + + xmerl_sax_parser gets the following options: + + -- disallow_entities -- Don't allow entities in + document + + -- {entity_recurse_limit, N} -- Set a limit on entity + recursion depth (default is 3) + + -- {external_entities, AllowedType} -- Specify which + types of external entities that are allowed, this also + affect external DTD's. The types are all(default), file + and none + + -- {fail_undeclared_ref, Boolean} -- Sets the behavior + for undeclared references due to an external file is + not parsed (true is default) + + The old option skip_external_dtd is still valid and the + same as {external_entities, none} and + {fail_undeclared_ref, false} but just affects DTD's and + not other external references. + + + Full runtime dependencies of xmerl-1.3.27.1: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-23.3.4.20.README.txt b/release-notes/OTP-23.3.4.20.README.txt new file mode 100644 index 0000000..1a5d3e9 --- /dev/null +++ b/release-notes/OTP-23.3.4.20.README.txt @@ -0,0 +1,78 @@ +Patch Package: OTP 23.3.4.20 +Git Tag: OTP-23.3.4.20 +Date: 2024-03-18 +Trouble Report Id: OTP-18897, OTP-19002 +Seq num: ERIERL-1041 +System: OTP +Release: 23 +Application: ssh-4.11.1.7 +Predecessor: OTP 23.3.4.19 + + Check out the git tag OTP-23.3.4.20, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18897 Application(s): ssh + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH User's Guide. + + + --------------------------------------------------------------------- + --- ssh-4.11.1.7 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.11.1.7 application can be applied independently of other + applications on a full OTP 23 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18897 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH User's Guide. + + + OTP-19002 Application(s): ssh + Related Id(s): ERIERL-1041 + + With this change, KEX strict terminal message is + emitted with debug verbosity. + + + Full runtime dependencies of ssh-4.11.1.7: crypto-4.6.4, erts-9.0, + kernel-5.3, public_key-1.6.1, stdlib-3.4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.1.README.txt b/release-notes/OTP-24.3.4.1.README.txt new file mode 100644 index 0000000..22a204c --- /dev/null +++ b/release-notes/OTP-24.3.4.1.README.txt @@ -0,0 +1,188 @@ +Patch Package: OTP 24.3.4.1 +Git Tag: OTP-24.3.4.1 +Date: 2022-06-08 +Trouble Report Id: OTP-17858, OTP-18085, OTP-18087, OTP-18092, + OTP-18093, OTP-18094, OTP-18100, OTP-18123, + OTP-18128, OTP-18129 +Seq num: ERIERL-728, GH-5950, GH-5961, GH-5985, + GH-5994 +System: OTP +Release: 24 +Application: crypto-5.0.6.1, erts-12.3.2.1, + mnesia-4.20.4.1, ssh-4.13.2.1, ssl-10.7.3.1 +Predecessor: OTP 24.3.4 + + Check out the git tag OTP-24.3.4.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.0.6.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.0.6.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-17858 Application(s): crypto + Related Id(s): ERIERL-728 + + Fix timing bug in ensure_engine_loaded + + When two ensure_engine_loaded() calls were done in + parallel there was a possibility that a crypto lib + function was called by both instead of just one of them + which resulted in an error. This is solved by moving + the implementation from erlang down into a NIF function + that uses a mutex to protect the sensitive part. + + + Full runtime dependencies of crypto-5.0.6.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-12.3.2.1 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18093 Application(s): erts + Related Id(s): OTP-18104, PR-5987 + + Accept funs (NEW_FUN_EXT) with incorrectly encoded size + field. This is a workaround for a bug (OTP-18104) + existing in OTP 23 and 24 that could cause incorrect + size fields in certain cases. The emulator does not use + the decoded size field, but erl_interface still does + and is not helped by this workaround. + + + OTP-18123 Application(s): erts + Related Id(s): GH-5994 + + The zlib built in to the runtime system has been + updated to version 1.2.12. (Note that on most + platforms, the platform's own zlib is used.) + + + Full runtime dependencies of erts-12.3.2.1: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- mnesia-4.20.4.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.20.4.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18128 Application(s): mnesia + Related Id(s): PR-6013 + + Fixed add_table_copy which could leave a table lock if + the receiving node went down during the operation. + + + Full runtime dependencies of mnesia-4.20.4.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18094 Application(s): ssh + + Binaries can be limited in logs with the parameter + max_log_item_len. The default value is 500 bytes. + + + Full runtime dependencies of ssh-4.13.2.1: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18087 Application(s): ssl + Related Id(s): GH-5961 + + When a TLS-1.3 enabled client tried to talk to a + TLS-1.2 server that coalesces TLS-1.2 handshake message + over one TLS record, the connection could fail due to + some message being handled in the wrong state, this has + been fixed. + + + OTP-18092 Application(s): ssl + Related Id(s): PR-5959 + + Fixed tls-1.3 session ticket lifetime which was + discarded to quickly before. + + + OTP-18100 Application(s): ssl + Related Id(s): GH-5985 + + Correctly handles supported protocol version change + from default to something else by sni_fun supplied to + ssl:handshake/[2,3] together with a TCP-socket (so + called upgrade). + + + OTP-18129 Application(s): ssl + Related Id(s): GH-5950 + + Also, TLS-1.3 should respond with a protocol version + alert if previous versions, that are supported but not + configured, are attempted. + + + --- Improvements and New Features --- + + OTP-18085 Application(s): ssl + + Enhance handling of handshake decoding errors, + especially for certificate authorities extension to + ensure graceful termination. + + + Full runtime dependencies of ssl-10.7.3.1: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.10.README.txt b/release-notes/OTP-24.3.4.10.README.txt new file mode 100644 index 0000000..449dbba --- /dev/null +++ b/release-notes/OTP-24.3.4.10.README.txt @@ -0,0 +1,87 @@ +Patch Package: OTP 24.3.4.10 +Git Tag: OTP-24.3.4.10 +Date: 2023-03-17 +Trouble Report Id: OTP-18422, OTP-18496, OTP-18509 +Seq num: ERIERL-873, GH-6947 +System: OTP +Release: 24 +Application: erts-12.3.2.10, inets-7.5.3.3, snmp-5.12.0.3 +Predecessor: OTP 24.3.4.9 + + Check out the git tag OTP-24.3.4.10, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-12.3.2.10 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.10 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18496 Application(s): erts + Related Id(s): GH-6947, PR-6953 + + Active process aliases of a process at its termination + leaked memory. + + + Full runtime dependencies of erts-12.3.2.10: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- inets-7.5.3.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-7.5.3.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18509 Application(s): inets + Related Id(s): OTP-18476 + + Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" + errors. + + + Full runtime dependencies of inets-7.5.3.3: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 + + + --------------------------------------------------------------------- + --- snmp-5.12.0.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.12.0.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Improvements and New Features --- + + OTP-18422 Application(s): snmp + Related Id(s): ERIERL-873 + + Attempts to minimize the number of the error reports + during a failed agent init. + + + Full runtime dependencies of snmp-5.12.0.3: crypto-3.3, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.11.README.txt b/release-notes/OTP-24.3.4.11.README.txt new file mode 100644 index 0000000..28896a5 --- /dev/null +++ b/release-notes/OTP-24.3.4.11.README.txt @@ -0,0 +1,136 @@ +Patch Package: OTP 24.3.4.11 +Git Tag: OTP-24.3.4.11 +Date: 2023-04-21 +Trouble Report Id: OTP-18243, OTP-18343, OTP-18525, OTP-18545, + OTP-18550, OTP-18557 +Seq num: ERIERL-928, ERIERL-937, GH-6247, GH-6496 +System: OTP +Release: 24 +Application: erts-12.3.2.11, inets-7.5.3.4, ssl-10.7.3.7 +Predecessor: OTP 24.3.4.10 + + Check out the git tag OTP-24.3.4.11, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-12.3.2.11 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.11 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18243 Application(s): erts + Related Id(s): GH-6247, PR-6258 + + Fix bug sometimes causing emulator crash at node + shutdown when there are pending connections. Only seen + when running duel distribution protocols, inet_drv and + inet_tls_dist. + + + OTP-18343 Application(s): erts + Related Id(s): GH-6496 + + Fix bug in binary_to_term (and distributed receive) + when decoding a large map (>32 keys) with unsorted + small maps (<= 32) as keys of the large map. + + This was only a problem if the term was encoded by + erl_interface, jinterface or otherwise, as the VM + itself always encodes small maps with sorted keys. + + The "binary_to_term" would appear as successful but the + created large map was internally inconsistent. The + smaller key-maps could not be found with maps:get and + friends. Other operations such as map compare and merge + could probably also give incorrect results. + + + OTP-18525 Application(s): erts + Related Id(s): PR-7049 + + Implementations of the call() driver callback that + returned a faulty encoded result could cause a memory + leak and could cause invalid data on the heap of the + processes calling erlang:port_call/3. + + + OTP-18557 Application(s): erts + Related Id(s): OTP-18496, PR-7131 + + Aliases created in combination with a monitor using the + {alias, explicit_unalias} option stopped working from + remote nodes when a 'DOWN' signal had been received due + to the monitor or if the monitor was removed using the + erlang:demonitor() BIF. + + This bug was introduced in OTP 24.3.4.10 and OTP 25.3. + + + Full runtime dependencies of erts-12.3.2.11: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- inets-7.5.3.4 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-7.5.3.4 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18545 Application(s): inets + Related Id(s): ERIERL-928, ERIERL-937, OTP-18509 + + With this change, upon remote socket closure current + request is added to a retried queue (either pipeline or + keep_alive, but not both). + + + Full runtime dependencies of inets-7.5.3.4: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.7 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.7 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18550 Application(s): ssl + + Client signature algorithm list input order is now + honored again , it was accidently reversed by a + previous fix. + + + Full runtime dependencies of ssl-10.7.3.7: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.12.README.txt b/release-notes/OTP-24.3.4.12.README.txt new file mode 100644 index 0000000..0ed8b1e --- /dev/null +++ b/release-notes/OTP-24.3.4.12.README.txt @@ -0,0 +1,181 @@ +Patch Package: OTP 24.3.4.12 +Git Tag: OTP-24.3.4.12 +Date: 2023-05-30 +Trouble Report Id: OTP-18556, OTP-18560, OTP-18569, OTP-18570, + OTP-18593, OTP-18595, OTP-18597 +Seq num: ERIERL-944, GH-7252 +System: OTP +Release: 24 +Application: compiler-8.1.1.4, erts-12.3.2.12, + stdlib-3.17.2.3, xmerl-1.3.28.1 +Predecessor: OTP 24.3.4.11 + + Check out the git tag OTP-24.3.4.12, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.1.1.4 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.4 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18593 Application(s): compiler + Related Id(s): GH-7252 + + Complex guard expression using the or operator and + guard BIFs that can fail could sometimes be miscompiled + so that the guard would succeed even if a call to a + guard BIF failed. + + + Full runtime dependencies of compiler-8.1.1.4: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- erts-12.3.2.12 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.12 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18560 Application(s): erts + + In rare circumstances, bit syntax matching of an + invalid code point for a utf32 would crash the runtime + system. + + + OTP-18570 Application(s): erts + Related Id(s): PR-7190 + + If a runtime system which was starting the distribution + already had existing pids, ports, or references + referring to a node with the same nodename/creation + pair that the runtime system was about to use, these + already existing pids, ports, or references would not + work as expected in various situations after the node + had gone alive. This could only occur if the runtime + system was communicated such pids, ports, or references + prior to the distribution was started. That is, it was + extremely unlikely to happen unless the distribution + was started dynamically and was even then very unlikely + to happen. The runtime system now checks for already + existing pids, ports, and references with the same + nodename/creation pair that it is about to use. If such + are found another creation will be chosen in order to + avoid these issues. + + + OTP-18597 Application(s): erts + + Constructing a binary segment not aligned with a byte + boundary, with a size not fitting in 31 bits, and with + a value not fitting in a 64-bit word could crash the + runtime system. + + + --- Improvements and New Features --- + + OTP-18569 Application(s): erts + + Further robustify implementation of large maps (> 32 + keys). Keys that happen to have same internal 32-bit + hash values are now put in collision nodes which are + traversed with linear search. This removes the demand + for the internal hash function when salted to + eventually produce different hashes for all possible + pairs of unequal terms. + + + Full runtime dependencies of erts-12.3.2.12: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- stdlib-3.17.2.3 ------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-3.17.2.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Improvements and New Features --- + + OTP-18556 Application(s): stdlib + + Static supervisors are very idle processes after they + have started so they will now be hibernated after start + to improve resource management. + + + Full runtime dependencies of stdlib-3.17.2.3: compiler-5.0, + crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.28.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.28.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18595 Application(s): xmerl + Related Id(s): ERIERL-944 + + New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some + XML security issues. + + xmerl_scan gets one new option: + + -- {allow_entities, Boolean} -- Gives the possibility + to disallow entities by setting this option to false + (true is default) + + xmerl_sax_parser gets the following options: + + -- disallow_entities -- Don't allow entities in + document + + -- {entity_recurse_limit, N} -- Set a limit on entity + recursion depth (default is 3) + + -- {external_entities, AllowedType} -- Specify which + types of external entities that are allowed, this also + affect external DTD's. The types are all(default), file + and none + + -- {fail_undeclared_ref, Boolean} -- Sets the behavior + for undeclared references due to an external file is + not parsed (true is default) + + The old option skip_external_dtd is still valid and the + same as {external_entities, none} and + {fail_undeclared_ref, false} but just affects DTD's and + not other external references. + + + Full runtime dependencies of xmerl-1.3.28.1: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.13.README.txt b/release-notes/OTP-24.3.4.13.README.txt new file mode 100644 index 0000000..3dea948 --- /dev/null +++ b/release-notes/OTP-24.3.4.13.README.txt @@ -0,0 +1,185 @@ +Patch Package: OTP 24.3.4.13 +Git Tag: OTP-24.3.4.13 +Date: 2023-06-29 +Trouble Report Id: OTP-18617, OTP-18618, OTP-18620, OTP-18643, + OTP-18644, OTP-18659 +Seq num: ERIERL-932, GH-7336, GH-7338 +System: OTP +Release: 24 +Application: compiler-8.1.1.5, debugger-5.2.1.1, + erts-12.3.2.13, ssh-4.13.2.3, ssl-10.7.3.8, + stdlib-3.17.2.4 +Predecessor: OTP 24.3.4.12 + + Check out the git tag OTP-24.3.4.13, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.1.1.5 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.5 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18617 Application(s): compiler + Related Id(s): GH-7338 + + The compiler could be very slow when compiling guards + with multiple guard tests separated with 'or' or ';'. + + + Full runtime dependencies of compiler-8.1.1.5: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- debugger-5.2.1.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The debugger-5.2.1.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18644 Application(s): debugger + Related Id(s): GH-7336 + + The call int:no_break(Module) did not remove any + breakpoints. + + + Full runtime dependencies of debugger-5.2.1.1: compiler-8.0, + erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-12.3.2.13 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.13 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + Full runtime dependencies of erts-12.3.2.13: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18620 Application(s): ssh + Related Id(s): OTP-18386, PR-6611 + + With this change, error logging related crashes in + ssh_connection_handler module are fixed. + + + Full runtime dependencies of ssh-4.13.2.3: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.8 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.8 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18643 Application(s): ssl + Related Id(s): ERIERL-932 + + Added keylog information to all protocol versions in + ssl:connection_information/2. + + + --- Improvements and New Features --- + + OTP-18618 Application(s): ssl + Related Id(s): ERIERL-932 + + Add RFC-6083 considerations for DTLS to enable gen_sctp + based callback for the transport. + + + Full runtime dependencies of ssl-10.7.3.8: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --- stdlib-3.17.2.4 ------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-3.17.2.4 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + Full runtime dependencies of stdlib-3.17.2.4: compiler-5.0, + crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.14.README.txt b/release-notes/OTP-24.3.4.14.README.txt new file mode 100644 index 0000000..b5a35b8 --- /dev/null +++ b/release-notes/OTP-24.3.4.14.README.txt @@ -0,0 +1,205 @@ +Patch Package: OTP 24.3.4.14 +Git Tag: OTP-24.3.4.14 +Date: 2023-10-12 +Trouble Report Id: OTP-18670, OTP-18707, OTP-18711, OTP-18712, + OTP-18718, OTP-18732, OTP-18752, OTP-18790, + OTP-18797 +Seq num: ERIERL-963, GH-7431, GH-7436, GH-7444, + GH-7546, GH-7683 +System: OTP +Release: 24 +Application: crypto-5.0.6.4, erts-12.3.2.14, + kernel-8.3.2.4, mnesia-4.20.4.3, + public_key-1.12.0.2, ssl-10.7.3.9 +Predecessor: OTP 24.3.4.13 + + Check out the git tag OTP-24.3.4.14, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.0.6.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.0.6.4 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18670 Application(s): crypto + Related Id(s): GH-7436, PR-7450 + + Fix VM crash caused by crypto being purged and reloaded + (by init:restart for example) on OS with musl libc + (such as Alpine linux). + + + Full runtime dependencies of crypto-5.0.6.4: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-12.3.2.14 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.14 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18732 Application(s): erts + Related Id(s): GH-7444, PR-7458 + + Fix bug causing "magic" references in a compressed ETS + table to not keep the referred object alive. The + symptom would be the referred object being garbage + collected prematurely and the reference appearing + stale, not referring to anything. Examples of such + magically referred objects are atomics and NIF + resources. + + + OTP-18752 Application(s): erts + Related Id(s): PR-7633 + + The cleanup operation of not yet delivered signals to a + terminated process yielded excessively. + + + OTP-18790 Application(s): erts + Related Id(s): PR-7742 + + If the external term format encoding of an argument + list part of a distributed spawn operation was faulty, + the newly spawned remote process could misbehave. The + misbehavior included hanging or interpret an incoming + message as an argument list to use. This was very + unlikely to happen unless using an alternate + implementation of the distribution protocol which made + a faulty encoding of the argument list. The child + process will now detect this error and terminate before + executing the user specified code. + + + OTP-18797 Application(s): erts + Related Id(s): GH-7683, PR-7712 + + Fix bugs where if the body of a matchspec would return + a map with a variable ('$1', '$_' etc) as one of the + keys or values and the variable was not an immidiate, + the term would not be copied to the receiving processes + heap. This would later corrupt the term in the table as + the GC could place move markers in it, which in turn + would cause the VM to crash. + + Bug has been present for since OTP 17.0. + + + Full runtime dependencies of erts-12.3.2.14: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- kernel-8.3.2.4 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.3.2.4 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- erts-12.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18707 Application(s): kernel + Related Id(s): #7530 + + gen_tcp:connect with socket address and socket (inet-) + backend fails because of missing callback function. + + + Full runtime dependencies of kernel-8.3.2.4: crypto-5.0, erts-12.3, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- mnesia-4.20.4.3 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.20.4.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18711 Application(s): mnesia + Related Id(s): ERIERL-963 + + Do not delete old backup file if the new backup fails. + + + Full runtime dependencies of mnesia-4.20.4.3: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.12.0.2 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.12.0.2 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18718 Application(s): public_key + Related Id(s): GH-7546 + + Country name comparison shall be case insensitive + + + Full runtime dependencies of public_key-1.12.0.2: asn1-3.0, + crypto-3.8, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.9 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.9 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18712 Application(s): ssl + Related Id(s): GH-7431 + + When a client initiated renegotiation was rejected and + the client socket was in active mode the expected error + message to the controlling process was not sent. + + + Full runtime dependencies of ssl-10.7.3.9: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.15.README.txt b/release-notes/OTP-24.3.4.15.README.txt new file mode 100644 index 0000000..8ef2b53 --- /dev/null +++ b/release-notes/OTP-24.3.4.15.README.txt @@ -0,0 +1,218 @@ +Patch Package: OTP 24.3.4.15 +Git Tag: OTP-24.3.4.15 +Date: 2023-12-18 +Trouble Report Id: OTP-18802, OTP-18830, OTP-18844, OTP-18850, + OTP-18869, OTP-18877, OTP-18885, OTP-18896, + OTP-18897, OTP-18899, OTP-18902 +Seq num: GH-7571, GH-7834, GH-7890 +System: OTP +Release: 24 +Application: asn1-5.0.18.2, erl_interface-5.2.2.1, + erts-12.3.2.15, mnesia-4.20.4.4, ssh-4.13.2.4 +Predecessor: OTP 24.3.4.14 + + Check out the git tag OTP-24.3.4.15, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18897 Application(s): ssh + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + --------------------------------------------------------------------- + --- OTP-24.3.4.15 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18896 Application(s): otp + + Updated copyright and license information. + + + --------------------------------------------------------------------- + --- asn1-5.0.18.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.0.18.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18844 Application(s): asn1 + + Fix benign warning from gcc 11 about mismatching call + to free(). + + + Full runtime dependencies of asn1-5.0.18.2: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- erl_interface-5.2.2.1 ------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.2.2.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Improvements and New Features --- + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + --------------------------------------------------------------------- + --- erts-12.3.2.15 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.15 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18802 Application(s): erts + + Fix faulty debug assert when page size is larger than + 16kb, like on PowerPC. Did crash debug VM directly at + start. + + + OTP-18885 Application(s): erts + Related Id(s): GH-7834, GH-7890, PR-7915 + + On OTP 24 and OTP 25, incoming distributed messages + larger than 64 KiB sent using an alias leaked memory if + the alias had been removed prior to entering the node. + This issue was not present on OTP 26. + + Incoming distributed messages larger than 64 KiB sent + using an alias which had been removed on the receiving + node could crash the node. This crash was quite + unlikely on OTP 24 and OTP 25, but very likely on OTP + 26. + + 'DOWN' signals with exit reason larger than 64 KiB + directed towards a process on a node with a not + matching creation leaked memory on the receiving node. + Such signals should however be very rare. + + + OTP-18902 Application(s): erts + + Removed unnecessary PCRE source tar-ball. + + + --- Improvements and New Features --- + + OTP-18830 Application(s): erts + Related Id(s): PR-7823 + + Removed unnecessary regexp library used when generating + yielding BIFs. + + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + OTP-18899 Application(s): erts + + Removed unused makewhatis script. + + + Full runtime dependencies of erts-12.3.2.15: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- mnesia-4.20.4.4 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.20.4.4 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18850 Application(s): mnesia + + mnesia:add_table_copy/3 no longer fails with reason + system_limit when the node is starting. + + + Full runtime dependencies of mnesia-4.20.4.4: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.4 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18869 Application(s): ssh + Related Id(s): GH-7571, PR-7849 + + With this change, connection handler does not execute + socket operations until it becomes socket owner. + Previously errors could occur if connection handler + tried to work with socket whose owner exited. + + + OTP-18897 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + Full runtime dependencies of ssh-4.13.2.4: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.16.README.txt b/release-notes/OTP-24.3.4.16.README.txt new file mode 100644 index 0000000..17e43c7 --- /dev/null +++ b/release-notes/OTP-24.3.4.16.README.txt @@ -0,0 +1,99 @@ +Patch Package: OTP 24.3.4.16 +Git Tag: OTP-24.3.4.16 +Date: 2024-02-12 +Trouble Report Id: OTP-18911, OTP-18932, OTP-18964 +Seq num: ERIERL-1023 +System: OTP +Release: 24 +Application: common_test-1.22.1.2, erts-12.3.2.16, + ssh-4.13.2.5 +Predecessor: OTP 24.3.4.15 + + Check out the git tag OTP-24.3.4.16, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.22.1.2 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.22.1.2 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18932 Application(s): common_test + + Fix how CT finds Erlang/OTP releases for compatability + testing. This functionality is only used to test + Erlang/OTP. + + + Full runtime dependencies of common_test-1.22.1.2: 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 + + + --------------------------------------------------------------------- + --- erts-12.3.2.16 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.16 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18911 Application(s): erts + Related Id(s): ERIERL-1023, PR-7983 + + 32-bit runtime systems on most Unix like platforms + could crash if a BIF timer was set with a huge timeout + of more than 68 years into the future. In order for the + crash to occur, the huge timer (at a later time than + when it was set) had to become the nearest active timer + set on the specific scheduler on which it was set. This + could not happen on a system with only one scheduler + since there would always be shorter timers in the + system. + + Setting a timer larger than 49 days on Windows could + under rare circumstances cause the timeout to be + delayed. + + + Full runtime dependencies of erts-12.3.2.16: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.5 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18964 Application(s): ssh + + With this change, Curve25519 and Curve448 KEX methods + become most preferred (related to RFC8731). + + + Full runtime dependencies of ssh-4.13.2.5: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.17.README.txt b/release-notes/OTP-24.3.4.17.README.txt new file mode 100644 index 0000000..0beedff --- /dev/null +++ b/release-notes/OTP-24.3.4.17.README.txt @@ -0,0 +1,231 @@ +Patch Package: OTP 24.3.4.17 +Git Tag: OTP-24.3.4.17 +Date: 2024-04-09 +Trouble Report Id: OTP-18960, OTP-18986, OTP-18996, OTP-19002, + OTP-19003, OTP-19006, OTP-19013, OTP-19015, + OTP-19019, OTP-19034, OTP-19036, OTP-19043, + OTP-19044, OTP-19048 +Seq num: ERIERL-1041, ERIERL-1043, ERIERL-682, + GH-7897, GH-8186, GH-8187, PR-8173, PR-8174, + PR-8189, PR-8220, PR-8342, PR-8343 +System: OTP +Release: 24 +Application: common_test-1.22.1.3, compiler-8.1.1.6, + crypto-5.0.6.5, erts-12.3.2.17, ssh-4.13.2.6 +Predecessor: OTP 24.3.4.16 + + Check out the git tag OTP-24.3.4.17, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.22.1.3 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.22.1.3 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18960 Application(s): common_test + + With this change, the last column in common_test + testcase log file is modified to now show the total sum + of each time in the table rows, and Elapsed Time which + is a clock time spent to run above functions. The + Elapsed Time is the same time that was previously a + total. + + + Full runtime dependencies of common_test-1.22.1.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.1.1.6 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.6 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19003 Application(s): compiler + Related Id(s): GH-8187, PR-8189 + + In rare circumstances, an unsafe optimization could + cause the compiler to generate incorrect code for list + matching. + + + OTP-19019 Application(s): compiler + + In rare circumstances, the compiler code generate + unsafe code for a bit syntax match. + + + Full runtime dependencies of compiler-8.1.1.6: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- crypto-5.0.6.5 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.0.6.5 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18996 Application(s): crypto + Related Id(s): PR-8173, PR-8174 + + The function crypto:pbkdf2_hmac will no longer block + the main schedulers. If the iteration count or block + size parameters are such that the function is likely to + take a long time to execute, the function will be + scheduled to run on a dirty CPU scheduler. + + + Full runtime dependencies of crypto-5.0.6.5: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-12.3.2.17 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.17 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19006 Application(s): erts + + The code server could be hanging if a module with + on_load function was loaded at the same time as another + module was purged using erlang:purge_module directly. + + + OTP-19015 Application(s): erts + Related Id(s): ERIERL-682 + + Fix bug in re:run/3 where if an invalid UTF-8 subject + was given, re:run could get stuck in an infinite loop. + Bug was introduced in Erlang/OTP 22.1. + + + OTP-19034 Application(s): erts + + Calling erlang:trace/3 with first argument one of + ports, processes, existing_ports, existing_processes, + existing or all, could cause emulator crash if a dirty + scheduler was executing a simultaneous trace action. + + + OTP-19036 Application(s): erts + Related Id(s): GH-8186 + + Fixed an integer overflow when the monotonic time unit + reported by the operating system was greater than 10 + and lower than 100 microseconds. + + + OTP-19043 Application(s): erts + Related Id(s): PR-8342 + + When a traced process executing on a dirty scheduler + received an exit signal, the dirty scheduler could use + the wrong thread specific data which could lead to a + crash. + + + OTP-19048 Application(s): erts + Related Id(s): PR-8343 + + Fixed a more or less harmless bug that caused time + correction of Erlang monotonic time to become slightly + off on Windows platforms when QueryPerformanceCounter() + was used as OS monotonic time source. + + erlang:system_info(os_monotonic_time_source) now also + returns information about used resolution which not + always corresponds to the resolution of the OS + monotonic time source. + + + --- Improvements and New Features --- + + OTP-19044 Application(s): erts + Related Id(s): ERIERL-1043, PR-8342 + + Checks for monotonicity of monotonic time have been + improved so that Erlang and OS monotonic time are + checked separately. + + A new configure argument + --enable-ensure-os-monotonic-time has also been added. + It enables functionality ensuring the monotonicity of + monotonic timestamps delivered by the OS. When a + non-monotonic timestamp is detected, it will be + replaced by the last delivered monotonic timestamp + before being used by Erlang's time functionality. Note + that you do not want to enable this unless the OS + monotonic time source on the system fails to produce + monotonic timestamps. This since ensuring the + monotonicity of OS monotonic timestamps will hurt + scalability and performance of the system. + + + Full runtime dependencies of erts-12.3.2.17: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.6 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18986 Application(s): ssh + + With this change, more secure algorithms are preferred + by ssh and documentation is updated to reflect that. + + + OTP-19002 Application(s): ssh + Related Id(s): ERIERL-1041 + + With this change, KEX strict terminal message is + emitted with debug verbosity. + + + OTP-19013 Application(s): ssh + Related Id(s): GH-7897, PR-8220 + + With this change, owner and group file attributes + decoding is fixed and results with value of integer + type. + + + Full runtime dependencies of ssh-4.13.2.6: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.2.README.txt b/release-notes/OTP-24.3.4.2.README.txt new file mode 100644 index 0000000..8b2ca8d --- /dev/null +++ b/release-notes/OTP-24.3.4.2.README.txt @@ -0,0 +1,92 @@ +Patch Package: OTP 24.3.4.2 +Git Tag: OTP-24.3.4.2 +Date: 2022-06-21 +Trouble Report Id: OTP-18144, OTP-18145, OTP-18147 +Seq num: GH-5981, GH-6024 +System: OTP +Release: 24 +Application: crypto-5.0.6.2, erts-12.3.2.2, ssl-10.7.3.2 +Predecessor: OTP 24.3.4.1 + + Check out the git tag OTP-24.3.4.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.0.6.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.0.6.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18147 Application(s): crypto + Related Id(s): GH-6024, PR-6056 + + Fix configure with --with-ssl and + --disable-dynamic-ssl-lib on Windows. + + + Full runtime dependencies of crypto-5.0.6.2: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-12.3.2.2 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18144 Application(s): erts + Related Id(s): GH-5981 + + Fixed emulator crash that could happen during crashdump + generation of ETS tables with options ordered_set and + {write_concurrency,true}. + + + Full runtime dependencies of erts-12.3.2.2: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18145 Application(s): ssl + + Improved handling of unexpected messages during the + handshake, taking the right action for unexpected + messages. + + + Full runtime dependencies of ssl-10.7.3.2: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.3.README.txt b/release-notes/OTP-24.3.4.3.README.txt new file mode 100644 index 0000000..334b3d0 --- /dev/null +++ b/release-notes/OTP-24.3.4.3.README.txt @@ -0,0 +1,445 @@ +Patch Package: OTP 24.3.4.3 +Git Tag: OTP-24.3.4.3 +Date: 2022-08-18 +Trouble Report Id: OTP-18044, OTP-18104, OTP-18162, OTP-18164, + OTP-18169, OTP-18170, OTP-18172, OTP-18173, + OTP-18175, OTP-18177, OTP-18182, OTP-18189, + OTP-18190, OTP-18193, OTP-18195, OTP-18197, + OTP-18198 +Seq num: ERIERL-826, ERIERL-829, GH-6122, GH-6129, + GH-6163, GH-6165, GH-6185 +System: OTP +Release: 24 +Application: compiler-8.1.1.1, crypto-5.0.6.3, + erts-12.3.2.3, inets-7.5.3.1, kernel-8.3.2.1, + public_key-1.12.0.1, ssl-10.7.3.3 +Predecessor: OTP 24.3.4.2 + + Check out the git tag OTP-24.3.4.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + --------------------------------------------------------------------- + --- compiler-8.1.1.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18162 Application(s): compiler + Related Id(s): PR-6102 + + The bin_opt_info and recv_opt_info options would cause + the compiler to crash when attempting to compile + generated code without location information. + + + OTP-18182 Application(s): compiler + Related Id(s): GH-6163 + + In rare circumstances involving floating point + operations, the compiler could terminate with an + internal consistency check failure. + + + Full runtime dependencies of compiler-8.1.1.1: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- crypto-5.0.6.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.0.6.3 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions functions are removed from the + documentation and therefor the API, but they are left + in the code for compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + Full runtime dependencies of crypto-5.0.6.3: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- erts-12.3.2.3 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18104 Application(s): erts + Related Id(s): OTP-18093 + + Fix faulty distribution encoding of terms with either + + -- a fun with bit-string or export-fun in its + environment when encoded toward a not yet established + (pending) connection + + -- or a fun with a binary/bitstring, in its + environment, referring to an off-heap binary (larger + than 64 bytes). + + The symptom could be failed decoding on the receiving + side leading to aborted connection. Fix OTP-18093 is a + workaround for theses bugs that makes the VM accepts + such faulty encoded funs. + + The first encoding bug toward pending connection exists + only in OTP 23 and 24, but the second one exists also + on OTP 25. + + + OTP-18164 Application(s): erts + Related Id(s): PR-6114 + + Distributed exit signals could be lost under the + following conditions: + + -- An exit signal from a parent process to a child + process was lost if: + + -- the parent process terminated before the spawn + request that created the child had completed, + + -- the spawn request set up a link between parent and + child + + -- the spawn request was distributed, and + + -- the exit reason was larger than one machine word. + + -- Loss of a connection over which a not yet completed + spawn request was ongoing could cause loss of exit + signals. Such loss of exit signals was very rare. + Besides the above described connection loss also the + following conditions had to be satisfied: + + -- The spawn request that was interrupted by the + connection loss also had to set up a link between the + parent process and the child process. + + -- The parent process that issued the spawn request + also had to be terminating while the spawn request was + interrupted by the connection loss. + + -- The same parent process also had to have made other + spawn requests to other nodes than to the node to which + the connection was lost. + + -- These spawn requests to the other nodes also had to + set up links. + + -- These spawn requests to the other nodes also had to + be not yet completed at the time of the connection + loss. That is, the spawn reply from the child process + had not yet reached the parent process. + + If all the conditions above were met, exit signals to + the children spawned due to the above described spawn + requests to other nodes *could* be lost. + + The above bug also caused a significant memory leak + when it was triggered since the destruction of the + parent process never completed. + + + OTP-18169 Application(s): erts + Related Id(s): PR-6134 + + A race could cause process_info(Pid, message_queue_len) + on other processes to return invalid results. + + + OTP-18170 Application(s): erts + Related Id(s): PR-6135 + + Fixed reduction counting for handling process system + tasks. + + + OTP-18175 Application(s): erts + Related Id(s): PR-6142 + + Priority elevation of terminating processes did not + work which could cause execution of such processes to + be delayed. + + + OTP-18177 Application(s): erts + Related Id(s): PR-6150 + + An unlink operation made by a process that terminated + before the unlink operation completed, i.e., before it + had received an unlink-ack signal from the linked + process, caused an exit signal to erroneously be sent + from the terminating process to the process being + unlinked. This exit signal would most often be ignored + by the receiver, but if the receiver of the exit signal + concurrently set up a new link, it could receive the + exit signal with the actual exit reason of the + terminating process instead of a noproc exit reason. It + is however very hard to detect that this has happened + and has no obvious negative consequences, so it should + be considered harmless. + + A distributed unlink-ack signal received by a + terminating process was also not properly removed which + could cause a minor memory leak. + + + OTP-18190 Application(s): erts + Related Id(s): GH-6185, PR-6209 + + The monitor/3 BIF did not apply options to the created + monitor if the target process or port did not exist. + That is, the corresponding down message would get a + `DOWN` tag even if a custom tag had been set, and the + returned reference was not an alias even if the alias + option had been passed. + + + OTP-18197 Application(s): erts + Related Id(s): GH-6165, PR-6213 + + The erlang:monotonic_time/1, erlang:system_time/1, + erlang:time_offset/1, and os:system_time/1 BIFs + erroneously failed when passed the argument native. + + + Full runtime dependencies of erts-12.3.2.3: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- inets-7.5.3.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-7.5.3.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Improvements and New Features --- + + OTP-18193 Application(s): inets + Related Id(s): GH-6122 + + Remove documentation of no longer supported callback. + + + Full runtime dependencies of inets-7.5.3.1: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 + + + --------------------------------------------------------------------- + --- kernel-8.3.2.1 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.3.2.1 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- erts-12.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18198 Application(s): kernel + Related Id(s): GH-6129, PR-6216 + + A call to net_kernel:setopts(new, Opts) at the same + time as a connection was being set up could cause a + deadlock between the net_kernel process and the process + setting up the connection. + + + Full runtime dependencies of kernel-8.3.2.1: crypto-5.0, erts-12.3, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- public_key-1.12.0.1 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.12.0.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18189 Application(s): public_key + Related Id(s): ERIERL-829 + + Correct asn1 typenames available in type + pki_asn1_type() + + + Full runtime dependencies of public_key-1.12.0.1: asn1-3.0, + crypto-3.8, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18044 Application(s): ssl + + Reject unexpected application data in all relevant + places for all TLS versions. Also, handle TLS-1.3 + middlebox compatibility with more care. This will make + malicious connections fail early and further, mitigate + possible DoS attacks, that would be caught by the + handshake timeout. + + Thanks to Aina Toky Rasoamanana and Olivier Levillain + from Télécom SudParis for alerting us of the issues in + our implementation. + + + OTP-18173 Application(s): ssl + + The link to crypto:engine_load refered the function + with wrong arity. + + + OTP-18195 Application(s): ssl + + Make sure periodical refresh of CA certificate files + repopulates cache properly. + + + Full runtime dependencies of ssl-10.7.3.3: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.4.README.txt b/release-notes/OTP-24.3.4.4.README.txt new file mode 100644 index 0000000..970baf7 --- /dev/null +++ b/release-notes/OTP-24.3.4.4.README.txt @@ -0,0 +1,47 @@ +Patch Package: OTP 24.3.4.4 +Git Tag: OTP-24.3.4.4 +Date: 2022-08-26 +Trouble Report Id: OTP-18218 +Seq num: ERIERL-855 +System: OTP +Release: 24 +Application: erts-12.3.2.4 +Predecessor: OTP 24.3.4.3 + + Check out the git tag OTP-24.3.4.4, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-12.3.2.4 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18218 Application(s): erts + Related Id(s): ERIERL-855 + + Fix bug causing ets:info (and sometimes ets:whereis) to + return 'undefined' for an existing table if a + concurrent process were doing ets:insert with a long + list on the same table. + + + Full runtime dependencies of erts-12.3.2.4: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.5.README.txt b/release-notes/OTP-24.3.4.5.README.txt new file mode 100644 index 0000000..e085a05 --- /dev/null +++ b/release-notes/OTP-24.3.4.5.README.txt @@ -0,0 +1,143 @@ +Patch Package: OTP 24.3.4.5 +Git Tag: OTP-24.3.4.5 +Date: 2022-09-13 +Trouble Report Id: OTP-18099, OTP-18219, OTP-18222, OTP-18233, + OTP-18239 +Seq num: GH-6241, GH-6242, GH-6244 +System: OTP +Release: 24 +Application: erts-12.3.2.5, ssl-10.7.3.4, stdlib-3.17.2.1 +Predecessor: OTP 24.3.4.4 + + Check out the git tag OTP-24.3.4.5, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18239 Application(s): stdlib + + When changing callback module in gen_statem the + state_enter calls flag from the old module was used in + for the first event in the new module, which could + confuse the new module and cause malfunction. This bug + has been corrected. + + With this change some sys debug message formats have + been modified, which can be a problem for debug code + relying on the format. + + + --------------------------------------------------------------------- + --- erts-12.3.2.5 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18222 Application(s): erts + Related Id(s): GH-6242, PR-6248 + + Fix writing and reading of more than 2 GB in a single + read/write operation on macOS. Before this fix + attempting to read/write more than 2GB would result in + {error,einval}. + + + Full runtime dependencies of erts-12.3.2.5: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18099 Application(s): ssl + Related Id(s): PR-6287 + + With this change, value of cacertfile option will be + adjusted before loading certs from the file. + Adjustments include converting relative paths to + absolute and converting symlinks to actual file path. + + Thanks to Marcus Johansson + + + OTP-18219 Application(s): ssl + Related Id(s): GH-6241, PR-6249 + + Incorrect handling of client middlebox negotiation for + TLS-1.3 could result in that a TLS-1.3 server would not + use middlebox mode although the client was expecting it + too and failing the negotiation with unexpected + message. + + + OTP-18233 Application(s): ssl + Related Id(s): GH-6244, PR-6270 + + If the "User" process, the process starting the TLS + connection, gets killed in the middle of spawning the + dynamic connection tree make sure we do not leave any + processes behind. + + + Full runtime dependencies of ssl-10.7.3.4: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --- stdlib-3.17.2.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-3.17.2.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18239 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + When changing callback module in gen_statem the + state_enter calls flag from the old module was used in + for the first event in the new module, which could + confuse the new module and cause malfunction. This bug + has been corrected. + + With this change some sys debug message formats have + been modified, which can be a problem for debug code + relying on the format. + + + Full runtime dependencies of stdlib-3.17.2.1: compiler-5.0, + crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.6.README.txt b/release-notes/OTP-24.3.4.6.README.txt new file mode 100644 index 0000000..9bb2943 --- /dev/null +++ b/release-notes/OTP-24.3.4.6.README.txt @@ -0,0 +1,144 @@ +Patch Package: OTP 24.3.4.6 +Git Tag: OTP-24.3.4.6 +Date: 2022-10-05 +Trouble Report Id: OTP-18232, OTP-18245, OTP-18258, OTP-18263, + OTP-18266 +Seq num: ERIERL-821, ERIERL-859, GH-6309, GH-6328 +System: OTP +Release: 24 +Application: asn1-5.0.18.1, dialyzer-4.4.4.1, + erts-12.3.2.6, kernel-8.3.2.2, ssl-10.7.3.5 +Predecessor: OTP 24.3.4.5 + + Check out the git tag OTP-24.3.4.6, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- asn1-5.0.18.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.0.18.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18245 Application(s): asn1 + Related Id(s): ERIERL-859 + + For the per and uper ASN.1 encoding rules, encoding and + decoding the SEQUENCE OF and SET OF constructs with + 16384 items or more is now supported. + + + Full runtime dependencies of asn1-5.0.18.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- dialyzer-4.4.4.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The dialyzer-4.4.4.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Improvements and New Features --- + + OTP-18263 Application(s): dialyzer + Related Id(s): ERIERL-821 + + The --input_list_file option has been added. + + + Full runtime dependencies of dialyzer-4.4.4.1: compiler-7.0, + erts-9.0, kernel-5.3, stdlib-3.4, syntax_tools-2.0, wx-1.2 + + + --------------------------------------------------------------------- + --- erts-12.3.2.6 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.6 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18258 Application(s): erts + Related Id(s): GH-6309, PR-6324 + + Notifications about available distribution data sent to + distribution controller processes could be lost. + Distribution controller processes can be used when + implementing an alternative distribution carrier. The + default distribution over tcp was not effected and the + bug was also not present on x86/x86_64 platforms. + + + Full runtime dependencies of erts-12.3.2.6: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- kernel-8.3.2.2 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.3.2.2 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- erts-12.3 (first satisfied in OTP 24.3) + + + --- Improvements and New Features --- + + OTP-18232 Application(s): kernel + Related Id(s): OTP-17843, PR-6264 + + A new function global:disconnect/0 has been introduced + with which one can cleanly disconnect a node from all + other nodes in a cluster of global nodes. + + + Full runtime dependencies of kernel-8.3.2.2: crypto-5.0, erts-12.3, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18266 Application(s): ssl + Related Id(s): GH-6328 + + Fixes handling of symlinks in cacertfile option. + + + Full runtime dependencies of ssl-10.7.3.5: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.7.README.txt b/release-notes/OTP-24.3.4.7.README.txt new file mode 100644 index 0000000..0170ecd --- /dev/null +++ b/release-notes/OTP-24.3.4.7.README.txt @@ -0,0 +1,248 @@ +Patch Package: OTP 24.3.4.7 +Git Tag: OTP-24.3.4.7 +Date: 2022-12-27 +Trouble Report Id: OTP-18288, OTP-18296, OTP-18306, OTP-18315, + OTP-18317, OTP-18319, OTP-18321, OTP-18325, + OTP-18328, OTP-18352, OTP-18357, OTP-18358, + OTP-18363, OTP-18365 +Seq num: ERIERL-868, ERIERL-875, ERIERL-879, + ERIERL-881, GH-6393, GH-6439, GH-6465, + GH-6466 +System: OTP +Release: 24 +Application: common_test-1.22.1.1, compiler-8.1.1.2, + erts-12.3.2.7, kernel-8.3.2.3, + mnesia-4.20.4.2, snmp-5.12.0.1, + stdlib-3.17.2.2 +Predecessor: OTP 24.3.4.6 + + Check out the git tag OTP-24.3.4.7, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.22.1.1 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.22.1.1 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18363 Application(s): common_test + Related Id(s): ERIERL-879 + + Change timeout to infinity for gen_server calls in + cth_log_redirect + + + Full runtime dependencies of common_test-1.22.1.1: 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.1.1.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.2 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + OTP-18365 Application(s): compiler + + Fixed a bug that could cause legal code to fail + validation. + + + Full runtime dependencies of compiler-8.1.1.2: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- erts-12.3.2.7 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.7 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18296 Application(s): erts, kernel + Related Id(s): OTP-16464 + + Spec for function net:if_names/0 incorrect + + + OTP-18306 Application(s): erts + Related Id(s): GH-6393, PR-6401 + + Fix bug in binary_to_term decoding a binary term 2Gbyte + or larger. + + + OTP-18321 Application(s): erts + + Fix list_to_atom/1 for negative code points. Could + either return with a positive code point or fail with + an incorrect exception. + + + OTP-18328 Application(s): erts + Related Id(s): GH-6439, PR-6440 + + Fix bug in binary_to_term decoding a list of length 1G + or longer. + + + Full runtime dependencies of erts-12.3.2.7: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- kernel-8.3.2.3 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.3.2.3 application *cannot* be applied + independently of other applications on an arbitrary OTP 24 + installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- erts-12.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18296 Application(s): erts, kernel + Related Id(s): OTP-16464 + + Spec for function net:if_names/0 incorrect + + + OTP-18315 Application(s): kernel + + Missing ctrl option name transation for TOS and TTL (on + FreeBSD) when using gen_udp with the 'socket' + inet_backend. + + + OTP-18357 Application(s): kernel + Related Id(s): #6509 + + The tcp connect option 'bind_to_device' could not be + used with inet_backend = 'socket'. 'inet' requires + value type binarry() and 'socket' requires value type + 'string()'. + + + OTP-18358 Application(s): kernel + Related Id(s): #6528 + + Minor issue processing options when calling + gen_tcp:connect with a sockaddr() and inet_backend = + socket. + + + --- Improvements and New Features --- + + OTP-18317 Application(s): kernel + + Improve warning message format for gen_tcp_socket. + + + Full runtime dependencies of kernel-8.3.2.3: crypto-5.0, erts-12.3, + sasl-3.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- mnesia-4.20.4.2 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.20.4.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18288 Application(s): mnesia + Related Id(s): ERIERL-868 + + Don't fill the logs if mnesia can't connect to all + nodes, due to partitioned network. + + + OTP-18319 Application(s): mnesia + Related Id(s): ERIERL-875 + + Fixed crash which could happen during startup if too + many decisions where sent from remote nodes. + + + Full runtime dependencies of mnesia-4.20.4.2: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- snmp-5.12.0.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.12.0.1 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18352 Application(s): snmp + Related Id(s): ERIERL-881 + + Explicitly close the socket(s) when terminating + (default-) net-if process. + + + Full runtime dependencies of snmp-5.12.0.1: crypto-3.3, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- stdlib-3.17.2.2 ------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-3.17.2.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + Full runtime dependencies of stdlib-3.17.2.2: compiler-5.0, + crypto-3.3, erts-12.0, kernel-7.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.8.README.txt b/release-notes/OTP-24.3.4.8.README.txt new file mode 100644 index 0000000..c447552 --- /dev/null +++ b/release-notes/OTP-24.3.4.8.README.txt @@ -0,0 +1,73 @@ +Patch Package: OTP 24.3.4.8 +Git Tag: OTP-24.3.4.8 +Date: 2023-01-17 +Trouble Report Id: OTP-18379, OTP-18383, OTP-18388 +Seq num: ERIERL-904, ERIERL-905 +System: OTP +Release: 24 +Application: erts-12.3.2.8, snmp-5.12.0.2 +Predecessor: OTP 24.3.4.7 + + Check out the git tag OTP-24.3.4.8, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-12.3.2.8 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.8 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18383 Application(s): erts + Related Id(s): ERIERL-905 + + Fixed a bug in selective receive optimization that + could crash 32-bit emulators. + + + OTP-18388 Application(s): erts + Related Id(s): OTP-17462, PR-6662 + + A race condition which was very rarely triggered could + cause the signal queue of a process to become + inconsistent causing the runtime system to crash. + + + Full runtime dependencies of erts-12.3.2.8: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- snmp-5.12.0.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.12.0.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18379 Application(s): snmp + Related Id(s): ERIERL-904 + + Single threaded agent crash when vacm table not + properly initiated. + + + Full runtime dependencies of snmp-5.12.0.2: crypto-3.3, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-24.3.4.9.README.txt b/release-notes/OTP-24.3.4.9.README.txt new file mode 100644 index 0000000..b63d6cb --- /dev/null +++ b/release-notes/OTP-24.3.4.9.README.txt @@ -0,0 +1,170 @@ +Patch Package: OTP 24.3.4.9 +Git Tag: OTP-24.3.4.9 +Date: 2023-02-23 +Trouble Report Id: OTP-18386, OTP-18417, OTP-18421, OTP-18433, + OTP-18463, OTP-18467, OTP-18470, OTP-18472 +Seq num: ERIERL-888, GH-6772, GH-6807, GH-6873 +System: OTP +Release: 24 +Application: compiler-8.1.1.3, erts-12.3.2.9, + inets-7.5.3.2, ssh-4.13.2.2, ssl-10.7.3.6 +Predecessor: OTP 24.3.4.8 + + Check out the git tag OTP-24.3.4.9, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.1.1.3 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.1.1.3 application can be applied independently of + other applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18470 Application(s): compiler + Related Id(s): GH-6873, PR-6877 + + The compiler would generate incorrect code for the + following type of expression: + + Pattern = BoundVar1 = . . . = BoundVarN = Expression + + An exception should be raised if any of the bound + variables have different values than Expression. The + compiler would generate code that would cause the bound + variables to be bound to the value of Expressionwhether + the value matched or not. + + + Full runtime dependencies of compiler-8.1.1.3: crypto-3.6, erts-11.0, + kernel-7.0, stdlib-3.13 + + + --------------------------------------------------------------------- + --- erts-12.3.2.9 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-12.3.2.9 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.3 (first satisfied in OTP 24.3) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18421 Application(s): erts + Related Id(s): PR-6806 + + process_info(Pid, status) when Pid /= self() could + return an erroneous result. + + + OTP-18463 Application(s): erts + Related Id(s): PR-6858 + + In rare circumstances, when a process exceeded its + allowed heap size set by option max_heap_size, it would + not be killed as it should be, but instead enter a kind + of zombie state it would never get out of. + + + Full runtime dependencies of erts-12.3.2.9: kernel-8.3, sasl-3.3, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- inets-7.5.3.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-7.5.3.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18472 Application(s): inets + Related Id(s): DAFH-1592 + + With this change, handling of URI to a folder, with + missing trailing / and a query component present is + fixed. + + + Full runtime dependencies of inets-7.5.3.2: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.13.2.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.13.2.2 application can be applied independently of other + applications on a full OTP 24 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18386 Application(s): ssh + Related Id(s): PR-6611 + + With this change, ssh application does not crash when + formatting some of info reports for unsuccessful + connections. + + + OTP-18417 Application(s): ssh + Related Id(s): ERIERL-888, DAFH-1349, IA18357 + + With this change, ssh does not log extensively long + messages. + + + Full runtime dependencies of ssh-4.13.2.2: crypto-5.0, erts-9.0, + kernel-5.3, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.7.3.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.7.3.6 application *cannot* be applied independently + of other applications on an arbitrary OTP 24 installation. + + On a full OTP 24 installation, also the following runtime + dependencies have to be satisfied: + -- public_key-1.11.3 (first satisfied in OTP 24.1.2) + -- stdlib-3.17.2.1 (first satisfied in OTP 24.3.4.5) + + + --- Improvements and New Features --- + + OTP-18433 Application(s): ssl + Related Id(s): GH-6772 + + Maximize compatibility by ignoring change_cipher_spec + during handshake even if middle_box_mode is not + negotiated (mandated by client) + + + OTP-18467 Application(s): ssl + Related Id(s): GH-6807 + + Move assert of middlebox message after an + hello_retry_request to maximize interoperability. Does + not changes semantics of the protocol only allows + unexpected message delay from server. + + + Full runtime dependencies of ssl-10.7.3.6: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.17.2.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.0.1.README.txt b/release-notes/OTP-25.0.1.README.txt new file mode 100644 index 0000000..6ff8957 --- /dev/null +++ b/release-notes/OTP-25.0.1.README.txt @@ -0,0 +1,317 @@ +Patch Package: OTP 25.0.1 +Git Tag: OTP-25.0.1 +Date: 2022-06-09 +Trouble Report Id: OTP-18010, OTP-18046, OTP-18087, OTP-18094, + OTP-18100, OTP-18105, OTP-18106, OTP-18110, + OTP-18112, OTP-18120, OTP-18122, OTP-18123, + OTP-18124, OTP-18128, OTP-18129, OTP-18132, + OTP-18136 +Seq num: ERIERL-811, GH-5950, GH-5961, GH-5985, + GH-5994, GH-6000, GH-6015 +System: OTP +Release: 25 +Application: crypto-5.1.1, dialyzer-5.0.1, erts-13.0.1, + kernel-8.4.1, mnesia-4.21.1, ssh-4.14.1, + ssl-10.8.1, stdlib-4.0.1 +Predecessor: OTP 25.0 + + Check out the git tag OTP-25.0.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.1.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18046 Application(s): crypto + + Note in the documentation that MODP (rfc3526) groups + and OpenSSL 3.0 can give an error if a call to + crypto:generate_key/2 specifies a key length, and that + length is to small. + + + --- Improvements and New Features --- + + OTP-18010 Application(s): crypto + + The cmac now uses only the 3.0 API + + + OTP-18132 Application(s): crypto + + Documentation is now updated with which OpenSSL + cryptolib versions that OTP currently is tested. + + + Full runtime dependencies of crypto-5.1.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.0.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.0.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18120 Application(s): dialyzer + + Fixed the documentation for the missing_return and + extra_return options. + + + Full runtime dependencies of dialyzer-5.0.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-13.0.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.0.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.4.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18105 Application(s): erts + Related Id(s): OTP-16982, PR-6003 + + A spawn_reply signal from a remote node could be + delayed and be delivered after other signals from the + newly spawned process. + + When this bug triggered, the connection to the node + where the process was spawned sometimes could be taken + down due to the bug. The following error message would + then be logged if this happened: Missing 'spawn_reply' + signal from the node <RemoteNode> detected by <Pid> on + the node <LocalNode>. The node <RemoteNode> probably + suffers from the bug with ticket id OTP-17737. + + This bug only affected processes which had enabled + off_heap message_queue_data and parallel reception of + signals had been automatically enabled. + + This bug was introduced in OTP 25.0, ERTS version 13.0. + + + OTP-18106 Application(s): erts + Related Id(s): PR-5992 + + Fixed type spec of erlang:system_info(dist_ctrl). + + + OTP-18123 Application(s): erts + Related Id(s): GH-5994 + + The zlib built in to the runtime system has been + updated to version 1.2.12. (Note that on most + platforms, the platform's own zlib is used.) + + + OTP-18124 Application(s): erts, kernel + Related Id(s): OTP-17558, PR-6032 + + The erlang:is_alive() BIF could return true before + configured distribution service was available. This bug + was introduced in OTP 25.0 ERTS version 13.0. + + The erlang:monitor_node() and erlang:monitor() BIFs + could erroneously fail even though configured + distribution service was available. This occurred if + these BIFs were called after the distribution had been + started using dynamic node name assignment but before + the name had been assigned. + + + Full runtime dependencies of erts-13.0.1: kernel-8.4.1, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.4.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.4.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- erts-13.0.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18112 Application(s): kernel + Related Id(s): ERIERL-811 + + The DNS resolver inet_res has been fixed to ignore + trailing dot difference in the request domain between + the sent request and the received response, when + validating a response. + + + OTP-18122 Application(s): kernel + Related Id(s): GH-6015, PR-6020 + + A bug in inet_res has been fixed where a missing + internal {ok,_} wrapper caused inet_res:resolve/* to + return a calculated host name instead of an `{ok,Msg} + tuple, when resolving an IP address or a host name that + is an IP address string. + + + OTP-18124 Application(s): erts, kernel + Related Id(s): OTP-17558, PR-6032 + + The erlang:is_alive() BIF could return true before + configured distribution service was available. This bug + was introduced in OTP 25.0 ERTS version 13.0. + + The erlang:monitor_node() and erlang:monitor() BIFs + could erroneously fail even though configured + distribution service was available. This occurred if + these BIFs were called after the distribution had been + started using dynamic node name assignment but before + the name had been assigned. + + + OTP-18136 Application(s): kernel + + Added the missing mandatory address/0 callback in the + gen_tcp_dist example. + + + Full runtime dependencies of kernel-8.4.1: crypto-5.0, erts-13.0.1, + sasl-3.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- mnesia-4.21.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18128 Application(s): mnesia + Related Id(s): PR-6013 + + Fixed add_table_copy which could leave a table lock if + the receiving node went down during the operation. + + + Full runtime dependencies of mnesia-4.21.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ssh-4.14.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssh-4.14.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18094 Application(s): ssh + + Binaries can be limited in logs with the parameter + max_log_item_len. The default value is 500 bytes. + + + Full runtime dependencies of ssh-4.14.1: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-10.8.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18087 Application(s): ssl + Related Id(s): GH-5961 + + When a TLS-1.3 enabled client tried to talk to a + TLS-1.2 server that coalesces TLS-1.2 handshake message + over one TLS record, the connection could fail due to + some message being handled in the wrong state, this has + been fixed. + + + OTP-18100 Application(s): ssl + Related Id(s): GH-5985 + + Correctly handles supported protocol version change + from default to something else by sni_fun supplied to + ssl:handshake/[2,3] together with a TCP-socket (so + called upgrade). + + + OTP-18129 Application(s): ssl + Related Id(s): GH-5950 + + Also, TLS-1.3 should respond with a protocol version + alert if previous versions, that are supported but not + configured, are attempted. + + + Full runtime dependencies of ssl-10.8.1: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --- stdlib-4.0.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-4.0.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18110 Application(s): stdlib + Related Id(s): GH-6000 + + In the initial release of Erlang/OTP 25, the expression + bound to the _ pseudo-field in a record initialization + would always be evaluated once, even if all other + fields in the record were explicitly initialized. That + would break the use case of binding the expression + error(...) to _ in order to get an exception if not all + fields were initialized. + + The behavior of binding to _ has been reverted to the + pre-OTP 25 behavior, that is, to not evaluate the + expression if all fields have been bound to explicit + values. + + + Full runtime dependencies of stdlib-4.0.1: compiler-5.0, crypto-4.5, + erts-12.0, kernel-8.4, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.0.2.README.txt b/release-notes/OTP-25.0.2.README.txt new file mode 100644 index 0000000..16a6f32 --- /dev/null +++ b/release-notes/OTP-25.0.2.README.txt @@ -0,0 +1,68 @@ +Patch Package: OTP 25.0.2 +Git Tag: OTP-25.0.2 +Date: 2022-06-21 +Trouble Report Id: OTP-18143, OTP-18145 +Seq num: +System: OTP +Release: 25 +Application: erts-13.0.2, ssl-10.8.2 +Predecessor: OTP 25.0.1 + + Check out the git tag OTP-25.0.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.0.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.0.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.4.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18143 Application(s): erts + + On computers with the ARM64 (AArch64) architecture + (such as Apple Silicon Macs) a rem expression followed + by a div expression with the same operands could + evaluate to the wrong result if the result of the rem + expression was unused. + + + Full runtime dependencies of erts-13.0.2: kernel-8.4.1, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- ssl-10.8.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-10.8.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18145 Application(s): ssl + + Improved handling of unexpected messages during the + handshake, taking the right action for unexpected + messages. + + + Full runtime dependencies of ssl-10.8.2: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.0.3.README.txt b/release-notes/OTP-25.0.3.README.txt new file mode 100644 index 0000000..84e69de --- /dev/null +++ b/release-notes/OTP-25.0.3.README.txt @@ -0,0 +1,157 @@ +Patch Package: OTP 25.0.3 +Git Tag: OTP-25.0.3 +Date: 2022-07-15 +Trouble Report Id: OTP-18164, OTP-18169, OTP-18170, OTP-18173, + OTP-18175, OTP-18177 +Seq num: +System: OTP +Release: 25 +Application: erts-13.0.3, ssl-10.8.3 +Predecessor: OTP 25.0.2 + + Check out the git tag OTP-25.0.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.0.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.0.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.4.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18164 Application(s): erts + Related Id(s): PR-6114 + + Distributed exit signals could be lost under the + following conditions: + + -- An exit signal from a parent process to a child + process was lost if: + + --- the parent process terminated before the spawn + request that created the child had completed, + + --- the spawn request set up a link between parent and + child + + --- the spawn request was distributed, and + + --- the exit reason was larger than one machine word. + + -- Loss of a connection over which a not yet completed + spawn request was ongoing could cause loss of exit + signals. Such loss of exit signals was very rare. + Besides the above described connection loss also the + following conditions had to be satisfied: + + --- The spawn request that was interrupted by the + connection loss also had to set up a link between the + parent process and the child process. + + --- The parent process that issued the spawn request + also had to be terminating while the spawn request was + interrupted by the connection loss. + + --- The same parent process also had to have made other + spawn requests to other nodes than to the node to which + the connection was lost. + + --- These spawn requests to the other nodes also had to + set up links. + + --- These spawn requests to the other nodes also had to + be not yet completed at the time of the connection + loss. That is, the spawn reply from the child process + had not yet reached the parent process. + + If all the conditions above were met, exit signals to + the children spawned due to the above described spawn + requests to other nodes *could* be lost. + + The above bug also caused a significant memory leak + when it was triggered since the destruction of the + parent process never completed. + + + OTP-18169 Application(s): erts + Related Id(s): PR-6134 + + A race could cause process_info(Pid, message_queue_len) + on other processes to return invalid results. + + + OTP-18170 Application(s): erts + Related Id(s): PR-6135 + + Fixed reduction counting for handling process system + tasks. + + + OTP-18175 Application(s): erts + Related Id(s): PR-6142 + + Priority elevation of terminating processes did not + work which could cause execution of such processes to + be delayed. + + + OTP-18177 Application(s): erts + Related Id(s): PR-6150 + + An unlink operation made by a process that terminated + before the unlink operation completed, i.e., before it + had received an unlink-ack signal from the linked + process, caused an exit signal to erroneously be sent + from the terminating process to the process being + unlinked. This exit signal would most often be ignored + by the receiver, but if the receiver of the exit signal + concurrently set up a new link, it could receive the + exit signal with the actual exit reason of the + terminating process instead of a noproc exit reason. It + is however very hard to detect that this has happened + and has no obvious negative consequences, so it should + be considered harmless. + + A distributed unlink-ack signal received by a + terminating process was also not properly removed which + could cause a minor memory leak. + + + Full runtime dependencies of erts-13.0.3: kernel-8.4.1, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- ssl-10.8.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-10.8.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18173 Application(s): ssl + + The link to crypto:engine_load refered the function + with wrong arity. + + + Full runtime dependencies of ssl-10.8.3: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.0.4.README.txt b/release-notes/OTP-25.0.4.README.txt new file mode 100644 index 0000000..9ec237c --- /dev/null +++ b/release-notes/OTP-25.0.4.README.txt @@ -0,0 +1,84 @@ +Patch Package: OTP 25.0.4 +Git Tag: OTP-25.0.4 +Date: 2022-08-18 +Trouble Report Id: OTP-18190, OTP-18197, OTP-18198 +Seq num: GH-6129, GH-6165, GH-6185 +System: OTP +Release: 25 +Application: erts-13.0.4, kernel-8.4.2 +Predecessor: OTP 25.0.3 + + Check out the git tag OTP-25.0.4, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.0.4 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.0.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- kernel-8.4.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18190 Application(s): erts + Related Id(s): GH-6185, PR-6209 + + The monitor/3 BIF did not apply options to the created + monitor if the target process or port did not exist. + That is, the corresponding down message would get a + `DOWN` tag even if a custom tag had been set, and the + returned reference was not an alias even if the alias + option had been passed. + + + OTP-18197 Application(s): erts + Related Id(s): GH-6165, PR-6213 + + The erlang:monotonic_time/1, erlang:system_time/1, + erlang:time_offset/1, and os:system_time/1 BIFs + erroneously failed when passed the argument native. + + + Full runtime dependencies of erts-13.0.4: kernel-8.4.1, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.4.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.4.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- erts-13.0.1 (first satisfied in OTP 25.0.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18198 Application(s): kernel + Related Id(s): GH-6129, PR-6216 + + A call to net_kernel:setopts(new, Opts) at the same + time as a connection was being set up could cause a + deadlock between the net_kernel process and the process + setting up the connection. + + + Full runtime dependencies of kernel-8.4.2: crypto-5.0, erts-13.0.1, + sasl-3.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.0.README.txt b/release-notes/OTP-25.0.README.txt new file mode 100644 index 0000000..3c6bc4d --- /dev/null +++ b/release-notes/OTP-25.0.README.txt @@ -0,0 +1,3182 @@ +Inital Release: OTP 25.0 +Git Tag: OTP-25.0 +Date: 2022-05-18 +Trouble Report Id: OTP-15991, OTP-15993, OTP-16464, OTP-16607, + OTP-16702, OTP-16852, OTP-16982, OTP-17119, + OTP-17151, OTP-17224, OTP-17304, OTP-17318, + OTP-17323, OTP-17351, OTP-17370, OTP-17414, + OTP-17447, OTP-17471, OTP-17479, OTP-17480, + OTP-17481, OTP-17504, OTP-17518, OTP-17523, + OTP-17524, OTP-17544, OTP-17550, OTP-17551, + OTP-17554, OTP-17555, OTP-17556, OTP-17558, + OTP-17561, OTP-17562, OTP-17566, OTP-17569, + OTP-17589, OTP-17592, OTP-17608, OTP-17612, + OTP-17617, OTP-17627, OTP-17630, OTP-17636, + OTP-17644, OTP-17654, OTP-17660, OTP-17661, + OTP-17667, OTP-17669, OTP-17676, OTP-17681, + OTP-17682, OTP-17683, OTP-17684, OTP-17685, + OTP-17705, OTP-17710, OTP-17717, OTP-17720, + OTP-17728, OTP-17729, OTP-17733, OTP-17752, + OTP-17753, OTP-17755, OTP-17758, OTP-17762, + OTP-17772, OTP-17778, OTP-17779, OTP-17784, + OTP-17798, OTP-17802, OTP-17810, OTP-17819, + OTP-17820, OTP-17821, OTP-17824, OTP-17826, + OTP-17832, OTP-17836, OTP-17841, OTP-17842, + OTP-17846, OTP-17855, OTP-17858, OTP-17860, + OTP-17866, OTP-17869, OTP-17870, OTP-17878, + OTP-17881, OTP-17882, OTP-17884, OTP-17885, + OTP-17889, OTP-17890, OTP-17892, OTP-17894, + OTP-17897, OTP-17899, OTP-17901, OTP-17908, + OTP-17909, OTP-17910, OTP-17911, OTP-17915, + OTP-17920, OTP-17921, OTP-17923, OTP-17925, + OTP-17927, OTP-17930, OTP-17935, OTP-17939, + OTP-17945, OTP-17950, OTP-17951, OTP-17953, + OTP-17958, OTP-17961, OTP-17964, OTP-17965, + OTP-17968, OTP-17969, OTP-17974, OTP-17976, + OTP-17977, OTP-17980, OTP-17984, OTP-17985, + OTP-17986, OTP-17988, OTP-17990, OTP-17991, + OTP-17996, OTP-17997, OTP-17999, OTP-18000, + OTP-18001, OTP-18003, OTP-18006, OTP-18008, + OTP-18009, OTP-18011, OTP-18012, OTP-18014, + OTP-18015, OTP-18020, OTP-18033, OTP-18034, + OTP-18035, OTP-18036, OTP-18038, OTP-18045, + OTP-18047, OTP-18063, OTP-18067, OTP-18068, + OTP-18070, OTP-18079, OTP-18083, OTP-18084, + OTP-18085, OTP-18086, OTP-18087, OTP-18088, + OTP-18092 +Seq num: ERIERL-590, ERIERL-663, ERIERL-728, + ERIERL-760, ERIERL-792, ERIERL-798, ERL-1347, + GH-2375, GH-2690, GH-4143, GH-4492, GH-4622, + GH-4673, GH-4759, GH-4784, GH-4819, GH-4853, + GH-4915, GH-4965, GH-4968, GH-4971, GH-5016, + GH-5071, GH-5093, GH-5094, GH-5140, GH-5204, + GH-5214, GH-5276, GH-5297, GH-5368, GH-5376, + GH-5379, GH-5402, GH-5403, GH-5463, GH-5513, + GH-5606, GH-5617, GH-5655, GH-5683, GH-5728, + GH-5760, GH-5767, GH-5780, GH-5782, GH-5801, + GH-5828, GH-5903, GH-5961 +System: OTP +Release: 25 +Application: asn1-5.0.19, common_test-1.23, compiler-8.2, + crypto-5.1, debugger-5.3, dialyzer-5.0, + diameter-2.2.6, edoc-1.2, erl_docgen-1.3, + erl_interface-5.3, erts-13.0, eunit-2.7.1, + inets-8.0, jinterface-1.13, kernel-8.4, + megaco-4.4, mnesia-4.21, observer-2.12, + odbc-2.14, parsetools-2.4, public_key-1.13, + runtime_tools-1.19, sasl-4.2, snmp-5.13, + ssh-4.14, ssl-10.8, stdlib-4.0, + syntax_tools-3.0, tools-3.5.3, wx-2.2, + xmerl-1.3.29 +Predecessor: OTP + + Check out the git tag OTP-25.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-15993 Application(s): ssl + Related Id(s): GH-4143 + + With this change, it is possible to provide several + certificates. Most appropriate will be selected based + on negotiated properties. + + + OTP-16702 Application(s): compiler, erts + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-16982 Application(s): erts + Related Id(s): PR-5020 + + The signal queue of a process with + message_queue_data=off_heap* has been optimized to + allow parallel reception of signals from multiple + processes. + + This is possible to do as Erlang only guarantees that + signals (i.e., message signals and non-message signals) + sent from a single process to another process are + ordered in send order. However, there are no ordering + guarantees for signals sent from different processes to + a particular process. Therefore, several processes can + send signals in parallel to a specific process without + synchronizing with each other. However, such signal + sending was previously always serialized as the senders + had to acquire the lock for the outer signal queue of + the receiving process. This parallel signal sending + optimization yields much better scalability for signal + sending than what was previously possible, see + https://erlang.org/bench/sigq_bench_result.html for + benchmark results. + + * Information about how to enable the + message_queue_data=off_heap setting can be found in the + documentation of the function erlang:process_flag/2. + + + OTP-17119 Application(s): erts + Related Id(s): PR-4869 + + The JIT now works for 64-bit ARM processors. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17351 Application(s): stdlib + Related Id(s): GH-4673, PR-4952 + + The format_status/2 callback for gen_server, gen_statem + and gen_event has been deprecated in favor of the new + format_status/1 callback. + + The new callback adds the possibility to limit and + change many more things than the just the state, such + as the last received message, the reason for + terminating and more events specific to each type of + behavior. See the respective modules documentation for + more details. + + + OTP-17481 Application(s): stdlib + Related Id(s): PR-4811 + + The timer module has been modernized and made more + efficient, which makes the timer server less + susceptible to being overloaded. The timer:sleep/1 + function now accepts an arbitrarily large integer. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17705 Application(s): compiler + Related Id(s): PR-5411 + + The maybe ... end construction proposed in EEP-49 has + been implemented. It can simplify complex code where + otherwise deeply nested cases would have to be used. + + To enable maybe, give the option -enable-feature + maybe_expr to erlc or add -feature(maybe_expr, enable). + inside the module. + + + OTP-17710 Application(s): otp + Related Id(s): PR-5597 + + A new DEVELOPMENT how-to guide has been added that + describes how to build and test Erlang/OTP when fixing + bugs or developing new functionality. + + The makefile system has been extended to make it easier + to run tests at different granulates directly from the + command line. This new functionality is described in + the development how-to. + + Using the extended makefile system, testing has been + added to the Github actions run for each opened PR so + that more bugs are caught earlier when bug fixes and + new features are proposed. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17798 Application(s): public_key + Related Id(s): GH-5760 + + Added functions to retrieve OS provided CA-certs. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** POTENTIAL INCOMPATIBILITY *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17953 Application(s): stdlib + Related Id(s): PR-5621 + + Added filelib:ensure_path/1 that ensures that all + directories for the given path exists (unlike + filelib:ensure_dir/1, which will not create the last + segment of the path). + + + OTP-17969 Application(s): stdlib + Related Id(s): PR-5588 + + The functions groups_from_list/2 and groups_from_list/3 + have been added to the maps module. + + + OTP-17977 Application(s): stdlib + Related Id(s): GH-5606, PR-5766 + + The functions uniq/1 and uniq/2 for removing duplicates + have been added to the lists module. + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + OTP-18011 Application(s): stdlib + + A new PRNG have been added to the rand module: mwc59 + which has been developed in collaboration with + Sebastiano Vigna. It is intended for applications that + need really fast pseudo-random numbers, and it comes + with two output value scramblers, one fast and one + thorough. + + Two internal functions for the exsp generator have also + been exported so they can be used outside the rand + plug-in framework to shave off some overhead. + + The internal splitmix64 generator has also been + exported which can be useful for seeding other kinds of + PRNG:s than its own. + + + OTP-18086 Application(s): crypto + Related Id(s): OTP-16282, OTP-16643, OTP-16644, + OTP-17701, OTP-17702, OTP-17704 + + The cryptolib API deprecated in OpenSSL 3.0 is now no + longer used with a few exceptions listed below. + + Although OpenSSL 3.0.x itself is stable, its usage in + OTP/crypto should still not be considered suitable for + production code. + + The use of ENGINEs is still disabled by default when + using 3.0. + + Deprecated functions are still called in the + otp_test_engine.c (only used in tests), in mac.c + (EVP_PKEY_new_CMAC_key) and five function calls in ec.c + (EVP_PKEY_assign, EC_KEY_get_conv_form, + EVP_PKEY_get1_EC_KEY, EC_KEY_get0_group and + EC_KEY_set_public_key). + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-17544 Application(s): stdlib + Related Id(s): PR-5008 + + Fix gen_server:call with the first argument as self() + to throw an error instead of failing with a timeout. + + The same fix has also been done for gen_statem:call/3, + gen_event:sync_notify/2 and any other functionality + relying on the internal gen:call/3 function. + + A similar fix was also done when using io:format/2 and + the current group_leader was set to the current + process. + + + OTP-17569 Application(s): erts + Related Id(s): PR-4793 + + The growth rate of writable binaries has been adjusted + to only increase by 20% after 16MB in size. Before this + change the size would always double. + + This change may degrade write performance of large + binaries. + + + OTP-17627 Application(s): inets, stdlib + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17644 Application(s): dialyzer + Related Id(s): PR-5223 + + Fixed a bug that could cause the type analyzer to enter + an infinite loop. + + + OTP-17681 Application(s): kernel + Related Id(s): PR-5307 + + The most, or at least the most used, rpc operations now + require erpc support in order to communicate with other + Erlang nodes. erpc was introduced in OTP 23. That is, + rpc operations against Erlang nodes of releases prior + to OTP 23 will fail. + + + OTP-17683 Application(s): erts + Related Id(s): PR-5306 + + Distributed spawn operations now require distributed + spawn_request() support. Distributed spawn_request() + was introduced in OTP 23. That is, distributed spawn + operations against Erlang nodes of releases prior to + OTP 23 will fail. + + + OTP-17821 Application(s): dialyzer + Related Id(s): GH-5016, OTP-17554, PR-5408 + + The default location of the plt has been changed from + $HOME to filename:basedir(user_cache,"erlang"). + + + OTP-17866 Application(s): inets + + This change removes deprecated functions: + http_uri:parse/1, http_uri:parse/2 and + http_uri:scheme_defaults/0. + + This change delays until OTP-26 removal of deprecated + functions: http_uri:encode/1 and http_uri:decode/1. + + This change marks httpd_util:decode_hex/1 and + httpd_util:encode_hex/1 as deprecated. + + + OTP-17889 Application(s): inets + + Fixed typo in Reason term returned from + httpc_handler:handle_http_body. + + After this change, could_not_establish_ssl_tunnel atom + is returned within Reason term. + + + OTP-17894 Application(s): syntax_tools + Related Id(s): PR-5509 + + The erl_syntax_lib:analyze_attribute/1 function would + return {Name, {Name, Value}} instead of {Name, Value} + (which is the documented return value). + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** HIGHLIGHT *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17920 Application(s): ssh + + The representation of Edward curves (ed25519 and ed448) + inside ssh had a temporary representation (ed_pri and + ed_pub). + + That is now changed to the public_key form. See the + manual for more information. + + + OTP-17921 Application(s): public_key + + The deprecated public_key functions ssh_decode/2, + ssh_encode/2, ssh_hostkey_fingerprint/1 and + ssh_hostkey_fingerprint/2 are removed. + + They are replaced by ssh_file:decode/2, + ssh_file:encode/2, ssh:hostkey_fingerprint/1 and + ssh:hostkey_fingerprint/2 respectively. + + Note that the decode/2 and encode/2 are not exact + replacement functions, some minor changes may be + needed. Se the manual for more information. + + + OTP-17925 Application(s): stdlib + Related Id(s): PR-5631 + + The non-local function handler for the erl_eval can now + be called with either two or three arguments. When + called with three arguments, the first argument is the + annotation for the node in the abstract format. + + All errors during evaluation will now be passed through + erlang:raise/3. If the restricted shell is active and + it does not let erlang:raise/3 through, evaluation + errors will be printed in less clear way. See the + documentation for restricted shell in shell. + + + OTP-17950 Application(s): wx + + Added aux1Down and aux2Down fields to the wxMouseState + record. Since one record have been changed a + recompilation of user code might be required. + + + OTP-17965 Application(s): crypto + + The information in error messages are increased. + + Previously the error was signaled with en error class + exception badarg, notsup or error, and also in some + more ways like an other exception or a return value in + a non-standardized format. + + Now it is an error-class exception + {notsup|badarg|error, InfoFromCfile, + Description::string()}. + + The InfoFromCfile is a term with name and line number + of the C-file where the error was found. This is + primarily intended for a crypto maintainer or an + advanced user to find the cause of complicated errors - + maybe in crypto itself. The contents of that term might + be changed in the future. + + The Description is a clear text string that describes + the error. In case of badarg and notsup the intention + is that it should help the user to find the cause ("Bad + key size" as an example). Specially for some error that + are unlikely, the string may not be possible to + understand without deep knowledge of the underlying + cryptolib. Such messages are intended for a crypto + maintainer. + + The first element on call stack (the S in try ... catch + error:E:S .... end) gives more information like the + actual argument list in the call of crypto and the + argument number (if possible) in the call to the NIF + inside crypto. + + The functions in crypto affected by this change are: + + sign/4, sign/5, verify/5, verify/6, + + generate_key/2, generate_key/3, compute_key/4, + + hash/2, hash/4, hash_init/1, hash_update/4, + hash_final/1, + + mac/3,4, mac_init/3, mac_update/2, mac_final/2, + + pbkdf2_hmac/5, + + public_encrypt/4, private_decrypt/4, private_encrypt/4, + public_decrypt/4 + + This schema was introduced earlier in: + + crypto_init/3, crypto_init/4, crypto_update/2, + crypto_final/1, crypto_get_data/1, + + crypto_one_time/4, crypto_one_time/5, + crypto_one_time_aead/6, crypto_one_time_aead/7 + + + OTP-17991 Application(s): stdlib + + The function filename:safe_relative_path/1, which has + been deprecated since OTP 25, has been removed. Use + filelib:safe_relative_path/2 instead. + + + OTP-18009 Application(s): stdlib + Related Id(s): PR-5785 + + Fixed string:next_grapheme/1 to return an empty binary + in the tail for binary input for the last grapheme + cluster. + + + --------------------------------------------------------------------- + --- OTP-25.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17224 Application(s): erts, otp + + A test case has been added to the otp_SUITE that test + that the dependency versions for OTP's applications are + correct. The test case uses xref to check if the used + functions are available in the specified dependency + versions. The test case depends on the Erlang/OTP + team's testing infrastructure and will be skipped if + its dependencies are not met. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17669 Application(s): erl_docgen, otp + Related Id(s): PR-5226 + + Any exported, but private function or module in + Erlang/OTP now generate an EEP-48 style documentation + entry with the content set to hidden. + + Before this change, exported but private functions and + modules did not have any entry at all. + + + OTP-17710 Application(s): otp + Related Id(s): PR-5597 + + *** HIGHLIGHT *** + + A new DEVELOPMENT how-to guide has been added that + describes how to build and test Erlang/OTP when fixing + bugs or developing new functionality. + + The makefile system has been extended to make it easier + to run tests at different granulates directly from the + command line. This new functionality is described in + the development how-to. + + Using the extended makefile system, testing has been + added to the Github actions run for each opened PR so + that more bugs are caught earlier when bug fixes and + new features are proposed. + + + --------------------------------------------------------------------- + --- asn1-5.0.19 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17980 Application(s): asn1 + + The atom maybe has been quoted in the source code. + + + Full runtime dependencies of asn1-5.0.19: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.23 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17881 Application(s): common_test + Related Id(s): PR-5581 + + Fix bug when running parallel test cases and together + with one or more ct hooks that would cause the hook + lock process to crash and produce printouts in the ct + logs. + + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17676 Application(s): common_test + Related Id(s): PR-5021 + + Remove unused and undocumented tracer node + functionality. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17882 Application(s): common_test + Related Id(s): PR-5581 + + The cth_surefire ct hook has been updated to include + the file and line number of the executed test case in + the xml output. + + The performance of the hook has also been improved + greatly for test runs with many test cases. + + + Full runtime dependencies of common_test-1.23: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17810 Application(s): compiler + Related Id(s): GH-5379 + + A subtle bug regarding variable scoping has been + corrected. Consider this example: + + (A=1) + fun() -> A = 2() end + + In the shell, the expression correctly evaluates to 3. + In compiled code, it raised a {badmatch, 2} exception. + + + OTP-17820 Application(s): compiler + + Fixed a rare bug that would crash the compiler during + type optimization. + + + OTP-17860 Application(s): compiler + Related Id(s): GH-5513, OTP-17226 + + Starting in OTP 24, when a fun was created and + immediately used, it would be inlined. An unintended + consequence of the inlining was that what would be a + function_clause exception without the inlining would + now be a rather confusing case_clause exception. This + has been corrected, so that function_clause exceptions + remain function_clause exceptions in inlined code. + + + OTP-18083 Application(s): compiler, stdlib + + If a default record field initialization (_ = Expr) was + used even though all records fields were explicitly + initialized, Expr would not be evaluated. That would + not be a problem, except when Expr would bind a + variable subsequently used, in which case the compiler + would crash. + + As an example, if record #r{} is defined to have only + one field a, the following code would crash the + compiler: + + #r{a=[],_=V=42}, V + + To fix that problem, the compiler will make sure that + Expr is always evaluated at least once. The compiler + will now rewrite the example to essentially: + + V=42, #r{a=[]}, V + + + --- Improvements and New Features --- + + OTP-16702 Application(s): compiler, erts + + *** HIGHLIGHT *** + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + *** HIGHLIGHT *** + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + *** HIGHLIGHT *** + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + *** HIGHLIGHT *** + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17685 Application(s): compiler, erts + + Improved the JIT's support for external tools like perf + and gdb, allowing them to show line numbers and even + the original Erlang source code when that can be found. + + To aid them in finding the source code, the + absolute_path compiler option has been added to embed + the absolute file path of a module. + + + OTP-17705 Application(s): compiler + Related Id(s): PR-5411 + + *** HIGHLIGHT *** + + The maybe ... end construction proposed in EEP-49 has + been implemented. It can simplify complex code where + otherwise deeply nested cases would have to be used. + + To enable maybe, give the option -enable-feature + maybe_expr to erlc or add -feature(maybe_expr, enable). + inside the module. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + *** HIGHLIGHT *** + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17842 Application(s): compiler + + Improved optimization of try/catch expressions. + + + OTP-17885 Application(s): compiler + Related Id(s): GH-5140 + + The beam_trim pass of the compiler could be extremely + slow for huge straight-line functions. It will now + compile such functions much faster (down to seconds + from minutes for some huge functions). + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of compiler-8.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17858 Application(s): crypto + Related Id(s): ERIERL-728 + + Fix timing bug in ensure_engine_loaded + + When two ensure_engine_loaded() calls were done in + parallel there was a possibility that a crypto lib + function was called by both instead of just one of them + which resulted in an error. This is solved by moving + the implementation from erlang down into a NIF function + that uses a mutex to protect the sensitive part. + + + OTP-17984 Application(s): crypto + + Remove faulty types run_time_error() and + descriptive_error(). + + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17471 Application(s): crypto + Related Id(s): PR-4750 + + Add crypto:hash_equals/2 + + + OTP-17561 Application(s): crypto + + Add /opt/homebrew/opt/openssl to standard locations to + search for OpenSSL cryptolib. + + + OTP-17870 Application(s): crypto + + crypto_dyn_iv_init/3 and crypto_dyn_iv_update/3 are + deprecated. + + + OTP-17965 Application(s): crypto + + *** POTENTIAL INCOMPATIBILITY *** + + The information in error messages are increased. + + Previously the error was signaled with en error class + exception badarg, notsup or error, and also in some + more ways like an other exception or a return value in + a non-standardized format. + + Now it is an error-class exception + {notsup|badarg|error, InfoFromCfile, + Description::string()}. + + The InfoFromCfile is a term with name and line number + of the C-file where the error was found. This is + primarily intended for a crypto maintainer or an + advanced user to find the cause of complicated errors - + maybe in crypto itself. The contents of that term might + be changed in the future. + + The Description is a clear text string that describes + the error. In case of badarg and notsup the intention + is that it should help the user to find the cause ("Bad + key size" as an example). Specially for some error that + are unlikely, the string may not be possible to + understand without deep knowledge of the underlying + cryptolib. Such messages are intended for a crypto + maintainer. + + The first element on call stack (the S in try ... catch + error:E:S .... end) gives more information like the + actual argument list in the call of crypto and the + argument number (if possible) in the call to the NIF + inside crypto. + + The functions in crypto affected by this change are: + + sign/4, sign/5, verify/5, verify/6, + + generate_key/2, generate_key/3, compute_key/4, + + hash/2, hash/4, hash_init/1, hash_update/4, + hash_final/1, + + mac/3,4, mac_init/3, mac_update/2, mac_final/2, + + pbkdf2_hmac/5, + + public_encrypt/4, private_decrypt/4, private_encrypt/4, + public_decrypt/4 + + This schema was introduced earlier in: + + crypto_init/3, crypto_init/4, crypto_update/2, + crypto_final/1, crypto_get_data/1, + + crypto_one_time/4, crypto_one_time/5, + crypto_one_time_aead/6, crypto_one_time_aead/7 + + + OTP-18067 Application(s): crypto + Related Id(s): PR-5866 + + Add Output Feedback mode (OFB) support for AES + encryption / decryption for key sizes of 128, 192 and + 256 bits. + + + OTP-18086 Application(s): crypto + Related Id(s): OTP-16282, OTP-16643, OTP-16644, + OTP-17701, OTP-17702, OTP-17704 + + *** HIGHLIGHT *** + + The cryptolib API deprecated in OpenSSL 3.0 is now no + longer used with a few exceptions listed below. + + Although OpenSSL 3.0.x itself is stable, its usage in + OTP/crypto should still not be considered suitable for + production code. + + The use of ENGINEs is still disabled by default when + using 3.0. + + Deprecated functions are still called in the + otp_test_engine.c (only used in tests), in mac.c + (EVP_PKEY_new_CMAC_key) and five function calls in ec.c + (EVP_PKEY_assign, EC_KEY_get_conv_form, + EVP_PKEY_get1_EC_KEY, EC_KEY_get0_group and + EC_KEY_set_public_key). + + + Full runtime dependencies of crypto-5.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + Full runtime dependencies of debugger-5.3: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.0 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17644 Application(s): dialyzer + Related Id(s): PR-5223 + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed a bug that could cause the type analyzer to enter + an infinite loop. + + + --- Improvements and New Features --- + + OTP-17524 Application(s): dialyzer + + Optimize operations in the erl_types module. + Parallelize the Dialyzer pass remote. + + + OTP-17654 Application(s): dialyzer + Related Id(s): GH-5214 + + Added the missing_return and extra_return options to + raise warnings when specifications differ from inferred + types. These are similar to, but not quite as verbose + as overspecs and underspecs. + + + OTP-17819 Application(s): dialyzer + + The race_conditions option has been removed. + + + OTP-17821 Application(s): dialyzer + Related Id(s): GH-5016, OTP-17554, PR-5408 + + *** POTENTIAL INCOMPATIBILITY *** + + The default location of the plt has been changed from + $HOME to filename:basedir(user_cache,"erlang"). + + + OTP-17826 Application(s): dialyzer + Related Id(s): PR-5498 + + dialyzer will now honor dependencies inside type + declarations. That is, if the declaration of an + exported type changes, all modules using said type will + be revisited. + + + OTP-17897 Application(s): dialyzer + Related Id(s): PR-5651 + + Dialyzer now better understands the types for min/2, + max/2, and erlang:raise/3. Because of that, Dialyzer + can potentially generate new warnings. In particular, + functions that use erlang:raise/3 could now need a spec + with a no_return() return type to avoid an unwanted + warning. + + + OTP-17964 Application(s): dialyzer + Related Id(s): PR-5660 + + The typer_core module has been added to provide an + Erlang API for running typer. + + + OTP-18035 Application(s): dialyzer + Related Id(s): PR-5802 + + Added the --annotate-in-place option to typer, which + can be used to annotate the specs that the tool + inferred directly into the source code files. + + + Full runtime dependencies of dialyzer-5.0: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.2.6 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17976 Application(s): diameter + Related Id(s): GH-5463 + + Fix decode of non-IP address types; that is, of values + of the derived AVP data format Address whose first two + octets specify an address family other than 1 (IP) or 2 + (IP6). Such values have never been decoded, and were + treated as decode errors. They're now decoded to a + 2-tuple of the integer() address family and binary() + remaining octets, with no family-specific decode. The + 2-tuple distinguishes the decode from the 4-tuple and + 8-tuple IP address decodes. 2-tuples are also now + encoded. + + Note that even currently unassigned address families + are decoded: only the reserved values, 0 and 65535, are + treated as errors. + + + Full runtime dependencies of diameter-2.2.6: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- edoc-1.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17550 Application(s): edoc + Related Id(s): GH-5094, PR-5106 + + Fix unused types warnings in internal edoc module. + + + --- Improvements and New Features --- + + OTP-17556 Application(s): edoc + Related Id(s): PR-5023 + + Add source file to the warning on skipped tags when + generating EEP-48 style docs. + + + OTP-17733 Application(s): edoc + Related Id(s): PR-5205 + + Fix the doc chunks generators to emit documentation + even if there is not module level documentation. + + Fix the doc chunks generators to respect the @hidden + and @private tags properly for both modules and + functions. + + + Full runtime dependencies of edoc-1.2: erts-6.0, inets-5.10, + kernel-3.0, stdlib-3.15, syntax_tools-2.0, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_docgen-1.3 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18084 Application(s): erl_docgen + Related Id(s): PR-5948 + + Fix types that are not derived from code to display the + correct information in EEP-48 style documentation + chunks. + + + --- Improvements and New Features --- + + OTP-17669 Application(s): erl_docgen, otp + Related Id(s): PR-5226 + + Any exported, but private function or module in + Erlang/OTP now generate an EEP-48 style documentation + entry with the content set to hidden. + + Before this change, exported but private functions and + modules did not have any entry at all. + + + Full runtime dependencies of erl_docgen-1.3: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.3 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17846 Application(s): erl_interface + Related Id(s): PR-5558 + + erl_call no longer links against nsl on platforms where + gethostbyname is provided by libc. + + + --- Improvements and New Features --- + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17802 Application(s): erl_interface + Related Id(s): PR-5347 + + Changed creation arguments, of function ei_connect_init + and friends, from type short to unsigned int for full + 32-bit range. + + + --- Known Bugs and Problems --- + + 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-13.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17447 Application(s): erts, kernel + Related Id(s): GH-4819 + + The socket option 'reuseaddr' is *no longer* ignored on + Windows. + + + OTP-17569 Application(s): erts + Related Id(s): PR-4793 + + *** POTENTIAL INCOMPATIBILITY *** + + The growth rate of writable binaries has been adjusted + to only increase by 20% after 16MB in size. Before this + change the size would always double. + + This change may degrade write performance of large + binaries. + + + OTP-17661 Application(s): erts, stdlib + Related Id(s): PR-5165 + + Fix reduction counting bug in re:run that caused the + function to yield too frequently when doing global + matches. + + + OTP-17758 Application(s): erts + Related Id(s): PR-5391 + + Fix spelling mistakes in epmd error messages. + + + OTP-17779 Application(s): erts + Related Id(s): GH-5403, PR-5599 + + Fix bug where the "newshell" would trigger a newline at + the column width of the terminal, even if the next + character to be printed was a newline. This would cause + the terminal to render two newlines instead of one. + + + OTP-17832 Application(s): erts, stdlib + Related Id(s): PR-5494 + + Fix the memory value returned from ets:info(Tid,memory) + when the read_concurrency option is used. + + Before this fix the memory used by the scheduler + specific lock cache lines was not counted towards the + total. This caused the returned memory usage to be very + incorrect on systems with many schedulers for tables + with man locks. + + + OTP-17836 Application(s): erts + Related Id(s): PR-5546 + + Fix the undocumented --profile_boot option to work + again. + + + OTP-18020 Application(s): erts, kernel + + [socket] Encode of sockaddr has been improved. + + + OTP-18047 Application(s): erts + Related Id(s): PR-5861 + + Fix erl_child_setup (the program used by + open_port({spawn,...}) and os:cmd/1) to better handle + partial reads from the Erlang VM. + + + OTP-18068 Application(s): erts + Related Id(s): GH-5903 + + The runtime system would crash when attempting to + create more than 33554431 atoms. + + + --- Improvements and New Features --- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + *** HIGHLIGHT *** + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-16464 Application(s): erts, kernel + + The net module now works on Windows. + + + OTP-16702 Application(s): compiler, erts + + *** HIGHLIGHT *** + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-16852 Application(s): erts + Related Id(s): ERL-1347, PR-5195 + + Optimize minor garbage collection for processes with + large number of binaries, funs and/or external + pids/ports/refs. This is a continuation of the + optimization (OTP-17602) released in OTP-24.1. + + + OTP-16982 Application(s): erts + Related Id(s): PR-5020 + + *** HIGHLIGHT *** + + The signal queue of a process with + message_queue_data=off_heap* has been optimized to + allow parallel reception of signals from multiple + processes. + + This is possible to do as Erlang only guarantees that + signals (i.e., message signals and non-message signals) + sent from a single process to another process are + ordered in send order. However, there are no ordering + guarantees for signals sent from different processes to + a particular process. Therefore, several processes can + send signals in parallel to a specific process without + synchronizing with each other. However, such signal + sending was previously always serialized as the senders + had to acquire the lock for the outer signal queue of + the receiving process. This parallel signal sending + optimization yields much better scalability for signal + sending than what was previously possible, see + https://erlang.org/bench/sigq_bench_result.html for + benchmark results. + + * Information about how to enable the + message_queue_data=off_heap setting can be found in the + documentation of the function erlang:process_flag/2. + + + OTP-17119 Application(s): erts + Related Id(s): PR-4869 + + *** HIGHLIGHT *** + + The JIT now works for 64-bit ARM processors. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + *** HIGHLIGHT *** + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17224 Application(s): erts, otp + + A test case has been added to the otp_SUITE that test + that the dependency versions for OTP's applications are + correct. The test case uses xref to check if the used + functions are available in the specified dependency + versions. The test case depends on the Erlang/OTP + team's testing infrastructure and will be skipped if + its dependencies are not met. + + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + *** HIGHLIGHT *** + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17555 Application(s): erts + Related Id(s): PR-5027 + + Make byte_size/1 and binary_part/2/3 callable from + match specs (in ETS and tracing). + + + OTP-17558 Application(s): erts, kernel + Related Id(s): GH-5402, OTP-17538, PR-5111 + + Dynamic node name improvements: erlang:is_alive/0 + changed to return true for pending dynamic node name + and new function net_kernel:get_state/0. + + + OTP-17562 Application(s): erts + Related Id(s): GH-4492 + + A new option called short has been added to the + functions erlang:float_to_list and + erlang:float_to_binary. This option creates the + shortest correctly rounded string representation of the + given float that can be converted back to the same + float again. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17630 Application(s): erts, stdlib + + The signal queue benchmark in parallel_messages_SUITE + and the ETS benchmark in ets_SUITE have benchmark + result visualization HTML pages with "fill-screen" + buttons to make the graphs bigger. This button did not + work as intended before. When pressing the button for a + graph, the last graph got replaced with a bigger + version and not the one over the button. This is now + fixed. + + + OTP-17636 Application(s): erts + + The test case num_bif_SUITE:t_float_to_string + previously failed sometimes as it assumed a certain + rounding of floats printed with sprintf but the + rounding type is platform specific. + + + OTP-17660 Application(s): erts + Related Id(s): PR-5164 + + Optimize interpreter to create heap binaries of small + match contexts if possible. + + This optimization was already done in the JIT. + + + OTP-17667 Application(s): erts + Related Id(s): PR-5237 + + Optimize integer multiplication for x86 JIT + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17683 Application(s): erts + Related Id(s): PR-5306 + + *** POTENTIAL INCOMPATIBILITY *** + + Distributed spawn operations now require distributed + spawn_request() support. Distributed spawn_request() + was introduced in OTP 23. That is, distributed spawn + operations against Erlang nodes of releases prior to + OTP 23 will fail. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + *** HIGHLIGHT *** + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17685 Application(s): compiler, erts + + Improved the JIT's support for external tools like perf + and gdb, allowing them to show line numbers and even + the original Erlang source code when that can be found. + + To aid them in finding the source code, the + absolute_path compiler option has been added to embed + the absolute file path of a module. + + + OTP-17717 Application(s): erts + Related Id(s): PR-5290 + + Add [32-bit] to the Erlang shell title row for 32-bit + VMs. + + + OTP-17728 Application(s): erts + Related Id(s): PR-5284 + + Instructions for how to build the runtime system for + iOS/iPadOS can now be found in HOWTO/INSTALL.md. + + + OTP-17729 Application(s): erts + Related Id(s): PR-5477 + + Add support for static Elixir NIF modules with + non-alphanumeric characters by using new macro + STATIC_ERLANG_NIF_LIBNAME. + + + OTP-17753 Application(s): erts + Related Id(s): GH-5297, PR-5305 + + Add new function caller_line to for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the line number of the caller into + the trace message sent to the trace receiver. + + + OTP-17762 Application(s): erts + Related Id(s): GH-5204, PR-5219 + + A new erl command line argument +ssrct has been + introduced which will cause the runtime system to skip + reading CPU topology information. This reduce start up + time especially when the CPU topology is large. Reading + of CPU topology information is now also skipped if a + user defined CPU topology is set using the +sct command + line argument. + + + OTP-17772 Application(s): erts + Related Id(s): GH-4965, PR-5644 + + The default time warp mode will change in Erlang/OTP + 26. Added a warning about this upcoming potential + incompatibility to the documentation. + + + OTP-17824 Application(s): erts + + The emulator will no longer mark unused memory as + discardable (e.g. through madvise(2)), as it caused + more problems than it solved. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + *** HIGHLIGHT *** + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17892 Application(s): erts, tools + Related Id(s): PR-5591 + + Removed the previously undocumented and unsupported + emem tool. + + + OTP-17899 Application(s): erts + Related Id(s): PR-5524 + + Remove version number from the default install path on + Windows. + + + OTP-17927 Application(s): erts + Related Id(s): PR-5283 + + On Windows apply the limit flag + JOB_OBJECT_LIMIT_BREAKAWAY_OK in the Erlang service to + be able to start a OS child process with a different + session number. + + + OTP-17945 Application(s): erts + Related Id(s): GH-4759, PR-5809 + + New erl command line option +IOs. It can be used to + disable scheduler thread poll optimization, which has + been seen to cause degraded event latency in some use + cases. + + + OTP-17951 Application(s): erts, kernel + Related Id(s): PR-5656 + + An API for multihomed SCTP connect has been added in + the guise of gen_sctp:connectx_init/* + + + OTP-17968 Application(s): erts, kernel + Related Id(s): OTP-16464 + + [socket] Add encoding of the field hatype of the type + sockaddr_ll (family 'packet'). + + + OTP-17985 Application(s): erts + Related Id(s): GH-5728 + + A cross compilation issue has been fixed about finding + libdlpi during the configure phase. + + + OTP-17999 Application(s): erts + Related Id(s): PR-5768 + + process_info/2 now also accepts parent as argument. + When passed, the process identifier of the parent + process will be returned. + + + OTP-18006 Application(s): erts + Related Id(s): PR-5932 + + Add function attributes to erl_nif and erl_driver APis + to improve compiler detection of interface misuse. + + + OTP-18033 Application(s): erts + Related Id(s): GH-5376, PR-2926 + + The exported type erlang:send_destination/0 has been + introduced. + + + OTP-18036 Application(s): erts + Related Id(s): PR-5846 + + Building of the C/C++ make dependencies on Windows has + been optimized to be a lot faster. + + + OTP-18038 Application(s): erts + + file:sync/1 will now use the F_BARRIERFSYNC flag when + available on Mac OS. + + + Full runtime dependencies of erts-13.0: kernel-8.3, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- eunit-2.7.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17884 Application(s): eunit + Related Id(s): GH-5617 + + Minor internal improvements. + + + Full runtime dependencies of eunit-2.7.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- inets-8.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17627 Application(s): inets, stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17889 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed typo in Reason term returned from + httpc_handler:handle_http_body. + + After this change, could_not_establish_ssl_tunnel atom + is returned within Reason term. + + + OTP-18063 Application(s): inets + Related Id(s): ERIERL-798 + + With this change, inet6fb4 option is documented for + inets/httpc. Option can be used when IP family needs to + be discovered by a connection attempt. + + + --- Improvements and New Features --- + + OTP-17866 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + This change removes deprecated functions: + http_uri:parse/1, http_uri:parse/2 and + http_uri:scheme_defaults/0. + + This change delays until OTP-26 removal of deprecated + functions: http_uri:encode/1 and http_uri:decode/1. + + This change marks httpd_util:decode_hex/1 and + httpd_util:encode_hex/1 as deprecated. + + + OTP-17997 Application(s): inets + Related Id(s): GH-5782 + + After this change, connect_timeout value is re-used + when upgrading TCP connection to TLS over a proxy. + + + OTP-18088 Application(s): inets + Related Id(s): GH-5276 + + Remove reference to unsupported Apache-like config file + from httpd manual. + + + Full runtime dependencies of inets-8.0: erts-6.0, kernel-6.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-9.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- jinterface-1.13 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17961 Application(s): jinterface + Related Id(s): PR-4839 + + Add new abstract class OtpGenericTransportFactory to + allow implementation of any transport protocol without + dependency on epmd. + + + --------------------------------------------------------------------- + --- kernel-8.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17323 Application(s): kernel + + The DNS resolver implementation has been rewritten to + validate replies more thoroughly, and a bit optimized + to create less garbage. + + + OTP-17447 Application(s): erts, kernel + Related Id(s): GH-4819 + + The socket option 'reuseaddr' is *no longer* ignored on + Windows. + + + OTP-17551 Application(s): kernel + Related Id(s): GH-5071, PR-5075 + + Fix bug where using the atoms string or report as the + format when calling logger:log(Level, Format, Args) (or + any other logging function) would cause a crash or + incorrect logging. + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17958 Application(s): kernel + Related Id(s): OTP-17978 + + Starting the helper program for name resolving; + inet_gethost, has been improved to use an absolute file + system path to ensure that the right program is + started. + + If the helper program can not be started - the system + now halts, to avoid running with a silently broken name + resolver. + + + OTP-17986 Application(s): kernel + Related Id(s): PR-5412, PR-5803 + + The type specification for inet_res:getbyname/2,3 has + been corrected to reflect that it can return peculiar + #hostent{} records. + + + OTP-17990 Application(s): kernel + Related Id(s): GH-5801 + + code:module_status/1 would always report BEAM files + loaded from an archive as modified, and + code:modified_modules/0 would always return the name of + all modules loaded from archives. + + + OTP-18001 Application(s): kernel + Related Id(s): GH-5780, PR-5829 + + In logger fix file handler shutdown delay by using + erlang timers instead of the timer module's timers. + + + OTP-18003 Application(s): kernel + Related Id(s): PR-5771 + + Fix the meta data in log events generated by logger on + failure to not contain the original log event's meta + data. + + + OTP-18015 Application(s): kernel + Related Id(s): GH-5828, PR-5845 + + Fix logger file backend to re-create the log folder if + it has been deleted. + + + OTP-18020 Application(s): erts, kernel + + [socket] Encode of sockaddr has been improved. + + + OTP-18070 Application(s): kernel + Related Id(s): PR-5885 + + Fix put_chars requests to the io server with incomplete + unicode data to exit with no_translation error. + + + --- Improvements and New Features --- + + OTP-16464 Application(s): erts, kernel + + The net module now works on Windows. + + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17479 Application(s): kernel + Related Id(s): PR-4917 + + Fix os:cmd to work on Android OS. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17558 Application(s): erts, kernel + Related Id(s): GH-5402, OTP-17538, PR-5111 + + Dynamic node name improvements: erlang:is_alive/0 + changed to return true for pending dynamic node name + and new function net_kernel:get_state/0. + + + OTP-17589 Application(s): kernel + Related Id(s): PR-4926 + + The types for callback result types in gen_statem has + bee augmented with arity 2 types where it is possible + for a callback module to specify the type of the + callback data, so the callback module can get type + validation of it. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17617 Application(s): kernel + Related Id(s): PR-5069 + + A net_ticker_spawn_options kernel configuration + parameter with which one can set spawn options for the + distribution channel ticker processes has been + introduced. + + + OTP-17681 Application(s): kernel + Related Id(s): PR-5307 + + *** POTENTIAL INCOMPATIBILITY *** + + The most, or at least the most used, rpc operations now + require erpc support in order to communicate with other + Erlang nodes. erpc was introduced in OTP 23. That is, + rpc operations against Erlang nodes of releases prior + to OTP 23 will fail. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + *** HIGHLIGHT *** + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17915 Application(s): kernel, stdlib + Related Id(s): GH-2375, GH-2690, PR-5751 + + Type specifications have been added to the gen_server, + and the documentation has been updated to utilize this. + + This surfaced a few type violations that has been + corrected in global, logger_olp and rpc. + + + OTP-17923 Application(s): kernel + Related Id(s): PR-5646 + + IP address validation functions is_ipv4_address/1, + is_ipv6_address/1 and is_ip_address/1 have been added + to the module inet in Kernel. + + + OTP-17951 Application(s): erts, kernel + Related Id(s): PR-5656 + + An API for multihomed SCTP connect has been added in + the guise of gen_sctp:connectx_init/* + + + OTP-17968 Application(s): erts, kernel + Related Id(s): OTP-16464 + + [socket] Add encoding of the field hatype of the type + sockaddr_ll (family 'packet'). + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of kernel-8.4: crypto-5.0, erts-13.0, + sasl-3.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- megaco-4.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17910 Application(s): megaco + + Megaco test suite(s) use the new peer module for node + starts. + + + Full runtime dependencies of megaco-4.4: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.21 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17930 Application(s): mnesia + + Documentation fixes. + + + Full runtime dependencies of mnesia-4.21: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- observer-2.12 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17996 Application(s): observer + Related Id(s): PR-5795 + + Fixed default handling of Mac specific menus. + + + OTP-18012 Application(s): observer, runtime_tools + Related Id(s): #5798 + + Reading port socket options on macOS and Windows + "skips" invalid options. + + + --- Improvements and New Features --- + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + Full runtime dependencies of observer-2.12: erts-11.0, et-1.5, + kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-1.2 + + + --------------------------------------------------------------------- + --- odbc-2.14 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + Full runtime dependencies of odbc-2.14: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- parsetools-2.4 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17755 Application(s): parsetools + + In the generated code, yecc will now quote all atoms + coming from terminals in the grammar, in order to avoid + conflicts with future reserved words. + + + Full runtime dependencies of parsetools-2.4: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17798 Application(s): public_key + Related Id(s): GH-5760 + + *** HIGHLIGHT *** + + Added functions to retrieve OS provided CA-certs. + + + OTP-17890 Application(s): public_key, ssl + + Allow key file passwords to be input as a single + binary, that is we change the data type to be the more + for the purpose logical data type iodata() instead of + string(). + + + OTP-17921 Application(s): public_key + + *** POTENTIAL INCOMPATIBILITY *** + + The deprecated public_key functions ssh_decode/2, + ssh_encode/2, ssh_hostkey_fingerprint/1 and + ssh_hostkey_fingerprint/2 are removed. + + They are replaced by ssh_file:decode/2, + ssh_file:encode/2, ssh:hostkey_fingerprint/1 and + ssh:hostkey_fingerprint/2 respectively. + + Note that the decode/2 and encode/2 are not exact + replacement functions, some minor changes may be + needed. Se the manual for more information. + + + Full runtime dependencies of public_key-1.13: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- runtime_tools-1.19 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18012 Application(s): observer, runtime_tools + Related Id(s): #5798 + + Reading port socket options on macOS and Windows + "skips" invalid options. + + + --- Improvements and New Features --- + + OTP-17909 Application(s): runtime_tools + Related Id(s): ERIERL-760 + + dbg:stop/0 now behaves like dbg:stop_clear/0, clearing + all global trace patterns for all functions. + + + OTP-17939 Application(s): runtime_tools + + erts_alloc_config has been scheduled for removal in OTP + 26. It has not produced good configurations for a very + long time, and unfortunately it cannot be fixed in a + backwards compatible manner. + + + Full runtime dependencies of runtime_tools-1.19: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17752 Application(s): sasl + Related Id(s): PR-5302 + + Fix systools:make* to recursively search for source + code when doing a src_tests. + + + --- Improvements and New Features --- + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + Full runtime dependencies of sasl-4.2: erts-10.2, kernel-6.0, + stdlib-3.4, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.13 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17612 Application(s): snmp + + Removed deprecated functions slated for removal in + OTP-25. Also removed "dead" code, kept for backward + compatibility reasons. + + + Full runtime dependencies of snmp-5.13: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.14 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17920 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + The representation of Edward curves (ed25519 and ed448) + inside ssh had a temporary representation (ed_pri and + ed_pub). + + That is now changed to the public_key form. See the + manual for more information. + + + OTP-18079 Application(s): ssh + Related Id(s): GH-5767 + + Former internal function ssh_file:extract_public_key/1 + documented publicly. + + Internally it was previously in ssh_transport. + + + Full runtime dependencies of ssh-4.14: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18087 Application(s): ssl + Related Id(s): GH-5961 + + When a TLS-1.3 enabled client tried to talk to a + TLS-1.2 server that coalesces TLS-1.2 handshake message + over one TLS record, the connection could fail due to + some message being handled in the wrong state, this has + been fixed. + + + OTP-18092 Application(s): ssl + Related Id(s): PR-5959 + + Fixed tls-1.3 session ticket lifetime which was + discarded to quickly before. + + + --- Improvements and New Features --- + + OTP-15993 Application(s): ssl + Related Id(s): GH-4143 + + *** HIGHLIGHT *** + + With this change, it is possible to provide several + certificates. Most appropriate will be selected based + on negotiated properties. + + + OTP-17855 Application(s): ssl + Related Id(s): PR-5328 + + Add options for users to be able to set spawn_opts for + TLS processes (sender and receiver) this may be useful + for tuning trade-offs between CPU and Memory usage. + + + OTP-17890 Application(s): public_key, ssl + + Allow key file passwords to be input as a single + binary, that is we change the data type to be the more + for the purpose logical data type iodata() instead of + string(). + + + OTP-18000 Application(s): ssl + Related Id(s): PR-5790 + + Logging enhancement, add location information to the + warning log message. + + + OTP-18014 Application(s): ssl + + Now also accepts the signature_algs_cert option in + TLS-1.2 configuration. + + + OTP-18045 Application(s): ssl + Related Id(s): ERIERL-792, OTP-15993 + + Handle certificate selection correctly for server + fallback and certificate authorities considerations. + + + OTP-18085 Application(s): ssl + + Enhance handling of handshake decoding errors, + especially for certificate authorities extension to + ensure graceful termination. + + + Full runtime dependencies of ssl-10.8: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --- stdlib-4.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17370 Application(s): stdlib + Related Id(s): GH-4784 + + Improve the Erlang code linter's check of unused types. + + + OTP-17480 Application(s): stdlib + Related Id(s): GH-4853, PR-4872 + + Fix race condition in proc_lib:stop/3 where the process + is not stopped when the timeout given is very short. + + + OTP-17518 Application(s): stdlib + Related Id(s): GH-4915 + + Maps are now fully supported in by ms_transform. + + + OTP-17544 Application(s): stdlib + Related Id(s): PR-5008 + + *** POTENTIAL INCOMPATIBILITY *** + + Fix gen_server:call with the first argument as self() + to throw an error instead of failing with a timeout. + + The same fix has also been done for gen_statem:call/3, + gen_event:sync_notify/2 and any other functionality + relying on the internal gen:call/3 function. + + A similar fix was also done when using io:format/2 and + the current group_leader was set to the current + process. + + + OTP-17566 Application(s): stdlib + Related Id(s): GH-5093, PR-5095 + + erl_pp printed unary - and + operators with a space + between the operator and the operand. This is fixed by + not having any space in between. + + + OTP-17627 Application(s): inets, stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17661 Application(s): erts, stdlib + Related Id(s): PR-5165 + + Fix reduction counting bug in re:run that caused the + function to yield too frequently when doing global + matches. + + + OTP-17832 Application(s): erts, stdlib + Related Id(s): PR-5494 + + Fix the memory value returned from ets:info(Tid,memory) + when the read_concurrency option is used. + + Before this fix the memory used by the scheduler + specific lock cache lines was not counted towards the + total. This caused the returned memory usage to be very + incorrect on systems with many schedulers for tables + with man locks. + + + OTP-17878 Application(s): stdlib + + Avoid confusion by correcting the argument order in the + gen_event crash log printout. + + + OTP-18009 Application(s): stdlib + Related Id(s): PR-5785 + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed string:next_grapheme/1 to return an empty binary + in the tail for binary input for the last grapheme + cluster. + + + OTP-18034 Application(s): stdlib + Related Id(s): GH-4622, PR-4661 + + Fixed type specifications of the supervisor:sup_name/0 + and supervisor:sup_ref/0 types. + + + OTP-18083 Application(s): compiler, stdlib + + If a default record field initialization (_ = Expr) was + used even though all records fields were explicitly + initialized, Expr would not be evaluated. That would + not be a problem, except when Expr would bind a + variable subsequently used, in which case the compiler + would crash. + + As an example, if record #r{} is defined to have only + one field a, the following code would crash the + compiler: + + #r{a=[],_=V=42}, V + + To fix that problem, the compiler will make sure that + Expr is always evaluated at least once. The compiler + will now rewrite the example to essentially: + + V=42, #r{a=[]}, V + + + --- Improvements and New Features --- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + *** HIGHLIGHT *** + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-17351 Application(s): stdlib + Related Id(s): GH-4673, PR-4952 + + *** HIGHLIGHT *** + + The format_status/2 callback for gen_server, gen_statem + and gen_event has been deprecated in favor of the new + format_status/1 callback. + + The new callback adds the possibility to limit and + change many more things than the just the state, such + as the last received message, the reason for + terminating and more events specific to each type of + behavior. See the respective modules documentation for + more details. + + + OTP-17481 Application(s): stdlib + Related Id(s): PR-4811 + + *** HIGHLIGHT *** + + The timer module has been modernized and made more + efficient, which makes the timer server less + susceptible to being overloaded. The timer:sleep/1 + function now accepts an arbitrarily large integer. + + + OTP-17523 Application(s): stdlib + Related Id(s): PR-4928 + + Add lists:enumerate/[1,2]. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17592 Application(s): stdlib + Related Id(s): ERIERL-663, PR-5243 + + Support native time unit in calendar functions + system_time_to_rfc3339/2 and rfc3339_to_system_time. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17630 Application(s): erts, stdlib + + The signal queue benchmark in parallel_messages_SUITE + and the ETS benchmark in ets_SUITE have benchmark + result visualization HTML pages with "fill-screen" + buttons to make the graphs bigger. This button did not + work as intended before. When pressing the button for a + graph, the last graph got replaced with a bigger + version and not the one over the button. This is now + fixed. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17778 Application(s): stdlib + Related Id(s): GH-5368 + + This change introduces quote and unquote functions in + uri_string module - a replacement for deprecated encode + and decode functions from http_uri. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + *** HIGHLIGHT *** + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17869 Application(s): stdlib + Related Id(s): PR-5595 + + Update to the Unicode 14.0 specification. + + + OTP-17901 Application(s): stdlib + Related Id(s): GH-4968, PR-5649 + + The following ets types have been renamed to a clearer + name: tab/0 to table/0 and comp_match_spec/0 to + compiled_match_spec/0. + + The types table_access/0 and table_type/0 have been + exported. + + + OTP-17908 Application(s): stdlib + Related Id(s): GH-5655, PR-5669 + + Add support for locating .asn1 files to the default + search rules of filelib:find_file/1 and + filelib:find_source/1. + + + OTP-17915 Application(s): kernel, stdlib + Related Id(s): GH-2375, GH-2690, PR-5751 + + Type specifications have been added to the gen_server, + and the documentation has been updated to utilize this. + + This surfaced a few type violations that has been + corrected in global, logger_olp and rpc. + + + OTP-17925 Application(s): stdlib + Related Id(s): PR-5631 + + *** POTENTIAL INCOMPATIBILITY *** + + The non-local function handler for the erl_eval can now + be called with either two or three arguments. When + called with three arguments, the first argument is the + annotation for the node in the abstract format. + + All errors during evaluation will now be passed through + erlang:raise/3. If the restricted shell is active and + it does not let erlang:raise/3 through, evaluation + errors will be printed in less clear way. See the + documentation for restricted shell in shell. + + + OTP-17953 Application(s): stdlib + Related Id(s): PR-5621 + + *** HIGHLIGHT *** + + Added filelib:ensure_path/1 that ensures that all + directories for the given path exists (unlike + filelib:ensure_dir/1, which will not create the last + segment of the path). + + + OTP-17969 Application(s): stdlib + Related Id(s): PR-5588 + + *** HIGHLIGHT *** + + The functions groups_from_list/2 and groups_from_list/3 + have been added to the maps module. + + + OTP-17974 Application(s): stdlib + Related Id(s): GH-5683 + + gen_server has been refactored to throw more readable + exceptions when a callback returns bad values in the + Timeout field (timeout() | 'hibernate' | + {'continue,_}), and also to verify that argument in the + gen_server:enter_loop/3,4,5 API function. + + + OTP-17977 Application(s): stdlib + Related Id(s): GH-5606, PR-5766 + + *** HIGHLIGHT *** + + The functions uniq/1 and uniq/2 for removing duplicates + have been added to the lists module. + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + OTP-17991 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + The function filename:safe_relative_path/1, which has + been deprecated since OTP 25, has been removed. Use + filelib:safe_relative_path/2 instead. + + + OTP-18011 Application(s): stdlib + + *** HIGHLIGHT *** + + A new PRNG have been added to the rand module: mwc59 + which has been developed in collaboration with + Sebastiano Vigna. It is intended for applications that + need really fast pseudo-random numbers, and it comes + with two output value scramblers, one fast and one + thorough. + + Two internal functions for the exsp generator have also + been exported so they can be used outside the rand + plug-in framework to shave off some overhead. + + The internal splitmix64 generator has also been + exported which can be useful for seeding other kinds of + PRNG:s than its own. + + + Full runtime dependencies of stdlib-4.0: compiler-5.0, crypto-4.5, + erts-12.0, kernel-8.4, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.0 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17894 Application(s): syntax_tools + Related Id(s): PR-5509 + + *** POTENTIAL INCOMPATIBILITY *** + + The erl_syntax_lib:analyze_attribute/1 function would + return {Name, {Name, Value}} instead of {Name, Value} + (which is the documented return value). + + + --- Improvements and New Features --- + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of syntax_tools-3.0: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tools-3.5.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17892 Application(s): erts, tools + Related Id(s): PR-5591 + + Removed the previously undocumented and unsupported + emem tool. + + + Full runtime dependencies of tools-3.5.3: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.2 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17950 Application(s): wx + + *** POTENTIAL INCOMPATIBILITY *** + + Added aux1Down and aux2Down fields to the wxMouseState + record. Since one record have been changed a + recompilation of user code might be required. + + + OTP-18008 Application(s): wx + Related Id(s): PR-5816 + + Add mac specific menubar functions. + + + Full runtime dependencies of wx-2.2: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --- xmerl-1.3.29 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17935 Application(s): xmerl + Related Id(s): PR-5590 + + Fixed misspellings in both documentation, comments and + code (internal data structures). + + + Full runtime dependencies of xmerl-1.3.29: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.1.1.README.txt b/release-notes/OTP-25.1.1.README.txt new file mode 100644 index 0000000..9de8e77 --- /dev/null +++ b/release-notes/OTP-25.1.1.README.txt @@ -0,0 +1,222 @@ +Patch Package: OTP 25.1.1 +Git Tag: OTP-25.1.1 +Date: 2022-10-03 +Trouble Report Id: OTP-18240, OTP-18245, OTP-18249, OTP-18258, + OTP-18262, OTP-18263, OTP-18264, OTP-18266 +Seq num: ERIERL-821, ERIERL-859, GH-6309, GH-6320, + GH-6323, GH-6328 +System: OTP +Release: 25 +Application: asn1-5.0.21, dialyzer-5.0.3, erts-13.1.1, + eunit-2.8.1, kernel-8.5.1, ssl-10.8.5, + stdlib-4.1.1 +Predecessor: OTP 25.1 + + Check out the git tag OTP-25.1.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- asn1-5.0.21 ----------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.0.21 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18245 Application(s): asn1 + Related Id(s): ERIERL-859 + + For the per and uper ASN.1 encoding rules, encoding and + decoding the SEQUENCE OF and SET OF constructs with + 16384 items or more is now supported. + + + Full runtime dependencies of asn1-5.0.21: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- dialyzer-5.0.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.0.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18262 Application(s): dialyzer + Related Id(s): GH-6323 + + Dialyzer could crash when analyzing Elixir code that + used intricate macros. + + + --- Improvements and New Features --- + + OTP-18263 Application(s): dialyzer + Related Id(s): ERIERL-821 + + The --input_list_file option has been added. + + + Full runtime dependencies of dialyzer-5.0.3: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-13.1.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18240 Application(s): erts, kernel + Related Id(s): #6285 + + Listen sockets created with the socket module, leaked + (erlang-) monitors. + + + OTP-18258 Application(s): erts + Related Id(s): GH-6309, PR-6324 + + Notifications about available distribution data sent to + distribution controller processes could be lost. + Distribution controller processes can be used when + implementing an alternative distribution carrier. The + default distribution over tcp was not effected and the + bug was also not present on x86/x86_64 platforms. + + + Full runtime dependencies of erts-13.1.1: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- eunit-2.8.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The eunit-2.8.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18264 Application(s): eunit + Related Id(s): GH-6320, PR-6322 + + With this change, eunit exact_execution option works + with application primitive. + + + Full runtime dependencies of eunit-2.8.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- kernel-8.5.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18240 Application(s): erts, kernel + Related Id(s): #6285 + + Listen sockets created with the socket module, leaked + (erlang-) monitors. + + + OTP-18249 Application(s): kernel, stdlib + Related Id(s): PR-6301 + + peer nodes failed to halt when the process supervising + the control connection crashed. When an alternative + control connection was used, this supervision process + also quite frequently crashed when the peer node was + stopped by the node that started it which caused the + peer node to linger without ever halting. + + + Full runtime dependencies of kernel-8.5.1: crypto-5.0, erts-13.1, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- ssl-10.8.5 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The ssl-10.8.5 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18266 Application(s): ssl + Related Id(s): GH-6328 + + Fixes handling of symlinks in cacertfile option. + + + Full runtime dependencies of ssl-10.8.5: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.1.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.1.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18249 Application(s): kernel, stdlib + Related Id(s): PR-6301 + + peer nodes failed to halt when the process supervising + the control connection crashed. When an alternative + control connection was used, this supervision process + also quite frequently crashed when the peer node was + stopped by the node that started it which caused the + peer node to linger without ever halting. + + + Full runtime dependencies of stdlib-4.1.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.1.2.1.README.txt b/release-notes/OTP-25.1.2.1.README.txt new file mode 100644 index 0000000..72697b0 --- /dev/null +++ b/release-notes/OTP-25.1.2.1.README.txt @@ -0,0 +1,74 @@ +Patch Package: OTP 25.1.2.1 +Git Tag: OTP-25.1.2.1 +Date: 2023-01-18 +Trouble Report Id: OTP-18379, OTP-18383, OTP-18388 +Seq num: ERIERL-904, ERIERL-905 +System: OTP +Release: 25 +Application: erts-13.1.2.1, snmp-5.13.1.1 +Predecessor: OTP 25.1.2 + + Check out the git tag OTP-25.1.2.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.1.2.1 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.2.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18383 Application(s): erts + Related Id(s): ERIERL-905 + + Fixed a bug in selective receive optimization that + could crash 32-bit emulators. + + + OTP-18388 Application(s): erts + Related Id(s): OTP-17462, PR-6662 + + A race condition which was very rarely triggered could + cause the signal queue of a process to become + inconsistent causing the runtime system to crash. + + + Full runtime dependencies of erts-13.1.2.1: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- snmp-5.13.1.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.1.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18379 Application(s): snmp + Related Id(s): ERIERL-904 + + Single threaded agent crash when vacm table not + properly initiated. + + + Full runtime dependencies of snmp-5.13.1.1: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.1.2.README.txt b/release-notes/OTP-25.1.2.README.txt new file mode 100644 index 0000000..516ea57 --- /dev/null +++ b/release-notes/OTP-25.1.2.README.txt @@ -0,0 +1,72 @@ +Patch Package: OTP 25.1.2 +Git Tag: OTP-25.1.2 +Date: 2022-10-24 +Trouble Report Id: OTP-18288, OTP-18290 +Seq num: ERIERL-866, ERIERL-868 +System: OTP +Release: 25 +Application: erts-13.1.2, mnesia-4.21.2 +Predecessor: OTP 25.1.1 + + Check out the git tag OTP-25.1.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.1.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18290 Application(s): erts + Related Id(s): ERIERL-866, PR-6378 + + Add abandon carrier free utilization limit (+Muacful) + option to erts_alloc. This option allows the user to + mark unused segments in a memory carrier as re-useable + by the OS if needed. + + This functionality was a non-configurable default + before Erlang/OTP 25, but removed due to performance + issues. + + + Full runtime dependencies of erts-13.1.2: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- mnesia-4.21.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18288 Application(s): mnesia + Related Id(s): ERIERL-868 + + Don't fill the logs if mnesia can't connect to all + nodes, due to partitioned network. + + + Full runtime dependencies of mnesia-4.21.2: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.1.README.txt b/release-notes/OTP-25.1.README.txt new file mode 100644 index 0000000..efa5649 --- /dev/null +++ b/release-notes/OTP-25.1.README.txt @@ -0,0 +1,1364 @@ +Patch Package: OTP 25.1 +Git Tag: OTP-25.1 +Date: 2022-09-21 +Trouble Report Id: OTP-17115, OTP-17340, OTP-17934, OTP-18032, + OTP-18037, OTP-18044, OTP-18050, OTP-18091, + OTP-18093, OTP-18099, OTP-18102, OTP-18104, + OTP-18107, OTP-18109, OTP-18115, OTP-18118, + OTP-18121, OTP-18125, OTP-18127, OTP-18133, + OTP-18134, OTP-18138, OTP-18139, OTP-18142, + OTP-18144, OTP-18146, OTP-18147, OTP-18148, + OTP-18151, OTP-18152, OTP-18153, OTP-18154, + OTP-18160, OTP-18161, OTP-18162, OTP-18163, + OTP-18165, OTP-18166, OTP-18171, OTP-18172, + OTP-18178, OTP-18179, OTP-18180, OTP-18181, + OTP-18182, OTP-18183, OTP-18184, OTP-18186, + OTP-18187, OTP-18189, OTP-18191, OTP-18193, + OTP-18194, OTP-18195, OTP-18196, OTP-18199, + OTP-18200, OTP-18201, OTP-18202, OTP-18203, + OTP-18205, OTP-18207, OTP-18208, OTP-18214, + OTP-18215, OTP-18216, OTP-18217, OTP-18218, + OTP-18219, OTP-18220, OTP-18222, OTP-18229, + OTP-18232, OTP-18233, OTP-18234, OTP-18239, + OTP-18241, OTP-18243, OTP-18244 +Seq num: ERIERL-456, ERIERL-661, ERIERL-666, + ERIERL-817, ERIERL-826, ERIERL-829, + ERIERL-833, ERIERL-834, ERIERL-835, + ERIERL-836, ERIERL-837, ERIERL-852, + ERIERL-855, ERL-97, GH-3064, GH-5719, + GH-5981, GH-6021, GH-6024, GH-6026, GH-6105, + GH-6122, GH-6158, GH-6163, GH-6164, GH-6169, + GH-6184, GH-6219, GH-6222, GH-6239, GH-6241, + GH-6242, GH-6244, GH-6247, GH-6277 +System: OTP +Release: 25 +Application: asn1-5.0.20, common_test-1.23.1, + compiler-8.2.1, crypto-5.1.2, dialyzer-5.0.2, + diameter-2.2.7, erl_docgen-1.4, erts-13.1, + eunit-2.8, inets-8.1, jinterface-1.13.1, + kernel-8.5, megaco-4.4.1, observer-2.13, + parsetools-2.4.1, public_key-1.13.1, + snmp-5.13.1, ssh-4.15, ssl-10.8.4, + stdlib-4.1, xmerl-1.3.30 +Predecessor: OTP 25.0.4 + + Check out the git tag OTP-25.1, and build a full OTP system including + documentation. Apply one or more applications from this build as + patches to your installation using the 'otp_patch_apply' tool. For + information on install requirements, see descriptions for each + application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-18153 Application(s): crypto + + Crypto is now considered to be usable with the OpenSSL + 3.0 cryptolib for production code. + + ENGINE and FIPS are not yet fully functional. + + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions are removed from the documentation and + therefor the API, but they are left in the code for + compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + OTP-18241 Application(s): ssl + + A vulnerability has been discovered and corrected. It + is registered as CVE-2022-37026 "Client Authentication + Bypass". Corrections have been released on the + supported tracks with patches 23.3.4.15, 24.3.4.2, and + 25.0.2. The vulnerability might also exist in older OTP + versions. We recommend that impacted users upgrade to + one of these versions or later on the respective + tracks. OTP 25.1 would be an even better choice. + Impacted are those who are running an ssl/tls/dtls + server using the ssl application either directly or + indirectly via other applications. For example via + inets (httpd), cowboy, etc. Note that the vulnerability + only affects servers that request client certification, + that is sets the option {verify, verify_peer}. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions are removed from the documentation and + therefor the API, but they are left in the code for + compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + OTP-18239 Application(s): stdlib + + When changing callback module in gen_statem the + state_enter calls flag from the old module was used in + for the first event in the new module, which could + confuse the new module and cause malfunction. This bug + has been corrected. + + With this change some sys debug message formats have + been modified, which can be a problem for debug code + relying on the format. + + + --------------------------------------------------------------------- + --- OTP-25.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + --------------------------------------------------------------------- + --- asn1-5.0.20 ----------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.0.20 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of asn1-5.0.20: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.23.1 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.23.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18208 Application(s): common_test + Related Id(s): ERIERL-852, PR-6229 + + Fix cth_surefire to handle when a suite is not compiled + with debug_info. This bug has been present since + Erlang/OTP 25.0. + + + --- Improvements and New Features --- + + OTP-18138 Application(s): common_test + Related Id(s): GH-5719, PR-6029 + + Common Test now preserves stack traces for throws. + + + Full runtime dependencies of common_test-1.23.1: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18125 Application(s): compiler + Related Id(s): GH-6026 + + The compiler will now forbid using the empty atom '' as + module name. Also forbidden are modules names + containing control characters, and module names + containing only spaces and soft hyphens. + + + OTP-18162 Application(s): compiler + Related Id(s): PR-6102 + + The bin_opt_info and recv_opt_info options would cause + the compiler to crash when attempting to compile + generated code without location information. + + + OTP-18182 Application(s): compiler + Related Id(s): GH-6163 + + In rare circumstances involving floating point + operations, the compiler could terminate with an + internal consistency check failure. + + + OTP-18183 Application(s): compiler + Related Id(s): GH-6169 + + In rare circumstances when doing arithmetic + instructions on non-numbers, the compiler could crash. + + + OTP-18184 Application(s): compiler + Related Id(s): GH-6164 + + In rare circumstances, complex boolean expressions in + nested cases could cause the compiler to crash. + + + OTP-18186 Application(s): compiler + + Expression similar to #{assoc:=V} = #key=>self()}, V + would return the empty map instead of raising an + exception. + + + OTP-18187 Application(s): compiler + Related Id(s): GH-6184 + + Eliminated a crash in the beam_ssa_bool pass of the + compiler when compiling a complex guard expression. + + + OTP-18202 Application(s): compiler + Related Id(s): GH-6222 + + In rare circumstances, the compiler could crash with an + internal consistency check failure. + + + OTP-18214 Application(s): compiler + Related Id(s): GH-6158 + + When compiling with the option inline_list_funcs, the + compiler could produce a nonsensical warning. + + + OTP-18234 Application(s): compiler + Related Id(s): GH-6277 + + When given the no_ssa_opt option, the compiler could + terminate with an internal consistency failure + diagnostic when compiling map matching. + + + --- Improvements and New Features --- + + OTP-18050 Application(s): compiler + + Made warnings for existing atoms being keywords in + experimental features more precise, by not warning + about quoted atoms. + + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of compiler-8.2.1: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18147 Application(s): crypto + Related Id(s): GH-6024, PR-6056 + + Fix configure with --with-ssl and + --disable-dynamic-ssl-lib on Windows. + + + OTP-18152 Application(s): crypto + + Remove all references correctly in the garbage + collection if an engine handle was not explicit + unloaded. + + + OTP-18172 Application(s): crypto + Related Id(s): ERIERL-826 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Changed the behaviour of the engine load/unload + functions + + The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work + correct when variables are garbage collected. + + The load functions now don't register the methods for + the engine to replace. That will now be handled with + the new functions engine_register/engine_unregister if + needed. + + Some functions are removed from the documentation and + therefor the API, but they are left in the code for + compatibility. + + -- engine_load/4: is now the same as engine_load/3 + + -- engine_unload/2: is now the same as engine_unload/1 + + -- ensure_engine_loaded/3: is now the same as + ensure_engine_loaded/2 + + -- ensure_engine_unloaded/1, ensure_engine_unloaded/2: + is now the same as engine_unload/1 + + + OTP-18200 Application(s): crypto + + Fixed a naming bug for AES-CFB and Blowfish-CFB/OFB + when linked with OpenSSL 3.0 cryptolib. + + + OTP-18205 Application(s): crypto, public_key + Related Id(s): GH-6219 + + Sign/verify does now behave as in OTP-24 and earlier + for eddsa. + + + --- Improvements and New Features --- + + OTP-18037 Application(s): crypto + + Pass elliptic curve names from crypto.erl to crypto's + nif. + + + OTP-18133 Application(s): crypto + + The configure option --disable-deprecated-warnings is + removed. It was used for some releases when the support + for OpenSSL 3.0 was not completed. It is not needed in + OTP 25. + + + OTP-18153 Application(s): crypto + + *** HIGHLIGHT *** + + Crypto is now considered to be usable with the OpenSSL + 3.0 cryptolib for production code. + + ENGINE and FIPS are not yet fully functional. + + + OTP-18217 Application(s): crypto + + Do not exit if the legacy provider is missing in + libcrypto 3.0. + + + Full runtime dependencies of crypto-5.1.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.0.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.0.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18127 Application(s): dialyzer + Related Id(s): ERIERL-817 + + Two bugs have been fixed in Dialyzer's checking of + behaviors: + + When a *mandatory* callback function is present but not + exported, Dialyzer would not complain about a missing + callback. + + When an *optional* callback function was not exported + and had incompatible arguments and/or the return values + were incompatible, Dialyzer would complain. This has + been changed to suppress the warning, because the + function might not be intended to be a callback + function, for instance if a release added a new + optional callback function (such as format_status/1 for + the gen_server behaviour added in OTP 25). + + + OTP-18148 Application(s): dialyzer + Related Id(s): PR-6068 + + The no_extra_return and no_missing_return warnings can + now be suppressed through -dialyzer directives in + source code. + + + Full runtime dependencies of dialyzer-5.0.2: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.2.7 -------------------------------------------------- + --------------------------------------------------------------------- + + The diameter-2.2.7 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of diameter-2.2.7: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The erl_docgen-1.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18244 Application(s): erl_docgen + + Update DTD to allow XML tag em under pre. + + + Full runtime dependencies of erl_docgen-1.4: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erts-13.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-17934 Application(s): erts, kernel, stdlib + Related Id(s): PR-6007 + + Fixed inconsistency bugs in global due to + nodeup/nodedown messages not being delivered + before/after traffic over connections. Also fixed + various other inconsistency bugs and deadlocks in both + global_group and global. + + As building blocks for these fixes, a new BIF + erlang:nodes/2 has been introduced and + net_kernel:monitor_nodes/2 has been extended. + + The -hidden and -connect_all command line arguments did + not work if multiple instances were present on the + command line which has been fixed. The new kernel + parameter connect_all has also been introduced in order + to replace the -connect_all command line argument. + + + OTP-18091 Application(s): erts, kernel + Related Id(s): #5789 + + Fixed IPv6 multicast_if and membership socket options. + + + OTP-18093 Application(s): erts + Related Id(s): OTP-18104, PR-5987 + + Accept funs (NEW_FUN_EXT) with incorrectly encoded size + field. This is a workaround for a bug (OTP-18104) + existing in OTP 23 and 24 that could cause incorrect + size fields in certain cases. The emulator does not use + the decoded size field, but erl_interface still does + and is not helped by this workaround. + + + OTP-18102 Application(s): erts, kernel + Related Id(s): #5904 + + Fixed issue with inet:getifaddrs hanging on pure IPv6 + Windows + + + OTP-18104 Application(s): erts + Related Id(s): OTP-18093 + + Fix faulty distribution encoding of terms with either + + -- a fun with bit-string or export-fun in its + environment when encoded toward a not yet established + (pending) connection + + -- or a fun with a binary/bitstring, in its + environment, referring to an off-heap binary (larger + than 64 bytes). + + The symptom could be failed decoding on the receiving + side leading to aborted connection. Fix OTP-18093 is a + workaround for theses bugs that makes the VM accepts + such faulty encoded funs. + + The first encoding bug toward pending connection exists + only in OTP 23 and 24, but the second one exists also + on OTP 25. + + + OTP-18144 Application(s): erts + Related Id(s): GH-5981 + + Fixed emulator crash that could happen during crashdump + generation of ETS tables with options ordered_set and + {write_concurrency,true}. + + + OTP-18160 Application(s): erts + Related Id(s): PR-6103 + + Retrieval of monotonic and system clock resolution on + MacOS could cause a crash and/or erroneous results. + + + OTP-18161 Application(s): erts + Related Id(s): PR-6081 + + Fix bug where the max allowed size of erl +hmax was + lower than what was allowed by process_flag. + + + OTP-18201 Application(s): erts + + On computers with ARM64 (AArch64) processors, the JIT + could generate incorrect code when more than 4095 bits + were skipped at the tail end of a binary match. + + + OTP-18216 Application(s): erts + Related Id(s): GH-6239, PR-6240 + + In rare circumstances, an is_binary/1 guard test could + succeed when given a large integer. + + + OTP-18218 Application(s): erts + Related Id(s): ERIERL-855 + + Fix bug causing ets:info (and sometimes ets:whereis) to + return 'undefined' for an existing table if a + concurrent process were doing ets:insert with a long + list on the same table. + + + OTP-18222 Application(s): erts + Related Id(s): GH-6242, PR-6248 + + Fix writing and reading of more than 2 GB in a single + read/write operation on macOS. Before this fix + attempting to read/write more than 2GB would result in + {error,einval}. + + + OTP-18243 Application(s): erts + Related Id(s): GH-6247, PR-6258 + + Fix bug sometimes causing emulator crash at node + shutdown when there are pending connections. Only seen + when running duel distribution protocols, inet_drv and + inet_tls_dist. + + + --- Improvements and New Features --- + + OTP-17340 Application(s): erts + Related Id(s): PR-6133 + + Yield when adjusting large process message queues due + to + + -- copying terms from a literal area prior to removing + the literal area. + + -- changing the message_queue_data state from on_heap + to off_heap. + + The message queue adjustment work will now be + interleaved with all other types of work that processes + have to do, even other message queue adjustment work. + + + OTP-18032 Application(s): erts, kernel + + Add rudimentary debug feature (option) for the + inet-driver based sockets, such as gen_tcp and gen_udp. + + + OTP-18107 Application(s): erts, kernel + Related Id(s): PR-6009 + + Introduced the hidden and dist_listen options to + net_kernel:start/2. + + Also documented the -dist_listen command line argument + which was erroneously documented as a kernel parameter + and not as a command line argument. + + + OTP-18109 Application(s): erts + + New documentation chapter "Debugging NIFs and Port + Drivers" under Interoperability Tutorial. + + + OTP-18199 Application(s): erts, stdlib + Related Id(s): PR-5790 + + Add new API function erl_features:configurable/0 + + + Full runtime dependencies of erts-13.1: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- eunit-2.8 ------------------------------------------------------- + --------------------------------------------------------------------- + + The eunit-2.8 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18181 Application(s): eunit + Related Id(s): ERL-97, GH-3064, PR-5461 + + With this change, Eunit can optionally not try to + execute related module with "_tests" suffix. This might + be used for avoiding duplicated executions when source + and test modules are located in the same folder. + + + Full runtime dependencies of eunit-2.8: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- inets-8.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18118 Application(s): inets + + Add httpc:ssl_verify_host_options/1 to help setting + default ssl options for the https client. + + + OTP-18178 Application(s): inets, ssh + Related Id(s): ERIERL-833, ERIERL-834, ERIERL-835 + + This change fixes dialyzer warnings generated for + inets/httpd examples (includes needed adjustment of + spec for ssh_sftp module). + + + OTP-18193 Application(s): inets + Related Id(s): GH-6122 + + Remove documentation of no longer supported callback. + + + Full runtime dependencies of inets-8.1: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- jinterface-1.13.1 ----------------------------------------------- + --------------------------------------------------------------------- + + The jinterface-1.13.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18215 Application(s): jinterface + Related Id(s): PR-6154 + + Fix javadoc build error by adding option -encoding + UTF-8. + + + --------------------------------------------------------------------- + --- kernel-8.5 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The kernel-8.5 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-17934 Application(s): erts, kernel, stdlib + Related Id(s): PR-6007 + + Fixed inconsistency bugs in global due to + nodeup/nodedown messages not being delivered + before/after traffic over connections. Also fixed + various other inconsistency bugs and deadlocks in both + global_group and global. + + As building blocks for these fixes, a new BIF + erlang:nodes/2 has been introduced and + net_kernel:monitor_nodes/2 has been extended. + + The -hidden and -connect_all command line arguments did + not work if multiple instances were present on the + command line which has been fixed. The new kernel + parameter connect_all has also been introduced in order + to replace the -connect_all command line argument. + + + OTP-18091 Application(s): erts, kernel + Related Id(s): #5789 + + Fixed IPv6 multicast_if and membership socket options. + + + OTP-18102 Application(s): erts, kernel + Related Id(s): #5904 + + Fixed issue with inet:getifaddrs hanging on pure IPv6 + Windows + + + OTP-18115 Application(s): kernel + Related Id(s): PR-5939 + + The type specifications for inet:getopts/2 and + inet:setopts/2 have been corrected regarding SCTP + options. + + + OTP-18121 Application(s): kernel + Related Id(s): PR-5972 + + The type specifications for inet:parse_* have been + tightened. + + + OTP-18171 Application(s): kernel + Related Id(s): PR-6131 + + Fix gen_tcp:connect/3 spec to include the inet_backend + option. + + + OTP-18229 Application(s): kernel + Related Id(s): PR-6212 + + Fix bug where using a binary as the format when calling + logger:log(Level, Format, Args) (or any other logging + function) would cause a crash or incorrect logging. + + + --- Improvements and New Features --- + + OTP-18032 Application(s): erts, kernel + + Add rudimentary debug feature (option) for the + inet-driver based sockets, such as gen_tcp and gen_udp. + + + OTP-18107 Application(s): erts, kernel + Related Id(s): PR-6009 + + Introduced the hidden and dist_listen options to + net_kernel:start/2. + + Also documented the -dist_listen command line argument + which was erroneously documented as a kernel parameter + and not as a command line argument. + + + OTP-18163 Application(s): kernel + Related Id(s): PR-6058, PR-6275 + + Scope and group monitoring have been introduced in pg. + For more information see the documentation of + pg:monitor_scope(), pg:monitor(), and pg:demonitor(). + + + OTP-18232 Application(s): kernel + Related Id(s): OTP-17843, PR-6264 + + A new function global:disconnect/0 has been introduced + with which one can cleanly disconnect a node from all + other nodes in a cluster of global nodes. + + + Full runtime dependencies of kernel-8.5: crypto-5.0, erts-13.1, + sasl-3.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- megaco-4.4.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The megaco-4.4.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18179 Application(s): megaco + Related Id(s): ERIERL-836 + + Fixed various dialyzer related issues in the examples + and the application proper. + + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of megaco-4.4.1: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- observer-2.13 --------------------------------------------------- + --------------------------------------------------------------------- + + The observer-2.13 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18151 Application(s): observer + Related Id(s): PR-6063 + + Fixed units in gui. + + + Full runtime dependencies of observer-2.13: erts-11.0, et-1.5, + kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-1.2 + + + --------------------------------------------------------------------- + --- parsetools-2.4.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The parsetools-2.4.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of parsetools-2.4.1: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13.1 ----------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18154 Application(s): public_key + Related Id(s): PR-6002 + + Support more Linux distributions in cacerts_load/0. + + + OTP-18189 Application(s): public_key + Related Id(s): ERIERL-829 + + Correct asn1 typenames available in type + pki_asn1_type() + + + OTP-18205 Application(s): crypto, public_key + Related Id(s): GH-6219 + + Sign/verify does now behave as in OTP-24 and earlier + for eddsa. + + + Full runtime dependencies of public_key-1.13.1: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- snmp-5.13.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-17115 Application(s): snmp + Related Id(s): ERIERL-456 + + Improved the get-bulk response max size calculation. + Its now possible to configure 'empty pdu size', see + appendix c for more info. + + + OTP-18180 Application(s): snmp + Related Id(s): ERIERL-837 + + Fix various example dialyzer issues + + + Full runtime dependencies of snmp-5.13.1: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.15 -------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18220 Application(s): ssh + Related Id(s): ERIERL-661, ERIERL-666 + + Handling rare race condition at channel close. + + + --- Improvements and New Features --- + + OTP-18134 Application(s): ssh + Related Id(s): GH-6021 + + New ssh option no_auth_needed to skip the ssh + authentication. Use with caution! + + + OTP-18178 Application(s): inets, ssh + Related Id(s): ERIERL-833, ERIERL-834, ERIERL-835 + + This change fixes dialyzer warnings generated for + inets/httpd examples (includes needed adjustment of + spec for ssh_sftp module). + + + OTP-18196 Application(s): ssh + + The new function ssh:daemon_replace_options/2 makes it + possible to change the Options in a running SSH server. + + Established connections are not affected, only those + created after the call to this new function. + + + OTP-18207 Application(s): ssh + Related Id(s): PR-6231 + + Add a timeout as option max_initial_idle_time. It + closes a connection that does not allocate a channel + within the timeout time. + + For more information about timeouts, see the Timeouts + section in the User's Guide Hardening chapter. + + + Full runtime dependencies of ssh-4.15: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The ssl-10.8.4 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18044 Application(s): ssl + + Reject unexpected application data in all relevant + places for all TLS versions. Also, handle TLS-1.3 + middlebox compatibility with more care. This will make + malicious connections fail early and further, mitigate + possible DoS attacks, that would be caught by the + handshake timeout. + + Thanks to Aina Toky Rasoamanana and Olivier Levillain + from Télécom SudParis for alerting us of the issues in + our implementation. + + + OTP-18099 Application(s): ssl + Related Id(s): PR-6287 + + With this change, value of cacertfile option will be + adjusted before loading certs from the file. + Adjustments include converting relative paths to + absolute and converting symlinks to actual file path. + + Thanks to Marcus Johansson + + + OTP-18191 Application(s): ssl + Related Id(s): GH-6105 + + In TLS-1.3, if chain certs are missing (so server auth + domain adherence can not be determined) send peer cert + and hope the server is able to recreate a chain in its + auth domain. + + + OTP-18195 Application(s): ssl + + Make sure periodical refresh of CA certificate files + repopulates cache properly. + + + OTP-18203 Application(s): ssl + Related Id(s): PR-5996 + + Correct internal CRL cache functions to use internal + format consistently. + + + OTP-18219 Application(s): ssl + Related Id(s): GH-6241, PR-6249 + + Incorrect handling of client middlebox negotiation for + TLS-1.3 could result in that a TLS-1.3 server would not + use middlebox mode although the client was expecting it + too and failing the negotiation with unexpected + message. + + + OTP-18233 Application(s): ssl + Related Id(s): GH-6244, PR-6270 + + If the "User" process, the process starting the TLS + connection, gets killed in the middle of spawning the + dynamic connection tree make sure we do not leave any + processes behind. + + + --- Improvements and New Features --- + + OTP-18241 Application(s): ssl + + *** HIGHLIGHT *** + + A vulnerability has been discovered and corrected. It + is registered as CVE-2022-37026 "Client Authentication + Bypass". Corrections have been released on the + supported tracks with patches 23.3.4.15, 24.3.4.2, and + 25.0.2. The vulnerability might also exist in older OTP + versions. We recommend that impacted users upgrade to + one of these versions or later on the respective + tracks. OTP 25.1 would be an even better choice. + Impacted are those who are running an ssl/tls/dtls + server using the ssl application either directly or + indirectly via other applications. For example via + inets (httpd), cowboy, etc. Note that the vulnerability + only affects servers that request client certification, + that is sets the option {verify, verify_peer}. + + + Full runtime dependencies of ssl-10.8.4: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The stdlib-4.1 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-17934 Application(s): erts, kernel, stdlib + Related Id(s): PR-6007 + + Fixed inconsistency bugs in global due to + nodeup/nodedown messages not being delivered + before/after traffic over connections. Also fixed + various other inconsistency bugs and deadlocks in both + global_group and global. + + As building blocks for these fixes, a new BIF + erlang:nodes/2 has been introduced and + net_kernel:monitor_nodes/2 has been extended. + + The -hidden and -connect_all command line arguments did + not work if multiple instances were present on the + command line which has been fixed. The new kernel + parameter connect_all has also been introduced in order + to replace the -connect_all command line argument. + + + OTP-18139 Application(s): stdlib + Related Id(s): PR-6060 + + Fix the public_key:ssh* functions to be listed under + the correct release in the Removed Functionality User's + Guide. + + + OTP-18142 Application(s): stdlib + Related Id(s): PR-6078 + + The type spec for format_status/1 in gen_statem, + gen_server and gen_event has been corrected to state + that the return value is of the same type as the + argument (instead of the same value as the argument). + + + OTP-18146 Application(s): stdlib + Related Id(s): PR-5983 + + If the timer server child spec was already present in + kernel_sup but it was not started, the timer server + would fail to start with an {error, already_present} + error instead of restarting the server. + + + OTP-18239 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + When changing callback module in gen_statem the + state_enter calls flag from the old module was used in + for the first event in the new module, which could + confuse the new module and cause malfunction. This bug + has been corrected. + + With this change some sys debug message formats have + been modified, which can be a problem for debug code + relying on the format. + + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + OTP-18166 Application(s): stdlib + Related Id(s): PR-6108 + + The rfc339_to_system_time/1,2 functions now allows the + minutes part to be omitted from the time zone. + + + OTP-18194 Application(s): stdlib + Related Id(s): PR-6199 + + The receive statement in gen_event has been optimized + to not use selective receive (which was never needed, + and could cause severe performance degradation under + heavy load). + + + OTP-18199 Application(s): erts, stdlib + Related Id(s): PR-5790 + + Add new API function erl_features:configurable/0 + + + Full runtime dependencies of stdlib-4.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-8.4, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.30 ---------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.30 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18165 Application(s): asn1, compiler, diameter, megaco, otp, + parsetools, stdlib, xmerl + Related Id(s): PR-5965 + + There is a new configure option, + --enable-deterministic-build, which will apply the + deterministic compiler option when building Erlang/OTP. + The deterministic option has been improved to eliminate + more sources of non-determinism in several + applications. + + + Full runtime dependencies of xmerl-1.3.30: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.2.1.README.txt b/release-notes/OTP-25.2.1.README.txt new file mode 100644 index 0000000..84fbac4 --- /dev/null +++ b/release-notes/OTP-25.2.1.README.txt @@ -0,0 +1,182 @@ +Patch Package: OTP 25.2.1 +Git Tag: OTP-25.2.1 +Date: 2023-01-17 +Trouble Report Id: OTP-18357, OTP-18358, OTP-18362, OTP-18363, + OTP-18365, OTP-18368, OTP-18379, OTP-18383, + OTP-18388 +Seq num: ERIERL-879, ERIERL-895, ERIERL-904, + ERIERL-905, GH-6558 +System: OTP +Release: 25 +Application: common_test-1.23.3, compiler-8.2.3, + erts-13.1.4, inets-8.2.1, kernel-8.5.3, + snmp-5.13.3 +Predecessor: OTP 25.2 + + Check out the git tag OTP-25.2.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.23.3 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.23.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18363 Application(s): common_test + Related Id(s): ERIERL-879 + + Change timeout to infinity for gen_server calls in + cth_log_redirect + + + Full runtime dependencies of common_test-1.23.3: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18365 Application(s): compiler + + Fixed a bug that could cause legal code to fail + validation. + + + OTP-18368 Application(s): compiler + + Eliminated a rare crash in the beam_types module. + + + Full runtime dependencies of compiler-8.2.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- erts-13.1.4 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18383 Application(s): erts + Related Id(s): ERIERL-905 + + Fixed a bug in selective receive optimization that + could crash 32-bit emulators. + + + OTP-18388 Application(s): erts + Related Id(s): OTP-17462, PR-6662 + + A race condition which was very rarely triggered could + cause the signal queue of a process to become + inconsistent causing the runtime system to crash. + + + Full runtime dependencies of erts-13.1.4: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.2.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.2.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18362 Application(s): inets + Related Id(s): ERIERL-895, GH-6558 + + fixes a missing case of the type specification for + httpd:info/2/3/4 + + + Full runtime dependencies of inets-8.2.1: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.5.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18357 Application(s): kernel + Related Id(s): #6509 + + The tcp connect option 'bind_to_device' could not be + used with inet_backend = 'socket'. 'inet' requires + value type binarry() and 'socket' requires value type + 'string()'. + + + OTP-18358 Application(s): kernel + Related Id(s): #6528 + + Minor issue processing options when calling + gen_tcp:connect with a sockaddr() and inet_backend = + socket. + + + Full runtime dependencies of kernel-8.5.3: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- snmp-5.13.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18379 Application(s): snmp + Related Id(s): ERIERL-904 + + Single threaded agent crash when vacm table not + properly initiated. + + + Full runtime dependencies of snmp-5.13.3: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.2.2.README.txt b/release-notes/OTP-25.2.2.README.txt new file mode 100644 index 0000000..5722398 --- /dev/null +++ b/release-notes/OTP-25.2.2.README.txt @@ -0,0 +1,40 @@ +Patch Package: OTP 25.2.2 +Git Tag: OTP-25.2.2 +Date: 2023-01-30 +Trouble Report Id: OTP-18409 +Seq num: ERIERL-908 +System: OTP +Release: 25 +Application: ftp-1.1.3 +Predecessor: OTP 25.2.1 + + Check out the git tag OTP-25.2.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- ftp-1.1.3 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ftp-1.1.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18409 Application(s): ftp + Related Id(s): ERIERL-908, PR-6721 + + Fixes calls to ftp:nlist/2 returning {error, epath} + when the file / folder exists + + + Full runtime dependencies of ftp-1.1.3: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.2.3.README.txt b/release-notes/OTP-25.2.3.README.txt new file mode 100644 index 0000000..c573c12 --- /dev/null +++ b/release-notes/OTP-25.2.3.README.txt @@ -0,0 +1,150 @@ +Patch Package: OTP 25.2.3 +Git Tag: OTP-25.2.3 +Date: 2023-02-17 +Trouble Report Id: OTP-18386, OTP-18415, OTP-18417, OTP-18421, + OTP-18433, OTP-18461, OTP-18462, OTP-18467 +Seq num: ERIERL-888, ERIERL-890, GH-6772, GH-6807, + GH-6846 +System: OTP +Release: 25 +Application: erts-13.1.5, inets-8.2.2, ssh-4.15.2, + ssl-10.8.7 +Predecessor: OTP 25.2.2 + + Check out the git tag OTP-25.2.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.1.5 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18415 Application(s): erts + + Comparisons between small numbers and pids or ports + would in some edge cases say that the number was + greater than the pid or port, violating the term order. + + + OTP-18421 Application(s): erts + Related Id(s): PR-6806 + + process_info(Pid, status) when Pid /= self() could + return an erroneous result. + + + Full runtime dependencies of erts-13.1.5: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.2.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.2.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18461 Application(s): inets + Related Id(s): ERIERL-890 + + Ensure graceful shutdown + + + OTP-18462 Application(s): inets + Related Id(s): GH-6846 + + Return type of the type specification for function + httpc:cookie_header/{1,2,3} has been fixed from -spec + cookie_header(url()) -> [{ field(), value() }] | + {error, Reason} to -spec cookie_header(url()) -> { + field(), value() } | {error, Reason} + + + Full runtime dependencies of inets-8.2.2: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- ssh-4.15.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssh-4.15.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18386 Application(s): ssh + Related Id(s): PR-6611 + + With this change, ssh application does not crash when + formatting some of info reports for unsuccessful + connections. + + + OTP-18417 Application(s): ssh + Related Id(s): ERIERL-888, DAFH-1349, IA18357 + + With this change, ssh does not log extensively long + messages. + + + Full runtime dependencies of ssh-4.15.2: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8.7 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The ssl-10.8.7 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Improvements and New Features --- + + OTP-18433 Application(s): ssl + Related Id(s): GH-6772 + + Maximize compatibility by ignoring change_cipher_spec + during handshake even if middle_box_mode is not + negotiated (mandated by client) + + + OTP-18467 Application(s): ssl + Related Id(s): GH-6807 + + Move assert of middlebox message after an + hello_retry_request to maximize interoperability. Does + not changes semantics of the protocol only allows + unexpected message delay from server. + + + Full runtime dependencies of ssl-10.8.7: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.2.README.txt b/release-notes/OTP-25.2.README.txt new file mode 100644 index 0000000..9516633 --- /dev/null +++ b/release-notes/OTP-25.2.README.txt @@ -0,0 +1,782 @@ +Patch Package: OTP 25.2 +Git Tag: OTP-25.2 +Date: 2022-12-14 +Trouble Report Id: OTP-18213, OTP-18250, OTP-18251, OTP-18252, + OTP-18255, OTP-18256, OTP-18257, OTP-18267, + OTP-18268, OTP-18269, OTP-18270, OTP-18273, + OTP-18280, OTP-18281, OTP-18283, OTP-18284, + OTP-18289, OTP-18291, OTP-18292, OTP-18293, + OTP-18294, OTP-18295, OTP-18296, OTP-18298, + OTP-18302, OTP-18304, OTP-18306, OTP-18307, + OTP-18308, OTP-18313, OTP-18314, OTP-18315, + OTP-18317, OTP-18319, OTP-18321, OTP-18322, + OTP-18323, OTP-18324, OTP-18325, OTP-18326, + OTP-18328, OTP-18332, OTP-18333, OTP-18336, + OTP-18339, OTP-18343, OTP-18345, OTP-18347, + OTP-18349, OTP-18351, OTP-18352 +Seq num: ERIERL-865, ERIERL-867, ERIERL-875, + ERIERL-881, ERIERL-885, ERL-6435, GH-5823, + GH-6106, GH-6245, GH-6290, GH-6307, GH-6332, + GH-6341, GH-6363, GH-6373, GH-6387, GH-6393, + GH-6419, GH-6426, GH-6435, GH-6439, GH-6461, + GH-6465, GH-6466, GH-6473, GH-6496, GH-6501, + GH-6518 +System: OTP +Release: 25 +Application: common_test-1.23.2, compiler-8.2.2, + dialyzer-5.0.4, erts-13.1.3, ftp-1.1.2, + inets-8.2, kernel-8.5.2, megaco-4.4.2, + mnesia-4.21.3, observer-2.14, os_mon-2.8, + public_key-1.13.2, snmp-5.13.2, ssh-4.15.1, + ssl-10.8.6, stdlib-4.2, wx-2.2.1 +Predecessor: OTP 25.1.2 + + Check out the git tag OTP-25.2, and build a full OTP system including + documentation. Apply one or more applications from this build as + patches to your installation using the 'otp_patch_apply' tool. For + information on install requirements, see descriptions for each + application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18324 Application(s): erts, kernel + Related Id(s): GH-6461, PR-6481 + + The inet:setopts/2 {reuseaddr, true} option will now be + ignored on Windows unless the socket is an UDP socket. + For more information see the documentation of the + reuseaddr option part of the documentation of + inet:setopts/2. + + Prior to OTP 25 the {reuseaddr, true} option was + ignored for all sockets on Windows, but as of OTP 25.0 + this was changed so that it was not ignored for any + sockets. + + + --------------------------------------------------------------------- + --- common_test-1.23.2 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.23.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18255 Application(s): common_test + Related Id(s): PR-6314 + + Fix starting of peer nodes on old releases when the + compile server was active and the current Erlang + installation contained non-latin1 characters in its + path. + + + Full runtime dependencies of common_test-1.23.2: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18268 Application(s): compiler + Related Id(s): GH-6332 + + Line number in compiler messages would be truncated to + 4 digits for line numbers greater than 9999. + + + OTP-18273 Application(s): compiler + Related Id(s): GH-6341 + + In rare circumstance, matching a binary as part of a + receive clause could cause the compiler to terminate + because of an internal consistency check failure. + + + OTP-18308 Application(s): compiler + Related Id(s): GH-6426 + + Compiling a function with complex bit syntax matching + such as f(<<X:0, _:X>>, <<Y:0, _:Y>>) -> ok. could + crash the compiler. + + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + OTP-18336 Application(s): compiler, stdlib + Related Id(s): GH-6501, PR-6502 + + The compiler could crash when using a record with + complex field initialization expression as a filter in + a list comprehension. + + + Full runtime dependencies of compiler-8.2.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.0.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.0.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18307 Application(s): dialyzer + Related Id(s): GH-6419, GH-6473 + + Dialyzer would crash when attempting to analyze a bit + syntax segment size having an literal non-integer size + such as []. + + + OTP-18347 Application(s): dialyzer + Related Id(s): GH-6518, PR-6525 + + Dialyzer could crash when trying to analyze a + convoluted nested expression involving funs, + + + Full runtime dependencies of dialyzer-5.0.4: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-13.1.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.1.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18256 Application(s): erts + Related Id(s): PR-6316 + + Fix perf/gdb JIT symbols to not contain + CodeInfoPrologue for the JIT internal module + erts_beamasm. + + + OTP-18281 Application(s): erts + Related Id(s): PR-4840 + + Fixed minor memory leaks. + + + OTP-18284 Application(s): erts + Related Id(s): PR-6305 + + Fix bugs in ets:insert and ets:insert_new when called + with a list of tuples to insert while a concurrent + process either deletes or renames the table. The table + deletion could be done with ets:delete/1 or be caused + by termination of the table owning process. + + Symptoms are either VM crash or strange incorrect + behavior from the insert operation. The risk of + triggering the bugs increases with the length of the + list of tuple to insert. Bugs exist since OTP 23.0. + + + OTP-18294 Application(s): erts + Related Id(s): PR-6390 + + Boost execution of scheduled thread progress jobs. This + to prevent memory exhaustion in extremely rapid + allocation/deallocation scenarios, such as repeated ETS + table creations/deletions. + + + OTP-18295 Application(s): erts + + Fix segv crash during crash dumping an ETS table doing + ets:delete_all_objects. + + + OTP-18296 Application(s): erts, kernel + Related Id(s): OTP-16464 + + Spec for function net:if_names/0 incorrect + + + OTP-18306 Application(s): erts + Related Id(s): GH-6393, PR-6401 + + Fix bug in binary_to_term decoding a binary term 2Gbyte + or larger. + + + OTP-18313 Application(s): erts + Related Id(s): PR-6456 + + Documentation of erlang:module_loaded/1 has been + adjusted: + + -- It did not previously say that the BIF only returns + true for modules loaded as current code. + + -- The warning claiming that the BIF should only be + used by the code server has been removed. + + + OTP-18321 Application(s): erts + + Fix list_to_atom/1 for negative code points. Could + either return with a positive code point or fail with + an incorrect exception. + + + OTP-18322 Application(s): erts + Related Id(s): PR-6479 + + Fix rare bug causing VM crash when sending to a pid of + a spawning process returned from erlang:processes/0. + + Only seen when provoked by system process + literal_area_collector, triggered by a module purge + operation, on a VM started with +Meamin (no customized + allocators). + + + OTP-18323 Application(s): erts, kernel + Related Id(s): #6476 + + gen_udp:open/2 with option(s) add_membership or + drop_membership would drop earlier options. + + + OTP-18324 Application(s): erts, kernel + Related Id(s): GH-6461, PR-6481 + + *** POTENTIAL INCOMPATIBILITY *** + + The inet:setopts/2 {reuseaddr, true} option will now be + ignored on Windows unless the socket is an UDP socket. + For more information see the documentation of the + reuseaddr option part of the documentation of + inet:setopts/2. + + Prior to OTP 25 the {reuseaddr, true} option was + ignored for all sockets on Windows, but as of OTP 25.0 + this was changed so that it was not ignored for any + sockets. + + + OTP-18328 Application(s): erts + Related Id(s): GH-6439, PR-6440 + + Fix bug in binary_to_term decoding a list of length 1G + or longer. + + + OTP-18343 Application(s): erts + Related Id(s): GH-6496 + + Fix bug in binary_to_term (and distributed receive) + when decoding a large map (>32 keys) with unsorted + small maps (<= 32) as keys of the large map. + + This was only a problem if the term was encoded by + erl_interface, jinterface or otherwise, as the VM + itself always encodes small maps with sorted keys. + + The "binary_to_term" would appear as successful but the + created large map was internally inconsistent. The + smaller key-maps could not be found with maps:get and + friends. Other operations such as map compare and merge + could probably also give incorrect results. + + + OTP-18345 Application(s): erts + Related Id(s): GH-6387, PR-6396 + + Fix Windows bug in open_port({spawn, Command}, ..) when + Command is found via the OS search PATH and that + directory path contains white spaces. The port program + would start but the command line arguments to it could + be incorrect. + + + Full runtime dependencies of erts-13.1.3: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ftp-1.1.2 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ftp-1.1.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18252 Application(s): ftp + Related Id(s): GH-5823 + + fix unexpected result ok when calling ftp:nlist + repeatedly + + + Full runtime dependencies of ftp-1.1.2: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-8.2 ------------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18250 Application(s): inets + + This change allows body requests to httpc:request/5 be + an iolist() + + + OTP-18251 Application(s): inets + Related Id(s): GH-6245 + + addition of type specs in httpc.erl + + + OTP-18280 Application(s): inets + Related Id(s): GH-6290, PR-6291 + + httpc: Add support for HTTP 308 status code + + + Full runtime dependencies of inets-8.2: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.5.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18270 Application(s): kernel + Related Id(s): #6331 + + Fixed shutdown crash in gen_tcp socket backend, when + the other end closed the socket. + + + OTP-18289 Application(s): kernel, stdlib + Related Id(s): PR-6343 + + erl_tar can now read gzip-compressed tar files that are + padded. There is a new option compressed_one for + file:open/2 that will read a single member from a gzip + file, + + + OTP-18291 Application(s): kernel + Related Id(s): PR-6382 + + Fix os:cmd to not translate all exceptions thrown to + badarg. For example emfile from erlang:open_port was + translated to badarg. + + This bug has existed since Erlang/OTP 24. + + + OTP-18296 Application(s): erts, kernel + Related Id(s): OTP-16464 + + Spec for function net:if_names/0 incorrect + + + OTP-18315 Application(s): kernel + + Missing ctrl option name transation for TOS and TTL (on + FreeBSD) when using gen_udp with the 'socket' + inet_backend. + + + OTP-18323 Application(s): erts, kernel + Related Id(s): #6476 + + gen_udp:open/2 with option(s) add_membership or + drop_membership would drop earlier options. + + + OTP-18324 Application(s): erts, kernel + Related Id(s): GH-6461, PR-6481 + + *** POTENTIAL INCOMPATIBILITY *** + + The inet:setopts/2 {reuseaddr, true} option will now be + ignored on Windows unless the socket is an UDP socket. + For more information see the documentation of the + reuseaddr option part of the documentation of + inet:setopts/2. + + Prior to OTP 25 the {reuseaddr, true} option was + ignored for all sockets on Windows, but as of OTP 25.0 + this was changed so that it was not ignored for any + sockets. + + + --- Improvements and New Features --- + + OTP-18293 Application(s): kernel + + The distribution socket option handling in + inet_tcp_dist has been cleaned up to clarify which were + mandatory and which just had default values. + + + OTP-18317 Application(s): kernel + + Improve warning message format for gen_tcp_socket. + + + Full runtime dependencies of kernel-8.5.2: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- megaco-4.4.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The megaco-4.4.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18298 Application(s): megaco + + A very minor improvement to the measurement tool. + + + Full runtime dependencies of megaco-4.4.2: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.21.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18319 Application(s): mnesia + Related Id(s): ERIERL-875 + + Fixed crash which could happen during startup if too + many decisions where sent from remote nodes. + + + Full runtime dependencies of mnesia-4.21.3: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- observer-2.14 --------------------------------------------------- + --------------------------------------------------------------------- + + The observer-2.14 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18339 Application(s): observer + + A WX event race could causes a crash in when handling + socket or port info. + + + --- Improvements and New Features --- + + OTP-18269 Application(s): observer + Related Id(s): PR-6030 + + Improve the nodes menu to include more nodes. + + + Full runtime dependencies of observer-2.14: erts-11.0, et-1.5, + kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-1.2 + + + --------------------------------------------------------------------- + --- os_mon-2.8 ------------------------------------------------------ + --------------------------------------------------------------------- + + The os_mon-2.8 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18304 Application(s): os_mon + Related Id(s): PR-6385 + + The disk_space_check_interval configuration parameter + of disksup can now be set to values smaller than a + minute. + + + Full runtime dependencies of os_mon-2.8: erts-6.0, kernel-3.0, + sasl-2.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13.2 ----------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18333 Application(s): public_key + Related Id(s): GH-6363 + + Disregard LDAP URIs when HTTP URIs are expected. + + + Full runtime dependencies of public_key-1.13.2: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- snmp-5.13.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18352 Application(s): snmp + Related Id(s): ERIERL-881 + + Explicitly close the socket(s) when terminating + (default-) net-if process. + + + Full runtime dependencies of snmp-5.13.2: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssh-4.15.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18326 Application(s): ssh + Related Id(s): ERIERL-865 + + graceful shutdown of ssh_conection_handler when + connection is closed by peer + + + Full runtime dependencies of ssh-4.15.1: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8.6 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The ssl-10.8.6 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18314 Application(s): ssl + Related Id(s): GH-6373 + + With this change, tls_sender process is hibernated + after sufficient inactivity. + + + OTP-18332 Application(s): ssl + Related Id(s): ERL-6435, GH-6435, PR-6435 + + Correct handling of legacy schemes so that ECDSA certs + using sha1 may be used for some TLS-1.3 configurations. + + + OTP-18349 Application(s): ssl + + With this change, tls_sender does not cause logger + crash upon key update. + + + --- Improvements and New Features --- + + OTP-18257 Application(s): ssl + Related Id(s): GH-6307 + + Enhance warning message + + + OTP-18267 Application(s): ssl + Related Id(s): GH-6106, PR-6228 + + Provide server option to make certificate_authorities + extension in the TLS-1.3 servers certificate request + optional. This will allow clients to send incomplete + chains that may be reconstructable and thereby + verifiable by the server, but that would not adhere to + the certificate_authorities extension. + + + OTP-18302 Application(s): ssl + Related Id(s): ERIERL-867 + + If the verify_fun handles four arguments the DER cert + will be supplied as one of the arguments. + + + Full runtime dependencies of ssl-10.8.6: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The stdlib-4.2 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18289 Application(s): kernel, stdlib + Related Id(s): PR-6343 + + erl_tar can now read gzip-compressed tar files that are + padded. There is a new option compressed_one for + file:open/2 that will read a single member from a gzip + file, + + + OTP-18292 Application(s): stdlib + Related Id(s): PR-6366 + + A concurrent call to ets:rename could cause + ets:delete_all_objects to fail halfway through with + badarg. + + + OTP-18325 Application(s): compiler, stdlib + Related Id(s): GH-6465, GH-6466 + + It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done + by constructing a record with a default initialization + expression that called a function. + + + OTP-18336 Application(s): compiler, stdlib + Related Id(s): GH-6501, PR-6502 + + The compiler could crash when using a record with + complex field initialization expression as a filter in + a list comprehension. + + + OTP-18351 Application(s): stdlib + Related Id(s): ERIERL-885, PR-6529 + + unicode:characters_to_binary() could build + unnecessarily large call stack. + + + --- Improvements and New Features --- + + OTP-18283 Application(s): stdlib + Related Id(s): PR-6338 + + Improve error message for ets:new/2 name clash. Say + "name already exists" instead of less specific "invalid + options". + + + Full runtime dependencies of stdlib-4.2: compiler-5.0, crypto-4.5, + erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- wx-2.2.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + The wx-2.2.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18213 Application(s): wx + Related Id(s): PR-6113 + + Added environment variable WX_MACOS_NON_GUI_APP to + allow user to override OSXIsGUIApplication behavior. + + + Full runtime dependencies of wx-2.2.1: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.1.README.txt b/release-notes/OTP-25.3.1.README.txt new file mode 100644 index 0000000..bd27f10 --- /dev/null +++ b/release-notes/OTP-25.3.1.README.txt @@ -0,0 +1,313 @@ +Patch Package: OTP 25.3.1 +Git Tag: OTP-25.3.1 +Date: 2023-04-27 +Trouble Report Id: OTP-18422, OTP-18480, OTP-18489, OTP-18497, + OTP-18506, OTP-18509, OTP-18512, OTP-18516, + OTP-18519, OTP-18525, OTP-18545, OTP-18550, + OTP-18553, OTP-18554, OTP-18555, OTP-18557, + OTP-18560, OTP-18563 +Seq num: ERIERL-873, ERIERL-928, ERIERL-937, GH-6956, + GH-6960, GH-6969, GH-7024, GH-7114 +System: OTP +Release: 25 +Application: compiler-8.2.5, crypto-5.1.4, eldap-1.2.11, + erl_interface-5.3.2, erts-13.2.1, + inets-8.3.1, snmp-5.13.5, ssl-10.9.1, + stdlib-4.3.1, wx-2.2.2 +Predecessor: OTP 25.3 + + Check out the git tag OTP-25.3.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.5 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.5 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18497 Application(s): compiler + Related Id(s): GH-6960, PR-6965 + + When a map update such as #{}#{key:=value} that should + fail with an exception was unused, the exception would + be lost. + + + OTP-18516 Application(s): compiler + Related Id(s): GH-6969 + + Fixed bug in the validator that made it reject valid + code. + + + Full runtime dependencies of compiler-8.2.5: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18555 Application(s): crypto + + With this change, random errors are fixed for + crypto:generate_key calls with OpenSSL 3. + + + Full runtime dependencies of crypto-5.1.4: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- eldap-1.2.11 ---------------------------------------------------- + --------------------------------------------------------------------- + + The eldap-1.2.11 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18480 Application(s): eldap + + Added a new function eldap:info/1 that returns the + socket and the transport protocol for the eldap + connection. + + + Full runtime dependencies of eldap-1.2.11: asn1-3.0, erts-6.0, + kernel-3.0, ssl-5.3.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --- erl_interface-5.3.2 --------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.3.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18554 Application(s): erl_interface, erts + + Fixed configure tests for a few ARM-specific + instructions, which prevented the emulator from being + built on some platforms. + + + --------------------------------------------------------------------- + --- erts-13.2.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18519 Application(s): erts + Related Id(s): GH-7024 + + Fixed a bug in the loader that prevented certain + modules compiled with no_ssa_opt from being loaded. + + + OTP-18525 Application(s): erts + Related Id(s): PR-7049 + + Implementations of the call() driver callback that + returned a faulty encoded result could cause a memory + leak and could cause invalid data on the heap of the + processes calling erlang:port_call/3. + + + OTP-18553 Application(s): erts + + Fixed a memory corruption issue when upgrading code. + The bug was introduced in OTP 25.3 + + + OTP-18554 Application(s): erl_interface, erts + + Fixed configure tests for a few ARM-specific + instructions, which prevented the emulator from being + built on some platforms. + + + OTP-18557 Application(s): erts + Related Id(s): OTP-18496, PR-7131 + + Aliases created in combination with a monitor using the + {alias, explicit_unalias} option stopped working from + remote nodes when a 'DOWN' signal had been received due + to the monitor or if the monitor was removed using the + erlang:demonitor() BIF. + + This bug was introduced in OTP 24.3.4.10 and OTP 25.3. + + + OTP-18560 Application(s): erts + + In rare circumstances, bit syntax matching of an + invalid code point for a utf32 would crash the runtime + system. + + + OTP-18563 Application(s): erts + Related Id(s): GH-7114, PR-7159 + + Building the runtime system failed when native atomic + support was missing. Note that execution on such + systems have only been rudimentary tested. + + + Full runtime dependencies of erts-13.2.1: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18509 Application(s): inets + Related Id(s): OTP-18476 + + Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" + errors. + + + OTP-18545 Application(s): inets + Related Id(s): ERIERL-928, ERIERL-937, OTP-18509 + + With this change, upon remote socket closure current + request is added to a retried queue (either pipeline or + keep_alive, but not both). + + + Full runtime dependencies of inets-8.3.1: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- snmp-5.13.5 ----------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.5 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18422 Application(s): snmp + Related Id(s): ERIERL-873 + + Attempts to minimize the number of the error reports + during a failed agent init. + + + Full runtime dependencies of snmp-5.13.5: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssl-10.9.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The ssl-10.9.1 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18489 Application(s): ssl + + With this change, ssl:connection_information/2 returns + correct keylog data after TLS1.3 key update. + + + OTP-18550 Application(s): ssl + + Client signature algorithm list input order is now + honored again , it was accidently reversed by a + previous fix. + + + Full runtime dependencies of ssl-10.9.1: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18506 Application(s): stdlib + Related Id(s): GH-6956 + + The type specs in the erl_parse module has been updated + to include the maybe construct and the ! operator. + + + Full runtime dependencies of stdlib-4.3.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- wx-2.2.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + The wx-2.2.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18512 Application(s): wx + + Improve debug prints from the nifs. Some minor fixes + for wxWidgets-3.2. Fixed OpenGL debug functions. + + + Full runtime dependencies of wx-2.2.2: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.1.README.txt b/release-notes/OTP-25.3.2.1.README.txt new file mode 100644 index 0000000..398aae7 --- /dev/null +++ b/release-notes/OTP-25.3.2.1.README.txt @@ -0,0 +1,174 @@ +Patch Package: OTP 25.3.2.1 +Git Tag: OTP-25.3.2.1 +Date: 2023-05-30 +Trouble Report Id: OTP-18556, OTP-18561, OTP-18569, OTP-18576, + OTP-18593, OTP-18595, OTP-18597 +Seq num: ERIERL-944, GH-7252 +System: OTP +Release: 25 +Application: compiler-8.2.6.1, erts-13.2.2.1, + stdlib-4.3.1.1, xmerl-1.3.31.1 +Predecessor: OTP 25.3.2 + + Check out the git tag OTP-25.3.2.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.6.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.2.6.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18576 Application(s): compiler + + Fixed a bug where a failing bsl expression in a guard + threw an exception instead of causing the guard to + fail. + + + OTP-18593 Application(s): compiler + Related Id(s): GH-7252 + + Complex guard expression using the or operator and + guard BIFs that can fail could sometimes be miscompiled + so that the guard would succeed even if a call to a + guard BIF failed. + + + Full runtime dependencies of compiler-8.2.6.1: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- erts-13.2.2.1 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18561 Application(s): erts + + Fixed a crash during tracing on certain platforms that + cannot use the machine stack for Erlang code (mainly + OpenBSD and Linux with musl). + + + OTP-18597 Application(s): erts + + Constructing a binary segment not aligned with a byte + boundary, with a size not fitting in 31 bits, and with + a value not fitting in a 64-bit word could crash the + runtime system. + + + --- Improvements and New Features --- + + OTP-18569 Application(s): erts + + Further robustify implementation of large maps (> 32 + keys). Keys that happen to have same internal 32-bit + hash values are now put in collision nodes which are + traversed with linear search. This removes the demand + for the internal hash function when salted to + eventually produce different hashes for all possible + pairs of unequal terms. + + + Full runtime dependencies of erts-13.2.2.1: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.1 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.1 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Improvements and New Features --- + + OTP-18556 Application(s): stdlib + + Static supervisors are very idle processes after they + have started so they will now be hibernated after start + to improve resource management. + + + Full runtime dependencies of stdlib-4.3.1.1: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.31.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.31.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18595 Application(s): xmerl + Related Id(s): ERIERL-944 + + New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some + XML security issues. + + xmerl_scan gets one new option: + + -- {allow_entities, Boolean} -- Gives the possibility + to disallow entities by setting this option to false + (true is default) + + xmerl_sax_parser gets the following options: + + -- disallow_entities -- Don't allow entities in + document + + -- {entity_recurse_limit, N} -- Set a limit on entity + recursion depth (default is 3) + + -- {external_entities, AllowedType} -- Specify which + types of external entities that are allowed, this also + affect external DTD's. The types are all(default), file + and none + + -- {fail_undeclared_ref, Boolean} -- Sets the behavior + for undeclared references due to an external file is + not parsed (true is default) + + The old option skip_external_dtd is still valid and the + same as {external_entities, none} and + {fail_undeclared_ref, false} but just affects DTD's and + not other external references. + + + Full runtime dependencies of xmerl-1.3.31.1: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.10.README.txt b/release-notes/OTP-25.3.2.10.README.txt new file mode 100644 index 0000000..2d8262b --- /dev/null +++ b/release-notes/OTP-25.3.2.10.README.txt @@ -0,0 +1,155 @@ +Patch Package: OTP 25.3.2.10 +Git Tag: OTP-25.3.2.10 +Date: 2024-03-13 +Trouble Report Id: OTP-18971, OTP-18986, OTP-18996, OTP-19002, + OTP-19003, OTP-19006, OTP-19008, OTP-19015, + OTP-19019 +Seq num: ERIERL-1041, ERIERL-682, GH-8044, GH-8119, + GH-8187, PR-8173, PR-8174, PR-8189, PR-8201 +System: OTP +Release: 25 +Application: compiler-8.2.6.4, crypto-5.1.4.2, + erts-13.2.2.7, ssh-4.15.3.3 +Predecessor: OTP 25.3.2.9 + + Check out the git tag OTP-25.3.2.10, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.6.4 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.2.6.4 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19003 Application(s): compiler + Related Id(s): GH-8187, PR-8189 + + In rare circumstances, an unsafe optimization could + cause the compiler to generate incorrect code for list + matching. + + + OTP-19019 Application(s): compiler + + In rare circumstances, the compiler code generate + unsafe code for a bit syntax match. + + + Full runtime dependencies of compiler-8.2.6.4: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1.4.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.4.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18996 Application(s): crypto + Related Id(s): PR-8173, PR-8174 + + The function crypto:pbkdf2_hmac will no longer block + the main schedulers. If the iteration count or block + size parameters are such that the function is likely to + take a long time to execute, the function will be + scheduled to run on a dirty CPU scheduler. + + + Full runtime dependencies of crypto-5.1.4.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- erts-13.2.2.7 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.7 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18971 Application(s): erts + Related Id(s): GH-8044 + + Fix heap corruption bug that could cause runaway memory + consumption due to circular offheap list at process + exit. Other symptoms may also be possible. Bug exists + since OTP 25.0. + + + OTP-19006 Application(s): erts + + The code server could be hanging if a module with + on_load function was loaded at the same time as another + module was purged using erlang:purge_module directly. + + + OTP-19008 Application(s): erts + Related Id(s): GH-8119, PR-8201 + + A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That + is, the processes was not woken up to take care of the + signal, so the signal would not be taken care of until + the process was woken by another signal. Only processes + configured with message_queue_data set to off_heap + utilize this optimization. + + + OTP-19015 Application(s): erts + Related Id(s): ERIERL-682 + + Fix bug in re:run/3 where if an invalid UTF-8 subject + was given, re:run could get stuck in an infinite loop. + Bug was introduced in Erlang/OTP 22.1. + + + Full runtime dependencies of erts-13.2.2.7: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18986 Application(s): ssh + + With this change, more secure algorithms are preferred + by ssh and documentation is updated to reflect that. + + + OTP-19002 Application(s): ssh + Related Id(s): ERIERL-1041 + + With this change, KEX strict terminal message is + emitted with debug verbosity. + + + Full runtime dependencies of ssh-4.15.3.3: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.11.README.txt b/release-notes/OTP-25.3.2.11.README.txt new file mode 100644 index 0000000..8a67776 --- /dev/null +++ b/release-notes/OTP-25.3.2.11.README.txt @@ -0,0 +1,365 @@ +Patch Package: OTP 25.3.2.11 +Git Tag: OTP-25.3.2.11 +Date: 2024-04-12 +Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013, + OTP-19014, OTP-19031, OTP-19034, OTP-19036, + OTP-19038, OTP-19040, OTP-19043, OTP-19044, + OTP-19048, OTP-19050, OTP-19058, OTP-19064 +Seq num: ERIERL-1043, ERIERL-1060, GH-7897, GH-7928, + GH-8120, GH-8186, GH-8268, GH-8271, + OTP-18990, PR-8220, PR-8275, PR-8277, + PR-8342, PR-8343 +System: OTP +Release: 25 +Application: common_test-1.24.0.3, crypto-5.1.4.3, + debugger-5.3.1.3, diameter-2.2.7.1, + erts-13.2.2.8, inets-8.3.1.3, kernel-8.5.4.3, + observer-2.14.0.1, os_mon-2.8.2.1, + reltool-0.9.1.1, ssh-4.15.3.4, stdlib-4.3.1.4 +Predecessor: OTP 25.3.2.10 + + Check out the git tag OTP-25.3.2.11, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.24.0.3 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18960 Application(s): common_test + + With this change, the last column in common_test + testcase log file is modified to now show the total sum + of each time in the table rows, and Elapsed Time which + is a clock time spent to run above functions. The + Elapsed Time is the same time that was previously a + total. + + + Full runtime dependencies of common_test-1.24.0.3: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- crypto-5.1.4.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.4.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19038 Application(s): crypto + Related Id(s): GH-8271, PR-8277 + + Fix building with --enable-fips with OpenSSL 3 on + MacOS. + + + Full runtime dependencies of crypto-5.1.4.3: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.1.3 ------------------------------------------------ + --------------------------------------------------------------------- + + The debugger-5.3.1.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18958 Application(s): debugger + Related Id(s): GH-8120, PR-8275 + + Guards with nested record expression could wrongly + evaluate to false. + + + Full runtime dependencies of debugger-5.3.1.3: compiler-8.0, + erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.2.7.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The diameter-2.2.7.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19040 Application(s): diameter + Related Id(s): ERIERL-1060 + + Reduce the impact of calling service_info by not + counting the binaries (on the heap) info, This is done + by introducing an option, bins_info, which controls + this. + + + Full runtime dependencies of diameter-2.2.7.1: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- erts-13.2.2.8 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.8 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18999 Application(s): erts + Related Id(s): GH-7928 + + Fixed CPU quota determination for cgroup version 2 + + + OTP-19014 Application(s): erts + + Fix faulty reduction counting in exiting process which + could cause it to do unnecessary yielding. + + + OTP-19034 Application(s): erts + + Calling erlang:trace/3 with first argument one of + ports, processes, existing_ports, existing_processes, + existing or all, could cause emulator crash if a dirty + scheduler was executing a simultaneous trace action. + + + OTP-19036 Application(s): erts + Related Id(s): GH-8186 + + Fixed an integer overflow when the monotonic time unit + reported by the operating system was greater than 10 + and lower than 100 microseconds. + + + OTP-19043 Application(s): erts + Related Id(s): PR-8342 + + When a traced process executing on a dirty scheduler + received an exit signal, the dirty scheduler could use + the wrong thread specific data which could lead to a + crash. + + + OTP-19048 Application(s): erts + Related Id(s): PR-8343 + + Fixed a more or less harmless bug that caused time + correction of Erlang monotonic time to become slightly + off on Windows platforms when QueryPerformanceCounter() + was used as OS monotonic time source. + + erlang:system_info(os_monotonic_time_source) now also + returns information about used resolution which not + always corresponds to the resolution of the OS + monotonic time source. + + + --- Improvements and New Features --- + + OTP-19044 Application(s): erts + Related Id(s): ERIERL-1043, PR-8342 + + Checks for monotonicity of monotonic time have been + improved so that Erlang and OS monotonic time are + checked separately. + + A new configure argument + --enable-ensure-os-monotonic-time has also been added. + It enables functionality ensuring the monotonicity of + monotonic timestamps delivered by the OS. When a + non-monotonic timestamp is detected, it will be + replaced by the last delivered monotonic timestamp + before being used by Erlang's time functionality. Note + that you do not want to enable this unless the OS + monotonic time source on the system fails to produce + monotonic timestamps. This since ensuring the + monotonicity of OS monotonic timestamps will hurt + scalability and performance of the system. + + + OTP-19058 Application(s): erts + + For severe errors, when the `socket` module terminates + the Erlang VM, now an erl_crash.dump is produced, to + facilitate post mortem debugging. + + + Full runtime dependencies of erts-13.2.2.8: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3.1.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19064 Application(s): inets, observer, os_mon, reltool + + Fixed runtime dependencies. + + + Full runtime dependencies of inets-8.3.1.3: erts-13.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.3 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.3 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19050 Application(s): kernel + Related Id(s): OTP-18990 + + Fixed gen_udp:open/2 type spec to include already + supported module socket address types. + + + Full runtime dependencies of kernel-8.5.4.3: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- observer-2.14.0.1 ----------------------------------------------- + --------------------------------------------------------------------- + + The observer-2.14.0.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19064 Application(s): inets, observer, os_mon, reltool + + Fixed runtime dependencies. + + + Full runtime dependencies of observer-2.14.0.1: erts-11.0, et-1.5, + kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-2.2 + + + --------------------------------------------------------------------- + --- os_mon-2.8.2.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The os_mon-2.8.2.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19064 Application(s): inets, observer, os_mon, reltool + + Fixed runtime dependencies. + + + Full runtime dependencies of os_mon-2.8.2.1: erts-13.0, kernel-3.0, + sasl-2.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --- reltool-0.9.1.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The reltool-0.9.1.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19064 Application(s): inets, observer, os_mon, reltool + + Fixed runtime dependencies. + + + Full runtime dependencies of reltool-0.9.1.1: erts-7.0, kernel-8.4, + sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19013 Application(s): ssh + Related Id(s): GH-7897, PR-8220 + + With this change, owner and group file attributes + decoding is fixed and results with value of integer + type. + + + Full runtime dependencies of ssh-4.15.3.4: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.4 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.4 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19031 Application(s): stdlib + Related Id(s): GH-8268 + + Attempting to use the maybe construct in a macro + argument could crash the compiler. + + + Full runtime dependencies of stdlib-4.3.1.4: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.12.README.txt b/release-notes/OTP-25.3.2.12.README.txt new file mode 100644 index 0000000..78c8ad9 --- /dev/null +++ b/release-notes/OTP-25.3.2.12.README.txt @@ -0,0 +1,104 @@ +Patch Package: OTP 25.3.2.12 +Git Tag: OTP-25.3.2.12 +Date: 2024-05-02 +Trouble Report Id: OTP-19065, OTP-19070, OTP-19071, OTP-19076 +Seq num: ERIERL-1073, GH-8356, GH-8385, OTP-18999, + PR-8367, PR-8380 +System: OTP +Release: 25 +Application: erts-13.2.2.9, mnesia-4.21.4.3, ssl-10.9.1.4 +Predecessor: OTP 25.3.2.11 + + Check out the git tag OTP-25.3.2.12, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.9 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.9 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19070 Application(s): erts + Related Id(s): GH-8385 + + ETS functions did not properly handle keys containing + maps, sometimes matching too many or too few objects. + + + OTP-19071 Application(s): erts + Related Id(s): PR-8380, OTP-18999 + + Fix CPU quota determination for cgroups. + + The bug was introduced through OTP-18999. + + + Full runtime dependencies of erts-13.2.2.9: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- mnesia-4.21.4.3 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.4.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19076 Application(s): mnesia + Related Id(s): ERIERL-1073 + + Mnesia could crash during startup if del_table_copy/2 + and add_table_copy/3 was invoked when the table was + loading. + + + Full runtime dependencies of mnesia-4.21.4.3: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19065 Application(s): ssl + Related Id(s): GH-8356, PR-8367 + + Fix certificate authorities check so that CA closest to + peer is not lost. It could manifest itself in a failed + connection as the client failed to realize it had a + valid certificate chain to send to the server. + + + Full runtime dependencies of ssl-10.9.1.4: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.13.README.txt b/release-notes/OTP-25.3.2.13.README.txt new file mode 100644 index 0000000..8e0e581 --- /dev/null +++ b/release-notes/OTP-25.3.2.13.README.txt @@ -0,0 +1,127 @@ +Patch Package: OTP 25.3.2.13 +Git Tag: OTP-25.3.2.13 +Date: 2024-07-08 +Trouble Report Id: OTP-19057, OTP-19109, OTP-19123, OTP-19140, + OTP-19147, OTP-19154 +Seq num: ERIERL-1043, ERIERL-1106, GH-7483, GH-8484, + GH-8613, PR-8345, PR-8546, PR-8619, PR-8627 +System: OTP +Release: 25 +Application: erts-13.2.2.10, ssh-4.15.3.5, ssl-10.9.1.5 +Predecessor: OTP 25.3.2.12 + + Check out the git tag OTP-25.3.2.13, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.10 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.10 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19123 Application(s): erts + Related Id(s): GH-8484, PR-8546 + + 'DOWN' messages originating from a monitored port, + contained the atom process instead of the atom port as + the third element when the exit reason was not an + immediate term. + + + OTP-19147 Application(s): erts + Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619 + + When no time warp mode was enabled, a smaller Erlang + monotonic time could be read than a previously read + time, i.e., breaking the monotonic property. The + runtime system will abort when detecting an issue like + this since OTP 24.3.4.17 and OTP 25.0. + + Up until OTP 25 no time warp mode is the default. As of + OTP 26 multi time warp mode is the default. + + + OTP-19154 Application(s): erts + Related Id(s): GH-8613, PR-8627 + + A scheduler thread could get stuck when deleting a + memory allocator carrier when adjacent carriers were + deleted and/or inserted simultaneously by other + schedulers. This in turn could cause the other + schedulers to get stuck as well. + + + Full runtime dependencies of erts-13.2.2.10: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.5 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19057 Application(s): ssh + Related Id(s): GH-7483, PR-8345 + + With this change, ssh client will automatically adjust + transfer window size for commands executed remotely + over SSH. + + + OTP-19109 Application(s): ssh + Related Id(s): PR-8345 + + With this change, race condition between connection + closing and automatic window adjustment is fixed. + + + Full runtime dependencies of ssh-4.15.3.5: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19140 Application(s): ssl + + TLS-1.3 negotiation now uses SNI based options + correctly instead of ignoring them. + + + Full runtime dependencies of ssl-10.9.1.5: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.14.README.txt b/release-notes/OTP-25.3.2.14.README.txt new file mode 100644 index 0000000..9e57046 --- /dev/null +++ b/release-notes/OTP-25.3.2.14.README.txt @@ -0,0 +1,120 @@ +Patch Package: OTP 25.3.2.14 +Git Tag: OTP-25.3.2.14 +Date: 2024-09-19 +Trouble Report Id: OTP-19170, OTP-19173, OTP-19179, OTP-19206, + OTP-19217 +Seq num: ERIERL-1102, ERIERL-1104, GH-7746, PR-8310 +System: OTP +Release: 25 +Application: diameter-2.2.7.2, public_key-1.13.3.3, + ssh-4.15.3.6, xmerl-1.3.31.2 +Predecessor: OTP 25.3.2.13 + + Check out the git tag OTP-25.3.2.14, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- diameter-2.2.7.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The diameter-2.2.7.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19206 Application(s): diameter + Related Id(s): ERIERL-1102 + + `diameter:stop_service/1` has been made more + synchronous. + + + Full runtime dependencies of diameter-2.2.7.2: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.3 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19179 Application(s): public_key + + For completeness handle rsa_pss implicit default value, + although this will probably not be commonly used as it + provides very weak security. + + + Full runtime dependencies of public_key-1.13.3.3: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.6 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19170 Application(s): ssh + Related Id(s): GH-7746 + + The SSh daemon started with a TCP port number argument + will now re-try obtaining a listen socket before + returning an error to the user. + + + OTP-19173 Application(s): ssh + Related Id(s): PR-8310 + + Robustness has been improved by monitoring the + connection handler process before casting the socket + control notification. + + + Full runtime dependencies of ssh-4.15.3.6: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- xmerl-1.3.31.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.31.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19217 Application(s): xmerl + Related Id(s): ERIERL-1104 + + Corrected export functions from internal structure to + XML so xmlText items of type cdata are handled + correctly. They were just exported as normal text + instead of output in a CDATA section. + + + Full runtime dependencies of xmerl-1.3.31.2: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + jakob svenningsson + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.15.README.txt b/release-notes/OTP-25.3.2.15.README.txt new file mode 100644 index 0000000..58725ea --- /dev/null +++ b/release-notes/OTP-25.3.2.15.README.txt @@ -0,0 +1,291 @@ +Patch Package: OTP 25.3.2.15 +Git Tag: OTP-25.3.2.15 +Date: 2024-10-14 +Trouble Report Id: OTP-19124, OTP-19158, OTP-19221, OTP-19236, + OTP-19238, OTP-19246, OTP-19247, OTP-19252, + OTP-19256, OTP-19257, OTP-19265, OTP-19266, + OTP-19269, OTP-19274, OTP-19284 +Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1127, + ERIERL-1131, GH-7550, GH-8223, GH-8835, + PR-8226, PR-8261, PR-8766, PR-8780, PR-8788, + PR-8801, PR-8831, PR-8854, PR-8858, PR-8876, + PR-8890, PR-8897, PR-8901, PR-8909 +System: OTP +Release: 25 +Application: common_test-1.24.0.4, erts-13.2.2.11, + inets-8.3.1.4, public_key-1.13.3.4, + ssh-4.15.3.7, ssl-10.9.1.6, stdlib-4.3.1.5 +Predecessor: OTP 25.3.2.14 + + Check out the git tag OTP-25.3.2.15, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-19158 Application(s): inets + + With this change, HTTP client, when returning an + asynchronous request, now correctly takes into account + `OptionRequest - full_result` + + + --------------------------------------------------------------------- + --- common_test-1.24.0.4 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.4 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19252 Application(s): common_test + Related Id(s): PR-8858 + + With this change, HTML reports include jQuery version + 3.7.1. + + + OTP-19265 Application(s): common_test + Related Id(s): PR-8876 + + With this change, jquery and tablesorter licenses are + added to COPYRIGHT file. Also tablesorter is updated to + version 2.32. + + + OTP-19284 Application(s): common_test + Related Id(s): ERIERL-1093, PR-8909 + + Fixed a bug where the sum of testcases' execution time + in HTML logs was sometimes miscalculated, and the table + was not fully printed. + + + Full runtime dependencies of common_test-1.24.0.4: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erts-13.2.2.11 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.11 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19269 Application(s): erts + Related Id(s): GH-8835, PR-8897 + + Fixed beam crash that could happen if resetting + call_time or call_memory trace counters of a function + while it is called. Bug exists since OTP R16. + + + Full runtime dependencies of erts-13.2.2.11: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3.1.4 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19158 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, HTTP client, when returning an + asynchronous request, now correctly takes into account + `OptionRequest - full_result` + + + OTP-19221 Application(s): inets + Related Id(s): ERIERL-1091, PR-8788, PR-8801 + + With this change, synchronous httpc:request now + timeouts after `Timeout` specified in `HttpOption + {timeout, Timeout}` + + + Full runtime dependencies of inets-8.3.1.4: erts-13.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.4 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.4 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-19238 Application(s): public_key + Related Id(s): PR-8831 + + Do not hide crypto badarg reason, this error handling + enhancement facilitates debugging. These kind of + runtime errors are not documented and should never be + relied on for matching, they are intended for catching + input errors early. + + + Full runtime dependencies of public_key-1.13.3.4: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.7 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.7 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19124 Application(s): ssh + Related Id(s): GH-7550, PR-8766 + + With this change, a race condition is removed from ssh + client connection setup procedure. + + + OTP-19246 Application(s): ssh + Related Id(s): GH-8223, PR-8854 + + With this change, ssh:connect is not affected by + presence of EXIT message in queue. + + + OTP-19247 Application(s): ssh + Related Id(s): PR-8226 + + With this change, ssh appends {active, false} option + after socket options received from user - so that false + value is always used. + + + Full runtime dependencies of ssh-4.15.3.7: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.6 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19236 Application(s): ssl + Related Id(s): PR-8261 + + Starting from TLS-1.3 some server handshake alerts + might arrive after ssl:connection/2,3,4 has returned. + If the socket is in active mode the controlling process + will get the alert message, but passive sockets would + only get {error, closed} on next call to ssl:recv/2,3 + or ssl/setopts/2. Passive sockets calls will now return + {error, error_alert()} instead. + + + OTP-19257 Application(s): ssl + Related Id(s): ERIERL-1131 + + Servers configured to support only version (pre + TLS-1.2) should ignore hello version extension, as it + is an unknown extension to them, this will result in + that new clients that do not support the old server + version will get an insufficient security alert from + the server and not a protocol version alert, this is + consistent with how old servers not able to support + higher protocol versions work. + + + OTP-19274 Application(s): ssl + Related Id(s): PR-8901 + + Correct timeout handling for termination code run for + own alerts, so that intended timeout is used instead of + falling back to OS TCP-stack timeout that is + unreasonably long on some platforms. + + + Full runtime dependencies of ssl-10.9.1.6: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.5 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.5 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19256 Application(s): stdlib + Related Id(s): PR-8780 + + With this change, shutdown procedure handles a race + condition between supervisor executing a shutdown and + child process termination from other reason. + + + OTP-19266 Application(s): stdlib + Related Id(s): ERIERL-1127, PR-8890 + + With this change, uri_string:normalize assumes empty + path (do not crash) when no path is provided in the URI + map. + + + Full runtime dependencies of stdlib-4.3.1.5: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Jakub Witczak + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.16.README.txt b/release-notes/OTP-25.3.2.16.README.txt new file mode 100644 index 0000000..8851d88 --- /dev/null +++ b/release-notes/OTP-25.3.2.16.README.txt @@ -0,0 +1,240 @@ +Patch Package: OTP 25.3.2.16 +Git Tag: OTP-25.3.2.16 +Date: 2024-12-05 +Trouble Report Id: OTP-19240, OTP-19311, OTP-19326, OTP-19330, + OTP-19350, OTP-19352, OTP-19365, OTP-19379, + OTP-19380 +Seq num: CVE-2024-53846, ERIERL-1157, GH-8755, + GH-8829, GH-8929, GH-8983, GH-9009, + OTP-19240, OTP-19532, PR-8840, PR-8878, + PR-8980, PR-8995, PR-9008, PR-9053, PR-9080, + PR-9130 +System: OTP +Release: 25 +Application: common_test-1.24.0.5, erts-13.2.2.12, + inets-8.3.1.5, public_key-1.13.3.5, + ssh-4.15.3.8, ssl-10.9.1.7, stdlib-4.3.1.6 +Predecessor: OTP 25.3.2.15 + + Check out the git tag OTP-25.3.2.16, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.24.0.5 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.5 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19365 Application(s): common_test + Related Id(s): ERIERL-1157, PR-9080 + + With this change, cth_surefire hook module handles + group path reduction for a skipped group. This fixes a + bug manifesting with improper group path for a group + executed after a group which was skipped. + + + Full runtime dependencies of common_test-1.24.0.5: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erts-13.2.2.12 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.12 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19330 Application(s): erts + Related Id(s): GH-8983, PR-9008 + + Fix lock order violation if a NIF monitor down callback + calls enif_whereis_pid. Would cause debug emulator to + crash but could potentially lead to deadlocks in + optimized emulator. + + + Full runtime dependencies of erts-13.2.2.12: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3.1.5 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1.5 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19379 Application(s): inets + Related Id(s): GH-8829, PR-8878 + + Fixed a bug where calling httpc:set_options/2 when one + of keys: ipfamily or unix_socket, was not present, + would cause the other value to get overriden by the + default value. The validation of these options was also + improved. + + + Full runtime dependencies of inets-8.3.1.5: erts-13.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.5 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.5 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19240 Application(s): public_key + Related Id(s): PR-8840, OTP-19532 + + If both ext-key-usage and key-usage are defined for a + certificate it should be checked that these usages are + consistent with each other. This will have the affect + that such certificates where the ext-key-usages is + marked as critical and the usages is consistent with + the key-use it can be considered valid without + mandatory application specific checks for the + ext-key-useage extension. + + + OTP-19350 Application(s): public_key + Related Id(s): GH-9009, PR-9053 + + Handle decoding of EDDSA key properly, when decoding a + PEM file that contains only the public EDDSA key. + + + Full runtime dependencies of public_key-1.13.3.5: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.8 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.8 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19326 Application(s): ssh + Related Id(s): GH-8929, PR-8995 + + With this change, ssh connection does not crash upon + receiving exit-signal message for an already terminated + channel. + + + Full runtime dependencies of ssh-4.15.3.8: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.7 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.7 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19311 Application(s): ssl + Related Id(s): PR-8980 + + Avoid generating an internal alert for case that should + have been an orderly shutdown by the supervisor. + + + OTP-19352 Application(s): ssl + Related Id(s): PR-9130, CVE-2024-53846, OTP-19240 + + If present, extended key-usage TLS (SSL) role check + (pk-clientAuth, pk-serverAuth) should always be + performed for peer-cert. An intermediate CA cert may + relax the requirement if AnyExtendedKeyUsage purpose is + present. + + In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these + requirements became too relaxed. There where two + problems, firstly the peer cert extension was only + checked if it was marked critical, and secondly the CA + cert check did not assert the relaxed + AnyExtendedKeyUsage purpose. + + This could result in that certificates might be misused + for purposes not intended by the certificate authority. + + Thanks to Bryan Paxton for reporting the issue. + + + Full runtime dependencies of ssl-10.9.1.7: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.6 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.6 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19380 Application(s): stdlib + Related Id(s): GH-8755 + + Fixed an error in uri_string:percent_decode spec + + + Full runtime dependencies of stdlib-4.3.1.6: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Marko Mindek, zmstone + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.17.README.txt b/release-notes/OTP-25.3.2.17.README.txt new file mode 100644 index 0000000..5e71330 --- /dev/null +++ b/release-notes/OTP-25.3.2.17.README.txt @@ -0,0 +1,145 @@ +Patch Package: OTP 25.3.2.17 +Git Tag: OTP-25.3.2.17 +Date: 2025-02-12 +Trouble Report Id: OTP-19381, OTP-19385, OTP-19388, OTP-19392, + OTP-19435, OTP-19462 +Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1177, + GH-9065, GH-9112, GH-9117, PR-9139, PR-9155, + PR-9156, PR-9161, PR-9309, PR-9372, PR-9377 +System: OTP +Release: 25 +Application: common_test-1.24.0.6, erts-13.2.2.13, + kernel-8.5.4.4, ssh-4.15.3.9 +Predecessor: OTP 25.3.2.16 + + Check out the git tag OTP-25.3.2.17, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.24.0.6 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.6 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19385 Application(s): common_test + Related Id(s): ERIERL-1166, PR-9155, PR-9156 + + Common test will now not crash when running tests with + OTP-26 and earlier, while having previous test results + from OTP-27. + + + Full runtime dependencies of common_test-1.24.0.6: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erts-13.2.2.13 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.13 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19462 Application(s): erts + Related Id(s): ERIERL-1177, PR-9372 + + Disabled an unsafe runtime optimization in binary + construction that caused silent memory corruption. + + + Full runtime dependencies of erts-13.2.2.13: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.4 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.4 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19381 Application(s): kernel + Related Id(s): GH-9112, GH-9117, PR-9377 + + Fixed a couple of bugs that could make global's + internal state inconsistent when a connection was + reconnected. + + + Full runtime dependencies of kernel-8.5.4.4: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.9 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.9 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19388 Application(s): ssh + Related Id(s): ERIERL-1165, PR-9161 + + With this change, type specs for + ssh:connection_info/1,2 functions are fixed so they + include {error, term()} return value. + + + OTP-19392 Application(s): ssh + Related Id(s): GH-9065, PR-9139 + + With this change, ssh client accepts a banner sent + during processing keyboard interactive user + authentication. + + + OTP-19435 Application(s): ssh + Related Id(s): PR-9309 + + With this change, large sftp transfers does not hang. + Redundant window adjustment are not requested. + + + Full runtime dependencies of ssh-4.15.3.9: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Alexandre Rodrigues + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.18.README.txt b/release-notes/OTP-25.3.2.18.README.txt new file mode 100644 index 0000000..a1818a7 --- /dev/null +++ b/release-notes/OTP-25.3.2.18.README.txt @@ -0,0 +1,98 @@ +Patch Package: OTP 25.3.2.18 +Git Tag: OTP-25.3.2.18 +Date: 2025-02-20 +Trouble Report Id: OTP-19240, OTP-19466, OTP-19495 +Seq num: CVE-2025-26618, ERIERL-1173, GH-8208, + GH-9208, PR-8209, PR-9286 +System: OTP +Release: 25 +Application: erts-13.2.2.14, public_key-1.13.3.6, + ssh-4.15.3.10 +Predecessor: OTP 25.3.2.17 + + Check out the git tag OTP-25.3.2.18, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.14 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.14 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19495 Application(s): erts + Related Id(s): GH-8208, PR-8209 + + Fixed BEAM crash when a custom thread sends a large map + (>128 keys) externally encoded with for example + erl_drv_send_term(). + + + Full runtime dependencies of erts-13.2.2.14: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.6 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.6 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19240 Application(s): public_key + Related Id(s): GH-9208, PR-9286 + + Consider keyCertSign to compatible with extended key + usage for TLS client/server auth in CAs, adhere to wide + spread implementations + + + Full runtime dependencies of public_key-1.13.3.6: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.10 --------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.10 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19466 Application(s): ssh + Related Id(s): ERIERL-1173, CVE-2025-26618 + + SFTP packets exceeding max packet size are not + processed and dropped. + + + Full runtime dependencies of ssh-4.15.3.10: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Simon Cornish + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.19.README.txt b/release-notes/OTP-25.3.2.19.README.txt new file mode 100644 index 0000000..315b209 --- /dev/null +++ b/release-notes/OTP-25.3.2.19.README.txt @@ -0,0 +1,135 @@ +Patch Package: OTP 25.3.2.19 +Git Tag: OTP-25.3.2.19 +Date: 2025-03-28 +Trouble Report Id: OTP-19501, OTP-19527, OTP-19543, OTP-19545, + OTP-19559 +Seq num: CVE-2025-30211, ERIERL-1195, GH-9554, + OTP-19544, PR-9499, PR-9545, PR-9577, PR-9587 +System: OTP +Release: 25 +Application: erts-13.2.2.15, kernel-8.5.4.5, + mnesia-4.21.4.4, ssh-4.15.3.11 +Predecessor: OTP 25.3.2.18 + + Check out the git tag OTP-25.3.2.19, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.15 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.15 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19527 Application(s): erts + Related Id(s): PR-9577 + + Trace messages due to receive tracing could potentially + be delayed a very long time if the traced process + waited in a receive expression without clauses matching + on messages (timed wait), or just did not enter a + receive expression for a very long time. + + + Full runtime dependencies of erts-13.2.2.15: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.5 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.5 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19545 Application(s): kernel + Related Id(s): PR-9587, OTP-19544 + + An infinite loop in CNAME loop detection that can cause + Out Of Memory has been fixed. This affected CNAME + lookup with the internal DNS resolver. + + + Full runtime dependencies of kernel-8.5.4.5: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- mnesia-4.21.4.4 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.4.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19501 Application(s): mnesia + Related Id(s): ERIERL-1195, PR-9499 + + Mnesia could fail to load a table, if one of the copy + holders was moved during startup. + + + Full runtime dependencies of mnesia-4.21.4.4: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.11 --------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.11 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19543 Application(s): ssh + Related Id(s): CVE-2025-30211 + + Reception of malicious KEX init message does not result + with ssh daemon excessive memory usage. + + + OTP-19559 Application(s): ssh + Related Id(s): GH-9554, PR-9545 + + Call to ssh:daemon_replace_options does not crash when + argument is not a valid daemon ref. + + + Full runtime dependencies of ssh-4.15.3.11: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Alexandre Rodrigues, Sergei Shuvatov + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.2.README.txt b/release-notes/OTP-25.3.2.2.README.txt new file mode 100644 index 0000000..2eb454e --- /dev/null +++ b/release-notes/OTP-25.3.2.2.README.txt @@ -0,0 +1,40 @@ +Patch Package: OTP 25.3.2.2 +Git Tag: OTP-25.3.2.2 +Date: 2023-06-07 +Trouble Report Id: OTP-18617 +Seq num: GH-7338 +System: OTP +Release: 25 +Application: compiler-8.2.6.2 +Predecessor: OTP 25.3.2.1 + + Check out the git tag OTP-25.3.2.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.6.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.2.6.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18617 Application(s): compiler + Related Id(s): GH-7338 + + The compiler could be very slow when compiling guards + with multiple guard tests separated with 'or' or ';'. + + + Full runtime dependencies of compiler-8.2.6.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.20.README.txt b/release-notes/OTP-25.3.2.20.README.txt new file mode 100644 index 0000000..1f21f44 --- /dev/null +++ b/release-notes/OTP-25.3.2.20.README.txt @@ -0,0 +1,51 @@ +Patch Package: OTP 25.3.2.20 +Git Tag: OTP-25.3.2.20 +Date: 2025-04-16 +Trouble Report Id: OTP-19582, OTP-19595 +Seq num: CVE-2025-32433, PR-9679 +System: OTP +Release: 25 +Application: ssh-4.15.3.12 +Predecessor: OTP 25.3.2.19 + + Check out the git tag OTP-25.3.2.20, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- ssh-4.15.3.12 --------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.12 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19582 Application(s): ssh + Related Id(s): PR-9679 + + Reception of wrong Unicode does not cause unnecessary + processing. US-ASCII fields are not decoded as Unicode. + + + OTP-19595 Application(s): ssh + Related Id(s): CVE-2025-32433 + + SSH daemon disconnects upon receiving connection + protocol message for unauthenticated used. + + Thanks to Fabian Bäumer, Marcel Maehren, Marcus + Brinkmann, Nurullah Erinola, Jörg Schwenk (Ruhr + University Bochum). + + + Full runtime dependencies of ssh-4.15.3.12: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.21.README.txt b/release-notes/OTP-25.3.2.21.README.txt new file mode 100644 index 0000000..bedbc2d --- /dev/null +++ b/release-notes/OTP-25.3.2.21.README.txt @@ -0,0 +1,117 @@ +Patch Package: OTP 25.3.2.21 +Git Tag: OTP-25.3.2.21 +Date: 2025-05-08 +Trouble Report Id: OTP-19577, OTP-19599, OTP-19605, OTP-19608, + OTP-19625 +Seq num: CVE-2025-46712, ERIERL-1220, GH-9707, + GH-9720, PR-9696, PR-9724, PR-9765, PR-9767 +System: OTP +Release: 25 +Application: erts-13.2.2.16, kernel-8.5.4.6, ssh-4.15.3.13 +Predecessor: OTP 25.3.2.20 + + Check out the git tag OTP-25.3.2.21, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.16 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.16 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19577 Application(s): erts + Related Id(s): ERIERL-1220, PR-9696 + + Fixed an emulator crash when setting an error_handler + module that was not yet loaded. + + + OTP-19599 Application(s): erts + Related Id(s): PR-9724 + + Fixed a rare bug that could cause an emulator crash + after unloading a module or erasing a persistent_term. + + + Full runtime dependencies of erts-13.2.2.16: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.6 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.6 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-19605 Application(s): kernel + Related Id(s): GH-9720, PR-9765 + + With this change, disk_log will not crash when using + chunk_step/3 after log size was decreased. + + + OTP-19608 Application(s): kernel + Related Id(s): GH-9707, PR-9767 + + With this change, disk_log will not run into infinite + loop when using chunk/2,3 after log size was decreased. + + + Full runtime dependencies of kernel-8.5.4.6: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.13 --------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.13 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19625 Application(s): ssh + Related Id(s): CVE-2025-46712 + + Fix KEX strict implementation according to + draft-miller-sshm-strict-kex-01 document. + + + Full runtime dependencies of ssh-4.15.3.13: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + João Henrique Ferreira de Freitas, Lý Nhật Tâm + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.3.README.txt b/release-notes/OTP-25.3.2.3.README.txt new file mode 100644 index 0000000..85217ad --- /dev/null +++ b/release-notes/OTP-25.3.2.3.README.txt @@ -0,0 +1,211 @@ +Patch Package: OTP 25.3.2.3 +Git Tag: OTP-25.3.2.3 +Date: 2023-06-29 +Trouble Report Id: OTP-18618, OTP-18626, OTP-18635, OTP-18643, + OTP-18644, OTP-18650, OTP-18659 +Seq num: ERIERL-932, GH-7336, GH-7356 +System: OTP +Release: 25 +Application: compiler-8.2.6.3, debugger-5.3.1.1, + erts-13.2.2.2, kernel-8.5.4.1, ssl-10.9.1.1, + stdlib-4.3.1.2 +Predecessor: OTP 25.3.2.2 + + Check out the git tag OTP-25.3.2.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.6.3 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.2.6.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18626 Application(s): compiler + Related Id(s): GH-7356 + + Fixed a bug that could cause the stack trace of throw + exceptions to be erroneously optimized out. + + + Full runtime dependencies of compiler-8.2.6.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- debugger-5.3.1.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The debugger-5.3.1.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18644 Application(s): debugger + Related Id(s): GH-7336 + + The call int:no_break(Module) did not remove any + breakpoints. + + + Full runtime dependencies of debugger-5.3.1.1: compiler-8.0, + erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-13.2.2.2 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18635 Application(s): erts, kernel + Related Id(s): #7328 + + Multiple socket:accept calls issue. When making + multiple accept calls, only the last call is active. + + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + Full runtime dependencies of erts-13.2.2.2: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.1 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.1 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18635 Application(s): erts, kernel + Related Id(s): #7328 + + Multiple socket:accept calls issue. When making + multiple accept calls, only the last call is active. + + + OTP-18650 Application(s): kernel + + gen_udp:connect with inet_backend = socket fails when + the Address is a hostname (string or atom). + + + Full runtime dependencies of kernel-8.5.4.1: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.1 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18643 Application(s): ssl + Related Id(s): ERIERL-932 + + Added keylog information to all protocol versions in + ssl:connection_information/2. + + + --- Improvements and New Features --- + + OTP-18618 Application(s): ssl + Related Id(s): ERIERL-932 + + Add RFC-6083 considerations for DTLS to enable gen_sctp + based callback for the transport. + + + Full runtime dependencies of ssl-10.9.1.1: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.2 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.2 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + Full runtime dependencies of stdlib-4.3.1.2: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.4.README.txt b/release-notes/OTP-25.3.2.4.README.txt new file mode 100644 index 0000000..783da0e --- /dev/null +++ b/release-notes/OTP-25.3.2.4.README.txt @@ -0,0 +1,42 @@ +Patch Package: OTP 25.3.2.4 +Git Tag: OTP-25.3.2.4 +Date: 2023-07-17 +Trouble Report Id: OTP-18664 +Seq num: ERIERL-959 +System: OTP +Release: 25 +Application: common_test-1.24.0.1 +Predecessor: OTP 25.3.2.3 + + Check out the git tag OTP-25.3.2.4, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.24.0.1 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18664 Application(s): common_test + Related Id(s): ERIERL-959 + + With this change, prompt search functionality in + ct_telnet handles unicode input. + + + Full runtime dependencies of common_test-1.24.0.1: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.5.README.txt b/release-notes/OTP-25.3.2.5.README.txt new file mode 100644 index 0000000..c41ded4 --- /dev/null +++ b/release-notes/OTP-25.3.2.5.README.txt @@ -0,0 +1,42 @@ +Patch Package: OTP 25.3.2.5 +Git Tag: OTP-25.3.2.5 +Date: 2023-07-31 +Trouble Report Id: OTP-18688 +Seq num: ERIERL-962 +System: OTP +Release: 25 +Application: inets-8.3.1.1 +Predecessor: OTP 25.3.2.4 + + Check out the git tag OTP-25.3.2.5, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- inets-8.3.1.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18688 Application(s): inets + Related Id(s): ERIERL-962 + + Fixed a bug so httpd does not crash when stopped at the + wrong time during TLS connection negotiation, or any + other theoretically as slow connection setup. + + + Full runtime dependencies of inets-8.3.1.1: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.6.README.txt b/release-notes/OTP-25.3.2.6.README.txt new file mode 100644 index 0000000..e4dc7f2 --- /dev/null +++ b/release-notes/OTP-25.3.2.6.README.txt @@ -0,0 +1,278 @@ +Patch Package: OTP 25.3.2.6 +Git Tag: OTP-25.3.2.6 +Date: 2023-09-07 +Trouble Report Id: OTP-18647, OTP-18670, OTP-18700, OTP-18704, + OTP-18706, OTP-18707, OTP-18708, OTP-18711, + OTP-18712, OTP-18718, OTP-18732, OTP-18737, + OTP-18740, OTP-18752 +Seq num: ERIERL-962, ERIERL-963, ERIERL-979, GH-7410, + GH-7413, GH-7431, GH-7436, GH-7444, GH-7507, + GH-7546 +System: OTP +Release: 25 +Application: crypto-5.1.4.1, debugger-5.3.1.2, + erts-13.2.2.3, inets-8.3.1.2, kernel-8.5.4.2, + mnesia-4.21.4.1, public_key-1.13.3.1, + ssl-10.9.1.2 +Predecessor: OTP 25.3.2.5 + + Check out the git tag OTP-25.3.2.6, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.1.4.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.4.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18670 Application(s): crypto + Related Id(s): GH-7436, PR-7450 + + Fix VM crash caused by crypto being purged and reloaded + (by init:restart for example) on OS with musl libc + (such as Alpine linux). + + + Full runtime dependencies of crypto-5.1.4.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.1.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The debugger-5.3.1.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18740 Application(s): debugger + Related Id(s): GH-7410, PR-7599 + + The maybe expression is now supported in the Debugger. + + + Full runtime dependencies of debugger-5.3.1.2: compiler-8.0, + erts-12.0, kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-13.2.2.3 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18647 Application(s): erts + Related Id(s): PR-7595 + + A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That + is, the processes was not woken up to take care of the + signal, so the signal would not be taken care of until + the process was woken by another signal. Only processes + configured with message_queue_data set to off_heap + utilize this optimization. + + + OTP-18706 Application(s): erts + Related Id(s): ERIERL-979, GH-7413, PR-7595 + + Delivery time of message signals to a process not + executing any receive expressions could become very + long, potentially infinite. For example, a process + checking for messages using process_info(self(), + message_queue_len) or process_info(self(), messages) + and avoiding to execute a receive expression matching + on messages could be very slow in detecting new + messages. Note that you are still discouraged from + using process_info() this way. A process that wants to + check if there are messages available to handle should + execute a receive expression matching on messages. + + + OTP-18732 Application(s): erts + Related Id(s): GH-7444, PR-7458 + + Fix bug causing "magic" references in a compressed ETS + table to not keep the referred object alive. The + symptom would be the referred object being garbage + collected prematurely and the reference appearing + stale, not referring to anything. Examples of such + magically referred objects are atomics and NIF + resources. + + + OTP-18737 Application(s): erts + Related Id(s): PR-7595 + + A constant flow of incoming non-message signals could + prevent a process needing to execute dirty from doing + so. + + + OTP-18752 Application(s): erts + Related Id(s): PR-7633 + + The cleanup operation of not yet delivered signals to a + terminated process yielded excessively. + + + Full runtime dependencies of erts-13.2.2.3: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3.1.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3.1.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18704 Application(s): inets + Related Id(s): ERIERL-962, OTP-18688, PR-7513 + + With this change, error report generated by httpd + during connection setup contains socket type + information. + + + OTP-18708 Application(s): inets + Related Id(s): ERIERL-962, OTP-18688 + + Stop and restart of the httpd server in the Inets + application has been refactored to a more synchronous + and OTP supervisor friendly approach. + + This should increase stability and for example avoid a + supervisor report from httpd_connection_sup about + killed child process(es) in some cases when stopping or + restarting httpd. + + + Full runtime dependencies of inets-8.3.1.2: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- kernel-8.5.4.2 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4.2 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18707 Application(s): kernel + Related Id(s): #7530 + + gen_tcp:connect with socket address and socket (inet-) + backend fails because of missing callback function. + + + Full runtime dependencies of kernel-8.5.4.2: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- mnesia-4.21.4.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.4.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18711 Application(s): mnesia + Related Id(s): ERIERL-963 + + Do not delete old backup file if the new backup fails. + + + Full runtime dependencies of mnesia-4.21.4.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.1 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18718 Application(s): public_key + Related Id(s): GH-7546 + + Country name comparison shall be case insensitive + + + Full runtime dependencies of public_key-1.13.3.1: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18700 Application(s): ssl + Related Id(s): GH-7507 + + The API function `ssl:recv/3` has been tightened to + disallow negative length, which has never been + documented to work, but was passed through and caused + strange errors. + + + OTP-18712 Application(s): ssl + Related Id(s): GH-7431 + + When a client initiated renegotiation was rejected and + the client socket was in active mode the expected error + message to the controlling process was not sent. + + + Full runtime dependencies of ssl-10.9.1.2: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.7.README.txt b/release-notes/OTP-25.3.2.7.README.txt new file mode 100644 index 0000000..e1c5dd3 --- /dev/null +++ b/release-notes/OTP-25.3.2.7.README.txt @@ -0,0 +1,106 @@ +Patch Package: OTP 25.3.2.7 +Git Tag: OTP-25.3.2.7 +Date: 2023-10-12 +Trouble Report Id: OTP-18773, OTP-18790, OTP-18792, OTP-18797 +Seq num: GH-7683, GH-7687 +System: OTP +Release: 25 +Application: erts-13.2.2.4, stdlib-4.3.1.3 +Predecessor: OTP 25.3.2.6 + + Check out the git tag OTP-25.3.2.7, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-13.2.2.4 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18790 Application(s): erts + Related Id(s): PR-7742 + + If the external term format encoding of an argument + list part of a distributed spawn operation was faulty, + the newly spawned remote process could misbehave. The + misbehavior included hanging or interpret an incoming + message as an argument list to use. This was very + unlikely to happen unless using an alternate + implementation of the distribution protocol which made + a faulty encoding of the argument list. The child + process will now detect this error and terminate before + executing the user specified code. + + + OTP-18792 Application(s): erts + Related Id(s): GH-7687 + + On Apple Silicon Macs running macOS Sonoma, the runtime + system with the JIT enabled would crash. Therefore, the + configure script will by default now disable the JIT on + Macs with Apple Silicon. When building for earlier + versions of macOS, the JIT can be explicitly enabled by + passing --enable-jit to the configure script. + + + OTP-18797 Application(s): erts + Related Id(s): GH-7683, PR-7712 + + Fix bugs where if the body of a matchspec would return + a map with a variable ('$1', '$_' etc) as one of the + keys or values and the variable was not an immidiate, + the term would not be copied to the receiving processes + heap. This would later corrupt the term in the table as + the GC could place move markers in it, which in turn + would cause the VM to crash. + + Bug has been present for since OTP 17.0. + + + Full runtime dependencies of erts-13.2.2.4: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3.1.3 -------------------------------------------------- + --------------------------------------------------------------------- + + Note! The stdlib-4.3.1.3 application *cannot* be applied + independently of other applications on an arbitrary OTP 25 + installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Improvements and New Features --- + + OTP-18773 Application(s): stdlib + Related Id(s): PR-7691 + + Garbage collect the shell process when reducing the + amount of saved history and results. + + + Full runtime dependencies of stdlib-4.3.1.3: compiler-5.0, + crypto-4.5, erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.8.README.txt b/release-notes/OTP-25.3.2.8.README.txt new file mode 100644 index 0000000..a2a876f --- /dev/null +++ b/release-notes/OTP-25.3.2.8.README.txt @@ -0,0 +1,348 @@ +Patch Package: OTP 25.3.2.8 +Git Tag: OTP-25.3.2.8 +Date: 2023-12-18 +Trouble Report Id: OTP-18739, OTP-18768, OTP-18802, OTP-18830, + OTP-18838, OTP-18839, OTP-18841, OTP-18842, + OTP-18844, OTP-18850, OTP-18869, OTP-18877, + OTP-18885, OTP-18886, OTP-18896, OTP-18897, + OTP-18899, OTP-18902 +Seq num: GH-7571, GH-7801, GH-7834, GH-7890 +System: OTP +Release: 25 +Application: asn1-5.0.21.1, erl_interface-5.3.2.1, + erts-13.2.2.5, mnesia-4.21.4.2, + public_key-1.13.3.2, ssh-4.15.3.1, + ssl-10.9.1.3, wx-2.2.2.1 +Predecessor: OTP 25.3.2.7 + + Check out the git tag OTP-25.3.2.8, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18897 Application(s): ssh + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + --------------------------------------------------------------------- + --- OTP-25.3.2.8 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18896 Application(s): otp + + Updated copyright and license information. + + + --------------------------------------------------------------------- + --- asn1-5.0.21.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.0.21.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18844 Application(s): asn1 + + Fix benign warning from gcc 11 about mismatching call + to free(). + + + Full runtime dependencies of asn1-5.0.21.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- erl_interface-5.3.2.1 ------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.3.2.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + --------------------------------------------------------------------- + --- erts-13.2.2.5 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.5 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18802 Application(s): erts + + Fix faulty debug assert when page size is larger than + 16kb, like on PowerPC. Did crash debug VM directly at + start. + + + OTP-18838 Application(s): erts + Related Id(s): GH-7801, PR-7822 + + A process with message_queue_data configured as + off_heap could end up in an inconsistent state when + being receive traced, inspected using process_info/2 + with the message_queue_len item, or inspected using the + break menu (CTRL-C). When it ended up in this + inconsistent state, it was not enqueued into a run + queue even though it was set in a runnable state.This + also effected signals being sent to the process after + it had gotten into this inconsistent state, in such a + way that it was from this point not possible to + communicate with it. + + + OTP-18839 Application(s): erts + Related Id(s): GH-7801, PR-7822 + + A race occurring when a process was selected for dirty + execution simultaneously as it was scheduled for + handling a signal could cause the process to end up in + an inconsistent state. When it ended up in this + inconsistent state, it was not enqueued into a run + queue even though it was set in a runnable state. This + also effected signals being sent to the process after + it had gotten into this inconsistent state, in such a + way that it was from this point not possible to + communicate with it. + + + OTP-18841 Application(s): erts + Related Id(s): GH-7801, OTP-18737, PR-7822 + + When a process had to to wait in the run queue for a + long time before being selected for dirty execution, it + could not receive signals. This caused inspection of + such a process, for example using process_info/2, to + take a long time. + + This issue was introduced in OTP 25.3.2.6 and 26.1 when + fixing an issue where a constant flow of signals + prevented a process from being able to execute dirty. + + + OTP-18842 Application(s): erts + + Fixed a bug in the JIT that miscompiled large + select_val instructions. + + + OTP-18885 Application(s): erts + Related Id(s): GH-7834, GH-7890, PR-7915 + + On OTP 24 and OTP 25, incoming distributed messages + larger than 64 KiB sent using an alias leaked memory if + the alias had been removed prior to entering the node. + This issue was not present on OTP 26. + + Incoming distributed messages larger than 64 KiB sent + using an alias which had been removed on the receiving + node could crash the node. This crash was quite + unlikely on OTP 24 and OTP 25, but very likely on OTP + 26. + + 'DOWN' signals with exit reason larger than 64 KiB + directed towards a process on a node with a not + matching creation leaked memory on the receiving node. + Such signals should however be very rare. + + + OTP-18902 Application(s): erts + + Removed unnecessary PCRE source tar-ball. + + + --- Improvements and New Features --- + + OTP-18830 Application(s): erts + Related Id(s): PR-7823 + + Removed unnecessary regexp library used when generating + yielding BIFs. + + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + OTP-18899 Application(s): erts + + Removed unused makewhatis script. + + + Full runtime dependencies of erts-13.2.2.5: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- mnesia-4.21.4.2 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.4.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18850 Application(s): mnesia + + mnesia:add_table_copy/3 no longer fails with reason + system_limit when the node is starting. + + + Full runtime dependencies of mnesia-4.21.4.2: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13.3.2 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18739 Application(s): public_key, ssl + + ssl application will validate id-kp-serverAuth and + id-kp-clientAuth extended key usage only in end entity + certificates. public_key application will disallow + "anyExtendedKeyUsage" for CA certificates that includes + the extended key usage extension and marks it critical. + + + Full runtime dependencies of public_key-1.13.3.2: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18869 Application(s): ssh + Related Id(s): GH-7571, PR-7849 + + With this change, connection handler does not execute + socket operations until it becomes socket owner. + Previously errors could occur if connection handler + tried to work with socket whose owner exited. + + + OTP-18897 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + Full runtime dependencies of ssh-4.15.3.1: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.9.1.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9.1.3 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18739 Application(s): public_key, ssl + + ssl application will validate id-kp-serverAuth and + id-kp-clientAuth extended key usage only in end entity + certificates. public_key application will disallow + "anyExtendedKeyUsage" for CA certificates that includes + the extended key usage extension and marks it critical. + + + OTP-18886 Application(s): ssl + + Add missing export for connection_info() API type. + + + Full runtime dependencies of ssl-10.9.1.3: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- wx-2.2.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The wx-2.2.2.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18768 Application(s): wx + Related Id(s): PR-7670 + + The wx application would fail to build on macOS with + Xcode 15. + + + Full runtime dependencies of wx-2.2.2.1: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.9.README.txt b/release-notes/OTP-25.3.2.9.README.txt new file mode 100644 index 0000000..5cace9a --- /dev/null +++ b/release-notes/OTP-25.3.2.9.README.txt @@ -0,0 +1,108 @@ +Patch Package: OTP 25.3.2.9 +Git Tag: OTP-25.3.2.9 +Date: 2024-02-08 +Trouble Report Id: OTP-18911, OTP-18932, OTP-18957, OTP-18964 +Seq num: ERIERL-1023, GH-8051 +System: OTP +Release: 25 +Application: common_test-1.24.0.2, erts-13.2.2.6, + ssh-4.15.3.2 +Predecessor: OTP 25.3.2.8 + + Check out the git tag OTP-25.3.2.9, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.24.0.2 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.24.0.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18932 Application(s): common_test + + Fix how CT finds Erlang/OTP releases for compatability + testing. This functionality is only used to test + Erlang/OTP. + + + Full runtime dependencies of common_test-1.24.0.2: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erts-13.2.2.6 --------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2.6 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18911 Application(s): erts + Related Id(s): ERIERL-1023, PR-7983 + + 32-bit runtime systems on most Unix like platforms + could crash if a BIF timer was set with a huge timeout + of more than 68 years into the future. In order for the + crash to occur, the huge timer (at a later time than + when it was set) had to become the nearest active timer + set on the specific scheduler on which it was set. This + could not happen on a system with only one scheduler + since there would always be shorter timers in the + system. + + Setting a timer larger than 49 days on Windows could + under rare circumstances cause the timeout to be + delayed. + + + OTP-18957 Application(s): erts + Related Id(s): GH-8051, OTP-18841, PR-8088 + + Garbage collection of a process on a dirty scheduler + could collide with signal handling for that process + causing a crash of the runtime system. This bug was + introduced in OTP 25.3.2.8 and OTP 26.2. + + + Full runtime dependencies of erts-13.2.2.6: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssh-4.15.3.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-4.15.3.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18964 Application(s): ssh + + With this change, Curve25519 and Curve448 KEX methods + become most preferred (related to RFC8731). + + + Full runtime dependencies of ssh-4.15.3.2: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.2.README.txt b/release-notes/OTP-25.3.2.README.txt new file mode 100644 index 0000000..6032244 --- /dev/null +++ b/release-notes/OTP-25.3.2.README.txt @@ -0,0 +1,101 @@ +Patch Package: OTP 25.3.2 +Git Tag: OTP-25.3.2 +Date: 2023-05-05 +Trouble Report Id: OTP-18559, OTP-18565, OTP-18570 +Seq num: ERIERL-942, GH-7147 +System: OTP +Release: 25 +Application: compiler-8.2.6, erts-13.2.2, os_mon-2.8.2 +Predecessor: OTP 25.3.1 + + Check out the git tag OTP-25.3.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.2.6 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.6 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18565 Application(s): compiler + Related Id(s): GH-7147 + + Fixed type handling bugs that could cause an internal + error in the compiler for correct code. + + + Full runtime dependencies of compiler-8.2.6: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- erts-13.2.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2.2 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18570 Application(s): erts + Related Id(s): PR-7190 + + If a runtime system which was starting the distribution + already had existing pids, ports, or references + referring to a node with the same nodename/creation + pair that the runtime system was about to use, these + already existing pids, ports, or references would not + work as expected in various situations after the node + had gone alive. This could only occur if the runtime + system was communicated such pids, ports, or references + prior to the distribution was started. That is, it was + extremely unlikely to happen unless the distribution + was started dynamically and was even then very unlikely + to happen. The runtime system now checks for already + existing pids, ports, and references with the same + nodename/creation pair that it is about to use. If such + are found another creation will be chosen in order to + avoid these issues. + + + Full runtime dependencies of erts-13.2.2: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- os_mon-2.8.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The os_mon-2.8.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18559 Application(s): os_mon + Related Id(s): ERIERL-942 + + Avoid error report from failing erlang:port_close at + shutdown of cpu_sup and memsup. Bug exists since OTP + 25.3 (os_mon-2.8.1). + + + Full runtime dependencies of os_mon-2.8.2: erts-6.0, kernel-3.0, + sasl-2.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-25.3.README.txt b/release-notes/OTP-25.3.README.txt new file mode 100644 index 0000000..e9a94c1 --- /dev/null +++ b/release-notes/OTP-25.3.README.txt @@ -0,0 +1,1150 @@ +Patch Package: OTP 25.3 +Git Tag: OTP-25.3 +Date: 2023-03-08 +Trouble Report Id: OTP-16607, OTP-18316, OTP-18348, OTP-18356, + OTP-18366, OTP-18371, OTP-18372, OTP-18373, + OTP-18374, OTP-18375, OTP-18378, OTP-18380, + OTP-18381, OTP-18382, OTP-18384, OTP-18387, + OTP-18390, OTP-18391, OTP-18392, OTP-18393, + OTP-18398, OTP-18404, OTP-18406, OTP-18407, + OTP-18408, OTP-18411, OTP-18412, OTP-18418, + OTP-18426, OTP-18429, OTP-18432, OTP-18434, + OTP-18443, OTP-18446, OTP-18454, OTP-18457, + OTP-18458, OTP-18460, OTP-18463, OTP-18469, + OTP-18470, OTP-18472, OTP-18475, OTP-18496 +Seq num: GH-4232, GH-4733, GH-5984, GH-6160, GH-6356, + GH-6402, GH-6403, GH-6448, GH-6475, GH-6506, + GH-6537, GH-6573, GH-6580, GH-6591, GH-6595, + GH-6601, GH-6604, GH-6656, GH-6672, GH-6677, + GH-6701, GH-6707, GH-6717, GH-6873, GH-6947 +System: OTP +Release: 25 +Application: common_test-1.24, compiler-8.2.4, + crypto-5.1.3, debugger-5.3.1, dialyzer-5.0.5, + erl_interface-5.3.1, erts-13.2, eunit-2.8.2, + ftp-1.1.4, inets-8.3, jinterface-1.13.2, + kernel-8.5.4, megaco-4.4.3, mnesia-4.21.4, + os_mon-2.8.1, public_key-1.13.3, + reltool-0.9.1, snmp-5.13.4, ssh-4.15.3, + ssl-10.9, stdlib-4.3, syntax_tools-3.0.1, + tftp-1.0.4, xmerl-1.3.31 +Predecessor: OTP 25.2.3 + + Check out the git tag OTP-25.3, and build a full OTP system including + documentation. Apply one or more applications from this build as + patches to your installation using the 'otp_patch_apply' tool. For + information on install requirements, see descriptions for each + application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-18374 Application(s): erts + Related Id(s): PR-6632 + + Support for fully asynchronous distributed signaling + where send operations *never* block. This functionality + is by default disabled and can be enabled per process. + For more information see the documentation of + process_flag(async_dist, Bool). + + + --------------------------------------------------------------------- + --- OTP-25.3 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18387 Application(s): otp + + Clarified the documentation on how to enable maybe + expressions. + + + --------------------------------------------------------------------- + --- common_test-1.24 ------------------------------------------------ + --------------------------------------------------------------------- + + The common_test-1.24 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18460 Application(s): common_test + + Renamed undocumented macro CT_PEER/3 to CT_PEER_REL/3. + + + Full runtime dependencies of common_test-1.24: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.2.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18378 Application(s): compiler + Related Id(s): GH-6604 + + Fixed a bug that would cause the compiler to hang. + + + OTP-18381 Application(s): compiler + Related Id(s): GH-6601 + + Fixed a crash when compiling code that contained maybe + expressions. + + + OTP-18407 Application(s): compiler + Related Id(s): GH-6707 + + Constructing a binary with an explicit size of all for + a binary segment would crash the compiler. + + + OTP-18470 Application(s): compiler + Related Id(s): GH-6873, PR-6877 + + The compiler would generate incorrect code for the + following type of expression: + + Pattern = BoundVar1 = . . . = BoundVarN = Expression + + An exception should be raised if any of the bound + variables have different values than Expression. The + compiler would generate code that would cause the bound + variables to be bound to the value of Expressionwhether + the value matched or not. + + + Full runtime dependencies of compiler-8.2.4: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.1.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18384 Application(s): crypto + Related Id(s): PR-6596 + + A user defined runtime library path configured using + --with-ssl-rpath=<PATHS> could fail to be enabled. + + + OTP-18408 Application(s): crypto + + Ensure that configure fails if a user defined runtime + library path has been passed by the user, but cannot + set. + + + Full runtime dependencies of crypto-5.1.3: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The debugger-5.3.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18372 Application(s): debugger, dialyzer, reltool, stdlib + Related Id(s): GH-6580 + + Fixed a bug that would cause analysis to crash. + + + Full runtime dependencies of debugger-5.3.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.0.5 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.0.5 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18372 Application(s): debugger, dialyzer, reltool, stdlib + Related Id(s): GH-6580 + + Fixed a bug that would cause analysis to crash. + + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of dialyzer-5.0.5: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erl_interface-5.3.1 --------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.3.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18404 Application(s): erl_interface, jinterface, kernel + Related Id(s): GH-6595, PR-6625 + + Accept connection setup from OTP 23 and 24 nodes that + are not using epmd. + + + --- Known Bugs and Problems --- + + 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-13.2 ------------------------------------------------------- + --------------------------------------------------------------------- + + Note! The erts-13.2 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- kernel-8.5 (first satisfied in OTP 25.1) + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18348 Application(s): erts, kernel + Related Id(s): GH-6356 + + Fixed a bug on Windows where file:read_file_info/1 + would fail for files with corrupt metadata. + + + OTP-18373 Application(s): erts + Related Id(s): GH-6573, PR-6574 + + Fix process_info(_, binary) to again include "writable + binaries" which were lost in OTP-25.0. Writable + binaries are an optimization used when binaries are + appended upon in a loop. + + + OTP-18382 Application(s): erts + Related Id(s): PR-6585 + + Fix rare race when receiving fragmented messages on a + terminating connection. Could potentially cause memory + leaks as well as double free crashes. Bug exists since + OTP 22.0. + + + OTP-18391 Application(s): erts + + Fixed bug that could maybe cause problems when a file + descriptor number is closed by a linked in driver and + then opened (reused) and passed to enif_select by a + NIF. No actual symptoms seen, only failed internal + assertions in debug build. + + + OTP-18398 Application(s): erts + Related Id(s): GH-5984, GH-6448, PR-6495 + + The runtime system could crash when tracing a process + executing on a dirty scheduler. + + + OTP-18406 Application(s): erts + Related Id(s): GH-6701 + + In the binary syntax, attempting to match out integers + with size exceeding 2 GiB could crash the runtime + system. + + + OTP-18411 Application(s): erts + Related Id(s): GH-6717 + + Fixed edge case in floating-point negation where A = + 0.0, B = -A did not produce B = -0.0 on x86_64 JIT. + + + OTP-18418 Application(s): erts + + Fixed an issue in the JIT that could crash the emulator + on some platforms. + + + OTP-18429 Application(s): erts + Related Id(s): GH-4232, GH-6537, PR-6587 + + Added meta data to the windows installer. + + + OTP-18434 Application(s): erts + Related Id(s): PR-6752 + + Fixed ETS insertion order into bag and duplicate_bag of + tuples with identical keys when passed in a list to + ets:insert/2. The insert order has been head-to-tail + but was accidentally changed in OTP 23.0. For bag it + was reverted (tail-to-head), while for duplicate_bag it + was sometimes reverted depending on the length of the + list and number of "reductions" left for the calling + process. + + This fix changes the insert order of ets:insert/2 back + to always be head-to-tail of the list argument. + + + OTP-18454 Application(s): erts + Related Id(s): PR-6839 + + With the JIT for AArch64 (AMD64), calling bxor in with + non-integer arguments in a guard would crash the + runtime system. + + + OTP-18457 Application(s): erts + Related Id(s): PR-6816 + + Fix bug regarding process flag max_heap_size. Could + cause strange behavior when a process was killed due to + exceeding the limit. + + + OTP-18458 Application(s): erts + + Fixed binary comprehensions to be similar to other + creation of binary data with respect to its + contribution of triggering garbage collection. + + + OTP-18463 Application(s): erts + Related Id(s): PR-6858 + + In rare circumstances, when a process exceeded its + allowed heap size set by option max_heap_size, it would + not be killed as it should be, but instead enter a kind + of zombie state it would never get out of. + + + OTP-18475 Application(s): erts, stdlib + Related Id(s): PR-6897 + + Instead of crashing, the list_to_integer/1 and + list_to_integer/2 BIFs now raise the system_limit + exception for overlong lists that can't be converted to + integers. Similarly, the string:to_integer/1 BIF now + returns {error,system_limit} for overlong lists. + + + OTP-18496 Application(s): erts + Related Id(s): GH-6947, PR-6953 + + Active process aliases of a process at its termination + leaked memory. + + + --- Improvements and New Features --- + + OTP-18374 Application(s): erts + Related Id(s): PR-6632 + + *** HIGHLIGHT *** + + Support for fully asynchronous distributed signaling + where send operations *never* block. This functionality + is by default disabled and can be enabled per process. + For more information see the documentation of + process_flag(async_dist, Bool). + + + OTP-18426 Application(s): erts + + Added the +JPperf no_fp option to explicitly disable + Erlang frame pointers otherwise added when using the + +JPperf map option. + + + Full runtime dependencies of erts-13.2: kernel-8.5, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- eunit-2.8.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The eunit-2.8.2 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of eunit-2.8.2: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ftp-1.1.4 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ftp-1.1.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of ftp-1.1.4: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-8.3 ------------------------------------------------------- + --------------------------------------------------------------------- + + The inets-8.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18472 Application(s): inets + Related Id(s): DAFH-1592 + + With this change, handling of URI to a folder, with + missing trailing / and a query component present is + fixed. + + + --- Improvements and New Features --- + + OTP-18390 Application(s): inets + Related Id(s): PR-6661 + + Adds more type information to the inets app, thus + improving the errors that static analysis tools can + detect. + + The addition of type information to records and the + updates to function heads help static analysis tools to + understand that some values in the records cannot be + 'undefined', thus making static tools to type check + correctly more modules in the inets app + + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of inets-8.3: erts-6.0, kernel-6.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- jinterface-1.13.2 ----------------------------------------------- + --------------------------------------------------------------------- + + The jinterface-1.13.2 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18404 Application(s): erl_interface, jinterface, kernel + Related Id(s): GH-6595, PR-6625 + + Accept connection setup from OTP 23 and 24 nodes that + are not using epmd. + + + --------------------------------------------------------------------- + --- kernel-8.5.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + Note! The kernel-8.5.4 application *cannot* be applied independently + of other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1.3 (first satisfied in OTP 25.2) + -- stdlib-4.1.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18348 Application(s): erts, kernel + Related Id(s): GH-6356 + + Fixed a bug on Windows where file:read_file_info/1 + would fail for files with corrupt metadata. + + + OTP-18404 Application(s): erl_interface, jinterface, kernel + Related Id(s): GH-6595, PR-6625 + + Accept connection setup from OTP 23 and 24 nodes that + are not using epmd. + + + Full runtime dependencies of kernel-8.5.4: crypto-5.0, erts-13.1.3, + sasl-3.0, stdlib-4.1.1 + + + --------------------------------------------------------------------- + --- megaco-4.4.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The megaco-4.4.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of megaco-4.4.3: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.21.4 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.21.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18412 Application(s): mnesia + + Improved consistency for dirty writes when a table was + added with add_table_copy/3. + + Fixed a problem with sticky write, which could lead to + inconsistent data. + + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of mnesia-4.21.4: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- os_mon-2.8.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The os_mon-2.8.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18469 Application(s): os_mon + Related Id(s): PR-6689 + + The port programs used by cpu_sup and memsup are now + gracefully shut down when cpu_sup and memsup are shut + down. + + + Full runtime dependencies of os_mon-2.8.1: erts-6.0, kernel-3.0, + sasl-2.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13.3 ----------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.13.3 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18316 Application(s): public_key + Related Id(s): GH-6402, PR-6883 + + As different solutions of verifying certificate + revocation exists move the decode of + 'CRLDistributionPoints' so that it will only be decode. + When it is actually used in the verification process. + This would enable interoperability with systems that + use certificates with an invalid empty + CRLDistributionPoints extension that they want to + ignore and make verification by other means. + + + OTP-18356 Application(s): public_key + Related Id(s): GH-6403 + + public_key:pkix_path_validation validates certificates + expiring after 2050 + + + OTP-18392 Application(s): public_key + Related Id(s): GH-6656 + + Do not leave exit message in message queue after + calling cacerts_load() on MacOS. + + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of public_key-1.13.3: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- reltool-0.9.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The reltool-0.9.1 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18372 Application(s): debugger, dialyzer, reltool, stdlib + Related Id(s): GH-6580 + + Fixed a bug that would cause analysis to crash. + + + Full runtime dependencies of reltool-0.9.1: erts-7.0, kernel-3.0, + sasl-2.4, stdlib-3.4, tools-2.6.14, wx-1.2 + + + --------------------------------------------------------------------- + --- snmp-5.13.4 ----------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.13.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of snmp-5.13.4: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.15.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssh-4.15.3 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18446 Application(s): ssh + Related Id(s): GH-6475 + + With this change, PKCS8 formatted private key file is + properly decoded and SSH daemon with such key can be + started. + + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of ssh-4.15.3: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.9 -------------------------------------------------------- + --------------------------------------------------------------------- + + Note! The ssl-10.9 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependency has to be satisfied: + -- stdlib-4.1 (first satisfied in OTP 25.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18371 Application(s): ssl + Related Id(s): GH-6160 + + Fixed that new dtls connections from the same client ip + port combination works. If there is a process waiting + for accept the new connection will connect to that, + otherwise it will try to re-connect to the old server + connection. + + + OTP-18443 Application(s): ssl + Related Id(s): PR-6810 + + When shutting down a node that uses SSL distribution + (-proto_dist inet_tls), a confusing error message about + an unexpected process exit was printed. This particular + message is no longer generated. + + + --- Improvements and New Features --- + + OTP-18366 Application(s): ssl + Related Id(s): GH-6506, PR-6565 + + fixes the type spec for ssl:format_error/1 + + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of ssl-10.9: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-4.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + Note! The stdlib-4.3 application *cannot* be applied independently of + other applications on an arbitrary OTP 25 installation. + + On a full OTP 25 installation, also the following runtime + dependencies have to be satisfied: + -- erts-13.1 (first satisfied in OTP 25.1) + -- kernel-8.5.1 (first satisfied in OTP 25.1.1) + + + --- Fixed Bugs and Malfunctions --- + + OTP-18372 Application(s): debugger, dialyzer, reltool, stdlib + Related Id(s): GH-6580 + + Fixed a bug that would cause analysis to crash. + + + OTP-18375 Application(s): stdlib + Related Id(s): GH-6591 + + Fixed a crash when formatting stack traces for error + reports. + + + OTP-18475 Application(s): erts, stdlib + Related Id(s): PR-6897 + + Instead of crashing, the list_to_integer/1 and + list_to_integer/2 BIFs now raise the system_limit + exception for overlong lists that can't be converted to + integers. Similarly, the string:to_integer/1 BIF now + returns {error,system_limit} for overlong lists. + + + --- Improvements and New Features --- + + OTP-18393 Application(s): stdlib + Related Id(s): PR-6666 + + Removal of non-necessary undefined types added to the + state's supervisor record. + + + Full runtime dependencies of stdlib-4.3: compiler-5.0, crypto-4.5, + erts-13.1, kernel-8.5.1, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.0.1 ---------------------------------------------- + --------------------------------------------------------------------- + + The syntax_tools-3.0.1 application can be applied independently of + other applications on a full OTP 25 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18380 Application(s): syntax_tools + Related Id(s): GH-4733, PR-6523 + + erl_syntax_lib:annotate_bindings/1,2 will now properly + annotate named functions and their arguments. + + + Full runtime dependencies of syntax_tools-3.0.1: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tftp-1.0.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + The tftp-1.0.4 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of tftp-1.0.4: erts-6.0, kernel-6.0, + stdlib-3.5 + + + --------------------------------------------------------------------- + --- xmerl-1.3.31 ---------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.31 application can be applied independently of other + applications on a full OTP 25 installation. + + --- Improvements and New Features --- + + OTP-18432 Application(s): dialyzer, eunit, ftp, inets, megaco, + mnesia, public_key, snmp, ssh, ssl, tftp, xmerl + Related Id(s): GH-6672, GH-6677, PR-6670, PR-6671, + PR-6673, PR-6674, PR-6682, PR-6684, PR-6694, PR-6696, + PR-6784, PR-6785, PR-6787, PR-6793, PR-6796, PR-6797, + PR-6798, PR-6799, PR-6800, PR-6813 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of xmerl-1.3.31: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0-rc1.README.txt b/release-notes/OTP-26.0-rc1.README.txt new file mode 100644 index 0000000..ce28f52 --- /dev/null +++ b/release-notes/OTP-26.0-rc1.README.txt @@ -0,0 +1,2475 @@ +Inital Release: OTP 26.0 +Git Tag: OTP-26.0 +Date: 2023-02-15 +Trouble Report Id: OTP-14835, OTP-15597, OTP-15903, OTP-16607, + OTP-17771, OTP-17932, OTP-18016, OTP-18029, + OTP-18053, OTP-18126, OTP-18131, OTP-18135, + OTP-18137, OTP-18140, OTP-18141, OTP-18150, + OTP-18159, OTP-18167, OTP-18168, OTP-18176, + OTP-18185, OTP-18188, OTP-18204, OTP-18206, + OTP-18209, OTP-18210, OTP-18211, OTP-18221, + OTP-18225, OTP-18226, OTP-18227, OTP-18228, + OTP-18230, OTP-18231, OTP-18235, OTP-18236, + OTP-18237, OTP-18238, OTP-18246, OTP-18247, + OTP-18248, OTP-18253, OTP-18254, OTP-18259, + OTP-18261, OTP-18271, OTP-18272, OTP-18274, + OTP-18275, OTP-18276, OTP-18277, OTP-18278, + OTP-18279, OTP-18282, OTP-18285, OTP-18286, + OTP-18287, OTP-18297, OTP-18300, OTP-18301, + OTP-18303, OTP-18305, OTP-18309, OTP-18312, + OTP-18318, OTP-18327, OTP-18334, OTP-18335, + OTP-18337, OTP-18338, OTP-18340, OTP-18342, + OTP-18344, OTP-18350, OTP-18354, OTP-18355, + OTP-18360, OTP-18361, OTP-18364, OTP-18367, + OTP-18369, OTP-18377, OTP-18385, OTP-18405, + OTP-18410, OTP-18413, OTP-18414, OTP-18419, + OTP-18423, OTP-18424, OTP-18425, OTP-18430, + OTP-18431, OTP-18435, OTP-18438, OTP-18439, + OTP-18440, OTP-18441, OTP-18442, OTP-18444, + OTP-18445, OTP-18447, OTP-18448, OTP-18451, + OTP-18452, OTP-18453, OTP-18456, OTP-18459 +Seq num: GH-3150, GH-3390, GH-4225, GH-4343, GH-4965, + GH-5325, GH-5333, GH-5639, GH-5695, GH-5877, + GH-5889, GH-6014, GH-6085, GH-6117, GH-6132, + GH-6139, GH-6156, GH-6221, GH-6333, GH-6348, + GH-6461, GH-6477, GH-6544, GH-6606, GH-6672, + GH-6679 +System: OTP +Release: 26 +Application: asn1-5.1, common_test-1.24, compiler-8.3, + crypto-5.2, dialyzer-5.1, diameter-2.3, + erl_docgen-1.5, erl_interface-5.4, erts-14.0, + inets-8.3, jinterface-1.14, kernel-9.0, + mnesia-4.22, observer-2.15, os_mon-2.9, + public_key-1.14, reltool-0.10, + runtime_tools-1.20, sasl-4.2.1, ssh-5.0, + ssl-11.0, stdlib-5.0, syntax_tools-3.1, + tools-3.6, wx-2.3 +Predecessor: OTP + + Check out the git tag OTP-26.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are almost + three times faster than in Erlang/OTP 25. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + + OTP-18459 Application(s): ssl + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522 + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + --------------------------------------------------------------------- + --- OTP-26.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18364 Application(s): otp + + Starting from Erlang/OTP 24, it has been possible to + write expressions such as A = catch Expr without + parentheses around the catch expression, but it was not + mentioned in the documentation. It now is. + + + --- Improvements and New Features --- + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18209 Application(s): otp + Related Id(s): PR-5881 + + Fix the make target release, release_docs, install and + install-docs now work when the target path contains + whitespace and/or unicode characters. + + + --------------------------------------------------------------------- + --- asn1-5.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18441 Application(s): asn1 + + Minor code improvements. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of asn1-5.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.24 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18377 Application(s): common_test + Related Id(s): PR-6437 + + This change improves Common Test docs (CT hook example + code) and adds Emacs skeleton with hook code. + + + --- Improvements and New Features --- + + OTP-18259 Application(s): common_test + Related Id(s): PR-5924 + + Updated common_test with a more robust way to fetch old + releases, while ignoring the current release. + + + OTP-18340 Application(s): common_test + + - re-write the XML ct module documentation into erlang + types to make Dialyzer able to catch more precise + errors + + + Full runtime dependencies of common_test-1.24: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + Full runtime dependencies of compiler-8.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18204 Application(s): crypto + Related Id(s): PR-6203 + + Add support for SHAKE128 and SHAKE256. + + + OTP-18206 Application(s): crypto + Related Id(s): PR-6167 + + Make the -DOPENSSL_API_COMPAT flag work without + warnings. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of crypto-5.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18237 Application(s): dialyzer + Related Id(s): GH-6221, PR-6243 + + When checking behaviors, Dialyzer could generate false + warning that a callback function did not have the + correct type according to the spec in the behavior + definition. + + + OTP-18276 Application(s): dialyzer + Related Id(s): GH-6333 + + In a spec, list(none()) used to mean none(). It has now + been corrected to mean the empty list. + + + --- Improvements and New Features --- + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + *** HIGHLIGHT *** + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18238 Application(s): dialyzer + Related Id(s): PR-6271 + + Dialyzer now produces clearer error messages for + contract violations. + + + OTP-18282 Application(s): dialyzer + Related Id(s): GH-6132, PR-6335 + + The name of a built-in type can now be reused as the + name of type locally. That is useful when an OTP + release introduces a new built-in type; having the + possibility to redefine built-in types locally can make + it easier to maintain code that works in multiple OTP + releases. + + + OTP-18342 Application(s): dialyzer + Related Id(s): GH-6117, PR-6654 + + Dialyzer's overloaded domain warning becomes is + disabled by default, and can be enabled with the flag + -Woverlapping_contract. + + Dialyzer used to issue a warning for overloaded domains + stating "such contracts are currently unsupported and + are simply ignored". + + These contracts are not "ignored" but rather, Dialyzer + takes the union of the overloaded domains. This means + that we lose the dependency from each corresponding + input to output type. Because of this, the warning is + really about not being able to establish a dependency + between the input and output types of each respective + overloaded function specification. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, PR-6822 + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + Full runtime dependencies of dialyzer-5.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-4.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + Full runtime dependencies of diameter-2.3: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18338 Application(s): erl_docgen + Related Id(s): PR-6408 + + New XML tag <change>. Like a <note> box, but with a + different (steel blue) color and label. Intended to + contain talk about semantic differences between OTP + releases. + + + Full runtime dependencies of erl_docgen-1.5: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.4 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --- Known Bugs and Problems --- + + 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-14.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18016 Application(s): erts + + If a local fun was called while reloading the *exact + same* module that defined said fun, there was a small + window in which the call would land in code that was + yet to be fully loaded. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18274 Application(s): erts + Related Id(s): PR-6048 + + Fix so that -fno-omit-frame-pointer is applied to all + of the Erlang VM when using the JIT so that tools, such + as perf, can crawl the process stacks. + + + OTP-18277 Application(s): erts + Related Id(s): PR-6306 + + Compilation server now support unicode paths in + compilation server for filesystems that are encoded + with unicode. + + + --- Improvements and New Features --- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + *** POTENTIAL INCOMPATIBILITY *** + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Preparation for adding Windows support to 'socket'. + + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18131 Application(s): erts + + Optimized internal hash routines. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18141 Application(s): erts + Related Id(s): OTP-18140, PR-6073 + + Optimization of process aliases made possible now that + support for version 4 node container types in the + external term format is mandatory. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18227 Application(s): erts + Related Id(s): PR-6254 + + When erl -eval fails to execute the command is not + printed to standard_error. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + *** HIGHLIGHT *** + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18360 Application(s): erts + Related Id(s): PR-6497 + + erlang:display/1 will now print large maps in a more + readable way (similar to how small maps are printed). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18369 Application(s): erts + + Fail enif_init_resource_type and friends by returning + NULL if not called during load/upgrade. Old behavior + was undefined. + + + OTP-18410 Application(s): erts + Related Id(s): GH-5889, PR-6345 + + New option include_shared_binaries for the + max_heap_size process limit. If set to true, large + binaries (> 64 bytes), which may be referred by several + processes, are included in the memory sum compared + against the max_heap_size limit. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18424 Application(s): erts + Related Id(s): PR-6716 + + Reduced memory usage of file:read_file_info/1,2 + + + OTP-18425 Application(s): erts + Related Id(s): GH-5333, PR-6628 + + Add new function current_stacktrace for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the current stacktrace of the + caller into the trace message sent to the trace + receiver. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + *** HIGHLIGHT *** + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + *** HIGHLIGHT *** + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of erts-14.0: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-8.3 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18167 Application(s): inets + + By default ssl connections will use options from + ssl_default_options(true) + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of inets-8.3: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- jinterface-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --------------------------------------------------------------------- + --- kernel-9.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + Fix bug where duplicate keys were allowed in the .app + file of an application. Duplicate keys are now rejected + and the application will not start if they exist. + + + OTP-18225 Application(s): kernel + Related Id(s): PR-6036 + + Fix inconsistent handling in logger_formatter of the + branched values in conditional branches. For example + using msg in a conditional branch would not be + formatted as it should before this fix. + + + OTP-18226 Application(s): kernel + Related Id(s): PR-6253 + + Fix the logger_std_h handler to log to standard_error + if logging to standard_io fails for any reason. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18286 Application(s): kernel + Related Id(s): PR-5955 + + Fix logging of log events generated before kernel is + started to not fail if the code for formatting those + log messaged have not yet been loaded. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Preparation for adding Windows support to 'socket'. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18261 Application(s): kernel + Related Id(s): PR-5924 + + Add code:get_doc/2 which adds support to fetch + documentation skeletons of functions using debug_info + chunks instead of eep48 doc chunks. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18305 Application(s): kernel + Related Id(s): PR-5831 + + gen_server optimized by caching callback functions + + + OTP-18327 Application(s): kernel + Related Id(s): PR-6433 + + Prepare the pg communication protocol for upgrade. The + plan is for OTP-28 nodes to be able to use an upgraded + pg protocol while still being able to talk with OTP 26 + nodes. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18419 Application(s): kernel + + The function file:pid2name/1 is deprecated and will be + removed in Erlang/OTP 27. + + + OTP-18442 Application(s): kernel + Related Id(s): GH-6606, PR-6786 + + The modules Erlang DNS resolver inet_res and helper + modules have been updated for RFC6891; to handle OPT RR + with DNSSEC OK (DO) bit. + + + OTP-18444 Application(s): kernel + Related Id(s): PR-6035 + + Introduced application:get_supervisor/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18448 Application(s): kernel + Related Id(s): PR-6736 + + Reduce contention on the code_server by doing the code + preparation on the client. + + + OTP-18451 Application(s): kernel + Related Id(s): PR-6737 + + Added a mode to ensure_all_loaded, to start children + application and their dependencies concurrently. + + + OTP-18452 Application(s): kernel + Related Id(s): PR-6729 + + Cache OTP boot code paths, to limit how many folders + that are being accessed during a module lookup. Can be + disabled with -cache_boot_path false. OTP boot code + paths consists of ERL_LIB environment variables. The + various otp/*/ebin folders. And the {path, ...} clauses + in the init script. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + Full runtime dependencies of kernel-9.0: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.22 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18309 Application(s): mnesia + Related Id(s): PR-6377 + + Added debug statistics for active transactions. + + + Full runtime dependencies of mnesia-4.22: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- observer-2.15 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18430 Application(s): observer + Related Id(s): PR-6397 + + Added start/1, start_and_wait functions/1|2 functions. + + + Full runtime dependencies of observer-2.15: erts-14.0, et-1.5, + kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + + + --------------------------------------------------------------------- + --- os_mon-2.9 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18246 Application(s): os_mon + Related Id(s): GH-6156, PR-6284 + + Fix internal os_mon_sysinfo:get_disk_info/1 function to + not crash when run on Windows with multiple drives. + + + --- Improvements and New Features --- + + OTP-18303 Application(s): os_mon + Related Id(s): PR-6384 + + The disksup:get_disk_info/0 and disksup:get_disk_info/1 + functions have been introduced. These can be used in + order to immediately fetch information about current + disk usage. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of os_mon-2.9: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of public_key-1.14: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- reltool-0.10 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18230 Application(s): reltool + Related Id(s): PR-5936 + + Add possibility to strip specific chunks from beam + files included in a release. Before this change it was + only possible to strip all chunks from the beam files. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of reltool-0.10: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + + + --------------------------------------------------------------------- + --- runtime_tools-1.20 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18211 Application(s): runtime_tools + Related Id(s): PR-6143 + + Add dbg:tracer(file, Filename) as a convenient way to + trace to a file in clean text. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of runtime_tools-1.20: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18300 Application(s): sasl + Related Id(s): PR-6389 + + Improve error message from systools:make_script, when + .app parameters contain duplicates. The parameters that + will be checked are modules, applications and + registered. + + + Full runtime dependencies of sasl-4.2.1: erts-10.2, kernel-6.0, + stdlib-4.0, tools-2.6.14 + + + --------------------------------------------------------------------- + --- ssh-5.0 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18231 Application(s): ssh + Related Id(s): OTP-17932, PR-6144 + + The ssh_cli has been updated to work with the changes + introduced in the new Erlang shell implementation. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + Full runtime dependencies of ssh-5.0: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-15903 Application(s): ssl + + Improved error checking and handling of ssl options. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18253 Application(s): ssl + + With this change, TLS 1.3 server can be configured to + include client certificate in session ticket. + + + OTP-18254 Application(s): ssl + Related Id(s): PR-5982 + + With this change, it is possible to configure + encryption seed to be used with TLS1.3 stateless + tickets. This enables using tickets on different server + instances. + + + OTP-18312 Application(s): ssl + + Debugging enhancements. + + + OTP-18335 Application(s): ssl + + With this change, maybe keyword atom is not used as + function name in ssl code. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + *** POTENTIAL INCOMPATIBILITY *** + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18453 Application(s): ssl + + Mitigate memory usage from large certificate chains by + lowering the maximum handshake size. This should not + effect the common cases, if needed it can be configured + to a higher value. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18459 Application(s): ssl + + *** HIGHLIGHT *** + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + Full runtime dependencies of ssl-11.0: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18275 Application(s): stdlib + Related Id(s): PR-6045 + + All process calls in dets have been updated to use the + receive queue optimizations. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-15597 Application(s): stdlib + Related Id(s): PR-5831 + + Gen_server now caches external functions for use in + handle_call, handle_cast and handle_info. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18150 Application(s): stdlib + + Added codepoint category to unicode_util + + + OTP-18159 Application(s): stdlib + Related Id(s): PR-6904 + + Added the zip:zip_get_crc32/2 function to retrieve the + CRC32 checksum from an opened ZIP archive. + + + OTP-18176 Application(s): stdlib + Related Id(s): PR-6118 + + Add the new options post_process_args and detached to + peer:start function. + + + OTP-18221 Application(s): stdlib + Related Id(s): PR-6197 + + The re:replace/3,4 functions now accept as the + replacement argument. + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + *** HIGHLIGHT *** + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are almost + three times faster than in Erlang/OTP 25. + + + OTP-18236 Application(s): stdlib + Related Id(s): PR-6256 + + Improved implementation of timer:apply_interval/4 + reducing load on the timer server, and introduction of + the new function timer:apply_repeatedly/4. + timer:apply_repeatedly/4 is similar to + timer:apply_interval/4, but timer:apply_repeatedly/4 + prevents parallel execution of triggered apply + operations which timer:apply_interval/4 does not. + + + OTP-18247 Application(s): stdlib + Related Id(s): PR-6280, PR-6711 + + The base64 module now supports encoding and decoding + with an alternate URL safe alphabet, and an option for + accepting or adding missing = padding characters. + + + OTP-18272 Application(s): stdlib + Related Id(s): PR-6279 + + Add shell:whereis/0 which can be used to locate the + current shell process. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18279 Application(s): stdlib + Related Id(s): PR-6234 + + New function ets:lookup_element/4 with a Default + argument returned if the key did not exist in the + table. The old ets:lookup_element/3 raises a badarg + exception which can be both inconveniente and slower. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18287 Application(s): stdlib + Related Id(s): PR-5955 + + peer nodes using standard_io connections now include + standard error from the node in the io stream from the + started node. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18301 Application(s): stdlib + Related Id(s): PR-6350 + + Improve type specification of + unicode:characters_to_list(). + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + *** HIGHLIGHT *** + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18354 Application(s): stdlib + Related Id(s): PR-6297 + + The binary:encode_hex/2 function has been added to + allow the encoded hexadecimal digits to be in either + lower or upper case. + + + OTP-18355 Application(s): stdlib + Related Id(s): PR-6507 + + Variants of timer:tc() with user specified time unit + have been introduced. + + + OTP-18361 Application(s): stdlib + Related Id(s): PR-6536 + + New function math:tau/0. Returns 2*math:pi(). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18385 Application(s): stdlib + Related Id(s): PR-6698 + + Optimized gen_server:multi_call(). + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18423 Application(s): stdlib + Related Id(s): com/erlang/backlog/issues/142, + https://github + + Make gen_server fail "silently" with a new return value + for init/1. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + + Full runtime dependencies of stdlib-5.0: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + Full runtime dependencies of syntax_tools-3.1: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tools-3.6 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + Full runtime dependencies of tools-3.6: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.3 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of wx-2.3: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0-rc2.README.txt b/release-notes/OTP-26.0-rc2.README.txt new file mode 100644 index 0000000..23c8f66 --- /dev/null +++ b/release-notes/OTP-26.0-rc2.README.txt @@ -0,0 +1,3216 @@ +Inital Release: OTP 26.0 +Git Tag: OTP-26.0 +Date: 2023-03-22 +Trouble Report Id: OTP-14835, OTP-15597, OTP-15903, OTP-16607, + OTP-17771, OTP-17932, OTP-18016, OTP-18029, + OTP-18053, OTP-18126, OTP-18131, OTP-18135, + OTP-18137, OTP-18140, OTP-18141, OTP-18150, + OTP-18159, OTP-18167, OTP-18168, OTP-18176, + OTP-18185, OTP-18188, OTP-18204, OTP-18206, + OTP-18209, OTP-18210, OTP-18211, OTP-18221, + OTP-18225, OTP-18226, OTP-18227, OTP-18228, + OTP-18230, OTP-18231, OTP-18235, OTP-18236, + OTP-18237, OTP-18238, OTP-18246, OTP-18247, + OTP-18248, OTP-18253, OTP-18254, OTP-18259, + OTP-18261, OTP-18271, OTP-18272, OTP-18274, + OTP-18275, OTP-18276, OTP-18277, OTP-18278, + OTP-18279, OTP-18282, OTP-18285, OTP-18286, + OTP-18287, OTP-18297, OTP-18300, OTP-18301, + OTP-18303, OTP-18305, OTP-18309, OTP-18310, + OTP-18312, OTP-18318, OTP-18327, OTP-18334, + OTP-18335, OTP-18337, OTP-18338, OTP-18340, + OTP-18342, OTP-18344, OTP-18350, OTP-18354, + OTP-18355, OTP-18359, OTP-18360, OTP-18361, + OTP-18364, OTP-18367, OTP-18369, OTP-18377, + OTP-18385, OTP-18389, OTP-18405, OTP-18410, + OTP-18413, OTP-18414, OTP-18419, OTP-18423, + OTP-18424, OTP-18425, OTP-18430, OTP-18431, + OTP-18435, OTP-18438, OTP-18439, OTP-18440, + OTP-18441, OTP-18442, OTP-18444, OTP-18445, + OTP-18447, OTP-18448, OTP-18451, OTP-18452, + OTP-18453, OTP-18455, OTP-18456, OTP-18459, + OTP-18466, OTP-18471, OTP-18474, OTP-18476, + OTP-18477, OTP-18483, OTP-18484, OTP-18485, + OTP-18486, OTP-18487, OTP-18488, OTP-18490, + OTP-18491, OTP-18492, OTP-18493, OTP-18494, + OTP-18495, OTP-18498, OTP-18499, OTP-18500, + OTP-18501, OTP-18502, OTP-18505, OTP-18510, + OTP-18511, OTP-18515, OTP-18517, OTP-18518, + OTP-18520, OTP-18521, OTP-18522, OTP-18523, + OTP-18524 +Seq num: GH-3150, GH-3390, GH-4225, GH-4343, GH-4965, + GH-5325, GH-5333, GH-5639, GH-5695, GH-5877, + GH-5889, GH-5899, GH-6014, GH-6085, GH-6098, + GH-6117, GH-6132, GH-6139, GH-6156, GH-6221, + GH-6333, GH-6339, GH-6348, GH-6380, GH-6455, + GH-6461, GH-6477, GH-6508, GH-6544, GH-6606, + GH-6672, GH-6679, GH-6706, GH-6850, GH-6942, + GH-6990, GH-7015 +System: OTP +Release: 26 +Application: asn1-5.1, common_test-1.25, compiler-8.3, + crypto-5.2, dialyzer-5.1, diameter-2.3, + erl_docgen-1.5, erl_interface-5.4, erts-14.0, + ftp-1.1.5, inets-8.4, jinterface-1.14, + kernel-9.0, mnesia-4.22, observer-2.15, + os_mon-2.9, parsetools-2.5, public_key-1.14, + reltool-1.0, runtime_tools-1.20, sasl-4.2.1, + snmp-5.14, ssh-5.0, ssl-11.0, stdlib-5.0, + syntax_tools-3.1, tftp-1.1, tools-3.6, wx-2.3 +Predecessor: OTP + + Check out the git tag OTP-26.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are almost + three times faster than in Erlang/OTP 25. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18459 Application(s): ssl + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + Leex has been extended with optional column number + support. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18498 Application(s): erts + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + OTP-18500 Application(s): stdlib + + Update Unicode to version 15.0.0. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + Fix bug where duplicate keys were allowed in the .app + file of an application. Duplicate keys are now rejected + and the application will not start if they exist. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18389 Application(s): dialyzer + Related Id(s): GH-6508, PR-6864 + + Dialyzer was accepting typespecs containing singleton + type variables that appeared in an union type. + + Before this change, singleton type variables in an + union type were accepted (see example below). However, + type variable Foo appears only once in each branch of + the union type, so it is a singleton type variable (in + each branch of the union type) that is not bound. + + -spec run_test(Opts) -> term() when Opts :: + {join_specs, Foo} | {test, Foo}. + + Unbound type variables should be rejected by Dialyzer, + which now detects this error and rejects it in the same + manner as its non-union equivalent: + + -spec run_test_error(Opts) -> term() when Opts :: + {join_specs, Foo}. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + --------------------------------------------------------------------- + --- OTP-26.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18364 Application(s): otp + + Starting from Erlang/OTP 24, it has been possible to + write expressions such as A = catch Expr without + parentheses around the catch expression, but it was not + mentioned in the documentation. It now is. + + + --- Improvements and New Features --- + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18209 Application(s): otp + Related Id(s): PR-5881 + + Fix the make target release, release_docs, install and + install-docs now work when the target path contains + whitespace and/or unicode characters. + + + OTP-18492 Application(s): otp + Related Id(s): GH-6706 + + The documentation for the bit syntax has been updated + to correct some factual errors and omissions. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + --------------------------------------------------------------------- + --- asn1-5.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18441 Application(s): asn1 + + Minor code improvements. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of asn1-5.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.25 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18377 Application(s): common_test + Related Id(s): PR-6437 + + This change improves Common Test docs (CT hook example + code) and adds Emacs skeleton with hook code. + + + --- Improvements and New Features --- + + OTP-18259 Application(s): common_test + Related Id(s): PR-5924 + + Updated common_test with a more robust way to fetch old + releases, while ignoring the current release. + + + OTP-18340 Application(s): common_test + + - re-write the XML ct module documentation into erlang + types to make Dialyzer able to catch more precise + errors + + + Full runtime dependencies of common_test-1.25: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18502 Application(s): compiler + + The compiler will now inline calls to maps:get/3. + + + Full runtime dependencies of compiler-8.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18204 Application(s): crypto + Related Id(s): PR-6203 + + Add support for SHAKE128 and SHAKE256. + + + OTP-18206 Application(s): crypto + Related Id(s): PR-6167 + + Make the -DOPENSSL_API_COMPAT flag work without + warnings. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of crypto-5.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18237 Application(s): dialyzer + Related Id(s): GH-6221, PR-6243 + + When checking behaviors, Dialyzer could generate false + warning that a callback function did not have the + correct type according to the spec in the behavior + definition. + + + OTP-18276 Application(s): dialyzer + Related Id(s): GH-6333 + + In a spec, list(none()) used to mean none(). It has now + been corrected to mean the empty list. + + + OTP-18389 Application(s): dialyzer + Related Id(s): GH-6508, PR-6864 + + *** POTENTIAL INCOMPATIBILITY *** + + Dialyzer was accepting typespecs containing singleton + type variables that appeared in an union type. + + Before this change, singleton type variables in an + union type were accepted (see example below). However, + type variable Foo appears only once in each branch of + the union type, so it is a singleton type variable (in + each branch of the union type) that is not bound. + + -spec run_test(Opts) -> term() when Opts :: + {join_specs, Foo} | {test, Foo}. + + Unbound type variables should be rejected by Dialyzer, + which now detects this error and rejects it in the same + manner as its non-union equivalent: + + -spec run_test_error(Opts) -> term() when Opts :: + {join_specs, Foo}. + + + OTP-18485 Application(s): dialyzer + Related Id(s): GH-6850, PR-6854 + + Fixed a bug that prevented the --plts option from being + used together with --add-to-plt. + + + --- Improvements and New Features --- + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + *** HIGHLIGHT *** + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18238 Application(s): dialyzer + Related Id(s): PR-6271 + + Dialyzer now produces clearer error messages for + contract violations. + + + OTP-18282 Application(s): dialyzer + Related Id(s): GH-6132, PR-6335 + + The name of a built-in type can now be reused as the + name of type locally. That is useful when an OTP + release introduces a new built-in type; having the + possibility to redefine built-in types locally can make + it easier to maintain code that works in multiple OTP + releases. + + + OTP-18310 Application(s): dialyzer + + There is new option -no_spec to ignore all specs. It is + useful for debugging when one suspects that some specs + could be incorrect. + + + OTP-18342 Application(s): dialyzer + Related Id(s): GH-6117, PR-6654 + + Dialyzer's overloaded domain warning becomes is + disabled by default, and can be enabled with the flag + -Woverlapping_contract. + + Dialyzer used to issue a warning for overloaded domains + stating "such contracts are currently unsupported and + are simply ignored". + + These contracts are not "ignored" but rather, Dialyzer + takes the union of the overloaded domains. This means + that we lose the dependency from each corresponding + input to output type. Because of this, the warning is + really about not being able to establish a dependency + between the input and output types of each respective + overloaded function specification. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + *** POTENTIAL INCOMPATIBILITY *** + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + Full runtime dependencies of dialyzer-5.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-4.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of diameter-2.3: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18338 Application(s): erl_docgen + Related Id(s): PR-6408 + + New XML tag <change>. Like a <note> box, but with a + different (steel blue) color and label. Intended to + contain talk about semantic differences between OTP + releases. + + + OTP-18501 Application(s): erl_docgen + Related Id(s): PR-6987 + + Add "since" attribute to XML taglist/tag elements to + document OTP version when a particular option/feature + was introduced. The version is shown out in the right + margin, similar to "since" versions for functions. + + + Full runtime dependencies of erl_docgen-1.5: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.4 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --- Known Bugs and Problems --- + + 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-14.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18016 Application(s): erts + + If a local fun was called while reloading the *exact + same* module that defined said fun, there was a small + window in which the call would land in code that was + yet to be fully loaded. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18274 Application(s): erts + Related Id(s): PR-6048 + + Fix so that -fno-omit-frame-pointer is applied to all + of the Erlang VM when using the JIT so that tools, such + as perf, can crawl the process stacks. + + + OTP-18277 Application(s): erts + Related Id(s): PR-6306 + + Compilation server now support unicode paths in + compilation server for filesystems that are encoded + with unicode. + + + OTP-18498 Application(s): erts + + *** HIGHLIGHT *** + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + --- Improvements and New Features --- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + *** POTENTIAL INCOMPATIBILITY *** + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Preparation for adding Windows support to 'socket'. + + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18131 Application(s): erts + + Optimized internal hash routines. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18141 Application(s): erts + Related Id(s): OTP-18140, PR-6073 + + Optimization of process aliases made possible now that + support for version 4 node container types in the + external term format is mandatory. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18227 Application(s): erts + Related Id(s): PR-6254 + + When erl -eval fails to execute the command is not + printed to standard_error. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + *** HIGHLIGHT *** + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18360 Application(s): erts + Related Id(s): PR-6497 + + erlang:display/1 will now print large maps in a more + readable way (similar to how small maps are printed). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18369 Application(s): erts + + Fail enif_init_resource_type and friends by returning + NULL if not called during load/upgrade. Old behavior + was undefined. + + + OTP-18410 Application(s): erts + Related Id(s): GH-5889, PR-6345 + + New option include_shared_binaries for the + max_heap_size process limit. If set to true, large + binaries (> 64 bytes), which may be referred by several + processes, are included in the memory sum compared + against the max_heap_size limit. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18424 Application(s): erts + Related Id(s): PR-6716 + + Reduced memory usage of file:read_file_info/1,2 + + + OTP-18425 Application(s): erts + Related Id(s): GH-5333, PR-6628 + + Add new function current_stacktrace for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the current stacktrace of the + caller into the trace message sent to the trace + receiver. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + *** HIGHLIGHT *** + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + *** HIGHLIGHT *** + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18477 Application(s): erts + Related Id(s): PR-7006 + + Introduced the local option of term_to_binary/2 and + term_to_iovec/2. + + + OTP-18483 Application(s): erts + Related Id(s): PR-6888 + + Document the commonly used practice to create and store + static atoms at NIF load time in callbacks load or + upgrade. + + + OTP-18493 Application(s): erts + Related Id(s): PR-6272 + + Optimize ets:lookup_element for uncompressed tables by + using a more efficient method to copy the term from ETS + to the heap of the calling process. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + *** POTENTIAL INCOMPATIBILITY *** + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + OTP-18517 Application(s): erts + + The version of zlib included in the Erlang/OTP source + code is now 1.2.13. + + + OTP-18520 Application(s): erts + Related Id(s): GH-6455 + + gen_tcp:send/*, gen_udp:send/* and gen_sctp:send/* have + been optimized to use the infamous receive reference + optimization, so now sending should not have bad + performance when the calling process has a large + message queue. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18523 Application(s): erts + Related Id(s): PR-7004 + + Optimize maps:merge/2 memory consumption for small maps + (<33 keys) by reusing key tuples or entire maps if the + result map has the same number of keys as any of the + argument maps. + + + OTP-18524 Application(s): erts + Related Id(s): OTP-18523, PR-7004 + + Optimize maps:merge/2 memory consumption further for + small maps by mutating 2nd map to use literal key tuple + of 1st map if both have the same keys. + + + Full runtime dependencies of erts-14.0: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ftp-1.1.5 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18359 Application(s): ftp + Related Id(s): PR-6545 + + Fixes the documentation for the ftp module and updates + the typing of ftp functions that return errors. + + The documentation has been improved and the types of + the functions are now read from source code, instead of + being hard-coded in XML. + + Functions returning errors of the form {error, Reason + :: 'ehost' | ...} are now similar to other modules, + i.e., {error, Reason :: term()}. If one wants to + understand the error, one must call the function + ftp:formaterror({error, Reason}). + + + Full runtime dependencies of ftp-1.1.5: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-8.4 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18476 Application(s): inets + Related Id(s): GH-6380 + + Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" + errors. + + + --- Improvements and New Features --- + + OTP-18167 Application(s): inets + + By default ssl connections will use options from + ssl_default_options(true) + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of inets-8.4: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- jinterface-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --------------------------------------------------------------------- + --- kernel-9.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + *** POTENTIAL INCOMPATIBILITY *** + + Fix bug where duplicate keys were allowed in the .app + file of an application. Duplicate keys are now rejected + and the application will not start if they exist. + + + OTP-18225 Application(s): kernel + Related Id(s): PR-6036 + + Fix inconsistent handling in logger_formatter of the + branched values in conditional branches. For example + using msg in a conditional branch would not be + formatted as it should before this fix. + + + OTP-18226 Application(s): kernel + Related Id(s): PR-6253 + + Fix the logger_std_h handler to log to standard_error + if logging to standard_io fails for any reason. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18286 Application(s): kernel + Related Id(s): PR-5955 + + Fix logging of log events generated before kernel is + started to not fail if the code for formatting those + log messaged have not yet been loaded. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Preparation for adding Windows support to 'socket'. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18261 Application(s): kernel + Related Id(s): PR-5924 + + Add code:get_doc/2 which adds support to fetch + documentation skeletons of functions using debug_info + chunks instead of eep48 doc chunks. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18305 Application(s): kernel + Related Id(s): PR-5831 + + gen_server optimized by caching callback functions + + + OTP-18327 Application(s): kernel + Related Id(s): PR-6433 + + Prepare the pg communication protocol for upgrade. The + plan is for OTP-28 nodes to be able to use an upgraded + pg protocol while still being able to talk with OTP 26 + nodes. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18419 Application(s): kernel + + The function file:pid2name/1 is deprecated and will be + removed in Erlang/OTP 27. + + + OTP-18442 Application(s): kernel + Related Id(s): GH-6606, PR-6786 + + The modules Erlang DNS resolver inet_res and helper + modules have been updated for RFC6891; to handle OPT RR + with DNSSEC OK (DO) bit. + + + OTP-18444 Application(s): kernel + Related Id(s): PR-6035 + + Introduced application:get_supervisor/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18448 Application(s): kernel + Related Id(s): PR-6736 + + Reduce contention on the code_server by doing the code + preparation on the client. + + + OTP-18451 Application(s): kernel + Related Id(s): PR-6737 + + Added a mode to ensure_all_loaded, to start children + application and their dependencies concurrently. + + + OTP-18452 Application(s): kernel + Related Id(s): PR-6729 + + Cache OTP boot code paths, to limit how many folders + that are being accessed during a module lookup. Can be + disabled with -cache_boot_path false. OTP boot code + paths consists of ERL_LIB environment variables. The + various otp/*/ebin folders. And the {path, ...} clauses + in the init script. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18466 Application(s): kernel + Related Id(s): PR-6832 + + Add cache attribute to code path apis. + + Added an optional cache/nocache argument to all + code:add_path*, code:set_path*, and code:replace_path* + functions. These functions will then avoid doing + file-accesses if they are cached. Cache can be cleared + with code:clear_cache/0. Added code:del_paths/1 to make + it easier to clear multiple paths. + + + OTP-18484 Application(s): kernel + Related Id(s): PR-6844 + + Improvements to code:ensure_modules_loaded/1: + Previously it would prepare modules and then abandon + references to said modules if they had on_load + callbacks. This pull request makes it so they keep the + references around and then serially load them without + having to fetch the object code and prepare them again. + + + OTP-18510 Application(s): kernel + Related Id(s): GH-6098, PR-6982 + + The internal DNS resolver has bee updated to handle DNS + LOC RR:s (RFC 1876). This is an undocumented module, + although still used by power users. See the source + code. + + + OTP-18521 Application(s): kernel + Related Id(s): PR-7025 + + Reduced memory consumption in global when informing + other nodes about lost connections. + + + Full runtime dependencies of kernel-9.0: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.22 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18309 Application(s): mnesia + Related Id(s): PR-6377 + + Added debug statistics for active transactions. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of mnesia-4.22: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- observer-2.15 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18430 Application(s): observer + Related Id(s): PR-6397 + + Added start/1, start_and_wait functions/1|2 functions. + + + Full runtime dependencies of observer-2.15: erts-14.0, et-1.5, + kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + + + --------------------------------------------------------------------- + --- os_mon-2.9 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18246 Application(s): os_mon + Related Id(s): GH-6156, PR-6284 + + Fix internal os_mon_sysinfo:get_disk_info/1 function to + not crash when run on Windows with multiple drives. + + + --- Improvements and New Features --- + + OTP-18303 Application(s): os_mon + Related Id(s): PR-6384 + + The disksup:get_disk_info/0 and disksup:get_disk_info/1 + functions have been introduced. These can be used in + order to immediately fetch information about current + disk usage. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of os_mon-2.9: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- parsetools-2.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + *** HIGHLIGHT *** + + Leex has been extended with optional column number + support. + + + Full runtime dependencies of parsetools-2.5: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of public_key-1.14: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- reltool-1.0 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18230 Application(s): reltool + Related Id(s): PR-5936 + + Add possibility to strip specific chunks from beam + files included in a release. Before this change it was + only possible to strip all chunks from the beam files. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + *** POTENTIAL INCOMPATIBILITY *** + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of reltool-1.0: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0, stdlib-5.0, tools-2.6.14, wx-2.3 + + + --------------------------------------------------------------------- + --- runtime_tools-1.20 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18499 Application(s): runtime_tools + Related Id(s): PR-6946 + + Fixed the type specification for + instrument:carriers/0,1 + + + --- Improvements and New Features --- + + OTP-18211 Application(s): runtime_tools + Related Id(s): PR-6143 + + Add dbg:tracer(file, Filename) as a convenient way to + trace to a file in clean text. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + Full runtime dependencies of runtime_tools-1.20: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18300 Application(s): sasl + Related Id(s): PR-6389 + + Improve error message from systools:make_script, when + .app parameters contain duplicates. The parameters that + will be checked are modules, applications and + registered. + + + Full runtime dependencies of sasl-4.2.1: erts-10.2, kernel-6.0, + stdlib-4.0, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.14 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of snmp-5.14: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.0 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18231 Application(s): ssh + Related Id(s): OTP-17932, PR-6144 + + The ssh_cli has been updated to work with the changes + introduced in the new Erlang shell implementation. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of ssh-5.0: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-15903 Application(s): ssl + + Improved error checking and handling of ssl options. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18253 Application(s): ssl + + With this change, TLS 1.3 server can be configured to + include client certificate in session ticket. + + + OTP-18254 Application(s): ssl + Related Id(s): PR-5982 + + With this change, it is possible to configure + encryption seed to be used with TLS1.3 stateless + tickets. This enables using tickets on different server + instances. + + + OTP-18312 Application(s): ssl + + Debugging enhancements. + + + OTP-18335 Application(s): ssl + + With this change, maybe keyword atom is not used as + function name in ssl code. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + *** POTENTIAL INCOMPATIBILITY *** + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18453 Application(s): ssl + + Mitigate memory usage from large certificate chains by + lowering the maximum handshake size. This should not + effect the common cases, if needed it can be configured + to a higher value. + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + *** POTENTIAL INCOMPATIBILITY *** + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18459 Application(s): ssl + + *** HIGHLIGHT *** + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + Full runtime dependencies of ssl-11.0: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18275 Application(s): stdlib + Related Id(s): PR-6045 + + All process calls in dets have been updated to use the + receive queue optimizations. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-15597 Application(s): stdlib + Related Id(s): PR-5831 + + Gen_server now caches external functions for use in + handle_call, handle_cast and handle_info. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18150 Application(s): stdlib + + Added codepoint category to unicode_util + + + OTP-18159 Application(s): stdlib + Related Id(s): PR-6904 + + Added the zip:zip_get_crc32/2 function to retrieve the + CRC32 checksum from an opened ZIP archive. + + + OTP-18176 Application(s): stdlib + Related Id(s): PR-6118 + + Add the new options post_process_args and detached to + peer:start function. + + + OTP-18221 Application(s): stdlib + Related Id(s): PR-6197 + + The re:replace/3,4 functions now accept as the + replacement argument. + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + *** HIGHLIGHT *** + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are almost + three times faster than in Erlang/OTP 25. + + + OTP-18236 Application(s): stdlib + Related Id(s): PR-6256 + + Improved implementation of timer:apply_interval/4 + reducing load on the timer server, and introduction of + the new function timer:apply_repeatedly/4. + timer:apply_repeatedly/4 is similar to + timer:apply_interval/4, but timer:apply_repeatedly/4 + prevents parallel execution of triggered apply + operations which timer:apply_interval/4 does not. + + + OTP-18247 Application(s): stdlib + Related Id(s): PR-6280, PR-6711 + + The base64 module now supports encoding and decoding + with an alternate URL safe alphabet, and an option for + accepting or adding missing = padding characters. + + + OTP-18272 Application(s): stdlib + Related Id(s): PR-6279 + + Add shell:whereis/0 which can be used to locate the + current shell process. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18279 Application(s): stdlib + Related Id(s): PR-6234 + + New function ets:lookup_element/4 with a Default + argument returned if the key did not exist in the + table. The old ets:lookup_element/3 raises a badarg + exception which can be both inconveniente and slower. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18287 Application(s): stdlib + Related Id(s): PR-5955 + + peer nodes using standard_io connections now include + standard error from the node in the io stream from the + started node. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18301 Application(s): stdlib + Related Id(s): PR-6350 + + Improve type specification of + unicode:characters_to_list(). + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + *** HIGHLIGHT *** + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18354 Application(s): stdlib + Related Id(s): PR-6297 + + The binary:encode_hex/2 function has been added to + allow the encoded hexadecimal digits to be in either + lower or upper case. + + + OTP-18355 Application(s): stdlib + Related Id(s): PR-6507 + + Variants of timer:tc() with user specified time unit + have been introduced. + + + OTP-18361 Application(s): stdlib + Related Id(s): PR-6536 + + New function math:tau/0. Returns 2*math:pi(). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18385 Application(s): stdlib + Related Id(s): PR-6698 + + Optimized gen_server:multi_call(). + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18423 Application(s): stdlib + Related Id(s): com/erlang/backlog/issues/142, + https://github + + Make gen_server fail "silently" with a new return value + for init/1. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18474 Application(s): stdlib + Related Id(s): PR-6895 + + Static supervisors are very idle processes after they + have started so they will now be hibernated after start + to improve resource management. + + + OTP-18494 Application(s): stdlib + Related Id(s): PR-6924 + + Support has been added in ms_transform for the actions + caller_line/0, current_stacktrace/0, and + current_stacktrace/1. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + *** HIGHLIGHT *** + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18500 Application(s): stdlib + + *** HIGHLIGHT *** + + Update Unicode to version 15.0.0. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + OTP-18515 Application(s): stdlib + Related Id(s): GH-6990 + + Improved the performance of sets:subtract/2 when + subtracting a small number of elements. + + + OTP-18518 Application(s): stdlib + Related Id(s): GH-7015 + + The linter will no longer raise warnings for + underspecified opaque types. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + Full runtime dependencies of stdlib-5.0: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + Full runtime dependencies of syntax_tools-3.1: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tftp-1.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of tftp-1.1: erts-6.0, kernel-6.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- tools-3.6 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + Full runtime dependencies of tools-3.6: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.3 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of wx-2.3: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0-rc3.README.txt b/release-notes/OTP-26.0-rc3.README.txt new file mode 100644 index 0000000..9866e8b --- /dev/null +++ b/release-notes/OTP-26.0-rc3.README.txt @@ -0,0 +1,3592 @@ +Inital Release: OTP 26.0 +Git Tag: OTP-26.0 +Date: 2023-04-12 +Trouble Report Id: OTP-14771, OTP-14835, OTP-15597, OTP-15903, + OTP-16607, OTP-17771, OTP-17932, OTP-18016, + OTP-18029, OTP-18053, OTP-18126, OTP-18131, + OTP-18135, OTP-18137, OTP-18140, OTP-18141, + OTP-18150, OTP-18159, OTP-18167, OTP-18168, + OTP-18176, OTP-18185, OTP-18188, OTP-18204, + OTP-18206, OTP-18209, OTP-18210, OTP-18211, + OTP-18221, OTP-18225, OTP-18226, OTP-18227, + OTP-18228, OTP-18230, OTP-18231, OTP-18235, + OTP-18236, OTP-18237, OTP-18238, OTP-18246, + OTP-18247, OTP-18248, OTP-18253, OTP-18254, + OTP-18259, OTP-18261, OTP-18271, OTP-18272, + OTP-18274, OTP-18275, OTP-18276, OTP-18277, + OTP-18278, OTP-18279, OTP-18282, OTP-18285, + OTP-18286, OTP-18287, OTP-18297, OTP-18300, + OTP-18301, OTP-18303, OTP-18305, OTP-18309, + OTP-18310, OTP-18312, OTP-18318, OTP-18327, + OTP-18331, OTP-18334, OTP-18335, OTP-18337, + OTP-18338, OTP-18340, OTP-18342, OTP-18344, + OTP-18350, OTP-18354, OTP-18355, OTP-18359, + OTP-18360, OTP-18361, OTP-18364, OTP-18367, + OTP-18369, OTP-18377, OTP-18385, OTP-18389, + OTP-18405, OTP-18410, OTP-18413, OTP-18414, + OTP-18419, OTP-18423, OTP-18424, OTP-18425, + OTP-18430, OTP-18431, OTP-18435, OTP-18438, + OTP-18439, OTP-18440, OTP-18441, OTP-18442, + OTP-18444, OTP-18445, OTP-18447, OTP-18448, + OTP-18451, OTP-18452, OTP-18453, OTP-18455, + OTP-18456, OTP-18459, OTP-18465, OTP-18466, + OTP-18471, OTP-18474, OTP-18476, OTP-18477, + OTP-18483, OTP-18484, OTP-18485, OTP-18486, + OTP-18487, OTP-18488, OTP-18490, OTP-18491, + OTP-18492, OTP-18493, OTP-18494, OTP-18495, + OTP-18498, OTP-18499, OTP-18500, OTP-18501, + OTP-18502, OTP-18505, OTP-18507, OTP-18510, + OTP-18511, OTP-18515, OTP-18517, OTP-18518, + OTP-18520, OTP-18521, OTP-18522, OTP-18523, + OTP-18524, OTP-18526, OTP-18528, OTP-18530, + OTP-18531, OTP-18533, OTP-18534, OTP-18536, + OTP-18537, OTP-18538, OTP-18539, OTP-18540, + OTP-18541, OTP-18542, OTP-18544, OTP-18546, + OTP-18547, OTP-18548, OTP-18549, OTP-18550, + OTP-18551, OTP-18552 +Seq num: ERIERL-737, ERIERL-870, GH-3150, GH-3390, + GH-4225, GH-4343, GH-4965, GH-5276, GH-5325, + GH-5333, GH-5639, GH-5695, GH-5877, GH-5889, + GH-5899, GH-6014, GH-6085, GH-6098, GH-6117, + GH-6132, GH-6139, GH-6156, GH-6221, GH-6333, + GH-6339, GH-6348, GH-6380, GH-6455, GH-6461, + GH-6477, GH-6508, GH-6544, GH-6606, GH-6672, + GH-6679, GH-6706, GH-6850, GH-6942, GH-6990, + GH-7015, GH-7031, GH-7045, GH-7065, GH-7070 +System: OTP +Release: 26 +Application: asn1-5.1, common_test-1.25, compiler-8.3, + crypto-5.2, dialyzer-5.1, diameter-2.3, + erl_docgen-1.5, erl_interface-5.4, erts-14.0, + ftp-1.1.5, inets-9.0, jinterface-1.14, + kernel-9.0, megaco-4.4.4, mnesia-4.22, + observer-2.15, odbc-2.14.1, os_mon-2.9, + parsetools-2.5, public_key-1.14, reltool-1.0, + runtime_tools-2.0, sasl-4.2.1, snmp-5.14, + ssh-5.0, ssl-11.0, stdlib-5.0, + syntax_tools-3.1, tftp-1.1, tools-3.6, wx-2.3 +Predecessor: OTP + + Check out the git tag OTP-26.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are more + than three times faster than in Erlang/OTP 25. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18459 Application(s): ssl + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + Leex has been extended with optional column number + support. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18498 Application(s): erts + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + OTP-18500 Application(s): stdlib + + Update Unicode to version 15.0.0. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-14771 Application(s): ssl + + Remove less that 256 bit ECC from default supported ECC + pre TLS-1.3 + + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + Fix bug where duplicate keys were allowed in the .app + file of an application. Duplicate keys are now rejected + and the application will not start if they exist. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18389 Application(s): dialyzer + Related Id(s): GH-6508, PR-6864 + + Dialyzer was accepting typespecs containing singleton + type variables that appeared in an union type. + + Before this change, singleton type variables in an + union type were accepted (see example below). However, + type variable Foo appears only once in each branch of + the union type, so it is a singleton type variable (in + each branch of the union type) that is not bound. + + -spec run_test(Opts) -> term() when Opts :: + {join_specs, Foo} | {test, Foo}. + + Unbound type variables should be rejected by Dialyzer, + which now detects this error and rejects it in the same + manner as its non-union equivalent: + + -spec run_test_error(Opts) -> term() when Opts :: + {join_specs, Foo}. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + OTP-18530 Application(s): inets + + IP display string will now always be in lower case, + effects ipv6 addresses. + + + OTP-18531 Application(s): ssl + + If a user cancel alert with level warning is received + during handshake make it be handled the same regardless + of TLS version. If it is received in connection in + TLS-1.3 regard it as an error as it is inappropriate. + + In TLS-1.3 all error alerts are considered FATAL + regardless of legacy alert type. But make sure legacy + type is printed in logs to not confuse users that are + expecting the same legacy type as sent by peer. + + + OTP-18536 Application(s): inets + + Removed deprecated functions + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + OTP-18551 Application(s): kernel + Related Id(s): PR-7106 + + Removed code:is_module_native/1 since HiPE has been + removed. It has since OTP 24 been deprecated and + scheduled for removal in OTP 26. + + Removed code:rehash/0 since the code path feature no + longer is present. It has since OTP 19 been deprecated + and has since OTP 24 been scheduled for removal in OTP + 26. + + + OTP-18552 Application(s): erts + Related Id(s): PR-6973 + + ERTS internal thread names have been changed. All + threads created by ERTS now have a prefix erts_ + followed by a type name potentially followed by an + integer index. For example, normal schedulers are now + named erts_sched_<IX>, dirty CPU schedulers + erts_dcpus_<IX>, and dirty IO schedulers + erts_dios_<IX>. NIF and driver thread names are + truncated at 15 characters regardless of whether the + underlying platform support more characters or not. + + + --------------------------------------------------------------------- + --- OTP-26.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18364 Application(s): otp + + Starting from Erlang/OTP 24, it has been possible to + write expressions such as A = catch Expr without + parentheses around the catch expression, but it was not + mentioned in the documentation. It now is. + + + OTP-18538 Application(s): megaco, otp + Related Id(s): GH-7031, PR-7078 + + Removed configure option --enable-sanitizers. It was + untested and broken. Address sanitizer for the emulator + has better support by the asan build target. + + + --- Improvements and New Features --- + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18209 Application(s): otp + Related Id(s): PR-5881 + + Fix the make target release, release_docs, install and + install-docs now work when the target path contains + whitespace and/or unicode characters. + + + OTP-18492 Application(s): otp + Related Id(s): GH-6706 + + The documentation for the bit syntax has been updated + to correct some factual errors and omissions. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + --------------------------------------------------------------------- + --- asn1-5.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18534 Application(s): asn1 + Related Id(s): ERIERL-737, PR-7039 + + The ASN.1 compiler rejects correctly specified + RELATIVE-OID values containing other RELATIVE-OID + values. This is now corrected. + + + --- Improvements and New Features --- + + OTP-18441 Application(s): asn1 + + Minor code improvements. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of asn1-5.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.25 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18377 Application(s): common_test + Related Id(s): PR-6437 + + This change improves Common Test docs (CT hook example + code) and adds Emacs skeleton with hook code. + + + --- Improvements and New Features --- + + OTP-18259 Application(s): common_test + Related Id(s): PR-5924 + + Updated common_test with a more robust way to fetch old + releases, while ignoring the current release. + + + OTP-18340 Application(s): common_test + + - re-write the XML ct module documentation into erlang + types to make Dialyzer able to catch more precise + errors + + + Full runtime dependencies of common_test-1.25: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18502 Application(s): compiler + + The compiler will now inline calls to maps:get/3. + + + Full runtime dependencies of compiler-8.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18204 Application(s): crypto + Related Id(s): PR-6203 + + Add support for SHAKE128 and SHAKE256. + + + OTP-18206 Application(s): crypto + Related Id(s): PR-6167 + + Make the -DOPENSSL_API_COMPAT flag work without + warnings. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of crypto-5.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18237 Application(s): dialyzer + Related Id(s): GH-6221, PR-6243 + + When checking behaviors, Dialyzer could generate false + warning that a callback function did not have the + correct type according to the spec in the behavior + definition. + + + OTP-18276 Application(s): dialyzer + Related Id(s): GH-6333 + + In a spec, list(none()) used to mean none(). It has now + been corrected to mean the empty list. + + + OTP-18389 Application(s): dialyzer + Related Id(s): GH-6508, PR-6864 + + *** POTENTIAL INCOMPATIBILITY *** + + Dialyzer was accepting typespecs containing singleton + type variables that appeared in an union type. + + Before this change, singleton type variables in an + union type were accepted (see example below). However, + type variable Foo appears only once in each branch of + the union type, so it is a singleton type variable (in + each branch of the union type) that is not bound. + + -spec run_test(Opts) -> term() when Opts :: + {join_specs, Foo} | {test, Foo}. + + Unbound type variables should be rejected by Dialyzer, + which now detects this error and rejects it in the same + manner as its non-union equivalent: + + -spec run_test_error(Opts) -> term() when Opts :: + {join_specs, Foo}. + + + OTP-18485 Application(s): dialyzer + Related Id(s): GH-6850, PR-6854 + + Fixed a bug that prevented the --plts option from being + used together with --add-to-plt. + + + --- Improvements and New Features --- + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + *** HIGHLIGHT *** + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18238 Application(s): dialyzer + Related Id(s): PR-6271 + + Dialyzer now produces clearer error messages for + contract violations. + + + OTP-18282 Application(s): dialyzer + Related Id(s): GH-6132, PR-6335 + + The name of a built-in type can now be reused as the + name of type locally. That is useful when an OTP + release introduces a new built-in type; having the + possibility to redefine built-in types locally can make + it easier to maintain code that works in multiple OTP + releases. + + + OTP-18310 Application(s): dialyzer + + There is new option -no_spec to ignore all specs. It is + useful for debugging when one suspects that some specs + could be incorrect. + + + OTP-18342 Application(s): dialyzer + Related Id(s): GH-6117, PR-6654 + + Dialyzer's overloaded domain warning becomes is + disabled by default, and can be enabled with the flag + -Woverlapping_contract. + + Dialyzer used to issue a warning for overloaded domains + stating "such contracts are currently unsupported and + are simply ignored". + + These contracts are not "ignored" but rather, Dialyzer + takes the union of the overloaded domains. This means + that we lose the dependency from each corresponding + input to output type. Because of this, the warning is + really about not being able to establish a dependency + between the input and output types of each respective + overloaded function specification. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + *** POTENTIAL INCOMPATIBILITY *** + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + Full runtime dependencies of dialyzer-5.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-4.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of diameter-2.3: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18338 Application(s): erl_docgen + Related Id(s): PR-6408 + + New XML tag <change>. Like a <note> box, but with a + different (steel blue) color and label. Intended to + contain talk about semantic differences between OTP + releases. + + + OTP-18501 Application(s): erl_docgen + Related Id(s): PR-6987 + + Add "since" attribute to XML taglist/tag elements to + document OTP version when a particular option/feature + was introduced. The version is shown out in the right + margin, similar to "since" versions for functions. + + + Full runtime dependencies of erl_docgen-1.5: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.4 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --- Known Bugs and Problems --- + + 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-14.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18016 Application(s): erts + + If a local fun was called while reloading the *exact + same* module that defined said fun, there was a small + window in which the call would land in code that was + yet to be fully loaded. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18274 Application(s): erts + Related Id(s): PR-6048 + + Fix so that -fno-omit-frame-pointer is applied to all + of the Erlang VM when using the JIT so that tools, such + as perf, can crawl the process stacks. + + + OTP-18277 Application(s): erts + Related Id(s): PR-6306 + + Compilation server now support unicode paths in + compilation server for filesystems that are encoded + with unicode. + + + OTP-18498 Application(s): erts + + *** HIGHLIGHT *** + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + --- Improvements and New Features --- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + *** POTENTIAL INCOMPATIBILITY *** + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Add support for socket on Windows. + + -- Pre release status. + + -- Error codes not finalized. + + -- No explicit support for Windows specific options + (socket options, flags for read and write). + + -- New async api for Windows (completion). See the + Asynchronous calls chapter in the (Socket Usage) Users + Guide. + + -- To ensure platform independence, gen_tcp and gen_udp + is *intended* to be used (not yet updated). + + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on windows as many more checks are + cached. + + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18131 Application(s): erts + + Optimized internal hash routines. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18141 Application(s): erts + Related Id(s): OTP-18140, PR-6073 + + Optimization of process aliases made possible now that + support for version 4 node container types in the + external term format is mandatory. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18227 Application(s): erts + Related Id(s): PR-6254 + + When erl -eval fails to execute the command is not + printed to standard_error. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + *** HIGHLIGHT *** + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18360 Application(s): erts + Related Id(s): PR-6497 + + erlang:display/1 will now print large maps in a more + readable way (similar to how small maps are printed). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18369 Application(s): erts + + Fail enif_init_resource_type and friends by returning + NULL if not called during load/upgrade. Old behavior + was undefined. + + + OTP-18410 Application(s): erts + Related Id(s): GH-5889, PR-6345 + + New option include_shared_binaries for the + max_heap_size process limit. If set to true, large + binaries (> 64 bytes), which may be referred by several + processes, are included in the memory sum compared + against the max_heap_size limit. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18424 Application(s): erts + Related Id(s): PR-6716 + + Reduced memory usage of file:read_file_info/1,2 + + + OTP-18425 Application(s): erts + Related Id(s): GH-5333, PR-6628 + + Add new function current_stacktrace for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the current stacktrace of the + caller into the trace message sent to the trace + receiver. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + *** HIGHLIGHT *** + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + *** HIGHLIGHT *** + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18477 Application(s): erts + Related Id(s): PR-7006 + + Introduced the local option of term_to_binary/2 and + term_to_iovec/2. + + + OTP-18483 Application(s): erts + Related Id(s): PR-6888 + + Document the commonly used practice to create and store + static atoms at NIF load time in callbacks load or + upgrade. + + + OTP-18493 Application(s): erts + Related Id(s): PR-6272 + + Optimize ets:lookup_element for uncompressed tables by + using a more efficient method to copy the term from ETS + to the heap of the calling process. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + *** POTENTIAL INCOMPATIBILITY *** + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + OTP-18517 Application(s): erts + + The version of zlib included in the Erlang/OTP source + code is now 1.2.13. + + + OTP-18520 Application(s): erts + Related Id(s): GH-6455 + + gen_tcp:send/*, gen_udp:send/* and gen_sctp:send/* have + been optimized to use the infamous receive reference + optimization, so now sending should not have bad + performance when the calling process has a large + message queue. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18523 Application(s): erts + Related Id(s): PR-7004 + + Optimize maps:merge/2 memory consumption for small maps + (<33 keys) by reusing key tuples or entire maps if the + result map has the same number of keys as any of the + argument maps. + + + OTP-18524 Application(s): erts + Related Id(s): OTP-18523, PR-7004 + + Optimize maps:merge/2 memory consumption further for + small maps by mutating 2nd map to use literal key tuple + of 1st map if both have the same keys. + + + OTP-18526 Application(s): erts + Related Id(s): GH-7045 + + ceil/1, floor/1, is_bitstring/1, is_boolean/1, + is_function/2, and tuple_size/1 can now be used in + match specifications. + + + OTP-18540 Application(s): erts, kernel + Related Id(s): PR-6900 + + Allow IPv6 addresses as host in http packets decoded by + erlang:decode_packet/3 and gen_tcp packet option. The + IPv6 address should be enclosed within [] according to + RFC2732. + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + OTP-18552 Application(s): erts + Related Id(s): PR-6973 + + *** POTENTIAL INCOMPATIBILITY *** + + ERTS internal thread names have been changed. All + threads created by ERTS now have a prefix erts_ + followed by a type name potentially followed by an + integer index. For example, normal schedulers are now + named erts_sched_<IX>, dirty CPU schedulers + erts_dcpus_<IX>, and dirty IO schedulers + erts_dios_<IX>. NIF and driver thread names are + truncated at 15 characters regardless of whether the + underlying platform support more characters or not. + + + Full runtime dependencies of erts-14.0: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ftp-1.1.5 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18359 Application(s): ftp + Related Id(s): PR-6545 + + Fixes the documentation for the ftp module and updates + the typing of ftp functions that return errors. + + The documentation has been improved and the types of + the functions are now read from source code, instead of + being hard-coded in XML. + + Functions returning errors of the form {error, Reason + :: 'ehost' | ...} are now similar to other modules, + i.e., {error, Reason :: term()}. If one wants to + understand the error, one must call the function + ftp:formaterror({error, Reason}). + + + --- Improvements and New Features --- + + OTP-18541 Application(s): ftp + + Remove deprecated functions in OTP-26 + + + Full runtime dependencies of ftp-1.1.5: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-9.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18476 Application(s): inets + Related Id(s): GH-6380 + + Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" + errors. + + + --- Improvements and New Features --- + + OTP-18167 Application(s): inets + + By default ssl connections will use options from + ssl_default_options(true) + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + OTP-18530 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + IP display string will now always be in lower case, + effects ipv6 addresses. + + + OTP-18536 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + Removed deprecated functions + + + OTP-18544 Application(s): inets + Related Id(s): GH-5276 + + Update the code in the inets example directory to + reflect the latest implementation + + + Full runtime dependencies of inets-9.0: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- jinterface-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --------------------------------------------------------------------- + --- kernel-9.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + *** POTENTIAL INCOMPATIBILITY *** + + Fix bug where duplicate keys were allowed in the .app + file of an application. Duplicate keys are now rejected + and the application will not start if they exist. + + + OTP-18225 Application(s): kernel + Related Id(s): PR-6036 + + Fix inconsistent handling in logger_formatter of the + branched values in conditional branches. For example + using msg in a conditional branch would not be + formatted as it should before this fix. + + + OTP-18226 Application(s): kernel + Related Id(s): PR-6253 + + Fix the logger_std_h handler to log to standard_error + if logging to standard_io fails for any reason. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18286 Application(s): kernel + Related Id(s): PR-5955 + + Fix logging of log events generated before kernel is + started to not fail if the code for formatting those + log messaged have not yet been loaded. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + OTP-18528 Application(s): kernel + Related Id(s): PR-7009 + + Return type for seq_trace:get_token/1 fixed. + + + OTP-18547 Application(s): kernel + Related Id(s): PR-7092 + + Replaced a regex with a special case handling of ANSI + Select Graphic Rendition escape characters, to speed up + io output that make use of these escape sequences. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18029 Application(s): erts, kernel + + Add support for socket on Windows. + + -- Pre release status. + + -- Error codes not finalized. + + -- No explicit support for Windows specific options + (socket options, flags for read and write). + + -- New async api for Windows (completion). See the + Asynchronous calls chapter in the (Socket Usage) Users + Guide. + + -- To ensure platform independence, gen_tcp and gen_udp + is *intended* to be used (not yet updated). + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18261 Application(s): kernel + Related Id(s): PR-5924 + + Add code:get_doc/2 which adds support to fetch + documentation skeletons of functions using debug_info + chunks instead of eep48 doc chunks. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18305 Application(s): kernel + Related Id(s): PR-5831 + + gen_server optimized by caching callback functions + + + OTP-18327 Application(s): kernel + Related Id(s): PR-6433 + + Prepare the pg communication protocol for upgrade. The + plan is for OTP-28 nodes to be able to use an upgraded + pg protocol while still being able to talk with OTP 26 + nodes. + + + OTP-18331 Application(s): kernel + Related Id(s): ERIERL-870 + + New log type 'rotate', where the log files are + compressed upon rotation. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18419 Application(s): kernel + + The function file:pid2name/1 is deprecated and will be + removed in Erlang/OTP 27. + + + OTP-18442 Application(s): kernel + Related Id(s): GH-6606, PR-6786 + + The modules Erlang DNS resolver inet_res and helper + modules have been updated for RFC6891; to handle OPT RR + with DNSSEC OK (DO) bit. + + + OTP-18444 Application(s): kernel + Related Id(s): PR-6035 + + Introduced application:get_supervisor/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18448 Application(s): kernel + Related Id(s): PR-6736 + + Reduce contention on the code_server by doing the code + preparation on the client. + + + OTP-18451 Application(s): kernel + Related Id(s): PR-6737 + + Added a mode to ensure_all_loaded, to start children + application and their dependencies concurrently. + + + OTP-18452 Application(s): kernel + Related Id(s): PR-6729 + + Cache OTP boot code paths, to limit how many folders + that are being accessed during a module lookup. Can be + disabled with -cache_boot_path false. OTP boot code + paths consists of ERL_LIB environment variables. The + various otp/*/ebin folders. And the {path, ...} clauses + in the init script. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18466 Application(s): kernel + Related Id(s): PR-6832 + + Add cache attribute to code path apis. + + Added an optional cache/nocache argument to all + code:add_path*, code:set_path*, and code:replace_path* + functions. These functions will then avoid doing + file-accesses if they are cached. Cache can be cleared + with code:clear_cache/0. Added code:del_paths/1 to make + it easier to clear multiple paths. + + + OTP-18484 Application(s): kernel + Related Id(s): PR-6844 + + Improvements to code:ensure_modules_loaded/1: + Previously it would prepare modules and then abandon + references to said modules if they had on_load + callbacks. This pull request makes it so they keep the + references around and then serially load them without + having to fetch the object code and prepare them again. + + + OTP-18510 Application(s): kernel + Related Id(s): GH-6098, PR-6982 + + The internal DNS resolver has bee updated to handle DNS + LOC RR:s (RFC 1876). This is an undocumented module, + although still used by power users. See the source + code. + + + OTP-18521 Application(s): kernel + Related Id(s): PR-7025 + + Reduced memory consumption in global when informing + other nodes about lost connections. + + + OTP-18533 Application(s): kernel + Related Id(s): PR-7061 + + The net_kernel, global, and global_group servers now + have fully asynchronous distributed signaling enabled + all the time which prevents them from ever getting + blocked on send of distributed signals. + + Documentation about blocking distributed signals has + also been improved. + + + OTP-18540 Application(s): erts, kernel + Related Id(s): PR-6900 + + Allow IPv6 addresses as host in http packets decoded by + erlang:decode_packet/3 and gen_tcp packet option. The + IPv6 address should be enclosed within [] according to + RFC2732. + + + OTP-18542 Application(s): kernel + + Remove deprecated functions in OTP-26 + + + OTP-18551 Application(s): kernel + Related Id(s): PR-7106 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed code:is_module_native/1 since HiPE has been + removed. It has since OTP 24 been deprecated and + scheduled for removal in OTP 26. + + Removed code:rehash/0 since the code path feature no + longer is present. It has since OTP 19 been deprecated + and has since OTP 24 been scheduled for removal in OTP + 26. + + + Full runtime dependencies of kernel-9.0: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- megaco-4.4.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18538 Application(s): megaco, otp + Related Id(s): GH-7031, PR-7078 + + Removed configure option --enable-sanitizers. It was + untested and broken. Address sanitizer for the emulator + has better support by the asan build target. + + + Full runtime dependencies of megaco-4.4.4: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.22 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18309 Application(s): mnesia + Related Id(s): PR-6377 + + Added debug statistics for active transactions. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of mnesia-4.22: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- observer-2.15 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18430 Application(s): observer + Related Id(s): PR-6397 + + Added start/1, start_and_wait functions/1|2 functions. + + + Full runtime dependencies of observer-2.15: erts-14.0, et-1.5, + kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + + + --------------------------------------------------------------------- + --- odbc-2.14.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18539 Application(s): odbc + + Allow larger column sizes than 8001 in case DB supports + it. + + + Full runtime dependencies of odbc-2.14.1: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- os_mon-2.9 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18246 Application(s): os_mon + Related Id(s): GH-6156, PR-6284 + + Fix internal os_mon_sysinfo:get_disk_info/1 function to + not crash when run on Windows with multiple drives. + + + OTP-18546 Application(s): os_mon + Related Id(s): GH-7070, PR-7071 + + Fixed a memory leak when calling cpu_sup:util/0,1 on + FreeBSD. + + + --- Improvements and New Features --- + + OTP-18303 Application(s): os_mon + Related Id(s): PR-6384 + + The disksup:get_disk_info/0 and disksup:get_disk_info/1 + functions have been introduced. These can be used in + order to immediately fetch information about current + disk usage. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + Full runtime dependencies of os_mon-2.9: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- parsetools-2.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + *** HIGHLIGHT *** + + Leex has been extended with optional column number + support. + + + Full runtime dependencies of parsetools-2.5: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of public_key-1.14: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- reltool-1.0 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18230 Application(s): reltool + Related Id(s): PR-5936 + + Add possibility to strip specific chunks from beam + files included in a release. Before this change it was + only possible to strip all chunks from the beam files. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + *** POTENTIAL INCOMPATIBILITY *** + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of reltool-1.0: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0, stdlib-5.0, tools-2.6.14, wx-2.3 + + + --------------------------------------------------------------------- + --- runtime_tools-2.0 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18499 Application(s): runtime_tools + Related Id(s): PR-6946 + + Fixed the type specification for + instrument:carriers/0,1 + + + --- Improvements and New Features --- + + OTP-18211 Application(s): runtime_tools + Related Id(s): PR-6143 + + Add dbg:tracer(file, Filename) as a convenient way to + trace to a file in clean text. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + Full runtime dependencies of runtime_tools-2.0: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18300 Application(s): sasl + Related Id(s): PR-6389 + + Improve error message from systools:make_script, when + .app parameters contain duplicates. The parameters that + will be checked are modules, applications and + registered. + + + Full runtime dependencies of sasl-4.2.1: erts-10.2, kernel-6.0, + stdlib-4.0, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.14 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of snmp-5.14: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.0 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18231 Application(s): ssh + Related Id(s): OTP-17932, PR-6144 + + The ssh_cli has been updated to work with the changes + introduced in the new Erlang shell implementation. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of ssh-5.0: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18550 Application(s): ssl + + Client signature algorithm list input order is now + honored again , it was accidently reversed by a + previous fix. + + + --- Improvements and New Features --- + + OTP-14771 Application(s): ssl + + *** POTENTIAL INCOMPATIBILITY *** + + Remove less that 256 bit ECC from default supported ECC + pre TLS-1.3 + + + OTP-15903 Application(s): ssl + + Improved error checking and handling of ssl options. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18253 Application(s): ssl + + With this change, TLS 1.3 server can be configured to + include client certificate in session ticket. + + + OTP-18254 Application(s): ssl + Related Id(s): PR-5982 + + With this change, it is possible to configure + encryption seed to be used with TLS1.3 stateless + tickets. This enables using tickets on different server + instances. + + + OTP-18312 Application(s): ssl + + Debugging enhancements. + + + OTP-18335 Application(s): ssl + + With this change, maybe keyword atom is not used as + function name in ssl code. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + *** POTENTIAL INCOMPATIBILITY *** + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18453 Application(s): ssl + + Mitigate memory usage from large certificate chains by + lowering the maximum handshake size. This should not + effect the common cases, if needed it can be configured + to a higher value. + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + *** POTENTIAL INCOMPATIBILITY *** + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18459 Application(s): ssl + + *** HIGHLIGHT *** + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + OTP-18465 Application(s): ssl + Related Id(s): GH-7065 + + Refactors the (ssl application to use macros for TLS + and DTLS versions instead of hard-coded tuple numbers. + This change improves the maintainability of ssl + + + OTP-18507 Application(s): ssl + + If the function ssl:renegotiate/1 is called on + connection that is running TLS-1.3 return an error + instead of hanging or timing out. + + + OTP-18531 Application(s): ssl + + *** POTENTIAL INCOMPATIBILITY *** + + If a user cancel alert with level warning is received + during handshake make it be handled the same regardless + of TLS version. If it is received in connection in + TLS-1.3 regard it as an error as it is inappropriate. + + In TLS-1.3 all error alerts are considered FATAL + regardless of legacy alert type. But make sure legacy + type is printed in logs to not confuse users that are + expecting the same legacy type as sent by peer. + + + Full runtime dependencies of ssl-11.0: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18275 Application(s): stdlib + Related Id(s): PR-6045 + + All process calls in dets have been updated to use the + receive queue optimizations. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + OTP-18548 Application(s): stdlib + Related Id(s): PR-6967 + + Fix return value 'undefined' of v(N) is treated as + missing command. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-15597 Application(s): stdlib + Related Id(s): PR-5831 + + Gen_server now caches external functions for use in + handle_call, handle_cast and handle_info. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten from by + moving more code to Erlang from the old linked-in + driver and implementing all the I/O primitives needed + in a NIF instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + + OTP-18150 Application(s): stdlib + + Added codepoint category to unicode_util + + + OTP-18159 Application(s): stdlib + Related Id(s): PR-6904 + + Added the zip:zip_get_crc32/2 function to retrieve the + CRC32 checksum from an opened ZIP archive. + + + OTP-18176 Application(s): stdlib + Related Id(s): PR-6118 + + Add the new options post_process_args and detached to + peer:start function. + + + OTP-18221 Application(s): stdlib + Related Id(s): PR-6197 + + The re:replace/3,4 functions now accept as the + replacement argument. + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + *** HIGHLIGHT *** + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are more + than three times faster than in Erlang/OTP 25. + + + OTP-18236 Application(s): stdlib + Related Id(s): PR-6256 + + Improved implementation of timer:apply_interval/4 + reducing load on the timer server, and introduction of + the new function timer:apply_repeatedly/4. + timer:apply_repeatedly/4 is similar to + timer:apply_interval/4, but timer:apply_repeatedly/4 + prevents parallel execution of triggered apply + operations which timer:apply_interval/4 does not. + + + OTP-18247 Application(s): stdlib + Related Id(s): PR-6280, PR-6711 + + The base64 module now supports encoding and decoding + with an alternate URL safe alphabet, and an option for + accepting or adding missing = padding characters. + + + OTP-18272 Application(s): stdlib + Related Id(s): PR-6279 + + Add shell:whereis/0 which can be used to locate the + current shell process. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18279 Application(s): stdlib + Related Id(s): PR-6234 + + New function ets:lookup_element/4 with a Default + argument returned if the key did not exist in the + table. The old ets:lookup_element/3 raises a badarg + exception which can be both inconveniente and slower. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18287 Application(s): stdlib + Related Id(s): PR-5955 + + peer nodes using standard_io connections now include + standard error from the node in the io stream from the + started node. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18301 Application(s): stdlib + Related Id(s): PR-6350 + + Improve type specification of + unicode:characters_to_list(). + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + *** HIGHLIGHT *** + + In the lists, the zip family of functions now takes + options to allow handling lists of different lengths. + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18354 Application(s): stdlib + Related Id(s): PR-6297 + + The binary:encode_hex/2 function has been added to + allow the encoded hexadecimal digits to be in either + lower or upper case. + + + OTP-18355 Application(s): stdlib + Related Id(s): PR-6507 + + Variants of timer:tc() with user specified time unit + have been introduced. + + + OTP-18361 Application(s): stdlib + Related Id(s): PR-6536 + + New function math:tau/0. Returns 2*math:pi(). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18385 Application(s): stdlib + Related Id(s): PR-6698 + + Optimized gen_server:multi_call(). + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18423 Application(s): stdlib + Related Id(s): com/erlang/backlog/issues/142, + https://github + + Make gen_server fail "silently" with a new return value + for init/1. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18474 Application(s): stdlib + Related Id(s): PR-6895 + + Static supervisors are very idle processes after they + have started so they will now be hibernated after start + to improve resource management. + + + OTP-18494 Application(s): stdlib + Related Id(s): PR-6924 + + Support has been added in ms_transform for the actions + caller_line/0, current_stacktrace/0, and + current_stacktrace/1. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + *** HIGHLIGHT *** + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18500 Application(s): stdlib + + *** HIGHLIGHT *** + + Update Unicode to version 15.0.0. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + OTP-18515 Application(s): stdlib + Related Id(s): GH-6990 + + Improved the performance of sets:subtract/2 when + subtracting a small number of elements. + + + OTP-18518 Application(s): stdlib + Related Id(s): GH-7015 + + The linter will no longer raise warnings for + underspecified opaque types. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18537 Application(s): stdlib + Related Id(s): PR-7081 + + The by gen_statem previously used call proxy process + that was used for preventing late replies from reaching + the client at timeout or connection loss has been + removed. It is no longer needed since process aliases + take care of this, are used, and supported by all + Erlang nodes that an OTP 26 Erlang node can communicate + with. + + + Full runtime dependencies of stdlib-5.0: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + Full runtime dependencies of syntax_tools-3.1: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tftp-1.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of tftp-1.1: erts-6.0, kernel-6.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- tools-3.6 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + Full runtime dependencies of tools-3.6: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.3 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of wx-2.3: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0.1.README.txt b/release-notes/OTP-26.0.1.README.txt new file mode 100644 index 0000000..f7a56ee --- /dev/null +++ b/release-notes/OTP-26.0.1.README.txt @@ -0,0 +1,318 @@ +Patch Package: OTP 26.0.1 +Git Tag: OTP-26.0.1 +Date: 2023-06-08 +Trouble Report Id: OTP-18576, OTP-18578, OTP-18581, OTP-18583, + OTP-18584, OTP-18585, OTP-18587, OTP-18588, + OTP-18593, OTP-18595, OTP-18596, OTP-18597, + OTP-18600, OTP-18601, OTP-18602, OTP-18603, + OTP-18604, OTP-18617, OTP-18619, OTP-18621, + OTP-18632 +Seq num: ERIERL-944, GH-7213, GH-7247, GH-7248, + GH-7251, GH-7252, GH-7259, GH-7264, GH-7282, + GH-7288, GH-7297, GH-7301, GH-7303, GH-7338, + GH-7339 +System: OTP +Release: 26 +Application: compiler-8.3.1, erts-14.0.1, inets-9.0.1, + kernel-9.0.1, ssl-11.0.1, stdlib-5.0.1, + xmerl-1.3.32 +Predecessor: OTP 26.0 + + Check out the git tag OTP-26.0.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.3.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.3.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18576 Application(s): compiler + + Fixed a bug where a failing bsl expression in a guard + threw an exception instead of causing the guard to + fail. + + + OTP-18581 Application(s): compiler + Related Id(s): GH-7251 + + Fixed a bug that would case the validator to reject + legal code. + + + OTP-18583 Application(s): compiler + Related Id(s): GH-7259 + + The compiler could re-order clauses matching binaries + so that the incorrect clause would match. That could + only happen for code that used the option + {error_location,line} or for code without line or + column number information (e.g. generated by a parse + transform). + + + OTP-18593 Application(s): compiler + Related Id(s): GH-7252 + + Complex guard expression using the or operator and + guard BIFs that can fail could sometimes be miscompiled + so that the guard would succeed even if a call to a + guard BIF failed. + + + OTP-18600 Application(s): compiler + Related Id(s): GH-7248 + + With optimizations disabled, a try/catch construct + could return an incorrect value. + + + OTP-18601 Application(s): compiler + + In rare circumstance, a combination of binary + construction and binary_part/3 would cause the compiler + to generate unsafe code that would crash the runtime + system. + + + OTP-18617 Application(s): compiler + Related Id(s): GH-7338 + + The compiler could be very slow when compiling guards + with multiple guard tests separated with 'or' or ';'. + + + OTP-18619 Application(s): compiler + Related Id(s): GH-7339 + + Complex guard expressions using 'or' and map updates + could succeed even if the map update failed. + + + Full runtime dependencies of compiler-8.3.1: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.0.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18585 Application(s): erts + Related Id(s): OTP-18029 + + Build of the socket nif failed on Solaris 11. + + + OTP-18587 Application(s): erts + + Fixed two reduction-counting bugs relating to binaries. + + + OTP-18597 Application(s): erts + + Constructing a binary segment not aligned with a byte + boundary, with a size not fitting in 31 bits, and with + a value not fitting in a 64-bit word could crash the + runtime system. + + + OTP-18602 Application(s): erts + Related Id(s): GH-7282 + + When a binary construction failed because of bad size + for a segment, the error information was not always + correct. + + + OTP-18621 Application(s): erts + Related Id(s): GH-7288 + + Fixed a crash when calling a fun that was defined in a + module that had been upgraded. + + + Full runtime dependencies of erts-14.0.1: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-9.0.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The inets-9.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18604 Application(s): inets + Related Id(s): GH-7303, PR-7306 + + Do not make the default ssl options by calling + httpc:ssl_verify_host_options(true) if ssl options are + supplied by the user. + + + Full runtime dependencies of inets-9.0.1: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- kernel-9.0.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18578 Application(s): kernel, stdlib + Related Id(s): GH-7213 + + The POSIX error exdev was sometimes incorrectly + described as "cross domain link" in some error + messages. + + + OTP-18584 Application(s): kernel + Related Id(s): #7238 + + Corrected the socket send function description (send + with Timeout = nowait). The send function(s) could not + return {ok, {RestData, SelectInfo}} + + + Full runtime dependencies of kernel-9.0.1: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18588 Application(s): ssl + Related Id(s): GH-7264, PR-7277 + + Make sure that selection of client certificates handle + both TLS-1.3 and TLS-1.2 names correctly. Could cause + valid client certificate to not be selected, and an + empty client certificate message to be sent to server. + + + OTP-18596 Application(s): ssl + Related Id(s): GH-7247 + + Improved ssl:format_error/1 to handle more error + tuples. + + + OTP-18603 Application(s): ssl + Related Id(s): GH-7297 + + Fixed hanging ssl:connect when ssl application is not + started. + + + OTP-18632 Application(s): ssl + Related Id(s): GH-7301, PR-7300 + + Correct handling of retransmission timers, current + behavior could cause unwanted delays. + + + Full runtime dependencies of ssl-11.0.1: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18578 Application(s): kernel, stdlib + Related Id(s): GH-7213 + + The POSIX error exdev was sometimes incorrectly + described as "cross domain link" in some error + messages. + + + Full runtime dependencies of stdlib-5.0.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.32 ---------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.32 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18595 Application(s): xmerl + Related Id(s): ERIERL-944 + + New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some + XML security issues. + + xmerl_scan gets one new option: + + -- {allow_entities, Boolean} -- Gives the possibility + to disallow entities by setting this option to false + (true is default) + + xmerl_sax_parser gets the following options: + + -- disallow_entities -- Don't allow entities in + document + + -- {entity_recurse_limit, N} -- Set a limit on entity + recursion depth (default is 3) + + -- {external_entities, AllowedType} -- Specify which + types of external entities that are allowed, this also + affect external DTD's. The types are all(default), file + and none + + -- {fail_undeclared_ref, Boolean} -- Sets the behavior + for undeclared references due to an external file is + not parsed (true is default) + + The old option skip_external_dtd is still valid and the + same as {external_entities, none} and + {fail_undeclared_ref, false} but just affects DTD's and + not other external references. + + + Full runtime dependencies of xmerl-1.3.32: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0.2.README.txt b/release-notes/OTP-26.0.2.README.txt new file mode 100644 index 0000000..f9c95dd --- /dev/null +++ b/release-notes/OTP-26.0.2.README.txt @@ -0,0 +1,355 @@ +Patch Package: OTP 26.0.2 +Git Tag: OTP-26.0.2 +Date: 2023-06-29 +Trouble Report Id: OTP-18580, OTP-18618, OTP-18624, OTP-18625, + OTP-18626, OTP-18630, OTP-18634, OTP-18635, + OTP-18636, OTP-18637, OTP-18640, OTP-18643, + OTP-18646, OTP-18649, OTP-18650, OTP-18651, + OTP-18652, OTP-18653, OTP-18656, OTP-18657, + OTP-18659, OTP-18663 +Seq num: ERIERL-932, GH-6881, GH-7029, GH-7230, + GH-7261, GH-7286, GH-7296, GH-7308, GH-7324, + GH-7354, GH-7356, GH-7368, GH-7370, GH-7390, + GH-7433 +System: OTP +Release: 26 +Application: compiler-8.3.2, erts-14.0.2, kernel-9.0.2, + ssh-5.0.1, ssl-11.0.2, stdlib-5.0.2 +Predecessor: OTP 26.0.1 + + Check out the git tag OTP-26.0.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.3.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.3.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18625 Application(s): compiler + Related Id(s): GH-7354 + + Fixed a type handling bug that would cause an internal + consistence failure for correct code. + + + OTP-18626 Application(s): compiler + Related Id(s): GH-7356 + + Fixed a bug that could cause the stack trace of throw + exceptions to be erroneously optimized out. + + + OTP-18634 Application(s): compiler + Related Id(s): GH-7370 + + Complex guard expression using 'or' were not always + fully evaluated, making guards that were supposed to + fail succeed. + + + Full runtime dependencies of compiler-8.3.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.0.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18630 Application(s): erts + Related Id(s): GH-7029, PR-7275 + + Fix using the IME (Input Method Editor) to enter text + in cmd.exe and powershell.exe on Windows. + + + OTP-18635 Application(s): erts, kernel + Related Id(s): #7328 + + Multiple socket:accept calls issue. When making + multiple accept calls, only the last call is active. + + + OTP-18636 Application(s): erts, kernel + Related Id(s): GH-7308, PR-7352 + + Fix the shell to ignore terminal delay when the + terminal capabilities report that they should be used. + + + OTP-18637 Application(s): erts, kernel + Related Id(s): GH-7324, PR-7359 + + Fix "oldshell" to echo characters while typing on + Windows. + + + OTP-18646 Application(s): erts, kernel + + On Windows, a call to the function socket:close, when + there are waiting active calls to read, write or accept + functions, could hang. + + + OTP-18649 Application(s): erts, kernel + Related Id(s): GH-7261, PR-7400 + + Fix issues when reading or configuring standard_io on + Windows when erl.exe is started using -noshell flag. + + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + OTP-18663 Application(s): erts + Related Id(s): GH-7433, PR-7437 + + On AArch64 (ARM64), equality and non-equality tests + with literal bitstrings could succeed when they should + fail and vice versa. + + + Full runtime dependencies of erts-14.0.2: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.0.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18580 Application(s): kernel, stdlib + Related Id(s): PR-7242 + + Fix bug where when you entered Alt+Enter in the + terminal, the cursor would move to the last line, + instead of moving to the next line. + + + OTP-18624 Application(s): kernel + Related Id(s): GH-7296 + + Fix so that the shell does not crash on startup when + termcap is not available. + + + OTP-18635 Application(s): erts, kernel + Related Id(s): #7328 + + Multiple socket:accept calls issue. When making + multiple accept calls, only the last call is active. + + + OTP-18636 Application(s): erts, kernel + Related Id(s): GH-7308, PR-7352 + + Fix the shell to ignore terminal delay when the + terminal capabilities report that they should be used. + + + OTP-18637 Application(s): erts, kernel + Related Id(s): GH-7324, PR-7359 + + Fix "oldshell" to echo characters while typing on + Windows. + + + OTP-18640 Application(s): kernel, stdlib + Related Id(s): GH-6881, GH-7286, GH-7368, PR-7384 + + Fix eof handling when reading from stdin when erlang is + started using -noshell. + + + OTP-18646 Application(s): erts, kernel + + On Windows, a call to the function socket:close, when + there are waiting active calls to read, write or accept + functions, could hang. + + + OTP-18649 Application(s): erts, kernel + Related Id(s): GH-7261, PR-7400 + + Fix issues when reading or configuring standard_io on + Windows when erl.exe is started using -noshell flag. + + + OTP-18650 Application(s): kernel + + gen_udp:connect with inet_backend = socket fails when + the Address is a hostname (string or atom). + + + OTP-18651 Application(s): kernel + Related Id(s): PR-7242 + + Fixed problem which would cause shell to crash if + particular escape sequence was written to stdout. + + + OTP-18652 Application(s): kernel, stdlib + Related Id(s): PR-7242 + + Fixed problem where output would disappear if it was + received after a prompt was written in the shell. + + + OTP-18656 Application(s): kernel + Related Id(s): GH-7390, PR-7404 + + Fix a crash where the location of erts could not be + found in rebar3 dev builds. + + + OTP-18657 Application(s): kernel + Related Id(s): GH-7230, PR-7384 + + Introduce the KERNEL application parameter + standard_io_encoding that can be used to set the + default encoding for standard_io. This option needs to + be set to latin1 if the application wants to treat all + input data as bytes rather than utf-8 encoded + characters. + + + Full runtime dependencies of kernel-9.0.2: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.0.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18653 Application(s): ssh + Related Id(s): PR-7242 + + Added multiline editing support to ssh clients + connected through OTP ssh daemon. + + + Full runtime dependencies of ssh-5.0.1: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18643 Application(s): ssl + Related Id(s): ERIERL-932 + + Added keylog information to all protocol versions in + ssl:connection_information/2. + + + --- Improvements and New Features --- + + OTP-18618 Application(s): ssl + Related Id(s): ERIERL-932 + + Add RFC-6083 considerations for DTLS to enable gen_sctp + based callback for the transport. + + + Full runtime dependencies of ssl-11.0.2: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18580 Application(s): kernel, stdlib + Related Id(s): PR-7242 + + Fix bug where when you entered Alt+Enter in the + terminal, the cursor would move to the last line, + instead of moving to the next line. + + + OTP-18640 Application(s): kernel, stdlib + Related Id(s): GH-6881, GH-7286, GH-7368, PR-7384 + + Fix eof handling when reading from stdin when erlang is + started using -noshell. + + + OTP-18652 Application(s): kernel, stdlib + Related Id(s): PR-7242 + + Fixed problem where output would disappear if it was + received after a prompt was written in the shell. + + + OTP-18659 Application(s): erts, stdlib + Related Id(s): PR-7426 + + The following functions are now much faster when given + a long list or binary: + + -- erlang:list_to_integer/1 + + -- erlang:binary_to_integer/1 + + -- erlang:binary_to_integer/2 + + -- erlang:list_to_integer/2 + + -- string:to_integer/1 + + + Full runtime dependencies of stdlib-5.0.2: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.0.README.txt b/release-notes/OTP-26.0.README.txt new file mode 100644 index 0000000..db7946b --- /dev/null +++ b/release-notes/OTP-26.0.README.txt @@ -0,0 +1,3962 @@ +Inital Release: OTP 26.0 +Git Tag: OTP-26.0 +Date: 2023-05-16 +Trouble Report Id: OTP-14771, OTP-14835, OTP-15597, OTP-15903, + OTP-16607, OTP-17771, OTP-17932, OTP-18016, + OTP-18029, OTP-18053, OTP-18126, OTP-18131, + OTP-18135, OTP-18137, OTP-18140, OTP-18141, + OTP-18159, OTP-18167, OTP-18168, OTP-18176, + OTP-18185, OTP-18188, OTP-18204, OTP-18206, + OTP-18209, OTP-18210, OTP-18211, OTP-18221, + OTP-18225, OTP-18226, OTP-18227, OTP-18228, + OTP-18230, OTP-18231, OTP-18235, OTP-18236, + OTP-18237, OTP-18238, OTP-18246, OTP-18247, + OTP-18248, OTP-18253, OTP-18254, OTP-18259, + OTP-18261, OTP-18271, OTP-18272, OTP-18274, + OTP-18275, OTP-18276, OTP-18277, OTP-18278, + OTP-18279, OTP-18282, OTP-18285, OTP-18286, + OTP-18287, OTP-18297, OTP-18300, OTP-18301, + OTP-18303, OTP-18305, OTP-18309, OTP-18310, + OTP-18312, OTP-18318, OTP-18327, OTP-18331, + OTP-18334, OTP-18335, OTP-18337, OTP-18338, + OTP-18340, OTP-18342, OTP-18344, OTP-18350, + OTP-18354, OTP-18355, OTP-18359, OTP-18360, + OTP-18361, OTP-18364, OTP-18367, OTP-18369, + OTP-18377, OTP-18385, OTP-18389, OTP-18405, + OTP-18410, OTP-18413, OTP-18414, OTP-18419, + OTP-18423, OTP-18424, OTP-18425, OTP-18430, + OTP-18431, OTP-18435, OTP-18438, OTP-18439, + OTP-18440, OTP-18441, OTP-18442, OTP-18444, + OTP-18445, OTP-18447, OTP-18448, OTP-18451, + OTP-18452, OTP-18453, OTP-18455, OTP-18456, + OTP-18459, OTP-18465, OTP-18466, OTP-18471, + OTP-18474, OTP-18476, OTP-18477, OTP-18478, + OTP-18483, OTP-18484, OTP-18485, OTP-18486, + OTP-18487, OTP-18488, OTP-18490, OTP-18491, + OTP-18492, OTP-18493, OTP-18494, OTP-18495, + OTP-18498, OTP-18499, OTP-18500, OTP-18501, + OTP-18502, OTP-18505, OTP-18507, OTP-18510, + OTP-18511, OTP-18515, OTP-18517, OTP-18518, + OTP-18520, OTP-18521, OTP-18522, OTP-18523, + OTP-18524, OTP-18526, OTP-18528, OTP-18530, + OTP-18531, OTP-18533, OTP-18534, OTP-18536, + OTP-18537, OTP-18538, OTP-18539, OTP-18540, + OTP-18541, OTP-18542, OTP-18543, OTP-18544, + OTP-18546, OTP-18547, OTP-18548, OTP-18549, + OTP-18551, OTP-18552, OTP-18558, OTP-18561, + OTP-18562, OTP-18564, OTP-18566, OTP-18567, + OTP-18569, OTP-18571, OTP-18572, OTP-18574, + OTP-18575 +Seq num: ERIERL-737, ERIERL-870, GH-3150, GH-3390, + GH-4225, GH-4343, GH-4965, GH-5276, GH-5325, + GH-5333, GH-5639, GH-5695, GH-5877, GH-5889, + GH-5899, GH-6014, GH-6085, GH-6098, GH-6117, + GH-6132, GH-6139, GH-6156, GH-6221, GH-6333, + GH-6339, GH-6348, GH-6353, GH-6380, GH-6455, + GH-6461, GH-6477, GH-6508, GH-6544, GH-6606, + GH-6672, GH-6679, GH-6706, GH-6850, GH-6903, + GH-6942, GH-6990, GH-7015, GH-7031, GH-7045, + GH-7065, GH-7070, GH-7116, GH-7153 +System: OTP +Release: 26 +Application: asn1-5.1, common_test-1.25, compiler-8.3, + crypto-5.2, dialyzer-5.1, diameter-2.3, + erl_docgen-1.5, erl_interface-5.4, erts-14.0, + et-1.7, ftp-1.2, inets-9.0, jinterface-1.14, + kernel-9.0, megaco-4.4.4, mnesia-4.22, + observer-2.15, odbc-2.14.1, os_mon-2.9, + parsetools-2.5, public_key-1.14, reltool-1.0, + runtime_tools-2.0, sasl-4.2.1, snmp-5.14, + ssh-5.0, ssl-11.0, stdlib-5.0, + syntax_tools-3.1, tftp-1.1, tools-3.6, wx-2.3 +Predecessor: OTP + + Check out the git tag OTP-26.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-15903 Application(s): ssl + + Improved error checking and handling of ssl options. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** POTENTIAL INCOMPATIBILITY *** + + The TTY/terminal subsystem has been rewritten by moving + more code to Erlang from the old linked-in driver and + implementing all the I/O primitives needed in a NIF + instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + -- Standard I/O now always defaults to unicode mode if + supported. Previously the default was latin1 if the + runtime system had been started with -oldshell or + -noshell (for example in an escript). To send raw bytes + over standard out, one now explicitly has to specify + io:setopts(standard_io, [{encoding, latin1}]). + + + OTP-18029 Application(s): erts, kernel + + Add support for socket on Windows. + + -- Pre release status. + + -- Error codes not finalized. + + -- No explicit support for Windows specific options + (socket options, flags for read and write). + + -- New async api for Windows (completion). See the + Asynchronous calls chapter in the (Socket Usage) Users + Guide. + + -- To ensure platform independence, gen_tcp and gen_udp + is *intended* to be used (not yet updated). + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are more + than three times faster than in Erlang/OTP 25. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + In the lists module, the zip family of functions now + takes options to allow handling lists of different + lengths. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18459 Application(s): ssl + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + Leex has been extended with optional column number + support. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18498 Application(s): erts + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + OTP-18500 Application(s): stdlib + + Update Unicode to version 15.0.0. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-14771 Application(s): ssl + + Remove less that 256 bit ECC from default supported ECC + pre TLS-1.3 + + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + The TTY/terminal subsystem has been rewritten by moving + more code to Erlang from the old linked-in driver and + implementing all the I/O primitives needed in a NIF + instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + -- Standard I/O now always defaults to unicode mode if + supported. Previously the default was latin1 if the + runtime system had been started with -oldshell or + -noshell (for example in an escript). To send raw bytes + over standard out, one now explicitly has to specify + io:setopts(standard_io, [{encoding, latin1}]). + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + Fixed a bug where duplicate keys were allowed in the + .app file of an application. Duplicate keys are now + rejected and the application will not start if they + exist. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + OTP-18530 Application(s): inets + + IP display string will now always be in lower case, + effects ipv6 addresses. + + + OTP-18531 Application(s): ssl + + If a user cancel alert with level warning is received + during handshake make it be handled the same regardless + of TLS version. If it is received in connection in + TLS-1.3 regard it as an error as it is inappropriate. + + In TLS-1.3 all error alerts are considered FATAL + regardless of legacy alert type. But make sure legacy + type is printed in logs to not confuse users that are + expecting the same legacy type as sent by peer. + + + OTP-18536 Application(s): inets + + Removed deprecated functions + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + OTP-18551 Application(s): kernel + Related Id(s): PR-7106 + + Removed code:is_module_native/1 since HiPE has been + removed. It has since OTP 24 been deprecated and + scheduled for removal in OTP 26. + + Removed code:rehash/0 since the code path feature no + longer is present. It has since OTP 19 been deprecated + and has since OTP 24 been scheduled for removal in OTP + 26. + + + OTP-18552 Application(s): erts + Related Id(s): PR-6973 + + ERTS internal thread names have been changed. All + threads created by ERTS now have a prefix erts_ + followed by a type name potentially followed by an + integer index. For example, normal schedulers are now + named erts_sched_<IX>, dirty CPU schedulers + erts_dcpus_<IX>, and dirty IO schedulers + erts_dios_<IX>. NIF and driver thread names are + truncated at 15 characters regardless of whether the + underlying platform support more characters or not. + + + --------------------------------------------------------------------- + --- OTP-26.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18364 Application(s): otp + + Starting from Erlang/OTP 24, it has been possible to + write expressions such as A = catch Expr without + parentheses around the catch expression, but it was not + mentioned in the documentation. It now is. + + + OTP-18538 Application(s): megaco, otp + Related Id(s): GH-7031, PR-7078 + + Removed configure option --enable-sanitizers. It was + untested and broken. Address sanitizer for the emulator + has better support by the asan build target. + + + --- Improvements and New Features --- + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on Windows as many more checks are + cached. + + + OTP-18209 Application(s): otp + Related Id(s): PR-5881 + + Fix the make target release, release_docs, install and + install-docs now work when the target path contains + whitespace and/or unicode characters. + + + OTP-18492 Application(s): otp + Related Id(s): GH-6706 + + The documentation for the bit syntax has been updated + to correct some factual errors and omissions. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + --------------------------------------------------------------------- + --- asn1-5.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18534 Application(s): asn1 + Related Id(s): ERIERL-737, PR-7039 + + The ASN.1 compiler used to reject correctly specified + RELATIVE-OID values containing other RELATIVE-OID + values. This is now corrected. + + + --- Improvements and New Features --- + + OTP-18441 Application(s): asn1 + + Minor code improvements. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of asn1-5.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.25 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18377 Application(s): common_test + Related Id(s): PR-6437 + + This change improves Common Test docs (CT hook example + code) and adds Emacs skeleton with hook code. + + + --- Improvements and New Features --- + + OTP-18259 Application(s): common_test + Related Id(s): PR-5924 + + Updated common_test with a more robust way to fetch old + releases, while ignoring the current release. + + + OTP-18340 Application(s): common_test + + - re-write the XML ct module documentation into erlang + types to make Dialyzer able to catch more precise + errors + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + Full runtime dependencies of common_test-1.25: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18389 Application(s): compiler, dialyzer + Related Id(s): GH-6508, GH-7116, PR-6864 + + The compiler would silently accept singleton (unbound) + type variables in a union type. Starting from + Erlang/OTP 26, the compiler will generate a warning for + this example. The warning can be disabled using the + nowarn_singleton_typevar option. In Erlang/OTP 27, the + warning will become an error. + + + --- Improvements and New Features --- + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18502 Application(s): compiler + + The compiler will now inline calls to maps:get/3. + + + OTP-18574 Application(s): compiler, erts + + In Erlang/OTP 27, 0.0 will no longer be considered to + be exactly equal to -0.0. See Upcoming Potential + Incompatibilities. + + + Full runtime dependencies of compiler-8.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18571 Application(s): crypto + + Fix cmac_update aes_128_cbc for LibreSSL. + + + --- Improvements and New Features --- + + OTP-18204 Application(s): crypto + Related Id(s): PR-6203 + + Add support for SHAKE128 and SHAKE256. + + + OTP-18206 Application(s): crypto + Related Id(s): PR-6167 + + Make the -DOPENSSL_API_COMPAT flag work without + warnings. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of crypto-5.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- dialyzer-5.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18237 Application(s): dialyzer + Related Id(s): GH-6221, PR-6243 + + When checking behaviors, Dialyzer could generate false + warning that a callback function did not have the + correct type according to the spec in the behavior + definition. + + + OTP-18276 Application(s): dialyzer + Related Id(s): GH-6333 + + In a spec, list(none()) used to mean none(). It has now + been corrected to mean the empty list. + + + OTP-18389 Application(s): compiler, dialyzer + Related Id(s): GH-6508, GH-7116, PR-6864 + + The compiler would silently accept singleton (unbound) + type variables in a union type. Starting from + Erlang/OTP 26, the compiler will generate a warning for + this example. The warning can be disabled using the + nowarn_singleton_typevar option. In Erlang/OTP 27, the + warning will become an error. + + + OTP-18485 Application(s): dialyzer + Related Id(s): GH-6850, PR-6854 + + Fixed a bug that prevented the --plts option from being + used together with --add-to-plt. + + + OTP-18562 Application(s): dialyzer + + Fixed a crash when analyzing code that contained + illegal bitstring segment sizes. + + + OTP-18564 Application(s): dialyzer + Related Id(s): GH-7153 + + Fixed a crash when formatting certain warnings that + contained multi-byte unicode characters. + + + --- Improvements and New Features --- + + OTP-18188 Application(s): dialyzer + Related Id(s): PR-5997 + + *** HIGHLIGHT *** + + Dialyzer has a new incremental mode that be invoked by + giving the --incremental option when running Dialyzer. + This new incremental mode is likely to become the + default in a future release. + + Incremental mode primarily differs from the previous, + "classic", ways of running Dialyzer, in that its model + is optimised around the common use case of regularly + analysing a single codebase, tweaking the code, + analysing it again, and so on, without explicit + reference to the building and checking of a PLT. + + In this mode the PLT file acts much more like a true + cache, where users provide a codebase and a set of + files they care about, and Dialyzer does the legwork in + terms of deciding how to most efficiently report all of + the relevant warnings given the cached results it may + already have in the PLT (and if a PLT doesn't exist, + incremental mode will create one). + + + OTP-18238 Application(s): dialyzer + Related Id(s): PR-6271 + + Dialyzer now produces clearer error messages for + contract violations. + + + OTP-18282 Application(s): dialyzer + Related Id(s): GH-6132, PR-6335 + + The name of a built-in type can now be reused as the + name of type locally. That is useful when an OTP + release introduces a new built-in type; having the + possibility to redefine built-in types locally can make + it easier to maintain code that works in multiple OTP + releases. + + + OTP-18310 Application(s): dialyzer + + There is new option -no_spec to ignore all specs. It is + useful for debugging when one suspects that some specs + could be incorrect. + + + OTP-18342 Application(s): dialyzer + Related Id(s): GH-6117, PR-6654 + + Dialyzer's overloaded domain warning is now disabled by + default, and can be enabled with the flag + -Woverlapping_contract. + + Dialyzer used to issue a warning for overloaded domains + stating "such contracts are currently unsupported and + are simply ignored". + + These contracts are not "ignored" but rather, Dialyzer + takes the union of the overloaded domains. This means + that we lose the dependency from each corresponding + input to output type. Because of this, the warning is + really about not being able to establish a dependency + between the input and output types of each respective + overloaded function specification. + + + OTP-18439 Application(s): dialyzer + Related Id(s): GH-5695, GH-6942, PR-6822 + + *** POTENTIAL INCOMPATIBILITY *** + + Dialyzer has enabled (by default) warnings about + unknown types and functions. + + Prior to this change, Dialyzer had warnings about + unknown types and functions disabled (by default). + + This default value has been overwritten; Dialyzer now + warns about unknown types and functions (as requested + by the community in GH-5695). Thus, the following two + examples are equivalent, i.e., passing the -Wunknown + function is enabled by default: + + dialyzer moduler.erl -Wunknown -Wmissing_return + + dialyzer moduler.erl -Wmissing_return + + Dialyzer has a new flag, -Wno_unknown. Its purpose is + to suppress warnings about unknown functions and types. + + Users who wish to suppress these warnings can invoke + Dialyzer using this flag. Example: dialyzer module.erl + -Wno_unknown + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18558 Application(s): dialyzer, stdlib + Related Id(s): PR-6852 + + Added the argparse module for simplified argument + handling in escripts and similar. + + + Full runtime dependencies of dialyzer-5.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of diameter-2.3: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18338 Application(s): erl_docgen + Related Id(s): PR-6408 + + New XML tag <change>. Like a <note> box, but with a + different (steel blue) color and label. Intended to + contain talk about semantic differences between OTP + releases. + + + OTP-18501 Application(s): erl_docgen + Related Id(s): PR-6987 + + Add "since" attribute to XML taglist/tag elements to + document OTP version when a particular option/feature + was introduced. The version is shown out in the right + margin, similar to "since" versions for functions. + + + Full runtime dependencies of erl_docgen-1.5: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.4 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --- Known Bugs and Problems --- + + 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-14.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18016 Application(s): erts + + If a local fun was called while reloading the *exact + same* module that defined said fun, there was a small + window in which the call would land in code that was + yet to be fully loaded. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18274 Application(s): erts + Related Id(s): PR-6048 + + Fix so that -fno-omit-frame-pointer is applied to all + of the Erlang VM when using the JIT so that tools, such + as perf, can crawl the process stacks. + + + OTP-18277 Application(s): erts + Related Id(s): PR-6306 + + Compilation server now support unicode paths in + compilation server for filesystems that are encoded + with unicode. + + + OTP-18498 Application(s): erts + + *** HIGHLIGHT *** + + Reintroduced the optimization that turned anonymous + functions without free variables into literals + (OTP-15195). This optimization was lost during + refactoring in OTP 24. + + Alongside this fix, we plan to remove the "fun creator + pid" feature in OTP 27. See Upcoming Potential + Incompatibilities for more details. + + + OTP-18561 Application(s): erts + + Fixed a crash during tracing on certain platforms that + cannot use the machine stack for Erlang code (mainly + OpenBSD and Linux with musl). + + + --- Improvements and New Features --- + + OTP-17771 Application(s): erts + Related Id(s): GH-5325, PR-6370 + + *** POTENTIAL INCOMPATIBILITY *** + + The enif_set_option() function has been introduced into + the NIF API. It can be used in order to set the + ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT + options with which one can synchronize halt of the + runtime system with flushing enabled and execution of + NIFs. Halt of the runtime system without flushing + enabled, now terminates the runtime system without + execution of atexit/on_exit handlers that may have been + installed into the runtime system which might be + considered a potential incompatibility. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + The TTY/terminal subsystem has been rewritten by moving + more code to Erlang from the old linked-in driver and + implementing all the I/O primitives needed in a NIF + instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + -- Standard I/O now always defaults to unicode mode if + supported. Previously the default was latin1 if the + runtime system had been started with -oldshell or + -noshell (for example in an escript). To send raw bytes + over standard out, one now explicitly has to specify + io:setopts(standard_io, [{encoding, latin1}]). + + + OTP-18029 Application(s): erts, kernel + + *** HIGHLIGHT *** + + Add support for socket on Windows. + + -- Pre release status. + + -- Error codes not finalized. + + -- No explicit support for Windows specific options + (socket options, flags for read and write). + + -- New async api for Windows (completion). See the + Asynchronous calls chapter in the (Socket Usage) Users + Guide. + + -- To ensure platform independence, gen_tcp and gen_udp + is *intended* to be used (not yet updated). + + + OTP-18053 Application(s): erts, otp + Related Id(s): PR-6101 + + Updated configure cache for Windows. This makes + configure run faster on Windows as many more checks are + cached. + + + OTP-18126 Application(s): compiler, erts + Related Id(s): PR-6033 + + Optimized record updates. + + + OTP-18131 Application(s): erts + + Optimized internal hash routines. + + + OTP-18135 Application(s): erts + Related Id(s): GH-4965, PR-6046 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As announced when OTP 25 was released, multi time warp + mode is now enabled by default. This assumes that all + code executing on the system is time warp safe. + + If you have old code in the system that is not time + warp safe, you now explicitly need to start the system + in no time warp mode (or singe time warp mode if it is + partially time warp safe) in order to avoid problems. + When starting the system in no time warp mode, the + system behaves as it did prior to the introduction of + the extended time functionality introduced in OTP 18. + + If you have code that is not time warp safe, you are + strongly encouraged to change this so that you can use + multi time warp mode. Compared to no time warp mode, + multi time warp mode improves scalability and + performance as well as accuracy and precision of time + measurements. + + + OTP-18137 Application(s): compiler, erts + Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804 + + *** HIGHLIGHT *** + + There are several new optimization for binary syntax in + the JIT: + + -- Creation and matching of binaries with segments of + fixed sizes have been optimized. + + -- Creation and matching of UTF-8 segments have been + optimized. + + -- Appending to binaries has been optimized. + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18141 Application(s): erts + Related Id(s): OTP-18140, PR-6073 + + Optimization of process aliases made possible now that + support for version 4 node container types in the + external term format is mandatory. + + + OTP-18185 Application(s): compiler, erts + Related Id(s): GH-6139 + + *** HIGHLIGHT *** + + The compiler and JIT now generate better code for + creation of small maps where all keys are literals + known at compile time. + + + OTP-18227 Application(s): erts + Related Id(s): PR-6254 + + When erl -eval fails to execute a command, an error + description is printed to standard_error. + + + OTP-18334 Application(s): erts + Related Id(s): PR-6434 + + *** HIGHLIGHT *** + + Support for UTF-8 atoms and strings in the NIF + interface including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18360 Application(s): erts + Related Id(s): PR-6497 + + erlang:display/1 will now print large maps in a more + readable way (similar to how small maps are printed). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18369 Application(s): erts + + Fail enif_init_resource_type and friends by returning + NULL if not called during load/upgrade. Old behavior + was undefined. + + + OTP-18410 Application(s): erts + Related Id(s): GH-5889, PR-6345 + + New option include_shared_binaries for the + max_heap_size process limit. If set to true, large + binaries (> 64 bytes), which may be referred by several + processes, are included in the memory sum compared + against the max_heap_size limit. + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18424 Application(s): erts + Related Id(s): PR-6716 + + Reduced memory usage of file:read_file_info/1,2 + + + OTP-18425 Application(s): erts + Related Id(s): GH-5333, PR-6628 + + Add new function current_stacktrace for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the current stacktrace of the + caller into the trace message sent to the trace + receiver. + + + OTP-18435 Application(s): erts + Related Id(s): PR-6827 + + *** HIGHLIGHT *** + + The amount of significant bits in node local process + identifiers and port identifiers has been extended from + 28 bits to 60 bits on 64-bit runtime systems. This + makes these identifiers large enough to in practice + never having to be reused during the life time of a + node. + + + OTP-18440 Application(s): erts + Related Id(s): PR-6351 + + *** HIGHLIGHT *** + + New trace feature call_memory. Similar to call_time + tracing, but instead of measure accumulated time in + traced functions it measures accumulated heap space + consumed by traced functions. It can be used to compare + how much different functions are contributing to + garbage collection being triggered. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18477 Application(s): erts + Related Id(s): PR-7006 + + Introduced the local option of term_to_binary/2 and + term_to_iovec/2. + + + OTP-18483 Application(s): erts + Related Id(s): PR-6888 + + Document the commonly used practice to create and store + static atoms at NIF load time in callbacks load or + upgrade. + + + OTP-18493 Application(s): erts + Related Id(s): PR-6272 + + Optimize ets:lookup_element for uncompressed tables by + using a more efficient method to copy the term from ETS + to the heap of the calling process. + + + OTP-18505 Application(s): erts + Related Id(s): PR-6991 + + *** POTENTIAL INCOMPATIBILITY *** + + The default encoding of atoms by term_to_binary and + term_to_iovec have changed from Latin1 to UTF-8. The + old encoding can still be obtained with options + {minor_version, 1}. + + Apart from encoding code points between 128 and 255 + with two bytes (UTF-8) instead of one, most atoms will + occupy one less byte as the length field use only one + byte instead of two if possible. + + + OTP-18517 Application(s): erts + + The version of zlib included in the Erlang/OTP source + code is now 1.2.13. + + + OTP-18520 Application(s): erts + Related Id(s): GH-6455 + + gen_tcp:send/*, gen_udp:send/* and gen_sctp:send/* have + been optimized to use the infamous receive reference + optimization, so now sending should not have bad + performance when the calling process has a large + message queue. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18523 Application(s): erts + Related Id(s): PR-7004 + + Optimize maps:merge/2 memory consumption for small maps + (<33 keys) by reusing key tuples or entire maps if the + result map has the same number of keys as any of the + argument maps. + + + OTP-18524 Application(s): erts + Related Id(s): OTP-18523, PR-7004 + + Optimize maps:merge/2 memory consumption further for + small maps by mutating 2nd map to use literal key tuple + of 1st map if both have the same keys. + + + OTP-18526 Application(s): erts + Related Id(s): GH-7045 + + ceil/1, floor/1, is_bitstring/1, is_boolean/1, + is_function/2, and tuple_size/1 can now be used in + match specifications. + + + OTP-18540 Application(s): erts, kernel + Related Id(s): PR-6900 + + Allow IPv6 addresses as host in http packets decoded by + erlang:decode_packet/3 and gen_tcp packet option. The + IPv6 address should be enclosed within [] according to + RFC2732. + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + OTP-18552 Application(s): erts + Related Id(s): PR-6973 + + *** POTENTIAL INCOMPATIBILITY *** + + ERTS internal thread names have been changed. All + threads created by ERTS now have a prefix erts_ + followed by a type name potentially followed by an + integer index. For example, normal schedulers are now + named erts_sched_<IX>, dirty CPU schedulers + erts_dcpus_<IX>, and dirty IO schedulers + erts_dios_<IX>. NIF and driver thread names are + truncated at 15 characters regardless of whether the + underlying platform support more characters or not. + + + OTP-18569 Application(s): erts + + Further robustify implementation of large maps (> 32 + keys). Keys that happen to have same internal 32-bit + hash values are now put in collision nodes which are + traversed with linear search. This removes the demand + for the internal hash function when salted to + eventually produce different hashes for all possible + pairs of unequal terms. + + + OTP-18574 Application(s): compiler, erts + + In Erlang/OTP 27, 0.0 will no longer be considered to + be exactly equal to -0.0. See Upcoming Potential + Incompatibilities. + + + Full runtime dependencies of erts-14.0: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- et-1.7 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + Full runtime dependencies of et-1.7: erts-9.0, kernel-5.3, + runtime_tools-1.10, stdlib-3.4, wx-1.2 + + + --------------------------------------------------------------------- + --- ftp-1.2 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18359 Application(s): ftp + Related Id(s): PR-6545 + + Fixes the documentation for the ftp module and updates + the typing of ftp functions that return errors. + + The documentation has been improved and the types of + the functions are now read from source code, instead of + being hard-coded in XML. + + Functions returning errors of the form {error, Reason + :: 'ehost' | ...} are now similar to other modules, + i.e., {error, Reason :: term()}. If one wants to + understand the error, one must call the function + ftp:formaterror({error, Reason}). + + + --- Improvements and New Features --- + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18541 Application(s): ftp + + Remove deprecated functions in OTP-26 + + + Full runtime dependencies of ftp-1.2: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-9.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18476 Application(s): inets + Related Id(s): GH-6380 + + Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" + errors. + + + --- Improvements and New Features --- + + OTP-18167 Application(s): inets + + By default ssl connections will use options from + ssl_default_options(true) + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + OTP-18530 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + IP display string will now always be in lower case, + effects ipv6 addresses. + + + OTP-18536 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + Removed deprecated functions + + + OTP-18544 Application(s): inets + Related Id(s): GH-5276 + + Update the code in the inets example directory to + reflect the latest implementation + + + Full runtime dependencies of inets-9.0: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- jinterface-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + --------------------------------------------------------------------- + --- kernel-9.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18210 Application(s): kernel + Related Id(s): GH-5877, PR-5878 + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed a bug where duplicate keys were allowed in the + .app file of an application. Duplicate keys are now + rejected and the application will not start if they + exist. + + + OTP-18225 Application(s): kernel + Related Id(s): PR-6036 + + Fix inconsistent handling in logger_formatter of the + branched values in conditional branches. For example + using msg in a conditional branch would not be + formatted as it should before this fix. + + + OTP-18226 Application(s): kernel + Related Id(s): PR-6253 + + Fix the logger_std_h handler to log to standard_error + if logging to standard_io fails for any reason. + + + OTP-18248 Application(s): erts, kernel + Related Id(s): GH-6085, PR-6227 + + Fix the TLS distribution to work when starting Erlang + in embedded mode and a connection is done before kernel + is fully started. + + + OTP-18271 Application(s): erts, kernel + Related Id(s): PR-6279 + + erl -remsh has been improved to provide better error + reasons and work when using a shell without terminal + support (that is an "oldshell"). + + + OTP-18286 Application(s): kernel + Related Id(s): PR-5955 + + Fix logging of log events generated before kernel is + started to not fail if the code for formatting those + log messaged have not yet been loaded. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + OTP-18528 Application(s): kernel + Related Id(s): PR-7009 + + Return type for seq_trace:get_token/1 fixed. + + + OTP-18543 Application(s): kernel + Related Id(s): GH-6353 + + Looking up, connecting to and sending to a host with an + empty name is now handled by trying to look up the + address of the root domain, which fails. Previously + some of these operations caused an internal exception, + which contradicted type specifications. + + + OTP-18547 Application(s): kernel + Related Id(s): PR-7092 + + Replaced a regex with a special case handling of ANSI + Select Graphic Rendition escape characters, to speed up + io output that make use of these escape sequences. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + The TTY/terminal subsystem has been rewritten by moving + more code to Erlang from the old linked-in driver and + implementing all the I/O primitives needed in a NIF + instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + -- Standard I/O now always defaults to unicode mode if + supported. Previously the default was latin1 if the + runtime system had been started with -oldshell or + -noshell (for example in an escript). To send raw bytes + over standard out, one now explicitly has to specify + io:setopts(standard_io, [{encoding, latin1}]). + + + OTP-18029 Application(s): erts, kernel + + *** HIGHLIGHT *** + + Add support for socket on Windows. + + -- Pre release status. + + -- Error codes not finalized. + + -- No explicit support for Windows specific options + (socket options, flags for read and write). + + -- New async api for Windows (completion). See the + Asynchronous calls chapter in the (Socket Usage) Users + Guide. + + -- To ensure platform independence, gen_tcp and gen_udp + is *intended* to be used (not yet updated). + + + OTP-18140 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-6072 + + *** POTENTIAL INCOMPATIBILITY *** + + As announced since the release of OTP 24, support for: + + -- version 4 node container types in the external term + format are now mandatory. That is, references + supporting up to 5 32-bit integer identifiers, and + process and port identifiers with support for 64-bit + data storage. The distribution flag DFLAG_V4_NC is + therefor now also mandatory. OTP has since OTP 24 + supported this. Also note that the external format + produced by term_to_binary() and term_to_iovec() will + unconditionally produce pids, ports, and references + supporting this larger format. + + -- the new link protocol introduced in OTP 23.3 is now + mandatory. The distribution flag DFLAG_UNLINK_ID is + therefor now also mandatory. + + Due to the above, OTP 26 nodes will refuse to connect + to OTP nodes from releases prior to OTP 24. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18261 Application(s): kernel + Related Id(s): PR-5924 + + Add code:get_doc/2 which adds support to fetch + documentation skeletons of functions using debug_info + chunks instead of eep48 doc chunks. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18305 Application(s): kernel + Related Id(s): PR-5831 + + gen_server optimized by caching callback functions + + + OTP-18327 Application(s): kernel + Related Id(s): PR-6433 + + Prepare the pg communication protocol for upgrade. The + plan is for OTP-28 nodes to be able to use an upgraded + pg protocol while still being able to talk with OTP 26 + nodes. + + + OTP-18331 Application(s): kernel + Related Id(s): ERIERL-870 + + New disk_log log type rotate, where the log files are + compressed upon rotation. + + + OTP-18344 Application(s): erts, kernel + Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522, + PR-6944 + + *** POTENTIAL INCOMPATIBILITY *** + + The following inet:setopts/2 options have been + introduced: + + -- reuseport -- Reuse of local port. Load balancing may + or may not be provided depending on underlying OS. + + -- reuseport_lb -- Reuse of local port. Load balancing + provided. + + -- exclusiveaddruse -- Exclusive address/port usage on + Windows. This socket option is Windows specific and + will silently be ignored on other systems. + + The behavior of setting reuseaddr on Windows have + changed in a *backwards incompatible* way. The + underlying SO_REUSEADDR socket option is now only set + if both the reusaddr and the reuseport inet options + have been set. This since the underlying SO_REUSEADDR + socket option on Windows behaves similar to how BSD + behaves if both the underlying socket options + SO_REUSEADDR and SO_REUSEPORT have been set. See the + documentation of the reuseaddr option for more + information. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18419 Application(s): kernel + + The function file:pid2name/1 is deprecated and will be + removed in Erlang/OTP 27. + + + OTP-18442 Application(s): kernel + Related Id(s): GH-6606, PR-6786 + + The modules Erlang DNS resolver inet_res and helper + modules have been updated for RFC6891; to handle OPT RR + with DNSSEC OK (DO) bit. + + + OTP-18444 Application(s): kernel + Related Id(s): PR-6035 + + Introduced application:get_supervisor/1. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18448 Application(s): kernel + Related Id(s): PR-6736 + + Reduce contention on the code_server by doing the code + preparation on the client. + + + OTP-18451 Application(s): kernel + Related Id(s): PR-6737 + + Added a mode to ensure_all_loaded, to start children + application and their dependencies concurrently. + + + OTP-18452 Application(s): kernel + Related Id(s): PR-6729 + + Cache OTP boot code paths, to limit how many folders + that are being accessed during a module lookup. Can be + disabled with -cache_boot_path false. OTP boot code + paths consists of ERL_LIB environment variables. The + various otp/*/ebin folders. And the {path, ...} clauses + in the init script. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18466 Application(s): kernel + Related Id(s): PR-6832 + + Add cache attribute to code path apis. + + Added an optional cache/nocache argument to all + code:add_path*, code:set_path*, and code:replace_path* + functions. These functions will then avoid doing + file-accesses if they are cached. Cache can be cleared + with code:clear_cache/0. Added code:del_paths/1 to make + it easier to clear multiple paths. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18484 Application(s): kernel + Related Id(s): PR-6844 + + Improvements to code:ensure_modules_loaded/1: + Previously it would prepare modules and then abandon + references to said modules if they had on_load + callbacks. This pull request makes it so they keep the + references around and then serially load them without + having to fetch the object code and prepare them again. + + + OTP-18510 Application(s): kernel + Related Id(s): GH-6098, PR-6982 + + The internal DNS resolver has been updated to handle + DNS LOC RR:s (RFC 1876). This is an undocumented + module, although still used by power users. See the + source code. + + + OTP-18521 Application(s): kernel + Related Id(s): PR-7025 + + Reduced memory consumption in global when informing + other nodes about lost connections. + + + OTP-18533 Application(s): kernel + Related Id(s): PR-7061 + + The net_kernel, global, and global_group servers now + have fully asynchronous distributed signaling enabled + all the time which prevents them from ever getting + blocked on send of distributed signals. + + Documentation about blocking distributed signals has + also been improved. + + + OTP-18540 Application(s): erts, kernel + Related Id(s): PR-6900 + + Allow IPv6 addresses as host in http packets decoded by + erlang:decode_packet/3 and gen_tcp packet option. The + IPv6 address should be enclosed within [] according to + RFC2732. + + + OTP-18542 Application(s): kernel + + Remove deprecated functions in OTP-26 + + + OTP-18551 Application(s): kernel + Related Id(s): PR-7106 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed code:is_module_native/1 since HiPE has been + removed. It has since OTP 24 been deprecated and + scheduled for removal in OTP 26. + + Removed code:rehash/0 since the code path feature no + longer is present. It has since OTP 19 been deprecated + and has since OTP 24 been scheduled for removal in OTP + 26. + + + OTP-18575 Application(s): kernel, stdlib + Related Id(s): PR-7169 + + Added support for multiple line expressions and + navigation in the shell. Added new keybindings: + + -- navigate up (ctrl+up)/(alt+up) + + -- navigate down (ctrl+down)/(alt+down) + + -- insert newline in middle of line (alt+enter) + + -- navigate top (alt+<)/(alt+shift+up) + + -- navigate bottom (alt+>)/(alt+shift+down) + + -- clear current expression (alt+c) + + -- cancel search (alt+c) + + -- opening editor on mac (option+o)/(alt+o) + + Modifies the prompt for new lines to make it clearer + that the prompt has entered multi-line mode. Supports + terminal with small window size, recommend not go lower + than 7 rows and 40 columns. Modifies the search prompt + to support multi-line statements. Redraw the prompt + after continuing from JCL menu. + + + Full runtime dependencies of kernel-9.0: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- megaco-4.4.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18538 Application(s): megaco, otp + Related Id(s): GH-7031, PR-7078 + + Removed configure option --enable-sanitizers. It was + untested and broken. Address sanitizer for the emulator + has better support by the asan build target. + + + Full runtime dependencies of megaco-4.4.4: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.22 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18309 Application(s): mnesia + Related Id(s): PR-6377 + + Added debug statistics for active transactions. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of mnesia-4.22: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- observer-2.15 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18430 Application(s): observer + Related Id(s): PR-6397 + + Added start/1, start_and_wait functions/1|2 functions. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + Full runtime dependencies of observer-2.15: erts-14.0, et-1.5, + kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + + + --------------------------------------------------------------------- + --- odbc-2.14.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18539 Application(s): odbc + + Allow larger column sizes than 8001 in case DB supports + it. + + + Full runtime dependencies of odbc-2.14.1: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- os_mon-2.9 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18246 Application(s): os_mon + Related Id(s): GH-6156, PR-6284 + + Fix internal os_mon_sysinfo:get_disk_info/1 function to + not crash when run on Windows with multiple drives. + + + OTP-18546 Application(s): os_mon + Related Id(s): GH-7070, PR-7071 + + Fixed a memory leak when calling cpu_sup:util/0,1 on + FreeBSD. + + + --- Improvements and New Features --- + + OTP-18303 Application(s): os_mon + Related Id(s): PR-6384 + + The disksup:get_disk_info/0 and disksup:get_disk_info/1 + functions have been introduced. These can be used in + order to immediately fetch information about current + disk usage. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18566 Application(s): os_mon + Related Id(s): PR-7080 + + Support for cpu_sup:util() on OpenBSD. + + + Full runtime dependencies of os_mon-2.9: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- parsetools-2.5 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18491 Application(s): parsetools + Related Id(s): PR-6882 + + *** HIGHLIGHT *** + + Leex has been extended with optional column number + support. + + + Full runtime dependencies of parsetools-2.5: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.14 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + Full runtime dependencies of public_key-1.14: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- reltool-1.0 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18230 Application(s): reltool + Related Id(s): PR-5936 + + Add possibility to strip specific chunks from beam + files included in a release. Before this change it was + only possible to strip all chunks from the beam files. + + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18488 Application(s): reltool + Related Id(s): PR-6836 + + *** POTENTIAL INCOMPATIBILITY *** + + Support for the experimental code archives feature has + been removed from reltool. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of reltool-1.0: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0, stdlib-5.0, tools-2.6.14, wx-2.3 + + + --------------------------------------------------------------------- + --- runtime_tools-2.0 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18499 Application(s): runtime_tools + Related Id(s): PR-6946 + + Fixed the type specification for + instrument:carriers/0,1 + + + --- Improvements and New Features --- + + OTP-18211 Application(s): runtime_tools + Related Id(s): PR-6143 + + Add dbg:tracer(file, Filename) as a convenient way to + trace to a file in clean text. + + + OTP-18447 Application(s): asn1, crypto, erts, kernel, + public_key, runtime_tools + + Handling of on_load modules during boot has been + improved by adding an extra step in the boot order for + embedded mode that runs all on_load handlers, instead + of relying on explicit invocation of them, later, when + the kernel supervision tree starts. + + This is mostly a code improvement and OTP internal + simplification to avoid future bugs and to simplify + code maintenance. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + OTP-18549 Application(s): erts, runtime_tools + Related Id(s): PR-7105 + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the experimental erts_alloc_config module. It + no longer produced good configurations and cannot be + fixed in a reasonably backwards compatible manner. It + has since OTP 25 been deprecated and scheduled for + removal in OTP 26. + + + Full runtime dependencies of runtime_tools-2.0: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18300 Application(s): sasl + Related Id(s): PR-6389 + + Improved error message from systools:make_script, when + .app parameters contain duplicates. The parameters that + will be checked are modules, applications and + registered. + + + Full runtime dependencies of sasl-4.2.1: erts-10.2, kernel-6.0, + stdlib-4.0, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.14 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of snmp-5.14: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.0 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18231 Application(s): ssh + Related Id(s): OTP-17932, PR-6144 + + The ssh_cli has been updated to work with the changes + introduced in the new Erlang shell implementation. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of ssh-5.0: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14771 Application(s): ssl + + *** POTENTIAL INCOMPATIBILITY *** + + Remove less that 256 bit ECC from default supported ECC + pre TLS-1.3 + + + OTP-15903 Application(s): ssl + + *** HIGHLIGHT *** + + Improved error checking and handling of ssl options. + + + OTP-18168 Application(s): ssl + Related Id(s): GH-6014, PR-6019 + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, stateless tickets generated by server + with anti_replay option enabled can be used for + creating ClientHello throughout ticket lifetime. + Without this change, usability was limited to + WindowSize number of seconds configured for anti_replay + option. + + + OTP-18235 Application(s): kernel, ssl + Related Id(s): PR-5840, PR-6104 + + *** HIGHLIGHT *** + + Support for Kernel TLS (kTLS), has been added to the + SSL application, for TLS distribution (-proto_dist + inet_tls), the SSL option {ktls, true}. Using this for + general SSL sockets is uncomfortable, undocumented and + not recommended since it requires very platform + dependent raw options. + + This, for now, only works for some not too old Linux + distributions. Roughly, a kernel 5.2.0 or later with + support for UserLand Protocols and the kernel module + tls is required. + + + OTP-18253 Application(s): ssl + + With this change, TLS 1.3 server can be configured to + include client certificate in session ticket. + + + OTP-18254 Application(s): ssl + Related Id(s): PR-5982 + + With this change, it is possible to configure + encryption seed to be used with TLS1.3 stateless + tickets. This enables using tickets on different server + instances. + + + OTP-18312 Application(s): ssl + + Debugging enhancements. + + + OTP-18335 Application(s): ssl + + With this change, maybe keyword atom is not used as + function name in ssl code. + + + OTP-18405 Application(s): crypto, diameter, kernel, ssl + Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768, + PR-6769, PR-6812, PR-6814 + + Replace size/1 with either tuple_size/1 or byte_size/1 + + The size/1 BIF is not optimized by the JIT, and its use + can result in worse types for Dialyzer. + + When one knows that the value being tested must be a + tuple, tuple_size/1 should always be preferred. + + When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size + to a whole number of bytes), so one must make sure that + the call to byte_size/ is preceded by a call to + is_binary/1 to ensure that bitstrings are rejected. + Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous + code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately + before the call to byte_size/1. + + + OTP-18438 Application(s): ssl + Related Id(s): GH-6679 + + *** POTENTIAL INCOMPATIBILITY *** + + For security reasons remove support for SHA1 and DSA + algorithms from default values. + + + OTP-18453 Application(s): ssl + + Mitigate memory usage from large certificate chains by + lowering the maximum handshake size. This should not + effect the common cases, if needed it can be configured + to a higher value. + + + OTP-18455 Application(s): ssl + Related Id(s): GH-5899 + + *** POTENTIAL INCOMPATIBILITY *** + + Change the client default verify option to verify_peer. + Note that this makes it mandatory to also supply + trusted CA certificates or explicitly set verify to + verify_none. This also applies when using the so called + anonymous test cipher suites defined in TLS versions + pre TLS-1.3. + + + OTP-18456 Application(s): kernel, ssl + + Erlang distribution code in Kernel and SSL has been + refactored a bit to facilitate debugging and + re-usability, which shouldn't have any noticeable + effects on behaviour or performance. + + + OTP-18459 Application(s): ssl + + *** HIGHLIGHT *** + + Add encoding and decoding of use_srtp hello extension + to facilitate for DTLS users to implement SRTP + functionality. + + + OTP-18465 Application(s): ssl + Related Id(s): GH-7065 + + Refactors the (ssl application to use macros for TLS + and DTLS versions instead of hard-coded tuple numbers. + This change improves the maintainability of ssl + + + OTP-18507 Application(s): ssl + + If the function ssl:renegotiate/1 is called on + connection that is running TLS-1.3 return an error + instead of hanging or timing out. + + + OTP-18531 Application(s): ssl + + *** POTENTIAL INCOMPATIBILITY *** + + If a user cancel alert with level warning is received + during handshake make it be handled the same regardless + of TLS version. If it is received in connection in + TLS-1.3 regard it as an error as it is inappropriate. + + In TLS-1.3 all error alerts are considered FATAL + regardless of legacy alert type. But make sure legacy + type is printed in logs to not confuse users that are + expecting the same legacy type as sent by peer. + + + OTP-18567 Application(s): ssl + + Make fail_if_no_peer_cert default true if verify_peer + is set on the server, otherwise the server will accept + the connection if verify_peer is set and the user have + forgot to set the fail_if_no_peer_cert and the client + did not send a certificate. + + + OTP-18572 Application(s): ssl + + To make it easier to configure signature algorithms + with algorithms that are moved from the default add the + API function signature_algs/2 that lists possible + values. Also make sha224 a non default value. + + + Full runtime dependencies of ssl-11.0: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18275 Application(s): stdlib + Related Id(s): PR-6045 + + All process calls in dets have been updated to use the + receive queue optimizations. + + + OTP-18471 Application(s): kernel, stdlib + Related Id(s): GH-6339, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + proc_lib:start*/* has become synchronous when the + started process fails. This requires that a failing + process use a new function proc_lib:init_fail/2,3, or + exits, to indicate failure. All OTP behaviours have + been fixed to do this. + + All these start functions now consume the 'EXIT' + message from a process link for all error returns. + Previously it was only the start_link/* functions that + did this, and only when the started function exited, + not when it used init_ack/1,2 or init_fail/2,3 to + create the return value. + + + OTP-18486 Application(s): kernel, stdlib + Related Id(s): PR-6881 + + Fixed a bug where file:read(standard_io, ...) + unexpectedly returned eof in binary mode. + + + OTP-18548 Application(s): stdlib + Related Id(s): PR-6967 + + In the shell, v(N) would fail to retrieve the command + if the command's return value was undefined. + + + --- Improvements and New Features --- + + OTP-14835 Application(s): kernel, stdlib + Related Id(s): PR-5924 + + *** HIGHLIGHT *** + + The Erlang shell has been improved to support the + following features: + + -- Auto-complete variables, record names, record field + names, map keys, function parameter types and + filenames. + + -- Open external editor in the shell (with C-o) to edit + the current expression in an editor. + + -- Support defining records (with types), functions and + function typespecs, and custom types in the shell. + + -- Do not save pager commands, and input to io:getline + in history. + + + OTP-15597 Application(s): stdlib + Related Id(s): PR-5831 + + Gen_server now caches external functions for use in + handle_call, handle_cast and handle_info. + + + OTP-17932 Application(s): erts, kernel, stdlib + Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343, + PR-6144 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + The TTY/terminal subsystem has been rewritten by moving + more code to Erlang from the old linked-in driver and + implementing all the I/O primitives needed in a NIF + instead. + + On Unix platforms the user should not notice a lot of + difference, besides better handling of unicode + characters and fixing of some long standing bugs. + + Windows users will notice that erl.exe has the same + functionality as a normal Unix shell and that werl.exe + has been removed and replaced with a symlink to + erl.exe. This makes the Windows Erlang terminal + experience identical to that of Unix. + + The re-write brings with it a number of bug fixes and + feature additions: + + -- The TTY is now reset when Erlang exits, fixing zsh + to not break when terminating an Erlang session. + + -- standard_error now uses the same unicode mode as + standard_io. + + -- Hitting backspace when searching the shell history + with an empty search string no longer breaks the shell. + + -- Tab expansion now works on remote nodes started + using the JCL interface. + + -- It is now possible to configure the shell slogan and + the session slogans (that is the texts that appear when + you start an Erlang shell). See the kernel + documentation for more details. + + -- Added shell:start_interactive for starting the + interactive shell from a non-interactive Erlang session + (for example an escript). + + -- On Windows, when starting in detached mode the + standard handler are now set to nul devices instead of + being unset. + + -- Standard I/O now always defaults to unicode mode if + supported. Previously the default was latin1 if the + runtime system had been started with -oldshell or + -noshell (for example in an escript). To send raw bytes + over standard out, one now explicitly has to specify + io:setopts(standard_io, [{encoding, latin1}]). + + + OTP-18159 Application(s): stdlib + Related Id(s): PR-6904 + + Added the zip:zip_get_crc32/2 function to retrieve the + CRC32 checksum from an opened ZIP archive. + + + OTP-18176 Application(s): stdlib + Related Id(s): PR-6118 + + Added the options post_process_args and detached to the + peer:start function. + + + OTP-18221 Application(s): stdlib + Related Id(s): PR-6197 + + The re:replace/3,4 functions now accept a fun as the + replacement argument. + + + OTP-18228 Application(s): stdlib + Related Id(s): GH-5639 + + *** HIGHLIGHT *** + + The performance of the base64 module has been + significantly improved. For example, on an x86_64 + system with the JIT both encode and decode are more + than three times faster than in Erlang/OTP 25. + + + OTP-18236 Application(s): stdlib + Related Id(s): PR-6256 + + Improved implementation of timer:apply_interval/4 + reducing load on the timer server, and introduction of + the new function timer:apply_repeatedly/4. + timer:apply_repeatedly/4 is similar to + timer:apply_interval/4, but timer:apply_repeatedly/4 + prevents parallel execution of triggered apply + operations which timer:apply_interval/4 does not. + + + OTP-18247 Application(s): stdlib + Related Id(s): PR-6280, PR-6711 + + The base64 module now supports encoding and decoding + with an alternate URL safe alphabet, and an option for + accepting or adding missing = padding characters. + + + OTP-18272 Application(s): stdlib + Related Id(s): PR-6279 + + Add shell:whereis/0 which can be used to locate the + current shell process. + + + OTP-18278 Application(s): kernel, stdlib + Related Id(s): PR-6260 + + *** HIGHLIGHT *** + + The Erlang shell's auto-completion when typing tab has + been changed to happen after the editing current line + instead of before it. + + This behaviour can be configured using a the + shell_expand_location STDLIB configuration parameter. + + + OTP-18279 Application(s): stdlib + Related Id(s): PR-6234 + + New function ets:lookup_element/4 with a Default + argument returned if the key did not exist in the + table. The old ets:lookup_element/3 raises a badarg + exception which can be both inconvenient and slower. + + + OTP-18285 Application(s): kernel, ssh, stdlib + Related Id(s): PR-6262 + + *** POTENTIAL INCOMPATIBILITY *** + + Typing Ctrl+L in a shell now clears the screen and + redraws the current line instead of only redrawing the + current line. To only redraw the current line, you must + now type Alt+L. This brings the behaviour of Ctrl+L + closer to how bash and other shells work. + + + OTP-18287 Application(s): stdlib + Related Id(s): PR-5955 + + peer nodes using standard_io connections now include + standard error from the node in the io stream from the + started node. + + + OTP-18297 Application(s): compiler, stdlib + Related Id(s): GH-6348 + + *** HIGHLIGHT *** + + A limitation in the binary syntax has been removed. It + is now possible to match binary patterns in parallel. + Example: <<A:8>> = <<B:4,C:4>> = Bin + + + OTP-18301 Application(s): stdlib + Related Id(s): PR-6350 + + Improve type specification of + unicode:characters_to_list(). + + + OTP-18318 Application(s): stdlib + Related Id(s): PR-6347 + + *** HIGHLIGHT *** + + In the lists module, the zip family of functions now + takes options to allow handling lists of different + lengths. + + + OTP-18337 Application(s): compiler, stdlib + Related Id(s): GH-6477, PR-6503 + + It is documented that $\^X is the ASCII code for + Control X, where X is an uppercase or lowercase letter. + However, this notation would work for any character X, + even then it didn't make sense. + + In Erlang/OTP 26, it is now documented that the + following characters are also allowed to follow the \^ + characters: @, [, \, ], ^, _, and ?. Attempt to use + other characters will be rejected with a compiler + error. + + The value for $\^? is now 127 (instead of 31 as in + earlier releases). + + + OTP-18354 Application(s): stdlib + Related Id(s): PR-6297 + + The binary:encode_hex/2 function has been added to + allow the encoded hexadecimal digits to be in either + lower or upper case. + + + OTP-18355 Application(s): stdlib + Related Id(s): PR-6507 + + Variants of timer:tc() with user specified time unit + have been introduced. + + + OTP-18361 Application(s): stdlib + Related Id(s): PR-6536 + + New function math:tau/0. Returns 2*math:pi(). + + + OTP-18367 Application(s): compiler, erts, stdlib + Related Id(s): GH-6544 + + *** HIGHLIGHT *** + + The BIFs min/2 and max/2 are now allowed to be used in + guards and match specs. + + + OTP-18385 Application(s): stdlib + Related Id(s): PR-6698 + + Optimized gen_server:multi_call(). + + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18414 Application(s): erts, stdlib + Related Id(s): PR-6151 + + *** HIGHLIGHT *** + + Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are + printed and returned by maps:to_list/1 and maps:next/1. + The new order is unpredictable and may change between + different invocations of the Erlang VM. + + For applications where order is important, there is a + new function maps:iterator/2 for creating iterators + that return the map elements in a deterministic order. + There are also new modifiers k and K for the format + string for io:format() to support printing map elements + ordered. + + + OTP-18423 Application(s): stdlib + Related Id(s): com/erlang/backlog/issues/142, + https://github + + Make gen_server fail "silently" with a new return value + for init/1. + + + OTP-18431 Application(s): compiler, stdlib + Related Id(s): PR-6739 + + *** HIGHLIGHT *** + + Improved the selective receive optimization, which can + now be enabled for references returned from other + functions. + + This greatly improves the performance of + gen_server:send_request/3, gen_server:wait_response/2, + and similar functions. + + + OTP-18445 Application(s): erts, stdlib + + *** HIGHLIGHT *** + + It is no longer necessary to enable a feature in the + runtime system in order to load modules that are using + it. It is sufficient to enable the feature in the + compiler when compiling it. + + That means that to use feature maybe_expr in Erlang/OTP + 26, it is sufficient to enable it during compilation. + + In Erlang/OTP 27, feature maybe_expr will be enabled by + default, but it will be possible to disable it. + + + OTP-18474 Application(s): stdlib + Related Id(s): PR-6895 + + Static supervisors are very idle processes after they + have started so they will now be hibernated after start + to improve resource management. + + + OTP-18478 Application(s): common_test, compiler, dialyzer, + diameter, et, ftp, inets, kernel, observer, + runtime_tools, ssh, stdlib + Related Id(s): GH-6903 + + Deprecates dbg:stop_clear/0 because it is simply a + function alias to dbg:stop/0 + + + OTP-18494 Application(s): stdlib + Related Id(s): PR-6924 + + Support has been added in ms_transform for the actions + caller_line/0, current_stacktrace/0, and + current_stacktrace/1. + + + OTP-18495 Application(s): stdlib + Related Id(s): PR-6943 + + *** HIGHLIGHT *** + + The family of enumeration functions in module lists has + been extended with enumerate/3 that allows a step value + to be supplied. + + + OTP-18500 Application(s): stdlib + + *** HIGHLIGHT *** + + Update Unicode to version 15.0.0. + + + OTP-18511 Application(s): otp, stdlib + Related Id(s): PR-7017 + + The regular expression library powering the re module + is likely to be changed in Erlang/OTP 27. See Upcoming + Potential Incompatibilities. + + + OTP-18515 Application(s): stdlib + Related Id(s): GH-6990 + + Improved the performance of sets:subtract/2 when + subtracting a small number of elements. + + + OTP-18518 Application(s): stdlib + Related Id(s): GH-7015 + + The linter will no longer raise warnings for + underspecified opaque types. + + + OTP-18522 Application(s): dialyzer, erts, stdlib + + *** HIGHLIGHT *** + + Added the new built-in type dynamic() introduced in + EEP-61, improving support for gradual type checkers. + + + OTP-18537 Application(s): stdlib + Related Id(s): PR-7081 + + The by gen_statem previously used call proxy process + that was used for preventing late replies from reaching + the client at timeout or connection loss has been + removed. It is no longer needed since process aliases + take care of this, are used, and supported by all + Erlang nodes that an OTP 26 Erlang node can communicate + with. + + + OTP-18558 Application(s): dialyzer, stdlib + Related Id(s): PR-6852 + + Added the argparse module for simplified argument + handling in escripts and similar. + + + OTP-18575 Application(s): kernel, stdlib + Related Id(s): PR-7169 + + Added support for multiple line expressions and + navigation in the shell. Added new keybindings: + + -- navigate up (ctrl+up)/(alt+up) + + -- navigate down (ctrl+down)/(alt+down) + + -- insert newline in middle of line (alt+enter) + + -- navigate top (alt+<)/(alt+shift+up) + + -- navigate bottom (alt+>)/(alt+shift+down) + + -- clear current expression (alt+c) + + -- cancel search (alt+c) + + -- opening editor on mac (option+o)/(alt+o) + + Modifies the prompt for new lines to make it clearer + that the prompt has entered multi-line mode. Supports + terminal with small window size, recommend not go lower + than 7 rows and 40 columns. Modifies the search prompt + to support multi-line statements. Redraw the prompt + after continuing from JCL menu. + + + Full runtime dependencies of stdlib-5.0: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + Full runtime dependencies of syntax_tools-3.1: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tftp-1.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of tftp-1.1: erts-6.0, kernel-6.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- tools-3.6 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools, + tools + Related Id(s): EEP-58, PR-6727 + + *** HIGHLIGHT *** + + Map comprehensions as suggested in EEP 58 has now been + implemented. + + + OTP-18487 Application(s): runtime_tools, tools + Related Id(s): PR-6829 + + The instrument module has been moved from tools to + runtime_tools. + + + Full runtime dependencies of tools-3.6: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.3 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-18350 Application(s): inets, observer, os_mon, reltool, wx + + Runtime dependencies have been updated. + + + OTP-18490 Application(s): diameter, inets, mnesia, reltool, + snmp, ssh, tftp, wx + Related Id(s): GH-6339, OTP-18471, PR-6843 + + *** POTENTIAL INCOMPATIBILITY *** + + The implementation has been fixed to use + proc_lib:init_fail/2,3 where appropriate, instead of + proc_lib:init_ack/1,2. + + + Full runtime dependencies of wx-2.3: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.1.1.README.txt b/release-notes/OTP-26.1.1.README.txt new file mode 100644 index 0000000..3918bfa --- /dev/null +++ b/release-notes/OTP-26.1.1.README.txt @@ -0,0 +1,80 @@ +Patch Package: OTP 26.1.1 +Git Tag: OTP-26.1.1 +Date: 2023-09-28 +Trouble Report Id: OTP-18768, OTP-18770, OTP-18773 +Seq num: GH-7667 +System: OTP +Release: 26 +Application: compiler-8.4.1, stdlib-5.1.1, wx-2.3.1 +Predecessor: OTP 26.1 + + Check out the git tag OTP-26.1.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.4.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18770 Application(s): compiler + Related Id(s): GH-7667, PR-7672 + + The compiler could become extremely slow for modules + containing huge functions. + + + Full runtime dependencies of compiler-8.4.1: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- stdlib-5.1.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18773 Application(s): stdlib + Related Id(s): PR-7691 + + Garbage collect the shell process when reducing the + amount of saved history and results. + + + Full runtime dependencies of stdlib-5.1.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- wx-2.3.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + The wx-2.3.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18768 Application(s): wx + Related Id(s): PR-7670 + + The wx application would fail to build on macOS with + Xcode 15. + + + Full runtime dependencies of wx-2.3.1: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.1.2.README.txt b/release-notes/OTP-26.1.2.README.txt new file mode 100644 index 0000000..9de2b37 --- /dev/null +++ b/release-notes/OTP-26.1.2.README.txt @@ -0,0 +1,101 @@ +Patch Package: OTP 26.1.2 +Git Tag: OTP-26.1.2 +Date: 2023-10-12 +Trouble Report Id: OTP-18790, OTP-18797, OTP-18803 +Seq num: GH-7683 +System: OTP +Release: 26 +Application: erts-14.1.1, xmerl-1.3.33 +Predecessor: OTP 26.1.1 + + Check out the git tag OTP-26.1.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- OTP-26.1.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18803 Application(s): otp, xmerl + + The xmerl version 1.3.32 was released in OTP 26.0.1, + but the incorrect version number of 1.3.31.1 was used + for it. This incorrect version number continued to + appear in OTP 26.0.2, OTP 26.1, and OTP 26.1.1. The + actual xmerl code in these OTP versions however + corresponds to xmerl version 1.3.32. + + + --------------------------------------------------------------------- + --- erts-14.1.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18790 Application(s): erts + Related Id(s): PR-7742 + + If the external term format encoding of an argument + list part of a distributed spawn operation was faulty, + the newly spawned remote process could misbehave. The + misbehavior included hanging or interpret an incoming + message as an argument list to use. This was very + unlikely to happen unless using an alternate + implementation of the distribution protocol which made + a faulty encoding of the argument list. The child + process will now detect this error and terminate before + executing the user specified code. + + + OTP-18797 Application(s): erts + Related Id(s): GH-7683, PR-7712 + + Fix bugs where if the body of a matchspec would return + a map with a variable ('$1', '$_' etc) as one of the + keys or values and the variable was not an immidiate, + the term would not be copied to the receiving processes + heap. This would later corrupt the term in the table as + the GC could place move markers in it, which in turn + would cause the VM to crash. + + Bug has been present for since OTP 17.0. + + + Full runtime dependencies of erts-14.1.1: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- xmerl-1.3.33 ---------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.33 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18803 Application(s): otp, xmerl + + The xmerl version 1.3.32 was released in OTP 26.0.1, + but the incorrect version number of 1.3.31.1 was used + for it. This incorrect version number continued to + appear in OTP 26.0.2, OTP 26.1, and OTP 26.1.1. The + actual xmerl code in these OTP versions however + corresponds to xmerl version 1.3.32. + + + Full runtime dependencies of xmerl-1.3.33: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.1.README.txt b/release-notes/OTP-26.1.README.txt new file mode 100644 index 0000000..fea80a6 --- /dev/null +++ b/release-notes/OTP-26.1.README.txt @@ -0,0 +1,1212 @@ +Patch Package: OTP 26.1 +Git Tag: OTP-26.1 +Date: 2023-09-20 +Trouble Report Id: OTP-14480, OTP-18579, OTP-18582, OTP-18586, + OTP-18592, OTP-18598, OTP-18599, OTP-18605, + OTP-18611, OTP-18614, OTP-18615, OTP-18616, + OTP-18623, OTP-18627, OTP-18628, OTP-18629, + OTP-18631, OTP-18633, OTP-18638, OTP-18644, + OTP-18645, OTP-18647, OTP-18654, OTP-18655, + OTP-18660, OTP-18661, OTP-18662, OTP-18664, + OTP-18666, OTP-18669, OTP-18670, OTP-18672, + OTP-18674, OTP-18675, OTP-18676, OTP-18677, + OTP-18678, OTP-18679, OTP-18681, OTP-18683, + OTP-18685, OTP-18686, OTP-18687, OTP-18688, + OTP-18689, OTP-18690, OTP-18691, OTP-18692, + OTP-18693, OTP-18694, OTP-18696, OTP-18697, + OTP-18698, OTP-18700, OTP-18701, OTP-18702, + OTP-18704, OTP-18705, OTP-18706, OTP-18707, + OTP-18708, OTP-18710, OTP-18711, OTP-18712, + OTP-18718, OTP-18719, OTP-18721, OTP-18722, + OTP-18723, OTP-18724, OTP-18725, OTP-18729, + OTP-18731, OTP-18732, OTP-18733, OTP-18734, + OTP-18736, OTP-18737, OTP-18738, OTP-18740, + OTP-18745, OTP-18746, OTP-18747, OTP-18748, + OTP-18752, OTP-18753, OTP-18754, OTP-18755, + OTP-18757, OTP-18758, OTP-18759, OTP-18763 +Seq num: ERIERL-43, ERIERL-957, ERIERL-959, + ERIERL-962, ERIERL-963, ERIERL-965, + ERIERL-979, GH-6074, GH-6339, GH-6394, + GH-6460, GH-6461, GH-7119, GH-7162, GH-7258, + GH-7280, GH-7292, GH-7298, GH-7317, GH-7325, + GH-7336, GH-7344, GH-7381, GH-7401, GH-7409, + GH-7410, GH-7413, GH-7417, GH-7431, GH-7436, + GH-7444, GH-7459, GH-7467, GH-7468, GH-7469, + GH-7477, GH-7482, GH-7488, GH-7492, GH-7504, + GH-7506, GH-7507, GH-7510, GH-7517, GH-7524, + GH-7546, GH-7566, GH-7569, GH-7577, GH-7584, + GH-7605, GH-7606, GH-7655 +System: OTP +Release: 26 +Application: asn1-5.2, common_test-1.25.1, compiler-8.4, + crypto-5.3, debugger-5.3.2, dialyzer-5.1.1, + erl_docgen-1.5.1, erts-14.1, inets-9.0.2, + kernel-9.1, megaco-4.5, mnesia-4.22.1, + observer-2.15.1, public_key-1.14.1, + snmp-5.15, ssl-11.0.3, stdlib-5.1 +Predecessor: OTP 26.0.2 + + Check out the git tag OTP-26.1, and build a full OTP system including + documentation. Apply one or more applications from this build as + patches to your installation using the 'otp_patch_apply' tool. For + information on install requirements, see descriptions for each + application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-18746 Application(s): stdlib + Related Id(s): PR-7313, PR-7456 + + *** POTENTIAL INCOMPATIBILITY *** + + A warning for (accidental use of) Triple-Quoted Strings + has been implemented as per EEP 64. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18696 Application(s): stdlib + + Pattern matching and equivalence (=:=, =/=) comparisons + on 0.0 will now raise a warning, as it will no longer + be considered equivalent to -0.0 in OTP 27. + + If a match on 0.0 specifically is desired (distinct + from -0.0), the warning can be suppressed by writing + +0.0 instead. + + The arithmetic comparison operators are unaffected, + including arithmetic equality (==). + + + OTP-18746 Application(s): stdlib + Related Id(s): PR-7313, PR-7456 + + *** HIGHLIGHT *** + + A warning for (accidental use of) Triple-Quoted Strings + has been implemented as per EEP 64. + + + --------------------------------------------------------------------- + --- asn1-5.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18729 Application(s): asn1 + Related Id(s): PR-7575 + + The ASN.1 compiler would ignore a constraint such as + (SIZE (1..4), ...), causing incorrect behavior of the + encoding and decoding function for the PER and UPER + backends. Corrected to handle the constraint in the + same way as (SIZE (1..4, ...)). + + + --- Improvements and New Features --- + + OTP-18748 Application(s): asn1 + Related Id(s): ERIERL-957, PR-7637 + + The JER backend has been internally refactored in a way + that is compatible for applications that use the + documented API. However, for a group of ASN.1 modules + that depend on each other (for example, + S1AP-PDU-Descriptions, S1AP-Contents, and so on), all + modules in the group must be recompiled if on of the + group members is recompiled. + + + Full runtime dependencies of asn1-5.2: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.25.1 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.25.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-14480 Application(s): common_test + Related Id(s): ERIERL-43, OTP-11894, PR-7455 + + With this change, ct_hooks manual refers to CTH + execution order section in user guide. + + + OTP-18579 Application(s): common_test + Related Id(s): GH-7119 + + With this change, Config data from pre_end_per_testcase + hook is delivered to post_end_per_testcase callback in + case of testcase timetrap or linked process crash. + + + OTP-18615 Application(s): common_test + Related Id(s): PR-7234 + + With this change, remaining references to not supported + vts tool in ct_run are removed (mainly relates to docs + and ct_run help message). + + + OTP-18664 Application(s): common_test + Related Id(s): ERIERL-959 + + With this change, prompt search functionality in + ct_telnet handles unicode input. + + + OTP-18676 Application(s): common_test, erl_docgen, erts, kernel, + stdlib + Related Id(s): GH-7459, PR-7473 + + Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. + + Added the types io:standard_io/0, io:standard:error/0 + and io:user/0. + + + Full runtime dependencies of common_test-1.25.1: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18605 Application(s): compiler, stdlib + Related Id(s): GH-7298, GH-7317 + + The compiler could run forever when compiling a call to + is_record/3 with a huge positive tuple size. The call + is_record(A, a, 0) would crash the compiler when used + in a function body. When used in a guard the compiler + would emit incorrect code that would accept {a> as a + record. + + + OTP-18629 Application(s): compiler, dialyzer + Related Id(s): GH-7325 + + Fixed a bug that caused dialyzer to crash when + analyzing bogus code that contained the literal atom + undefined in segment sizes. + + + OTP-18662 Application(s): compiler + Related Id(s): GH-7409, PR-7416 + + The compiler would crash when compiling some modules + that contained a call to erlang:load_nif/2. + + + OTP-18678 Application(s): compiler + Related Id(s): GH-7488 + + Fixed a bug that caused the compiler to crash on legal + code. + + + OTP-18689 Application(s): compiler + Related Id(s): GH-7504, PR-7518 + + The compiler could crash when attempting to compile a + call to is_list/1 in a complex expression. + + + OTP-18692 Application(s): compiler + Related Id(s): GH-7517, PR-7519 + + A complex guard expression using the or operator could + succeed when it was supposed to fail. + + + OTP-18701 Application(s): compiler + Related Id(s): GH-7477, PR-7532 + + Compiling nested try/catch and catch expression could + result in an internal compiler error. + + + OTP-18719 Application(s): compiler + Related Id(s): GH-7468, PR-7562 + + Using the bnot operator in a complex expression could + cause the compiler to terminate with an internal + consistency failure diagnostic. + + + OTP-18721 Application(s): compiler + Related Id(s): PR-7527 + + Fixed a bug that caused the compiler to crash in a + binary optimization pass. + + + OTP-18725 Application(s): compiler + Related Id(s): GH-7467 + + The compiler could terminate with an internal error + when attempting to compile a binary pattern that could + not possibly match. + + + --- Improvements and New Features --- + + OTP-18691 Application(s): compiler + Related Id(s): PR-7448 + + Fixed various performance issues related to the alias + optimization pass. + + + Full runtime dependencies of compiler-8.4: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + The crypto-5.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18670 Application(s): crypto + Related Id(s): GH-7436, PR-7450 + + Fix VM crash caused by crypto being purged and reloaded + (by init:restart for example) on OS with musl libc + (such as Alpine linux). + + + OTP-18758 Application(s): crypto + Related Id(s): PR-7209 + + Improved understanding of LibreSSL versions. Support + chacha20 and chacha20_poly1305 for LibreSSL 3.7. + Reflect removal of support for the DSS/DSA algorithm + which was done in LibreSSL 2.6.1. + + + --- Improvements and New Features --- + + OTP-18666 Application(s): crypto + Related Id(s): PR-7392 + + FIPS supported by crypto for OpenSSL 3.0.* and 3.1.*. + + + Full runtime dependencies of crypto-5.3: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The debugger-5.3.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18644 Application(s): debugger + Related Id(s): GH-7336 + + The call int:no_break(Module) did not remove any + breakpoints. + + + OTP-18740 Application(s): debugger + Related Id(s): GH-7410, PR-7599 + + The maybe expression is now supported in the Debugger. + + + Full runtime dependencies of debugger-5.3.2: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.1.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18629 Application(s): compiler, dialyzer + Related Id(s): GH-7325 + + Fixed a bug that caused dialyzer to crash when + analyzing bogus code that contained the literal atom + undefined in segment sizes. + + + OTP-18738 Application(s): dialyzer + Related Id(s): GH-7584 + + Dialyzer could crash when attempting to analyze a + module that defined a type called product/. + + + Full runtime dependencies of dialyzer-5.1.1: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The erl_docgen-1.5.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18676 Application(s): common_test, erl_docgen, erts, kernel, + stdlib + Related Id(s): GH-7459, PR-7473 + + Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. + + Added the types io:standard_io/0, io:standard:error/0 + and io:user/0. + + + Full runtime dependencies of erl_docgen-1.5.1: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erts-14.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18592 Application(s): erts + + maps:put with existing key and identical value was not + optimized as a no-op correctly if having the same + 32-bit hash as another key in the map. In practice very + rare and harmless. + + + OTP-18623 Application(s): erts, kernel + Related Id(s): GH-7344 + + Fixed an issue with truncated crash slogans on failed + emulator start. + + + OTP-18645 Application(s): erts + Related Id(s): GH-7401 + + Fixed a bug where the emulator was unable to determine + the current cgroup CPU quota. + + + OTP-18647 Application(s): erts + Related Id(s): PR-7595 + + A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That + is, the processes was not woken up to take care of the + signal, so the signal would not be taken care of until + the process was woken by another signal. Only processes + configured with message_queue_data set to off_heap + utilize this optimization. + + + OTP-18669 Application(s): erts, kernel + Related Id(s): OTP-18029 + + Function socket:close/1 could cause a VM crash on + Windows. + + + OTP-18672 Application(s): erts + Related Id(s): GH-7469 + + Fixed a bug in the ARM JIT where it could accidentally + add garbage trailing bits when creating bitstrings + whose size wasn't an even multiple of 8 bits. + + + OTP-18674 Application(s): erts + Related Id(s): PR-7472 + + Fix erlang:system_info/1 documentation to show correct + types. + + + OTP-18676 Application(s): common_test, erl_docgen, erts, kernel, + stdlib + Related Id(s): GH-7459, PR-7473 + + Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. + + Added the types io:standard_io/0, io:standard:error/0 + and io:user/0. + + + OTP-18702 Application(s): erts + Related Id(s): GH-7381 + + Fix compilation with GNU termcap. + + + OTP-18706 Application(s): erts + Related Id(s): ERIERL-979, GH-7413, PR-7595 + + Delivery time of message signals to a process not + executing any receive expressions could become very + long, potentially infinite. For example, a process + checking for messages using process_info(self(), + message_queue_len) or process_info(self(), messages) + and avoiding to execute a receive expression matching + on messages could be very slow in detecting new + messages. Note that you are still discouraged from + using process_info() this way. A process that wants to + check if there are messages available to handle should + execute a receive expression matching on messages. + + + OTP-18724 Application(s): erts + Related Id(s): GH-7566, PR-7567 + + On AArch64 (ARM64), when calculating both the quotient + and remainder with a divisor begin a power two, the + remainder could be incorrectly calculated. + + + OTP-18732 Application(s): erts + Related Id(s): GH-7444, PR-7458 + + Fix bug causing "magic" references in a compressed ETS + table to not keep the referred object alive. The + symptom would be the referred object being garbage + collected prematurely and the reference appearing + stale, not referring to anything. Examples of such + magically referred objects are atomics and NIF + resources. + + + OTP-18733 Application(s): erts + Related Id(s): GH-7292 + + Matching out short bitstrings with a fixed size not + divisible by 8 could could lead to the runtime system + terminating with an "Overrun heap and stack" error. + + + OTP-18737 Application(s): erts + Related Id(s): PR-7595 + + A constant flow of incoming non-message signals could + prevent a process needing to execute dirty from doing + so. + + + OTP-18745 Application(s): erts + Related Id(s): GH-7492, PR-7616 + + A BEAM file usually contains a chunk with the tag + "Type" containing type information that can be used by + the JIT. The beam_lib:strip/1 takes care to preserve + that chunk, but a build/release tool that does + customized stripping could accidentally remove the + chunk. Loading a BEAM file without the "Type" chunk + could cause incorrect behavior of the loaded code. + + + OTP-18747 Application(s): erts, kernel + Related Id(s): GH-7605 + + gen_udp:recv/* for Unix Domain Socket in binary mode + and passive mode has been fixed to not crash. + + + OTP-18752 Application(s): erts + Related Id(s): PR-7633 + + The cleanup operation of not yet delivered signals to a + terminated process yielded excessively. + + + OTP-18753 Application(s): erts + Related Id(s): PR-7634 + + Fixed minor hashing issue with the local option of + term_to_binary()/term_to_iovec(). + + + --- Improvements and New Features --- + + OTP-18586 Application(s): erts, kernel + Related Id(s): OTP-18029 + + Update gen_tcp_socket and gen_udp_socket to handle + 'completion' (socket on Windows). + + + OTP-18611 Application(s): erts, kernel + Related Id(s): #5024, OTP-18029 + + Add support for Unix Domain Sockets (only for STREAM + sockets) on Windows for 'socket'. + + + OTP-18638 Application(s): erts + + In Erlang/OTP 27, by default escripts will be compiled + before being executed. That means that the compiler + application must be installed. It is possible to force + the escript to be interpreted by adding the directive + -mode(interpret). to the escript file. + + In Erlang/OTP 28, support for interpreting an escript + will be removed. + + + OTP-18660 Application(s): erts, kernel + + Add basic support for socket ioctl on Windows. + + + OTP-18661 Application(s): erts + Related Id(s): PR-6112 + + Removed erts/etc/darwin/Info.plist, as it is no longer + necessary after macos 10.12 + + + OTP-18686 Application(s): erts, kernel + + Add support for (Windows) socket option + exclusiveaddruse. + + + OTP-18687 Application(s): erts, kernel + + [socket] Add support for the 'nopush' option. + + + OTP-18693 Application(s): erts, kernel + + Add support for socket option 'BSP STATE'. + + + OTP-18698 Application(s): erts, kernel + + Add tcp socket options 'keepcnt', 'keepidle' and + 'keepintvl'. + + + OTP-18710 Application(s): erts, kernel + + Add support for misc (Windows) socket options + ('max_msg_size' and 'maxdg'). + + + Full runtime dependencies of erts-14.1: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-9.0.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The inets-9.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18582 Application(s): inets + Related Id(s): GH-6074, PR-6892 + + With this change, re_write httpd works as expected and + does not return error. + + + OTP-18688 Application(s): inets + Related Id(s): ERIERL-962 + + Fixed a bug so httpd does not crash when stopped at the + wrong time during TLS connection negotiation, or any + other theoretically as slow connection setup. + + + OTP-18694 Application(s): inets + Related Id(s): GH-7482 + + Enhance error handling and avoid that the HTTP client + hangs on headers provided on the wrong format. + + + OTP-18704 Application(s): inets + Related Id(s): ERIERL-962, OTP-18688, PR-7513 + + With this change, error report generated by httpd + during connection setup contains socket type + information. + + + OTP-18708 Application(s): inets + Related Id(s): ERIERL-962, OTP-18688 + + Stop and restart of the httpd server in the Inets + application has been refactored to a more synchronous + and OTP supervisor friendly approach. + + This should increase stability and for example avoid a + supervisor report from httpd_connection_sup about + killed child process(es) in some cases when stopping or + restarting httpd. + + + Full runtime dependencies of inets-9.0.2: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- kernel-9.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The kernel-9.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18623 Application(s): erts, kernel + Related Id(s): GH-7344 + + Fixed an issue with truncated crash slogans on failed + emulator start. + + + OTP-18628 Application(s): kernel + Related Id(s): GH-7280 + + Fix shell:start_interactive function specification. + + + OTP-18654 Application(s): kernel + Related Id(s): PR-7404 + + Fix code:get_doc/1 to return missing, when it can't + find erts instead of crashing. + + + OTP-18669 Application(s): erts, kernel + Related Id(s): OTP-18029 + + Function socket:close/1 could cause a VM crash on + Windows. + + + OTP-18675 Application(s): kernel, stdlib + Related Id(s): GH-7459, PR-7473 + + Fix deadlock when erl.exe is used as part of a pipe on + Windows and trying to set the encoding of the + standard_io device. + + + OTP-18676 Application(s): common_test, erl_docgen, erts, kernel, + stdlib + Related Id(s): GH-7459, PR-7473 + + Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. + + Added the types io:standard_io/0, io:standard:error/0 + and io:user/0. + + + OTP-18677 Application(s): kernel + Related Id(s): GH-7417, PR-7418 + + Fix logger's overload protection mechanism to only + fetch memory used by messages when needed. + + + OTP-18685 Application(s): kernel + + Fixed a number of socket-related issues causing + incompatibilities with gen_tcp and gen_udp + respectively. + + + OTP-18707 Application(s): kernel + Related Id(s): #7530 + + gen_tcp:connect with socket address and socket (inet-) + backend fails because of missing callback function. + + + OTP-18731 Application(s): kernel + Related Id(s): GH-7577, PR-7578 + + The DNS RR cache used by `inet_res` has been fixed to + preserve insert order, which is beneficial when the DNS + server returns RRs in some specific order for e.g load + balancing purposes. + + + OTP-18734 Application(s): kernel + Related Id(s): GH-6461, GH-7569, OTP-18344, PR-6522 + + The options `reuseport`, `reuseport_lb` and + `exclusiveaddruse` were accidentally not allowed for + e.g `gen_udp:open/1,2`, which has now been corrected. + + + OTP-18747 Application(s): erts, kernel + Related Id(s): GH-7605 + + gen_udp:recv/* for Unix Domain Socket in binary mode + and passive mode has been fixed to not crash. + + + OTP-18757 Application(s): kernel + Related Id(s): PR-7631 + + Fixed issue where cursor would not be placed at the end + of the expression when navigating shell history. + + + --- Improvements and New Features --- + + OTP-18586 Application(s): erts, kernel + Related Id(s): OTP-18029 + + Update gen_tcp_socket and gen_udp_socket to handle + 'completion' (socket on Windows). + + + OTP-18611 Application(s): erts, kernel + Related Id(s): #5024, OTP-18029 + + Add support for Unix Domain Sockets (only for STREAM + sockets) on Windows for 'socket'. + + + OTP-18660 Application(s): erts, kernel + + Add basic support for socket ioctl on Windows. + + + OTP-18681 Application(s): kernel + + The file:location/0 type is now exported. + + + OTP-18686 Application(s): erts, kernel + + Add support for (Windows) socket option + exclusiveaddruse. + + + OTP-18687 Application(s): erts, kernel + + [socket] Add support for the 'nopush' option. + + + OTP-18693 Application(s): erts, kernel + + Add support for socket option 'BSP STATE'. + + + OTP-18698 Application(s): erts, kernel + + Add tcp socket options 'keepcnt', 'keepidle' and + 'keepintvl'. + + + OTP-18710 Application(s): erts, kernel + + Add support for misc (Windows) socket options + ('max_msg_size' and 'maxdg'). + + + OTP-18754 Application(s): kernel, stdlib + Related Id(s): PR-7604, PR-7647 + + The keyboard shortcuts for the shell are now + configurable. + + + OTP-18755 Application(s): kernel + Related Id(s): PR-7503 + + Optimized code_server to reduce repeated work when + loading the same module concurrently. + + + Full runtime dependencies of kernel-9.1: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- megaco-4.5 ------------------------------------------------------ + --------------------------------------------------------------------- + + The megaco-4.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18599 Application(s): megaco + Related Id(s): OTP-18029 + + Make megaco transports handle gen_tcp | gen_udp with + socket backend on Windows (completion). + + + Full runtime dependencies of megaco-4.5: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.22.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.22.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18711 Application(s): mnesia + Related Id(s): ERIERL-963 + + Do not delete old backup file if the new backup fails. + + + Full runtime dependencies of mnesia-4.22.1: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- observer-2.15.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The observer-2.15.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18722 Application(s): observer + Related Id(s): PR-7462 + + Closing the trace log window via the menu did not work. + + + Full runtime dependencies of observer-2.15.1: erts-14.0, et-1.5, + kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + + + --------------------------------------------------------------------- + --- public_key-1.14.1 ----------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.14.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18718 Application(s): public_key + Related Id(s): GH-7546 + + Country name comparison shall be case insensitive + + + OTP-18723 Application(s): public_key + Related Id(s): GH-6394 + + Add check to disallow duplicate certs in a path + + + Full runtime dependencies of public_key-1.14.1: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- snmp-5.15 ------------------------------------------------------- + --------------------------------------------------------------------- + + The snmp-5.15 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18598 Application(s): snmp + Related Id(s): OTP-18029 + + Make snmp handle gen_udp with socket backend on Windows + (completion). + + + Full runtime dependencies of snmp-5.15: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.0.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.0.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18697 Application(s): ssl + Related Id(s): GH-7506 + + Avoid function clause error in ssl:getopts/2 by + handling that inet:getopts may return an empty list + during some circumstances, such as the socket being in + a closing state. + + + OTP-18700 Application(s): ssl + Related Id(s): GH-7507 + + The API function `ssl:recv/3` has been tightened to + disallow negative length, which has never been + documented to work, but was passed through and caused + strange errors. + + + OTP-18712 Application(s): ssl + Related Id(s): GH-7431 + + When a client initiated renegotiation was rejected and + the client socket was in active mode the expected error + message to the controlling process was not sent. + + + --- Improvements and New Features --- + + OTP-18631 Application(s): ssl + + Add some guidance for signature algorithms + configuration in ssl applications users guide. + + + Full runtime dependencies of ssl-11.0.3: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The stdlib-5.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18605 Application(s): compiler, stdlib + Related Id(s): GH-7298, GH-7317 + + The compiler could run forever when compiling a call to + is_record/3 with a huge positive tuple size. The call + is_record(A, a, 0) would crash the compiler when used + in a function body. When used in a guard the compiler + would emit incorrect code that would accept {a> as a + record. + + + OTP-18614 Application(s): stdlib + Related Id(s): GH-7162, PR-7237 + + Fix bug in ets:tab2file that could make it fail if + another Erlang process created the same file at the + same time. + + + OTP-18616 Application(s): stdlib + Related Id(s): GH-7258 + + An {else_clause,Value} exception will now be reported + nicely in the shell. + + + OTP-18627 Application(s): stdlib + Related Id(s): PR-7072 + + Correct return value for error case, so that it matches + the documented and intended return value {error, + {already_started, pid()} when local registered names + are used. + + + OTP-18633 Application(s): stdlib + + sys:get_state/1,2 and sys:replace_state/2,3 has been + corrected to handle a state named error as a state + name, not as a failed system callback. + + For the standard server behaviours this was an issue + only for gen_statem (and gen_fsm) when the state name + was error, and for gen_server if the complete state was + {error,_}. + + + OTP-18655 Application(s): stdlib + Related Id(s): GH-6460, PR-7208 + + Multiple problems were fixed in + filelib:safe_relative_path/2. If its second argument + was a path that contained symbolic links, an incorrect + result patch could be returned. Also, paths were + sometimes falsely considered unsafe. + + + OTP-18675 Application(s): kernel, stdlib + Related Id(s): GH-7459, PR-7473 + + Fix deadlock when erl.exe is used as part of a pipe on + Windows and trying to set the encoding of the + standard_io device. + + + OTP-18676 Application(s): common_test, erl_docgen, erts, kernel, + stdlib + Related Id(s): GH-7459, PR-7473 + + Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. + + Added the types io:standard_io/0, io:standard:error/0 + and io:user/0. + + + OTP-18683 Application(s): stdlib + Related Id(s): PR-7502 + + Fix h/2,3 to properly render multi-clause + documentation. + + + OTP-18759 Application(s): stdlib + Related Id(s): GH-7606 + + Timers created by timer:apply_after/4, + apply_interval/4, and apply_repeatedly/4 would silently + fail to do the apply if it was not possible to spawn a + process when the timer expired. This has now been + corrected, and if the spawn fails, the system will be + taken down producing a crash dump. + + + OTP-18763 Application(s): stdlib + Related Id(s): GH-7655 + + When an Erlang source file lacked a module definition, + there would be a spurious "module name must not be + empty" diagnostic for each spec in the file. + + + --- Improvements and New Features --- + + OTP-18679 Application(s): stdlib + Related Id(s): ERIERL-965 + + The argument descriptions for option types in argparse + have been made less ambiguous. + + + OTP-18690 Application(s): stdlib + Related Id(s): GH-7510, PR-7511 + + Clarified the documentation of normal shutdown reason + on gen_server:call/2,3 + + + OTP-18696 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Pattern matching and equivalence (=:=, =/=) comparisons + on 0.0 will now raise a warning, as it will no longer + be considered equivalent to -0.0 in OTP 27. + + If a match on 0.0 specifically is desired (distinct + from -0.0), the warning can be suppressed by writing + +0.0 instead. + + The arithmetic comparison operators are unaffected, + including arithmetic equality (==). + + + OTP-18705 Application(s): stdlib + Related Id(s): GH-6339, GH-7524, OTP-18471, PR-6843 + + The semantics of the gen_{server,statem,event} + behaviour's synchronous start behaviour introduced in + OTP-26.0 with OTP-18471, has been clarified in the + documentation. + + + OTP-18736 Application(s): stdlib + Related Id(s): PR-7564 + + Added functionality to set a custom multiline prompt. + + + OTP-18746 Application(s): stdlib + Related Id(s): PR-7313, PR-7456 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + A warning for (accidental use of) Triple-Quoted Strings + has been implemented as per EEP 64. + + + OTP-18754 Application(s): kernel, stdlib + Related Id(s): PR-7604, PR-7647 + + The keyboard shortcuts for the shell are now + configurable. + + + Full runtime dependencies of stdlib-5.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.1.README.txt b/release-notes/OTP-26.2.1.README.txt new file mode 100644 index 0000000..cced400 --- /dev/null +++ b/release-notes/OTP-26.2.1.README.txt @@ -0,0 +1,101 @@ +Patch Package: OTP 26.2.1 +Git Tag: OTP-26.2.1 +Date: 2023-12-18 +Trouble Report Id: OTP-18897, OTP-18902, OTP-18903 +Seq num: +System: OTP +Release: 26 +Application: erts-14.2.1, ssh-5.1.1 +Predecessor: OTP 26.2 + + Check out the git tag OTP-26.2.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18897 Application(s): ssh + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + --------------------------------------------------------------------- + --- OTP-26.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18903 Application(s): otp + + Updated copyright and license information. + + + --------------------------------------------------------------------- + --- erts-14.2.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18902 Application(s): erts + + Removed unnecessary PCRE source tar-ball. + + + Full runtime dependencies of erts-14.2.1: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssh-5.1.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18897 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + With this change (being response to CVE-2023-48795), + ssh can negotiate "strict KEX" OpenSSH extension with + peers supporting it; also + '[email protected]' algorithm becomes a + less preferred cipher. + + If strict KEX availability cannot be ensured on both + connection sides, affected encryption modes(CHACHA and + CBC) can be disabled with standard ssh configuration. + This will provide protection against vulnerability, but + at a cost of affecting interoperability. See + Configuring algorithms in SSH. + + + Full runtime dependencies of ssh-5.1.1: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.2.README.txt b/release-notes/OTP-26.2.2.README.txt new file mode 100644 index 0000000..e73a91c --- /dev/null +++ b/release-notes/OTP-26.2.2.README.txt @@ -0,0 +1,178 @@ +Patch Package: OTP 26.2.2 +Git Tag: OTP-26.2.2 +Date: 2024-02-08 +Trouble Report Id: OTP-18901, OTP-18911, OTP-18917, OTP-18931, + OTP-18932, OTP-18949, OTP-18957, OTP-18964 +Seq num: ERIERL-1023, GH-7978, GH-7987, GH-8051 +System: OTP +Release: 26 +Application: common_test-1.26.1, erl_interface-5.5.1, + erts-14.2.2, kernel-9.2.1, ssh-5.1.2, + ssl-11.1.1 +Predecessor: OTP 26.2.1 + + Check out the git tag OTP-26.2.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.26.1 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18932 Application(s): common_test + + Fix how CT finds Erlang/OTP releases for compatability + testing. This functionality is only used to test + Erlang/OTP. + + + Full runtime dependencies of common_test-1.26.1: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erl_interface-5.5.1 --------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.5.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18931 Application(s): erl_interface, erts + Related Id(s): GH-7987, PR-7989 + + Fix bug where the system installed openssl/md5.h would + be confused with the vendored md5.h. + + + --------------------------------------------------------------------- + --- erts-14.2.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18911 Application(s): erts + Related Id(s): ERIERL-1023, PR-7983 + + 32-bit runtime systems on most Unix like platforms + could crash if a BIF timer was set with a huge timeout + of more than 68 years into the future. In order for the + crash to occur, the huge timer (at a later time than + when it was set) had to become the nearest active timer + set on the specific scheduler on which it was set. This + could not happen on a system with only one scheduler + since there would always be shorter timers in the + system. + + Setting a timer larger than 49 days on Windows could + under rare circumstances cause the timeout to be + delayed. + + + OTP-18931 Application(s): erl_interface, erts + Related Id(s): GH-7987, PR-7989 + + Fix bug where the system installed openssl/md5.h would + be confused with the vendored md5.h. + + + OTP-18949 Application(s): erts + + The JIT has now been disabled on x86 Macs to prevent + annoying the "verifying shm-xyz" popups introduced in + MacOS Sonoma. + + ARM Macs are unaffected. + + + OTP-18957 Application(s): erts + Related Id(s): GH-8051, OTP-18841, PR-8088 + + Garbage collection of a process on a dirty scheduler + could collide with signal handling for that process + causing a crash of the runtime system. This bug was + introduced in OTP 25.3.2.8 and OTP 26.2. + + + Full runtime dependencies of erts-14.2.2: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18901 Application(s): kernel + + Fix group (that is the shell) to properly handle when + an get_until callback function returned {done, eof, []} + when an eof was detected. + + + Full runtime dependencies of kernel-9.2.1: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.2 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18964 Application(s): ssh + + With this change, Curve25519 and Curve448 KEX methods + become most preferred (related to RFC8731). + + + Full runtime dependencies of ssh-5.1.2: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18917 Application(s): ssl + Related Id(s): GH-7978 + + Legacy name handling could cause interop problems + between TLS-1.3/1.2 client and TLS-1.2 server. + + + Full runtime dependencies of ssl-11.1.1: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.3.README.txt b/release-notes/OTP-26.2.3.README.txt new file mode 100644 index 0000000..295f620 --- /dev/null +++ b/release-notes/OTP-26.2.3.README.txt @@ -0,0 +1,436 @@ +Patch Package: OTP 26.2.3 +Git Tag: OTP-26.2.3 +Date: 2024-03-07 +Trouble Report Id: OTP-18890, OTP-18900, OTP-18906, OTP-18907, + OTP-18909, OTP-18910, OTP-18919, OTP-18921, + OTP-18924, OTP-18926, OTP-18935, OTP-18936, + OTP-18937, OTP-18940, OTP-18948, OTP-18952, + OTP-18953, OTP-18962, OTP-18971, OTP-18974, + OTP-18979, OTP-18982, OTP-18985, OTP-18986, + OTP-18988, OTP-18990, OTP-18991, OTP-18996, + OTP-19002, OTP-19003, OTP-19006, OTP-19007, + OTP-19008, OTP-19009, OTP-19011 +Seq num: ERIERL-1041, ERIERL-1049, GH-7911, GH-7924, + GH-7934, GH-7968, GH-8016, GH-8021, GH-8024, + GH-8044, GH-8079, GH-8119, GH-8158, GH-8187, + PR-7750, PR-7930, PR-7932, PR-7933, PR-7945, + PR-7984, PR-8025, PR-8046, PR-8075, PR-8173, + PR-8174, PR-8181, PR-8189, PR-8201 +System: OTP +Release: 26 +Application: compiler-8.4.2, crypto-5.4.1, erts-14.2.3, + kernel-9.2.2, odbc-2.14.2, public_key-1.15.1, + ssh-5.1.3, ssl-11.1.2, stdlib-5.2.1, wx-2.4.1 +Predecessor: OTP 26.2.2 + + Check out the git tag OTP-26.2.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- OTP-26.2.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18924 Application(s): otp + + Quote uninstall path in registry when installing on + windows. + + + --------------------------------------------------------------------- + --- compiler-8.4.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.4.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19003 Application(s): compiler + Related Id(s): GH-8187, PR-8189 + + In rare circumstances, an unsafe optimization could + cause the compiler to generate incorrect code for list + matching. + + + --- Improvements and New Features --- + + OTP-18936 Application(s): compiler + + Fix the compilation server to restart if the + applications in its lib dir changes inbetween erlc + invokations. + + + Full runtime dependencies of compiler-8.4.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.4.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18921 Application(s): crypto + + Fix compile error when OPENSSL_NO_DES is defined. + + + OTP-18996 Application(s): crypto + Related Id(s): PR-8173, PR-8174 + + The function crypto:pbkdf2_hmac will no longer block + the main schedulers. If the iteration count or block + size parameters are such that the function is likely to + take a long time to execute, the function will be + scheduled to run on a dirty CPU scheduler. + + + Full runtime dependencies of crypto-5.4.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- erts-14.2.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18906 Application(s): erts + Related Id(s): PR-7930 + + Fixed compile warning in erl_nif.c for gcc-13. + + + OTP-18907 Application(s): erts + Related Id(s): PR-7932 + + Fix C++ compile error for macros enif_select_read and + friends. + + + OTP-18940 Application(s): erts + Related Id(s): GH-8024 + + Fixed a name clash on Solaris that prevented the JIT + from being built. + + + OTP-18952 Application(s): erts + Related Id(s): PR-8025 + + Fix termcap detection on solaris. + + + OTP-18971 Application(s): erts + Related Id(s): GH-8044 + + Fix heap corruption bug that could cause runaway memory + consumption due to circular offheap list at process + exit. Other symptoms may also be possible. Bug exists + since OTP 25.0. + + + OTP-18979 Application(s): erts + + Do not clear tracing in old module instance if load + fails with 'not_purged'. + + + OTP-18982 Application(s): erts + + When exceeding the `max_heap_size` limit in a garbage + collection initiated by some bit syntax operations, the + process would not always terminate immediately. + + + OTP-19006 Application(s): erts + + The code server could be hanging if a module with + on_load function was loaded at the same time as another + module was purged using erlang:purge_module directly. + + + OTP-19008 Application(s): erts + Related Id(s): GH-8119, PR-8201 + + A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That + is, the processes was not woken up to take care of the + signal, so the signal would not be taken care of until + the process was woken by another signal. Only processes + configured with message_queue_data set to off_heap + utilize this optimization. + + + OTP-19009 Application(s): erts + Related Id(s): PR-8181 + + Fix segfault when generating crashdump containing a fun + places in persistent_term storage. + + + OTP-19011 Application(s): erts + + By default the JIT is disabled on Intel Macs, because + of annoying poups on macOS Sonoma. It is now possible + to explicitly enable the JIT on Intel Macs. Here is + how: ./configure --enable-jit + + + Full runtime dependencies of erts-14.2.3: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18910 Application(s): kernel + Related Id(s): GH-7924, PR-7933 + + Fix performance bug when using io:fread to read from + standard_io. This regression was introduced in OTP + 26.0. + + + OTP-18948 Application(s): kernel + Related Id(s): PR-8046 + + A bug in the code server could cause it to crash in + some concurrent scenarios. This bug was introduced in + 26.1. + + + OTP-18990 Application(s): kernel + Related Id(s): GH-8158 + + Fixed gen_udp:open/2 type spec to include already + supported module socket address types. + + + OTP-19007 Application(s): kernel, ssh + Related Id(s): ERIERL-1049 + + Fix reading of password for ssh client when in + user_interactive mode. + + + Full runtime dependencies of kernel-9.2.2: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- odbc-2.14.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The odbc-2.14.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18926 Application(s): odbc + + Use spec for API doc + + + Full runtime dependencies of odbc-2.14.2: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1 ----------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18935 Application(s): public_key + Related Id(s): GH-8021 + + Hostname prefix with X number of dots should not be + accepted. + + + Full runtime dependencies of public_key-1.15.1: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-5.1.3 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18974 Application(s): ssh + + With this change, acceptor_sup is not started for ssh + client as it is not needed in that role. + + + OTP-18986 Application(s): ssh + + With this change, more secure algorithms are preferred + by ssh and documentation is updated to reflect that. + + + OTP-19002 Application(s): ssh + Related Id(s): ERIERL-1041 + + With this change, KEX strict terminal message is + emitted with debug verbosity. + + + OTP-19007 Application(s): kernel, ssh + Related Id(s): ERIERL-1049 + + Fix reading of password for ssh client when in + user_interactive mode. + + + Full runtime dependencies of ssh-5.1.3: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.1.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18890 Application(s): ssl + Related Id(s): GH-7911 + + ssl:prf/5, will start working instead of hanging in a + TLS-1.3 context if called appropriately. Note that the + implementation has changed and in OTP-27 a more + adequate API will be documented. + + + OTP-18909 Application(s): ssl + Related Id(s): GH-7968 + + Server name verification didn't work if a connection + was made with IP-address as a string. + + + OTP-18919 Application(s): ssl + Related Id(s): PR-7984 + + The fallback after "dh" ssl option was undefined was to + get "dh" from ssl options again. This is clearly wrong + and now changed to the documented fallback "dhfile" ssl + option. + + + OTP-18962 Application(s): ssl + Related Id(s): GH-8079 + + Correct default value selection for DTLS. Will only + affect users linked with really old version of + cryptolib library. + + + OTP-18991 Application(s): ssl + + Adhere elliptic curves with RFC 8422 pre TLS-1.3, that + is Edwards curves are added to curves that can be used + for key exchange, and documentation and implementation + of eccs/0,1 are aligned. + + + --- Improvements and New Features --- + + OTP-18985 Application(s): ssl + + Improve alert reason when ecdhe_rsa key_exchange does + not have any common curves to use + + + Full runtime dependencies of ssl-11.1.2: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18900 Application(s): stdlib + Related Id(s): GH-7934, PR-7945 + + The help texts shown by argparse will now display + sub-command arguments in the correct order. + + + OTP-18937 Application(s): stdlib + + Clarified the argparse documentation regarding the + user-defined help template. + + + OTP-18953 Application(s): stdlib + Related Id(s): GH-8016, PR-8075 + + Fix shell expansion to not crash when expanding invalid + using invalid atoms. + + + Full runtime dependencies of stdlib-5.2.1: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- wx-2.4.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + The wx-2.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18988 Application(s): wx + Related Id(s): PR-7750 + + Add option to silence wx depracation macros. + + + Full runtime dependencies of wx-2.4.1: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.4.README.txt b/release-notes/OTP-26.2.4.README.txt new file mode 100644 index 0000000..2b4c167 --- /dev/null +++ b/release-notes/OTP-26.2.4.README.txt @@ -0,0 +1,409 @@ +Patch Package: OTP 26.2.4 +Git Tag: OTP-26.2.4 +Date: 2024-04-12 +Trouble Report Id: OTP-18958, OTP-18960, OTP-18999, OTP-19013, + OTP-19014, OTP-19015, OTP-19019, OTP-19021, + OTP-19031, OTP-19034, OTP-19035, OTP-19036, + OTP-19037, OTP-19038, OTP-19039, OTP-19040, + OTP-19041, OTP-19043, OTP-19044, OTP-19045, + OTP-19048, OTP-19049, OTP-19056, OTP-19058, + OTP-19059, OTP-19060 +Seq num: #8176, ERIERL-1043, ERIERL-1060, ERIERL-682, + GH-7897, GH-7928, GH-7951, GH-7955, GH-8120, + GH-8186, GH-8238, GH-8268, GH-8271, GH-8280, + GH-8291, GH-8316, GH-8338, OTP-17323, + PR-8220, PR-8248, PR-8275, PR-8277, PR-8284, + PR-8297, PR-8312, PR-8342, PR-8343 +System: OTP +Release: 26 +Application: asn1-5.2.2, common_test-1.26.2, + compiler-8.4.3, crypto-5.4.2, debugger-5.3.4, + diameter-2.3.2, erts-14.2.4, kernel-9.2.3, + ssh-5.1.4, ssl-11.1.3, stdlib-5.2.2 +Predecessor: OTP 26.2.3 + + Check out the git tag OTP-26.2.4, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- asn1-5.2.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The asn1-5.2.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19039 Application(s): asn1 + Related Id(s): GH-8291, PR-8297 + + An ASN.1 module that contains named BIT STRING values + would fail to compiled if both the BER and JER + back-ends were enabled. + + + Full runtime dependencies of asn1-5.2.2: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.26.2 ---------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18960 Application(s): common_test + + With this change, the last column in common_test + testcase log file is modified to now show the total sum + of each time in the table rows, and Elapsed Time which + is a clock time spent to run above functions. The + Elapsed Time is the same time that was previously a + total. + + + Full runtime dependencies of common_test-1.26.2: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.4.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The compiler-8.4.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19019 Application(s): compiler + + In rare circumstances, the compiler code generate + unsafe code for a bit syntax match. + + + OTP-19035 Application(s): compiler + Related Id(s): GH-8280, PR-8284 + + In rare circumstances, binary matches that were + supposed to succeed failed. + + + OTP-19045 Application(s): compiler + Related Id(s): GH-8316 + + Fixed a bug where a fun's environment could be + overridden by an argument if all of the following + conditions were met: + + -- The fun was declared in the module that called it. + + -- The fun's target was statically known. + + -- The fun was called with a number of extra arguments + equal to the number of environment variables. + + + Full runtime dependencies of compiler-8.4.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.4.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.4.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19038 Application(s): crypto + Related Id(s): GH-8271, PR-8277 + + Fix building with --enable-fips with OpenSSL 3 on + MacOS. + + + Full runtime dependencies of crypto-5.4.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The debugger-5.3.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18958 Application(s): debugger + Related Id(s): GH-8120, PR-8275 + + Guards with nested record expression could wrongly + evaluate to false. + + + Full runtime dependencies of debugger-5.3.4: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The diameter-2.3.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19040 Application(s): diameter + Related Id(s): ERIERL-1060 + + Reduce the impact of calling service_info by not + counting the binaries (on the heap) info, This is done + by introducing an option, bins_info, which controls + this. + + + Full runtime dependencies of diameter-2.3.2: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.2.4 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18999 Application(s): erts + Related Id(s): GH-7928 + + Fixed CPU quota determination for cgroup version 2 + + + OTP-19014 Application(s): erts + + Fix faulty reduction counting in exiting process which + could cause it to do unnecessary yielding. + + + OTP-19015 Application(s): erts + Related Id(s): ERIERL-682 + + Fix bug in re:run/3 where if an invalid UTF-8 subject + was given, re:run could get stuck in an infinite loop. + Bug was introduced in Erlang/OTP 22.1. + + + OTP-19021 Application(s): erts + Related Id(s): GH-8238, PR-8248 + + On AArch64 (ARM64), Erlang code using bit syntax + construction compiled using Erlang/OTP 24 could crash + the runtime system when run in Erlang/OTP 26.2.3. + + + OTP-19034 Application(s): erts + + Calling erlang:trace/3 with first argument one of + ports, processes, existing_ports, existing_processes, + existing or all, could cause emulator crash if a dirty + scheduler was executing a simultaneous trace action. + + + OTP-19036 Application(s): erts + Related Id(s): GH-8186 + + Fixed an integer overflow when the monotonic time unit + reported by the operating system was greater than 10 + and lower than 100 microseconds. + + + OTP-19041 Application(s): erts + + Fix option reuseaddr for FreeBSD 14 + + + OTP-19043 Application(s): erts + Related Id(s): PR-8342 + + When a traced process executing on a dirty scheduler + received an exit signal, the dirty scheduler could use + the wrong thread specific data which could lead to a + crash. + + + OTP-19048 Application(s): erts + Related Id(s): PR-8343 + + Fixed a more or less harmless bug that caused time + correction of Erlang monotonic time to become slightly + off on Windows platforms when QueryPerformanceCounter() + was used as OS monotonic time source. + + erlang:system_info(os_monotonic_time_source) now also + returns information about used resolution which not + always corresponds to the resolution of the OS + monotonic time source. + + + OTP-19049 Application(s): erts, kernel + Related Id(s): #8176 + + When using IPv6, classic gen_udp failed to add (group) + membership (drop was used instead). + + + OTP-19060 Application(s): erts + + Fix bug on Windows where "Unknown event: 2" would be + printed to the console. + + + --- Improvements and New Features --- + + OTP-19044 Application(s): erts + Related Id(s): ERIERL-1043, PR-8342 + + Checks for monotonicity of monotonic time have been + improved so that Erlang and OS monotonic time are + checked separately. + + A new configure argument + --enable-ensure-os-monotonic-time has also been added. + It enables functionality ensuring the monotonicity of + monotonic timestamps delivered by the OS. When a + non-monotonic timestamp is detected, it will be + replaced by the last delivered monotonic timestamp + before being used by Erlang's time functionality. Note + that you do not want to enable this unless the OS + monotonic time source on the system fails to produce + monotonic timestamps. This since ensuring the + monotonicity of OS monotonic timestamps will hurt + scalability and performance of the system. + + + OTP-19058 Application(s): erts + + For severe errors, when the `socket` module terminates + the Erlang VM, now an erl_crash.dump is produced, to + facilitate post mortem debugging. + + + Full runtime dependencies of erts-14.2.4: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19049 Application(s): erts, kernel + Related Id(s): #8176 + + When using IPv6, classic gen_udp failed to add (group) + membership (drop was used instead). + + + OTP-19056 Application(s): kernel + Related Id(s): PR-8312, OTP-17323 + + The check in inet_res of the RD bit has been relaxed + slightly. + + + Full runtime dependencies of kernel-9.2.3: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.4 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19013 Application(s): ssh + Related Id(s): GH-7897, PR-8220 + + With this change, owner and group file attributes + decoding is fixed and results with value of integer + type. + + + Full runtime dependencies of ssh-5.1.4: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.1.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19037 Application(s): ssl + Related Id(s): GH-7951, GH-7955 + + Cleanup and close all connections in DTLS when the + listen socket owner dies. + + Improved IPv6 handling in DTLS. + + + OTP-19059 Application(s): ssl + Related Id(s): GH-8338 + + Fixed a crash in dtls accept. + + + Full runtime dependencies of ssl-11.1.3: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19031 Application(s): stdlib + Related Id(s): GH-8268 + + Attempting to use the maybe construct in a macro + argument could crash the compiler. + + + Full runtime dependencies of stdlib-5.2.2: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.1.README.txt b/release-notes/OTP-26.2.5.1.README.txt new file mode 100644 index 0000000..891093c --- /dev/null +++ b/release-notes/OTP-26.2.5.1.README.txt @@ -0,0 +1,221 @@ +Patch Package: OTP 26.2.5.1 +Git Tag: OTP-26.2.5.1 +Date: 2024-06-25 +Trouble Report Id: OTP-19057, OTP-19063, OTP-19090, OTP-19091, + OTP-19092, OTP-19094, OTP-19100, OTP-19104, + OTP-19107, OTP-19109, OTP-19121, OTP-19123, + OTP-19140 +Seq num: ERIERL-870, GH-7483, GH-8376, GH-8482, + GH-8484, GH-8489, OTP-18835, PR-8345, + PR-8399, PR-8508, PR-8546 +System: OTP +Release: 26 +Application: diameter-2.3.2.1, erts-14.2.5.1, + kernel-9.2.4.1, public_key-1.15.1.1, + ssh-5.1.4.1, ssl-11.1.4.1 +Predecessor: OTP 26.2.5 + + Check out the git tag OTP-26.2.5.1, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- diameter-2.3.2.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The diameter-2.3.2.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19090 Application(s): diameter + Related Id(s): PR-8399 + + Pick peer can now also handle request of type + #diameter_packet{}. + + + Full runtime dependencies of diameter-2.3.2.1: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.2.5.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19063 Application(s): erts, kernel + Related Id(s): OTP-18835 + + A call to socket:[recv|recvfrom|recvmsg]/* with Timeout + = 0 on Windows could cause a (case clause) crash if + data is immediately available. + + + OTP-19121 Application(s): erts + Related Id(s): GH-8484 + + When a port command crashed in the inet driver during + gen_tcp:send/2, a monitor 'DOWN' message could be left + lingering in the caller's mailbox. This has now been + fixed. + + + OTP-19123 Application(s): erts + Related Id(s): GH-8484, PR-8546 + + 'DOWN' messages originating from a monitored port, + contained the atom process instead of the atom port as + the third element when the exit reason was not an + immediate term. + + + Full runtime dependencies of erts-14.2.5.1: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19063 Application(s): erts, kernel + Related Id(s): OTP-18835 + + A call to socket:[recv|recvfrom|recvmsg]/* with Timeout + = 0 on Windows could cause a (case clause) crash if + data is immediately available. + + + OTP-19104 Application(s): kernel + Related Id(s): ERIERL-870 + + Open a disk_log file and combining head_func with + rotate options did not work. + + + Full runtime dependencies of kernel-9.2.4.1: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1.1 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19100 Application(s): public_key + Related Id(s): GH-8482, PR-8508 + + Fix bug in dnsName constraint check, could cause valid + cert to be considered bad during path validation. + + + Full runtime dependencies of public_key-1.15.1.1: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19057 Application(s): ssh + Related Id(s): GH-7483, PR-8345 + + With this change, ssh client will automatically adjust + transfer window size for commands executed remotely + over SSH. + + + OTP-19109 Application(s): ssh + Related Id(s): PR-8345 + + With this change, race condition between connection + closing and automatic window adjustment is fixed. + + + Full runtime dependencies of ssh-5.1.4.1: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19094 Application(s): ssl + Related Id(s): GH-8489 + + Check for TLS-1.3 support should check minimum + requirements. + + + OTP-19107 Application(s): ssl + Related Id(s): GH-8376 + + If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2 + negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 + hash and signature pairs for increased + interoperability. + + + OTP-19140 Application(s): ssl + + TLS-1.3 negotiation now uses SNI based options + correctly instead of ignoring them. + + + --- Improvements and New Features --- + + OTP-19091 Application(s): ssl + + Make it easier to distinguish between a invalid + signature and unsupported signature. + + + OTP-19092 Application(s): ssl + Related Id(s): GH-8482 + + Enhance ALERT logs to help understand what causes the + alert. + + + Full runtime dependencies of ssl-11.1.4.1: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Anupama Singh + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.10.README.txt b/release-notes/OTP-26.2.5.10.README.txt new file mode 100644 index 0000000..5bb85e1 --- /dev/null +++ b/release-notes/OTP-26.2.5.10.README.txt @@ -0,0 +1,183 @@ +Patch Package: OTP 26.2.5.10 +Git Tag: OTP-26.2.5.10 +Date: 2025-03-28 +Trouble Report Id: OTP-19437, OTP-19469, OTP-19493, OTP-19501, + OTP-19527, OTP-19529, OTP-19543, OTP-19545, + OTP-19548, OTP-19559 +Seq num: #9172, CVE-2025-30211, ERIERL-1195, GH-9483, + GH-9554, OTP-19472, OTP-19544, PR-9443, + PR-9486, PR-9499, PR-9534, PR-9545, PR-9577, + PR-9587 +System: OTP +Release: 26 +Application: erts-14.2.5.9, kernel-9.2.4.7, + mnesia-4.23.1.2, ssh-5.1.4.7, ssl-11.1.4.8 +Predecessor: OTP 26.2.5.9 + + Check out the git tag OTP-26.2.5.10, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-14.2.5.9 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.9 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19469 Application(s): erts, kernel + Related Id(s): #9172 + + Behavior for socket:recv/3 has been improved. The + behavior has also been clarified in the documentation. + + + OTP-19493 Application(s): erts + Related Id(s): PR-9443 + + Fix prim_inet:send/3 (and in extension + gen_tcp:send/2,3) to use the selective recive + optimization when waiting for a send acknowledgement. + + + OTP-19527 Application(s): erts + Related Id(s): PR-9577 + + Trace messages due to receive tracing could potentially + be delayed a very long time if the traced process + waited in a receive expression without clauses matching + on messages (timed wait), or just did not enter a + receive expression for a very long time. + + + OTP-19548 Application(s): erts + Related Id(s): OTP-19472 + + Improve the naming of the (internal) esock mutex(es). + It is now possible to configure (as in autoconf) the + use of simple names for the esock mutex(es). + + + Full runtime dependencies of erts-14.2.5.9: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.7 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.7 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19469 Application(s): erts, kernel + Related Id(s): #9172 + + Behavior for socket:recv/3 has been improved. The + behavior has also been clarified in the documentation. + + + OTP-19545 Application(s): kernel + Related Id(s): PR-9587, OTP-19544 + + An infinite loop in CNAME loop detection that can cause + Out Of Memory has been fixed. This affected CNAME + lookup with the internal DNS resolver. + + + Full runtime dependencies of kernel-9.2.4.7: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.23.1.2 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.23.1.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19437 Application(s): mnesia + Related Id(s): PR-9534 + + With this change mnesia will merge schema of tables + using external backends. + + + OTP-19501 Application(s): mnesia + Related Id(s): ERIERL-1195, PR-9499 + + Mnesia could fail to load a table, if one of the copy + holders was moved during startup. + + + Full runtime dependencies of mnesia-4.23.1.2: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.7 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.7 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19543 Application(s): ssh + Related Id(s): CVE-2025-30211 + + Reception of malicious KEX init message does not result + with ssh daemon excessive memory usage. + + + OTP-19559 Application(s): ssh + Related Id(s): GH-9554, PR-9545 + + Call to ssh:daemon_replace_options does not crash when + argument is not a valid daemon ref. + + + Full runtime dependencies of ssh-5.1.4.7: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.8 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.8 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19529 Application(s): ssl + Related Id(s): GH-9483, PR-9486 + + Correct handling of unassigned signature algorithms to + properly ignore them instead of failing the handshake. + + + Full runtime dependencies of ssl-11.1.4.8: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Alexandre Rodrigues, Marc Worrell, Sergei Shuvatov, zmsone + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.11.README.txt b/release-notes/OTP-26.2.5.11.README.txt new file mode 100644 index 0000000..3b799fe --- /dev/null +++ b/release-notes/OTP-26.2.5.11.README.txt @@ -0,0 +1,77 @@ +Patch Package: OTP 26.2.5.11 +Git Tag: OTP-26.2.5.11 +Date: 2025-04-16 +Trouble Report Id: OTP-19496, OTP-19582, OTP-19595 +Seq num: CVE-2025-32433, GH-9190, PR-9463, PR-9679 +System: OTP +Release: 26 +Application: ssh-5.1.4.8, xmerl-1.3.34.2 +Predecessor: OTP 26.2.5.10 + + Check out the git tag OTP-26.2.5.11, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- ssh-5.1.4.8 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.8 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19582 Application(s): ssh + Related Id(s): PR-9679 + + Reception of wrong Unicode does not cause unnecessary + processing. US-ASCII fields are not decoded as Unicode. + + + OTP-19595 Application(s): ssh + Related Id(s): CVE-2025-32433 + + SSH daemon disconnects upon receiving connection + protocol message for unauthenticated used. + + Thanks to Fabian Bäumer, Marcel Maehren, Marcus + Brinkmann, Nurullah Erinola, Jörg Schwenk (Ruhr + University Bochum). + + + Full runtime dependencies of ssh-5.1.4.8: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.34.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.34.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19496 Application(s): xmerl + Related Id(s): GH-9190, PR-9463 + + Some old-style catch expressions in the + xmerl_sax_parser when the continuation fun was called + caused the stack to grow until all free memory was + exhausted. These parts have been rewritten so that the + parser now runs correctly without growing the stack. At + the same time all old-style catch expressions in xmerl + were replaced with try/catch. + + + Full runtime dependencies of xmerl-1.3.34.2: erts-6.0, kernel-8.4, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.12.README.txt b/release-notes/OTP-26.2.5.12.README.txt new file mode 100644 index 0000000..6435358 --- /dev/null +++ b/release-notes/OTP-26.2.5.12.README.txt @@ -0,0 +1,150 @@ +Patch Package: OTP 26.2.5.12 +Git Tag: OTP-26.2.5.12 +Date: 2025-05-08 +Trouble Report Id: OTP-19577, OTP-19599, OTP-19600, OTP-19602, + OTP-19605, OTP-19608, OTP-19625 +Seq num: CVE-2025-46712, ERIERL-1220, GH-9707, + GH-9715, GH-9720, PR-9696, PR-9724, PR-9737, + PR-9753, PR-9765, PR-9767 +System: OTP +Release: 26 +Application: compiler-8.4.3.3, erts-14.2.5.10, + kernel-9.2.4.8, ssh-5.1.4.9, xmerl-1.3.34.3 +Predecessor: OTP 26.2.5.11 + + Check out the git tag OTP-26.2.5.12, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.4.3.3 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.4.3.3 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19600 Application(s): compiler + Related Id(s): GH-9715, PR-9737 + + Fix a bug where unloaded nifs can crash the compiler. + + + Full runtime dependencies of compiler-8.4.3.3: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.2.5.10 -------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.10 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19577 Application(s): erts + Related Id(s): ERIERL-1220, PR-9696 + + Fixed an emulator crash when setting an error_handler + module that was not yet loaded. + + + OTP-19599 Application(s): erts + Related Id(s): PR-9724 + + Fixed a rare bug that could cause an emulator crash + after unloading a module or erasing a persistent_term. + + + Full runtime dependencies of erts-14.2.5.10: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.8 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.8 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19605 Application(s): kernel + Related Id(s): GH-9720, PR-9765 + + With this change, disk_log will not crash when using + chunk_step/3 after log size was decreased. + + + OTP-19608 Application(s): kernel + Related Id(s): GH-9707, PR-9767 + + With this change, disk_log will not run into infinite + loop when using chunk/2,3 after log size was decreased. + + + Full runtime dependencies of kernel-9.2.4.8: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.9 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.9 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19625 Application(s): ssh + Related Id(s): CVE-2025-46712 + + Fix KEX strict implementation according to + draft-miller-sshm-strict-kex-01 document. + + + Full runtime dependencies of ssh-5.1.4.9: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.34.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.34.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19602 Application(s): xmerl + Related Id(s): PR-9753 + + A new option to discard whitespace before the xml tag + when reading from a stream has been added to the Xmerl + SAX parser. + + -- {discard_ws_before_xml_document, Boolean} -- Discard + whitespace before xml tag instead of returning a fatal + error if set to true (false is default) + + + Full runtime dependencies of xmerl-1.3.34.3: erts-6.0, kernel-8.4, + stdlib-2.5 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + João Henrique Ferreira de Freitas, Lý Nhật Tâm + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.13.README.txt b/release-notes/OTP-26.2.5.13.README.txt new file mode 100644 index 0000000..a3ed17b --- /dev/null +++ b/release-notes/OTP-26.2.5.13.README.txt @@ -0,0 +1,143 @@ +Patch Package: OTP 26.2.5.13 +Git Tag: OTP-26.2.5.13 +Date: 2025-06-16 +Trouble Report Id: OTP-19634, OTP-19637, OTP-19638, OTP-19649, + OTP-19653, OTP-19667 +Seq num: CVE-2025-4748, GH-6463, GH-9102, GH-9771, + GH-9841, PR-9103, PR-9838, PR-9846, PR-9898, + PR-9912, PR-9941 +System: OTP +Release: 26 +Application: asn1-5.2.2.1, kernel-9.2.4.9, ssh-5.1.4.10, + stdlib-5.2.3.4 +Predecessor: OTP 26.2.5.12 + + Check out the git tag OTP-26.2.5.13, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- asn1-5.2.2.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The asn1-5.2.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19638 Application(s): asn1 + Related Id(s): GH-9841, PR-9846 + + The ASN.1 compiler could generate code that would cause + Dialyzer with the unmatched_returns option to emit + warnings. + + + Full runtime dependencies of asn1-5.2.2.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.9 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.9 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19667 Application(s): kernel, stdlib + Related Id(s): PR-9912 + + A remote shell can now exit by closing the input + stream, without terminating the remote node. + + + Full runtime dependencies of kernel-9.2.4.9: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.10 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.10 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19634 Application(s): ssh + Related Id(s): GH-9102, PR-9103 + + Various channel closing robustness improvements. Avoid + crashes when channel handling process closes channel + and immediately exits. Avoid breaking the protocol by + sending duplicated channel-close messages. Cleanup + channels which timeout during closing procedure. + + + OTP-19637 Application(s): ssh + Related Id(s): GH-6463, PR-9838 + + Improved interoperability with clients acting as + Paramiko. + + + Full runtime dependencies of ssh-5.1.4.10: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- stdlib-5.2.3.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.3.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19649 Application(s): stdlib + Related Id(s): GH-9771, PR-9898 + + It's now possible to write lists:map(fun is_atom/1, []) + or lists:map(fun my_func/1, []), in the shell, instead + of lists:map(fun erlang:is_atom/1, []) or lists:map(fun + shell_default:my_func/1, []). + + + OTP-19653 Application(s): stdlib + Related Id(s): PR-9941, CVE-2025-4748 + + Properly strip the leading / and drive letter from + filepaths when zipping and unzipping archives. + + Thanks to Wander Nauta for finding and responsibly + disclosing this vulnerability to the Erlang/OTP + project. + + + OTP-19667 Application(s): kernel, stdlib + Related Id(s): PR-9912 + + A remote shell can now exit by closing the input + stream, without terminating the remote node. + + + Full runtime dependencies of stdlib-5.2.3.4: compiler-5.0, + crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Yaroslav Maslennikov + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.2.README.txt b/release-notes/OTP-26.2.5.2.README.txt new file mode 100644 index 0000000..cd19aee --- /dev/null +++ b/release-notes/OTP-26.2.5.2.README.txt @@ -0,0 +1,125 @@ +Patch Package: OTP 26.2.5.2 +Git Tag: OTP-26.2.5.2 +Date: 2024-07-10 +Trouble Report Id: OTP-19143, OTP-19147, OTP-19152, OTP-19154, + OTP-19157 +Seq num: ERIERL-1043, ERIERL-1106, GH-8588, GH-8613, + PR-8619, PR-8627, PR-8638 +System: OTP +Release: 26 +Application: crypto-5.4.2.1, erts-14.2.5.2, ssl-11.1.4.2, + stdlib-5.2.3.1 +Predecessor: OTP 26.2.5.1 + + Check out the git tag OTP-26.2.5.2, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- crypto-5.4.2.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.4.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19143 Application(s): crypto + + Add warning in documentation to avoid crypto:start/0 as + it does not work for FIPS mode. Use + application:start(crypto) instead. + + + Full runtime dependencies of crypto-5.4.2.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- erts-14.2.5.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19147 Application(s): erts + Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619 + + When no time warp mode was enabled, a smaller Erlang + monotonic time could be read than a previously read + time, i.e., breaking the monotonic property. The + runtime system will abort when detecting an issue like + this since OTP 24.3.4.17 and OTP 25.0. + + Up until OTP 25 no time warp mode is the default. As of + OTP 26 multi time warp mode is the default. + + + OTP-19154 Application(s): erts + Related Id(s): GH-8613, PR-8627 + + A scheduler thread could get stuck when deleting a + memory allocator carrier when adjacent carriers were + deleted and/or inserted simultaneously by other + schedulers. This in turn could cause the other + schedulers to get stuck as well. + + + Full runtime dependencies of erts-14.2.5.2: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19152 Application(s): ssl + Related Id(s): GH-8588 + + When the default value for signature_algs is used, + default the signature_algs_cert to the default value + + rsa_pkcs1_sha1 to allow this algorithms for + certificates but not for the TLS protocol. This is for + better interoperability. If signature_algs is set + explicitly signature_algs_cert must also be set + explicitly if they should be different. + + + Full runtime dependencies of ssl-11.1.4.2: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.3.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.3.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19157 Application(s): stdlib + Related Id(s): PR-8638 + + Fixed a bug that caused the shell completion to crash + when keyword and tuple appeared on the same line. + + + Full runtime dependencies of stdlib-5.2.3.1: compiler-5.0, + crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.3.README.txt b/release-notes/OTP-26.2.5.3.README.txt new file mode 100644 index 0000000..297f6f6 --- /dev/null +++ b/release-notes/OTP-26.2.5.3.README.txt @@ -0,0 +1,251 @@ +Patch Package: OTP 26.2.5.3 +Git Tag: OTP-26.2.5.3 +Date: 2024-09-05 +Trouble Report Id: OTP-17848, OTP-19119, OTP-19168, OTP-19170, + OTP-19173, OTP-19175, OTP-19178, OTP-19179, + OTP-19187, OTP-19205, OTP-19206, OTP-19213 +Seq num: ERIERL-1102, ERIERL-1108, GH-7746, GH-8454, + GH-8561, GH-8630, PR-8310, PR-8543, PR-8686, + PR-8690, PR-8763 +System: OTP +Release: 26 +Application: compiler-8.4.3.1, diameter-2.3.2.2, + erts-14.2.5.3, ftp-1.2.1.1, kernel-9.2.4.2, + public_key-1.15.1.2, ssh-5.1.4.2, + ssl-11.1.4.3 +Predecessor: OTP 26.2.5.2 + + Check out the git tag OTP-26.2.5.3, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- compiler-8.4.3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.4.3.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19168 Application(s): compiler + Related Id(s): GH-8630 + + Fixed a crash in an optimization pass relating to + appending binaries. + + + OTP-19178 Application(s): compiler + Related Id(s): PR-8686 + + Fixed a bug in the compiler's alias analysis pass that + could make it emit unsafe code. + + + Full runtime dependencies of compiler-8.4.3.1: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- diameter-2.3.2.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The diameter-2.3.2.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19206 Application(s): diameter + Related Id(s): ERIERL-1102 + + Stop service has been made more synchronous. + + + Full runtime dependencies of diameter-2.3.2.2: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- erts-14.2.5.3 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19175 Application(s): erts, kernel, ssl + Related Id(s): GH-8561, PR-8690 + + A race in the kTLS flavour of SSL distribution has been + fixed so inet_drv.c doesn't read ahead too much data + which could cause the kTLS encryption to be activated + too late when some encrypted data had already been read + into the inet_drv.c buffer as unencrypted. + + + Full runtime dependencies of erts-14.2.5.3: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ftp-1.2.1.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ftp-1.2.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19119 Application(s): ftp + Related Id(s): GH-8454, PR-8543 + + Fix race condition that sometimes resulted in + ftp:recv_bin/2 returning ok instead of {ok, Data}. + + + Full runtime dependencies of ftp-1.2.1.1: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19175 Application(s): erts, kernel, ssl + Related Id(s): GH-8561, PR-8690 + + A race in the kTLS flavour of SSL distribution has been + fixed so inet_drv.c doesn't read ahead too much data + which could cause the kTLS encryption to be activated + too late when some encrypted data had already been read + into the inet_drv.c buffer as unencrypted. + + + OTP-19205 Application(s): kernel + + Fix a deadlock when an application crashes during + startup and log messages were sent to standard out. + Logger would fail to print the messages to standard out + and instead print them to standard error. + + + OTP-19213 Application(s): kernel + Related Id(s): ERIERL-1108, PR-8763 + + Add the stdlib application parameters + shell_redraw_prompt_on_output which when set to false + disables redrawing of the shell prompt if any other + output is done. + + + Full runtime dependencies of kernel-9.2.4.2: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1.2 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19179 Application(s): public_key + + For completeness handle rsa_pss implicit default value, + although this will probably not be commonly used as it + provides very weak security. + + + Full runtime dependencies of public_key-1.15.1.2: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.2 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19170 Application(s): ssh + Related Id(s): GH-7746 + + With this change, ssh daemon started with TCP port + number argument will re-try to obtain listen socket + before returning error to user. + + + OTP-19173 Application(s): ssh + Related Id(s): PR-8310 + + With this change, robustness is improved by monitoring + connection handler process before casting socket + control notification. + + + Full runtime dependencies of ssh-5.1.4.2: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19175 Application(s): erts, kernel, ssl + Related Id(s): GH-8561, PR-8690 + + A race in the kTLS flavour of SSL distribution has been + fixed so inet_drv.c doesn't read ahead too much data + which could cause the kTLS encryption to be activated + too late when some encrypted data had already been read + into the inet_drv.c buffer as unencrypted. + + + --- Improvements and New Features --- + + OTP-17848 Application(s): ssl + + Make sure all TLS-1.3 terminations are graceful + (previous TLS version terminations already are). + + + OTP-19187 Application(s): ssl + + Include more information in logging of SNI (Server Name + Indication) mismatch error. + + + Full runtime dependencies of ssl-11.1.4.3: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Frej Drejhammar, jakob svenningsson + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.4.README.txt b/release-notes/OTP-26.2.5.4.README.txt new file mode 100644 index 0000000..11d0393 --- /dev/null +++ b/release-notes/OTP-26.2.5.4.README.txt @@ -0,0 +1,467 @@ +Patch Package: OTP 26.2.5.4 +Git Tag: OTP-26.2.5.4 +Date: 2024-10-09 +Trouble Report Id: OTP-19124, OTP-19158, OTP-19212, OTP-19217, + OTP-19221, OTP-19223, OTP-19235, OTP-19236, + OTP-19238, OTP-19246, OTP-19247, OTP-19249, + OTP-19251, OTP-19252, OTP-19254, OTP-19256, + OTP-19257, OTP-19258, OTP-19265, OTP-19266, + OTP-19267, OTP-19269, OTP-19270, OTP-19274, + OTP-19284 +Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1104, + ERIERL-1127, ERIERL-1131, ERIERL-1133, + ERIERL-1134, ERIERL-1137, ERIERL-1138, + GH-6455, GH-7550, GH-8223, GH-8562, GH-8769, + GH-8783, GH-8835, GH-8848, GH-8853, + OTP-18520, OTP-19061, PR-8226, PR-8261, + PR-8762, PR-8766, PR-8780, PR-8788, PR-8800, + PR-8801, PR-8831, PR-8837, PR-8854, PR-8858, + PR-8866, PR-8876, PR-8890, PR-8892, PR-8897, + PR-8898, PR-8901, PR-8909 +System: OTP +Release: 26 +Application: common_test-1.26.2.1, compiler-8.4.3.2, + crypto-5.4.2.2, erts-14.2.5.4, inets-9.1.0.1, + kernel-9.2.4.3, public_key-1.15.1.3, + ssh-5.1.4.3, ssl-11.1.4.4, stdlib-5.2.3.2, + xmerl-1.3.34.1 +Predecessor: OTP 26.2.5.3 + + Check out the git tag OTP-26.2.5.4, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-19158 Application(s): inets + + With this change, HTTP client, when returning an + asynchronous request, now correctly takes into account + `OptionRequest - full_result` + + + --------------------------------------------------------------------- + --- common_test-1.26.2.1 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.2.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19252 Application(s): common_test + Related Id(s): PR-8858 + + With this change, HTML reports include jQuery version + 3.7.1. + + + OTP-19265 Application(s): common_test + Related Id(s): PR-8876 + + With this change, jquery and tablesorter licenses are + added to COPYRIGHT file. Also tablesorter is updated to + version 2.32. + + + OTP-19284 Application(s): common_test + Related Id(s): ERIERL-1093, PR-8909 + + Fixed a bug where the sum of testcases' execution time + in HTML logs was sometimes miscalculated, and the table + was not fully printed. + + + Full runtime dependencies of common_test-1.26.2.1: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.4.3.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The compiler-8.4.3.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19270 Application(s): compiler + Related Id(s): GH-8783, PR-8898 + + Fixed a bug where bogus code was generated for + consecutive calls to erlang:setelement/2, potentially + crashing the emulator. + + + Full runtime dependencies of compiler-8.4.3.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-5.0 + + + --------------------------------------------------------------------- + --- crypto-5.4.2.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.4.2.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19212 Application(s): crypto + Related Id(s): GH-8562, PR-8762 + + crypto built with --enable-fips will now accept an + OpenSSL 3 lib without fips provider as long as fips + mode is not enabled. + + + OTP-19223 Application(s): crypto + Related Id(s): GH-8769, PR-8800 + + crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro + with installed FIPS support. + + + Full runtime dependencies of crypto-5.4.2.2: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- erts-14.2.5.4 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19235 Application(s): erts, kernel + Related Id(s): ERIERL-1133, PR-8837 + + A bug has been fixed where receiving an SCTP message + with `gen_sctp` could waste the first fragments of a + message and only deliver the last fragment. + + This happened with low probability when the OS signaled + that the socket was ready for reading in combination + with an internal time-out retry. + + A bug has been fixed with a lingering time-out from + after an SCTP connect that could stop the flow of + incoming messages on an active `gen_tcp` socket. + + + OTP-19251 Application(s): erts + Related Id(s): GH-8853 + + On Windows, successive failed socket calls caused + socket to become "uninitialized". + + + OTP-19254 Application(s): erts + Related Id(s): GH-8848 + + The socket framework fails to start on a IPv6-only + Windows machine. + + + OTP-19258 Application(s): erts, kernel + Related Id(s): ERIERL-1134, OTP-19061 + + An boolean option `non_block_send` for SCTP, has ben + added to be able to achieve the old behaviour to avoid + blocking send operations by passing the OS network + stack error message (`{error,eagain}` through. + + + OTP-19267 Application(s): erts + Related Id(s): ERIERL-1138, GH-6455, PR-8892, OTP-18520 + + The call `gen_tcp:send/2` could hang indefinitely + despite having set the `send_timeout` option for the + following unfortunate combination of circumstances: + + * The socket has to be in passive mode. * All output + buffers had to be filled util the `high_watermark` was + hit, causing the `gen_tcp:send/2` operation to block. * + While the send operation was blocked, a + `gen_tcp:recv/2,3` call had to be done from a different + process. It had to block, waiting for data for a while + before completing the operation, and the received + packet had to fill at least 75% of the receive buffer. + + Under these circumstances he information that a send + operation was waiting got lost, so the send operation + that blocked in the first placed would never return. + The data it had would be sent, though, and send + operations from other processes, still work. + + This bug has been fixed. + + + OTP-19269 Application(s): erts + Related Id(s): GH-8835, PR-8897 + + Fixed beam crash that could happen if resetting + call_time or call_memory trace counters of a function + while it is called. Bug exists since OTP R16. + + + Full runtime dependencies of erts-14.2.5.4: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-9.1.0.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-9.1.0.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19158 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, HTTP client, when returning an + asynchronous request, now correctly takes into account + `OptionRequest - full_result` + + + OTP-19221 Application(s): inets + Related Id(s): ERIERL-1091, PR-8788, PR-8801 + + With this change, synchronous httpc:request now + timeouts after `Timeout` specified in `HttpOption + {timeout, Timeout}` + + + Full runtime dependencies of inets-9.1.0.1: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19235 Application(s): erts, kernel + Related Id(s): ERIERL-1133, PR-8837 + + A bug has been fixed where receiving an SCTP message + with `gen_sctp` could waste the first fragments of a + message and only deliver the last fragment. + + This happened with low probability when the OS signaled + that the socket was ready for reading in combination + with an internal time-out retry. + + A bug has been fixed with a lingering time-out from + after an SCTP connect that could stop the flow of + incoming messages on an active `gen_tcp` socket. + + + OTP-19258 Application(s): erts, kernel + Related Id(s): ERIERL-1134, OTP-19061 + + An boolean option `non_block_send` for SCTP, has ben + added to be able to achieve the old behaviour to avoid + blocking send operations by passing the OS network + stack error message (`{error,eagain}` through. + + + Full runtime dependencies of kernel-9.2.4.3: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1.3 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1.3 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19238 Application(s): public_key + Related Id(s): PR-8831 + + Do not hide crypto badarg reason, this error handling + enhancement facilitates debugging. These kind of + runtime errors are not documented and should never be + relied on for matching, they are intended for catching + input errors early. + + + Full runtime dependencies of public_key-1.15.1.3: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19124 Application(s): ssh + Related Id(s): GH-7550, PR-8766 + + With this change, a race condition is removed from ssh + client connection setup procedure. + + + OTP-19246 Application(s): ssh + Related Id(s): GH-8223, PR-8854 + + With this change, ssh:connect is not affected by + presence of EXIT message in queue. + + + OTP-19247 Application(s): ssh + Related Id(s): PR-8226 + + With this change, ssh appends {active, false} option + after socket options received from user - so that false + value is always used. + + + Full runtime dependencies of ssh-5.1.4.3: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19236 Application(s): ssl + Related Id(s): PR-8261 + + Starting from TLS-1.3 some server handshake alerts + might arrive after ssl:connection/2,3,4 has returned. + If the socket is in active mode the controlling process + will get the alert message, but passive sockets would + only get {error, closed} on next call to ssl:recv/2,3 + or ssl/setopts/2. Passive sockets calls will now return + {error, error_alert()} instead. + + + OTP-19249 Application(s): ssl + Related Id(s): ERIERL-1137, PR-8866 + + Refactor trying to also make some optimizations + introduced a bug in signature algorithms checks in + OTP-26.2.1. This could manifest itself in not being + able to negotiate connections using certificates + needing to use some TLS-1.2 compatibility legacy + signature schemes. + + + OTP-19257 Application(s): ssl + Related Id(s): ERIERL-1131 + + Servers configured to support only version (pre + TLS-1.2) should ignore hello version extension, as it + is an unknown extension to them, this will result in + that new clients that do not support the old server + version will get an insufficient security alert from + the server and not a protocol version alert, this is + consistent with how old servers not able to support + higher protocol versions work. + + + OTP-19274 Application(s): ssl + Related Id(s): PR-8901 + + Correct timeout handling for termination code run for + own alerts, so that intended timeout is used instead of + falling back to OS TCP-stack timeout that is + unreasonably long on some platforms. + + + Full runtime dependencies of ssl-11.1.4.4: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.3.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.3.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19256 Application(s): stdlib + Related Id(s): PR-8780 + + With this change, shutdown procedure handles a race + condition between supervisor executing a shutdown and + child process termination from other reason. + + + OTP-19266 Application(s): stdlib + Related Id(s): ERIERL-1127, PR-8890 + + With this change, uri_string:normalize assumes empty + path (do not crash) when no path is provided in the URI + map. + + + Full runtime dependencies of stdlib-5.2.3.2: compiler-5.0, + crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.34.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.34.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19217 Application(s): xmerl + Related Id(s): ERIERL-1104 + + Corrected export functions from internal structure to + XML so xmlText items of type cdata are handled + correctly. They were just exported as normal text + instead of output in a CDATA section. + + + Full runtime dependencies of xmerl-1.3.34.1: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Jakub Witczak + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.5.README.txt b/release-notes/OTP-26.2.5.5.README.txt new file mode 100644 index 0000000..218ae48 --- /dev/null +++ b/release-notes/OTP-26.2.5.5.README.txt @@ -0,0 +1,143 @@ +Patch Package: OTP 26.2.5.5 +Git Tag: OTP-26.2.5.5 +Date: 2024-11-01 +Trouble Report Id: OTP-19293, OTP-19311, OTP-19316, OTP-19325, + OTP-19326, OTP-19329 +Seq num: ERIERL-1139, ERIERL-1147, GH-8929, GH-8971, + GH-8997, PR-8924, PR-8931, PR-8979, PR-8980, + PR-8995, PR-9001, PR-9002 +System: OTP +Release: 26 +Application: common_test-1.26.2.2, crypto-5.4.2.3, + ssh-5.1.4.4, ssl-11.1.4.5 +Predecessor: OTP 26.2.5.4 + + Check out the git tag OTP-26.2.5.5, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.26.2.2 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.2.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-19293 Application(s): common_test + Related Id(s): ERIERL-1139, PR-8924, PR-8931 + + With this change, prefix option can be specified in + cth_conn_log option list. Option allows to specify how + much of additional information is added in raw log + output. + + + Full runtime dependencies of common_test-1.26.2.2: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- crypto-5.4.2.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The crypto-5.4.2.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19316 Application(s): crypto + Related Id(s): GH-8971, PR-8979 + + Fixed bug that could cause blocking scheduler threads + in crypto:supports(curves) if called the first time by + more than one Erlang process. Bug exists only in + OTP-26.2.5.4. + + + OTP-19329 Application(s): crypto + Related Id(s): GH-8997, PR-9002 + + Fixed crypto:hash_final/1 for digest types shake128 and + shake256 when using OpenSSL 3.4 or newer. + + + Full runtime dependencies of crypto-5.4.2.3: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.4 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19326 Application(s): ssh + Related Id(s): GH-8929, PR-8995 + + With this change, ssh connection does not crash upon + receiving exit-signal message for an already terminated + channel. + + + Full runtime dependencies of ssh-5.1.4.4: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.5 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19311 Application(s): ssl + Related Id(s): PR-8980 + + Avoid generating an internal alert for case that should + have been an orderly shutdown by the supervisor. + + + --- Improvements and New Features --- + + OTP-19325 Application(s): ssl + Related Id(s): ERIERL-1147, PR-9001 + + Back port certificate_authorities option for TLS-1.3 + servers to pre TLS-1.3 servers to enable them to + disable the sending of certificate authorities in their + certificate request. This will have same affect as the + the TLS-1.3 server option although it is handled by a + different mechanism in these versions, where the + functionality is described to be more of a guidance, + although some pre TLS clients have proven to make it + mandatory as in TLS-1.3 extension handling. + + + Full runtime dependencies of ssl-11.1.4.5: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + zmstone + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.6.README.txt b/release-notes/OTP-26.2.5.6.README.txt new file mode 100644 index 0000000..13aada9 --- /dev/null +++ b/release-notes/OTP-26.2.5.6.README.txt @@ -0,0 +1,261 @@ +Patch Package: OTP 26.2.5.6 +Git Tag: OTP-26.2.5.6 +Date: 2024-12-05 +Trouble Report Id: OTP-19240, OTP-19330, OTP-19332, OTP-19350, + OTP-19352, OTP-19357, OTP-19365, OTP-19366, + OTP-19368, OTP-19379, OTP-19380 +Seq num: #8989, CVE-2024-53846, ERIERL-1134, + ERIERL-1154, ERIERL-1157, GH-8755, GH-8829, + GH-8983, GH-9009, OTP-19061, OTP-19240, + OTP-19532, PR-8840, PR-8878, PR-9008, + PR-9053, PR-9080, PR-9093, PR-9130 +System: OTP +Release: 26 +Application: common_test-1.26.2.3, erts-14.2.5.5, + inets-9.1.0.2, kernel-9.2.4.4, + mnesia-4.23.1.1, public_key-1.15.1.4, + ssl-11.1.4.6, stdlib-5.2.3.3 +Predecessor: OTP 26.2.5.5 + + Check out the git tag OTP-26.2.5.6, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.26.2.3 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.2.3 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19365 Application(s): common_test + Related Id(s): ERIERL-1157, PR-9080 + + With this change, cth_surefire hook module handles + group path reduction for a skipped group. This fixes a + bug manifesting with improper group path for a group + executed after a group which was skipped. + + + Full runtime dependencies of common_test-1.26.2.3: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- erts-14.2.5.5 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19330 Application(s): erts + Related Id(s): GH-8983, PR-9008 + + Fix lock order violation if a NIF monitor down callback + calls enif_whereis_pid. Would cause debug emulator to + crash but could potentially lead to deadlocks in + optimized emulator. + + + OTP-19332 Application(s): erts, kernel + Related Id(s): #8989 + + gen_udp:send on domain local can leak inet_reply + messages. + + + OTP-19366 Application(s): erts, kernel + Related Id(s): ERIERL-1134, OTP-19061 + + net:getifaddrs does not properly report the running + flag on windows. + + + Full runtime dependencies of erts-14.2.5.5: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- inets-9.1.0.2 --------------------------------------------------- + --------------------------------------------------------------------- + + The inets-9.1.0.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19379 Application(s): inets + Related Id(s): GH-8829, PR-8878 + + Fixed a bug where calling httpc:set_options/2 when one + of keys: ipfamily or unix_socket, was not present, + would cause the other value to get overriden by the + default value. The validation of these options was also + improved. + + + Full runtime dependencies of inets-9.1.0.2: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.4 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19332 Application(s): erts, kernel + Related Id(s): #8989 + + gen_udp:send on domain local can leak inet_reply + messages. + + + OTP-19357 Application(s): kernel + + Failure to create an UDP IPv6 socket when inet_backend + = socket with certain IPv6 socket options. + + + OTP-19366 Application(s): erts, kernel + Related Id(s): ERIERL-1134, OTP-19061 + + net:getifaddrs does not properly report the running + flag on windows. + + + Full runtime dependencies of kernel-9.2.4.4: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.23.1.1 ------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.23.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19368 Application(s): mnesia + Related Id(s): ERIERL-1154, PR-9093 + + Mnesia could crash if table was deleted during + checkpoint initialization. + + + Full runtime dependencies of mnesia-4.23.1.1: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1.4 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1.4 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19240 Application(s): public_key + Related Id(s): PR-8840, OTP-19532 + + If both ext-key-usage and key-usage are defined for a + certificate it should be checked that these usages are + consistent with each other. This will have the affect + that such certificates where the ext-key-usages is + marked as critical and the usages is consistent with + the key-use it can be considered valid without + mandatory application specific checks for the + ext-key-useage extension. + + + OTP-19350 Application(s): public_key + Related Id(s): GH-9009, PR-9053 + + Handle decoding of EDDSA key properly, when decoding a + PEM file that contains only the public EDDSA key. + + + Full runtime dependencies of public_key-1.15.1.4: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.6 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.6 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19352 Application(s): ssl + Related Id(s): PR-9130, CVE-2024-53846, OTP-19240 + + If present, extended key-usage TLS (SSL) role check + (pk-clientAuth, pk-serverAuth) should always be + performed for peer-cert. An intermediate CA cert may + relax the requirement if AnyExtendedKeyUsage purpose is + present. + + In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these + requirements became too relaxed. There where two + problems, firstly the peer cert extension was only + checked if it was marked critical, and secondly the CA + cert check did not assert the relaxed + AnyExtendedKeyUsage purpose. + + This could result in that certificates might be misused + for purposes not intended by the certificate authority. + + Thanks to Bryan Paxton for reporting the issue. + + + Full runtime dependencies of ssl-11.1.4.6: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.3.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.3.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19380 Application(s): stdlib + Related Id(s): GH-8755 + + Fixed an error in uri_string:percent_decode spec + + + Full runtime dependencies of stdlib-5.2.3.3: compiler-5.0, + crypto-4.5, erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Marko Mindek + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.7.README.txt b/release-notes/OTP-26.2.5.7.README.txt new file mode 100644 index 0000000..0385331 --- /dev/null +++ b/release-notes/OTP-26.2.5.7.README.txt @@ -0,0 +1,187 @@ +Patch Package: OTP 26.2.5.7 +Git Tag: OTP-26.2.5.7 +Date: 2025-01-27 +Trouble Report Id: OTP-19385, OTP-19388, OTP-19392, OTP-19407, + OTP-19411, OTP-19418, OTP-19435, OTP-19439, + OTP-19445 +Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1174, + ERIERL-1183, GH-9065, GH-9163, GH-9177, + GH-9211, PR-9139, PR-9155, PR-9156, PR-9161, + PR-9234, PR-9273, PR-9274, PR-9309, PR-9314, + PR-9322 +System: OTP +Release: 26 +Application: common_test-1.26.2.4, dialyzer-5.1.3.1, + erts-14.2.5.6, kernel-9.2.4.5, ssh-5.1.4.5, + ssl-11.1.4.7 +Predecessor: OTP 26.2.5.6 + + Check out the git tag OTP-26.2.5.7, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- common_test-1.26.2.4 -------------------------------------------- + --------------------------------------------------------------------- + + The common_test-1.26.2.4 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19385 Application(s): common_test + Related Id(s): ERIERL-1166, PR-9155, PR-9156 + + Common test will now not crash when running tests with + OTP-26 and earlier, while having previous test results + from OTP-27. + + + Full runtime dependencies of common_test-1.26.2.4: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- dialyzer-5.1.3.1 ------------------------------------------------ + --------------------------------------------------------------------- + + The dialyzer-5.1.3.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19439 Application(s): dialyzer + Related Id(s): ERIERL-1183, PR-9314 + + Fixed a crash caused by the use of opaque types. + + + Full runtime dependencies of dialyzer-5.1.3.1: compiler-8.0, + erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-14.2.5.6 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.6 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19407 Application(s): erts + Related Id(s): GH-9211, PR-9234 + + Fixed configure tests for GCC 14 + + + Full runtime dependencies of erts-14.2.5.6: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.5 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19418 Application(s): kernel + Related Id(s): GH-9163, PR-9274 + + Fix bug where log printouts would go missing when + application_controller is stopping while log messages + are being sent. + + This bug was introduced by OTP-19078 in Erlang/OTP + 26.2.5. + + + Full runtime dependencies of kernel-9.2.4.5: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.5 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19388 Application(s): ssh + Related Id(s): ERIERL-1165, PR-9161 + + With this change, type specs for + ssh:connection_info/1,2 functions are fixed so they + include {error, term()} return value. + + + OTP-19392 Application(s): ssh + Related Id(s): GH-9065, PR-9139 + + With this change, ssh client accepts a banner sent + during processing keyboard interactive user + authentication. + + + OTP-19435 Application(s): ssh + Related Id(s): PR-9309 + + With this change, large sftp transfers does not hang. + Redundant window adjustment are not requested. + + + Full runtime dependencies of ssh-5.1.4.5: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4.7 ---------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1.4.7 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19411 Application(s): ssl + Related Id(s): ERIERL-1174, PR-9273 + + An initiated handshake should always be closed with an + alert, some corner cases have been fixed so that this + should always be the case. + + + OTP-19445 Application(s): ssl + Related Id(s): GH-9177, PR-9322 + + Correct option handling to work properly for paused + handshaking. Could result in unwanted alerts or or + error messages. + + + Full runtime dependencies of ssl-11.1.4.7: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Alexandre Rodrigues, Luke Bakken + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.8.README.txt b/release-notes/OTP-26.2.5.8.README.txt new file mode 100644 index 0000000..a01d8f8 --- /dev/null +++ b/release-notes/OTP-26.2.5.8.README.txt @@ -0,0 +1,84 @@ +Patch Package: OTP 26.2.5.8 +Git Tag: OTP-26.2.5.8 +Date: 2025-02-12 +Trouble Report Id: OTP-19240, OTP-19381, OTP-19462 +Seq num: ERIERL-1177, GH-9112, GH-9117, GH-9208, + PR-9286, PR-9372, PR-9377 +System: OTP +Release: 26 +Application: erts-14.2.5.7, kernel-9.2.4.6, + public_key-1.15.1.5 +Predecessor: OTP 26.2.5.7 + + Check out the git tag OTP-26.2.5.8, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-14.2.5.7 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.7 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19462 Application(s): erts + Related Id(s): ERIERL-1177, PR-9372 + + Disabled an unsafe runtime optimization in binary + construction that caused silent memory corruption. + + + Full runtime dependencies of erts-14.2.5.7: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4.6 -------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4.6 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19381 Application(s): kernel + Related Id(s): GH-9112, GH-9117, PR-9377 + + Fixed a couple of bugs that could make global's + internal state inconsistent when a connection was + reconnected. + + + Full runtime dependencies of kernel-9.2.4.6: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15.1.5 --------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15.1.5 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19240 Application(s): public_key + Related Id(s): GH-9208, PR-9286 + + Consider keyCertSign to compatible with extended key + usage for TLS client/server auth in CAs, adhere to wide + spread implementations + + + Full runtime dependencies of public_key-1.15.1.5: asn1-3.0, + crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.9.README.txt b/release-notes/OTP-26.2.5.9.README.txt new file mode 100644 index 0000000..cc749c1 --- /dev/null +++ b/release-notes/OTP-26.2.5.9.README.txt @@ -0,0 +1,69 @@ +Patch Package: OTP 26.2.5.9 +Git Tag: OTP-26.2.5.9 +Date: 2025-02-20 +Trouble Report Id: OTP-19466, OTP-19495 +Seq num: CVE-2025-26618, ERIERL-1173, GH-8208, PR-8209 +System: OTP +Release: 26 +Application: erts-14.2.5.8, ssh-5.1.4.6 +Predecessor: OTP 26.2.5.8 + + Check out the git tag OTP-26.2.5.9, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- erts-14.2.5.8 --------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5.8 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19495 Application(s): erts + Related Id(s): GH-8208, PR-8209 + + Fixed BEAM crash when a custom thread sends a large map + (>128 keys) externally encoded with for example + erl_drv_send_term(). + + + Full runtime dependencies of erts-14.2.5.8: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- ssh-5.1.4.6 ----------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1.4.6 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19466 Application(s): ssh + Related Id(s): ERIERL-1173, CVE-2025-26618 + + SFTP packets exceeding max packet size are not + processed and dropped. + + + Full runtime dependencies of ssh-5.1.4.6: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- Thanks to ------------------------------------------------------- + --------------------------------------------------------------------- + + Simon Cornish + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.5.README.txt b/release-notes/OTP-26.2.5.README.txt new file mode 100644 index 0000000..5f3ce63 --- /dev/null +++ b/release-notes/OTP-26.2.5.README.txt @@ -0,0 +1,209 @@ +Patch Package: OTP 26.2.5 +Git Tag: OTP-26.2.5 +Date: 2024-05-02 +Trouble Report Id: OTP-19061, OTP-19062, OTP-19065, OTP-19067, + OTP-19068, OTP-19069, OTP-19070, OTP-19071, + OTP-19072, OTP-19076, OTP-19078 +Seq num: ERIERL-1073, GH-8356, GH-8383, GH-8385, + OTP-18999, PR-8367, PR-8379, PR-8380, + PR-8391, PR-8422 +System: OTP +Release: 26 +Application: dialyzer-5.1.3, erts-14.2.5, kernel-9.2.4, + mnesia-4.23.1, ssl-11.1.4, stdlib-5.2.3 +Predecessor: OTP 26.2.4 + + Check out the git tag OTP-26.2.5, and build a full OTP system + including documentation. Apply one or more applications from this + build as patches to your installation using the 'otp_patch_apply' + tool. For information on install requirements, see descriptions for + each application version below. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-19069 Application(s): erts + + Added a warning to open_port/2 regarding the BadBatBut + attack affecting Windows. + + + --------------------------------------------------------------------- + --- dialyzer-5.1.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.1.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19068 Application(s): dialyzer + Related Id(s): GH-8383 + + Fixed an issue with bitstring type inference on + segments following UTF-8/16/32 segments. + + + Full runtime dependencies of dialyzer-5.1.3: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- erts-14.2.5 ----------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2.5 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19061 Application(s): erts + + gen_sctp:send/3,4 now waits for the send to complete + instead of returning an OS result such as + {error, ewouldblock}. + + + OTP-19070 Application(s): erts + Related Id(s): GH-8385 + + ETS functions did not properly handle keys containing + maps, sometimes matching too many or too few objects. + + + OTP-19071 Application(s): erts + Related Id(s): PR-8380, OTP-18999 + + Fix CPU quota determination for cgroups. + + The bug was introduced through OTP-18999. + + + --- Improvements and New Features --- + + OTP-19069 Application(s): erts + + *** HIGHLIGHT *** + + Added a warning to open_port/2 regarding the BadBatBut + attack affecting Windows. + + + Full runtime dependencies of erts-14.2.5: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- kernel-9.2.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + The kernel-9.2.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19072 Application(s): kernel, stdlib + Related Id(s): PR-8391 + + Fix the shell Job Control Mode to not crash when typing + TAB or CTRL+R. + + + OTP-19078 Application(s): kernel + Related Id(s): PR-8422 + + Fix calls to blocking application APIs to throw an + exception with reason terminating if called when the + system is terminating. + + This is done in order to avoid deadlocks during + shutdown or restart. + + + Full runtime dependencies of kernel-9.2.4: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.23.1 --------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.23.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19076 Application(s): mnesia + Related Id(s): ERIERL-1073 + + Mnesia could crash during startup if del_table_copy/2 + and add_table_copy/3 was invoked when the table was + loading. + + + Full runtime dependencies of mnesia-4.23.1: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + The ssl-11.1.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19065 Application(s): ssl + Related Id(s): GH-8356, PR-8367 + + Fix certificate authorities check so that CA closest to + peer is not lost. It could manifest itself in a failed + connection as the client failed to realize it had a + valid certificate chain to send to the server. + + + OTP-19067 Application(s): ssl + Related Id(s): PR-8379 + + ssl:signature_algs/2 did not list some legacy algorithm + schemes correctly when listing all algorithms + available. + + + Full runtime dependencies of ssl-11.1.4: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + The stdlib-5.2.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-19062 Application(s): stdlib + + Fix shell expansion of -type a() :: $a. in the erlang + shell. + + + OTP-19072 Application(s): kernel, stdlib + Related Id(s): PR-8391 + + Fix the shell Job Control Mode to not crash when typing + TAB or CTRL+R. + + + Full runtime dependencies of stdlib-5.2.3: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-26.2.README.txt b/release-notes/OTP-26.2.README.txt new file mode 100644 index 0000000..8a6328a --- /dev/null +++ b/release-notes/OTP-26.2.README.txt @@ -0,0 +1,1134 @@ +Patch Package: OTP 26.2 +Git Tag: OTP-26.2 +Date: 2023-12-13 +Trouble Report Id: OTP-16607, OTP-17844, OTP-18728, OTP-18730, + OTP-18735, OTP-18739, OTP-18749, OTP-18751, + OTP-18760, OTP-18762, OTP-18764, OTP-18765, + OTP-18767, OTP-18771, OTP-18772, OTP-18775, + OTP-18776, OTP-18777, OTP-18782, OTP-18798, + OTP-18799, OTP-18800, OTP-18802, OTP-18810, + OTP-18811, OTP-18812, OTP-18814, OTP-18815, + OTP-18817, OTP-18818, OTP-18821, OTP-18822, + OTP-18823, OTP-18824, OTP-18826, OTP-18827, + OTP-18828, OTP-18829, OTP-18830, OTP-18832, + OTP-18833, OTP-18836, OTP-18838, OTP-18839, + OTP-18840, OTP-18841, OTP-18842, OTP-18843, + OTP-18844, OTP-18850, OTP-18853, OTP-18854, + OTP-18855, OTP-18857, OTP-18858, OTP-18861, + OTP-18866, OTP-18867, OTP-18868, OTP-18869, + OTP-18871, OTP-18872, OTP-18873, OTP-18877, + OTP-18880, OTP-18882, OTP-18883, OTP-18885, + OTP-18886, OTP-18888, OTP-18891, OTP-18893, + OTP-18895, OTP-18896, OTP-18899 +Seq num: ERIERL-738, ERIERL-994, ERIERL-997, GH-7515, + GH-7548, GH-7571, GH-7580, GH-7591, GH-7608, + GH-7621, GH-7625, GH-7676, GH-7685, GH-7735, + GH-7736, GH-7766, GH-7795, GH-7801, GH-7827, + GH-7832, GH-7834, GH-7838, GH-7875, GH-7890, + GH-7914 +System: OTP +Release: 26 +Application: asn1-5.2.1, common_test-1.26, crypto-5.4, + debugger-5.3.3, dialyzer-5.1.2, + diameter-2.3.1, edoc-1.2.1, eldap-1.2.12, + erl_docgen-1.5.2, erl_interface-5.5, + erts-14.2, eunit-2.9, ftp-1.2.1, inets-9.1, + kernel-9.2, mnesia-4.23, os_mon-2.9.1, + public_key-1.15, runtime_tools-2.0.1, + ssh-5.1, ssl-11.1, stdlib-5.2, tftp-1.1.1, + wx-2.4, xmerl-1.3.34 +Predecessor: OTP 26.1.2 + + Check out the git tag OTP-26.2, and build a full OTP system including + documentation. Apply one or more applications from this build as + patches to your installation using the 'otp_patch_apply' tool. For + information on install requirements, see descriptions for each + application version below. + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-18728 Application(s): common_test + Related Id(s): PR-7487, PR-7674 + + With this change, common_test returns an error when + suite with a badly defined group is executed. + + + --------------------------------------------------------------------- + --- OTP-26.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + --- Improvements and New Features --- + + OTP-18840 Application(s): otp, stdlib + Related Id(s): PR-7629 + + The removal of the deprecated slave module, originally + planned for OTP 27, has been postponed to OTP 29. + + + OTP-18896 Application(s): otp + + Updated copyright and license information. + + + --------------------------------------------------------------------- + --- asn1-5.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The asn1-5.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18844 Application(s): asn1 + + Fix benign warning from gcc 11 about mismatching call + to free(). + + + Full runtime dependencies of asn1-5.2.1: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.26 ------------------------------------------------ + --------------------------------------------------------------------- + + The common_test-1.26 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18728 Application(s): common_test + Related Id(s): PR-7487, PR-7674 + + *** POTENTIAL INCOMPATIBILITY *** + + With this change, common_test returns an error when + suite with a badly defined group is executed. + + + OTP-18760 Application(s): common_test + + With this change, stylesheet option is applied to all + HTML report pages. + + + OTP-18799 Application(s): common_test, erl_docgen, xmerl + Related Id(s): PR-7695 + + Update all <tt> html tags to be <code> instead. + + + --- Improvements and New Features --- + + OTP-18858 Application(s): common_test + Related Id(s): PR-7825 + + This change fixes docs, so that historically deprecated + ?config macro is no longer recommended to be used. + + + Full runtime dependencies of common_test-1.26: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- crypto-5.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + The crypto-5.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18895 Application(s): crypto, erl_interface, os_mon, + runtime_tools + + Fixed some benign compile warnings on Windows. + + + --- Improvements and New Features --- + + OTP-18832 Application(s): crypto + Related Id(s): PR-7763 + + Enable engine support for OpenSSL versions 3. + + + Full runtime dependencies of crypto-5.4: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3.3 -------------------------------------------------- + --------------------------------------------------------------------- + + The debugger-5.3.3 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18888 Application(s): debugger + Related Id(s): GH-7914 + + Map comprehensions now work in the Debugger. + + + Full runtime dependencies of debugger-5.3.3: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.1.2 -------------------------------------------------- + --------------------------------------------------------------------- + + The dialyzer-5.1.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18767 Application(s): dialyzer + Related Id(s): PR-7657 + + Fix dialyzer --output flag to work. This option was + accidentally removed in OTP 26.0. + + + OTP-18772 Application(s): dialyzer + Related Id(s): GH-7676 + + Fixed a crash in contract checking relating to opaque + types. + + + Full runtime dependencies of dialyzer-5.1.2: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-5.0, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.3.1 -------------------------------------------------- + --------------------------------------------------------------------- + + The diameter-2.3.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + Full runtime dependencies of diameter-2.3.1: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- edoc-1.2.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The edoc-1.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18782 Application(s): edoc + Related Id(s): PR-7643 + + Emit <code> instead of <tt>. + + + Full runtime dependencies of edoc-1.2.1: erts-6.0, inets-5.10, + kernel-3.0, stdlib-3.15, syntax_tools-2.0, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- eldap-1.2.12 ---------------------------------------------------- + --------------------------------------------------------------------- + + The eldap-1.2.12 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18810 Application(s): eldap + + Add missing dependency to asn1 application + + + Full runtime dependencies of eldap-1.2.12: asn1-3.0, erts-6.0, + kernel-3.0, ssl-5.3.4, stdlib-3.4 + + + --------------------------------------------------------------------- + --- erl_docgen-1.5.2 ------------------------------------------------ + --------------------------------------------------------------------- + + The erl_docgen-1.5.2 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18775 Application(s): erl_docgen + Related Id(s): PR-7663 + + Fix erl_docgen dtd to only allow a single + datatype_title within a datatypes block. + + + OTP-18776 Application(s): erl_docgen + Related Id(s): PR-7663 + + Fix so that EEP-48 doc chunks include the module + summary and generates equiv tags in the correct order. + + The function/type group title is now also included in + the entry metadata. + + + OTP-18799 Application(s): common_test, erl_docgen, xmerl + Related Id(s): PR-7695 + + Update all <tt> html tags to be <code> instead. + + + Full runtime dependencies of erl_docgen-1.5.2: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.5 ----------------------------------------------- + --------------------------------------------------------------------- + + The erl_interface-5.5 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18895 Application(s): crypto, erl_interface, os_mon, + runtime_tools + + Fixed some benign compile warnings on Windows. + + + --- Improvements and New Features --- + + OTP-18764 Application(s): erl_interface + Related Id(s): PR-7602 + + Add support to encode maps with ei_x_format. + + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + --- Known Bugs and Problems --- + + 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-14.2 ------------------------------------------------------- + --------------------------------------------------------------------- + + The erts-14.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18751 Application(s): erts + Related Id(s): GH-7548, GH-7621 + + Fix erl.exe to to restore the console to its original + state when exiting. This bug was introduced in OTP 26.0 + and only happens when erl.exe is run in cmd.exe. + + + OTP-18802 Application(s): erts + + Fix faulty debug assert when page size is larger than + 16kb, like on PowerPC. Did crash debug VM directly at + start. + + + OTP-18811 Application(s): erts + Related Id(s): ERIERL-994 + + zlib will no longer randomly return garbage (negative) + Adler32 checksums. + + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18838 Application(s): erts + Related Id(s): GH-7801, PR-7822 + + A process with message_queue_data configured as + off_heap could end up in an inconsistent state when + being receive traced, inspected using process_info/2 + with the message_queue_len item, or inspected using the + break menu (CTRL-C). When it ended up in this + inconsistent state, it was not enqueued into a run + queue even though it was set in a runnable state.This + also effected signals being sent to the process after + it had gotten into this inconsistent state, in such a + way that it was from this point not possible to + communicate with it. + + + OTP-18839 Application(s): erts + Related Id(s): GH-7801, PR-7822 + + A race occurring when a process was selected for dirty + execution simultaneously as it was scheduled for + handling a signal could cause the process to end up in + an inconsistent state. When it ended up in this + inconsistent state, it was not enqueued into a run + queue even though it was set in a runnable state. This + also effected signals being sent to the process after + it had gotten into this inconsistent state, in such a + way that it was from this point not possible to + communicate with it. + + + OTP-18841 Application(s): erts + Related Id(s): GH-7801, OTP-18737, PR-7822 + + When a process had to to wait in the run queue for a + long time before being selected for dirty execution, it + could not receive signals. This caused inspection of + such a process, for example using process_info/2, to + take a long time. + + This issue was introduced in OTP 25.3.2.6 and 26.1 when + fixing an issue where a constant flow of signals + prevented a process from being able to execute dirty. + + + OTP-18842 Application(s): erts + + Fixed a bug in the JIT that miscompiled large + select_val instructions. + + + OTP-18871 Application(s): erts + Related Id(s): GH-7838 + + Fix bug on Windows where large writes to standard_io + could cause duplicate data to be written. + + + OTP-18880 Application(s): erts + Related Id(s): GH-7736, PR-7761 + + The struct ip_mreqn field imr_ifindex had got an + incorrect byte order conversion that has been + corrected. + + + OTP-18885 Application(s): erts + Related Id(s): GH-7834, GH-7890, PR-7915 + + On OTP 24 and OTP 25, incoming distributed messages + larger than 64 KiB sent using an alias leaked memory if + the alias had been removed prior to entering the node. + This issue was not present on OTP 26. + + Incoming distributed messages larger than 64 KiB sent + using an alias which had been removed on the receiving + node could crash the node. This crash was quite + unlikely on OTP 24 and OTP 25, but very likely on OTP + 26. + + 'DOWN' signals with exit reason larger than 64 KiB + directed towards a process on a node with a not + matching creation leaked memory on the receiving node. + Such signals should however be very rare. + + + --- Improvements and New Features --- + + OTP-18762 Application(s): erts, kernel + + Add Windows support for DGRAM socket connect. + + + OTP-18765 Application(s): erts + Related Id(s): PR-7707 + + process_info/2 now supports lookup of values for + specific keys in the process dictionary. For example, + {{dictionary, Key}, Value} = process_info(Pid, + {dictionary, Key}). + + + OTP-18830 Application(s): erts + Related Id(s): PR-7823 + + Removed unnecessary regexp library used when generating + yielding BIFs. + + + OTP-18872 Application(s): erts + Related Id(s): GH-7832 + + Fix tty restore when +Bc is used. + + + OTP-18877 Application(s): erl_interface, erts + + Replaced old md5 implementation with an implementation + from OpenSSL. + + + OTP-18899 Application(s): erts + + Removed unused makewhatis script. + + + Full runtime dependencies of erts-14.2: kernel-9.0, sasl-3.3, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- eunit-2.9 ------------------------------------------------------- + --------------------------------------------------------------------- + + The eunit-2.9 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18771 Application(s): eunit + Related Id(s): PR-7635 + + With this change, EUnit timetraps can be scaled with + the use of scale_timeouts option. + + + Full runtime dependencies of eunit-2.9: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- ftp-1.2.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The ftp-1.2.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + Full runtime dependencies of ftp-1.2.1: erts-7.0, kernel-6.0, + runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + + + --------------------------------------------------------------------- + --- inets-9.1 ------------------------------------------------------- + --------------------------------------------------------------------- + + The inets-9.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18855 Application(s): inets + + Correct IP protocol handling so that redirects always + uses correct IP-family options and not fails. + + + --- Improvements and New Features --- + + OTP-18735 Application(s): inets + Related Id(s): GH-7580, PR-7596 + + inets app starts ssl by default + + + OTP-18882 Application(s): inets + + Avoid httpd returning 500 internal server error when + unable to open a file. 404 or 503 will be returned + instead. + + + OTP-18891 Application(s): inets + Related Id(s): GH-7827, PR-7843 + + Properly handle documented option mime_type, for + backwards compatibility fallback to undocumented option + default_type if mime_type is not set. + + + Full runtime dependencies of inets-9.1: erts-14.0, kernel-9.0, + mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0, + stdlib-5.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- kernel-9.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The kernel-9.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18749 Application(s): kernel + Related Id(s): GH-7608 + + For inet_backend = socket, an unexpected receive error + such as etimedout caused the receiving state machine + server to crash. This bug has now been fixed. + + + OTP-18800 Application(s): kernel + Related Id(s): GH-7591, PR-7714 + + Fix bug where reading using file from a unicode enabled + standard_io, standard_error or any other group backed + device would result in incorrect values being returned + or a crash. + + Now instead a no_translation error is returned to the + caller when unicode data is read using file. See Using + Unicode in the STDLIB User's Guide for more details on + how to correctly read from standard_io. + + + OTP-18812 Application(s): kernel + Related Id(s): ERIERL-997 + + The native resolver interface module has gotten a + rewrite of its ETS table handling to minimize term + copying, and also to move the handling of client + time-outs to the clients, which helps the native + resolver name server from digging itself into a tar pit + when heavily loaded. + + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18833 Application(s): kernel + Related Id(s): GH-7625, PR-7659 + + Fix bug in pg if a client process both monitored a + group/scope and joined a group. The termination of such + process resulted in crash of the pg server process. + + + OTP-18873 Application(s): kernel + Related Id(s): PR-7831 + + Fix crash when using file:consult and the underlying + file read returns an error while reading. + + + OTP-18883 Application(s): kernel + Related Id(s): #7764 + + Corrected gen_tcp_socket listen option handling. + + + --- Improvements and New Features --- + + OTP-18762 Application(s): erts, kernel + + Add Windows support for DGRAM socket connect. + + + OTP-18818 Application(s): kernel + Related Id(s): #7337 + + Document the, previously opaque, types select_tag() and + completion_tag(). + + + Full runtime dependencies of kernel-9.2: crypto-5.0, erts-14.0, + sasl-3.0, stdlib-5.0 + + + --------------------------------------------------------------------- + --- mnesia-4.23 ----------------------------------------------------- + --------------------------------------------------------------------- + + The mnesia-4.23 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18798 Application(s): mnesia + + Document mnesia:foldl/4 and mnesia:foldr/4. + + + OTP-18850 Application(s): mnesia + + mnesia:add_table_copy/3 no longer fails with reason + system_limit when the node is starting. + + + --- Improvements and New Features --- + + OTP-18843 Application(s): mnesia + Related Id(s): GH-7766 + + Restore recreate of disc_only tables could crash if + they had an index. + + + Full runtime dependencies of mnesia-4.23: erts-9.0, kernel-5.3, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- os_mon-2.9.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + The os_mon-2.9.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18895 Application(s): crypto, erl_interface, os_mon, + runtime_tools + + Fixed some benign compile warnings on Windows. + + + Full runtime dependencies of os_mon-2.9.1: erts-14.0, kernel-9.0, + sasl-4.2.1, stdlib-5.0 + + + --------------------------------------------------------------------- + --- public_key-1.15 ------------------------------------------------- + --------------------------------------------------------------------- + + The public_key-1.15 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18739 Application(s): public_key, ssl + + ssl application will validate id-kp-serverAuth and + id-kp-clientAuth extended key usage only in end entity + certificates. public_key application will disallow + "anyExtendedKeyUsage" for CA certificates that includes + the extended key usage extension and marks it critical. + + + OTP-18854 Application(s): public_key + + Modernize ECC handling so that crypto FIPS support + works as expected. + + + --- Improvements and New Features --- + + OTP-17844 Application(s): public_key + Related Id(s): ERIERL-738 + + Support certificate policies in path_validation - as + described by RFC 5280. + + + OTP-18814 Application(s): public_key + Related Id(s): PR-7435 + + Add more search paths for cacerts on Illumos. + + + OTP-18867 Application(s): public_key + Related Id(s): GH-7515 + + Make it possible to handle invalid date formats in the + verify_fun for pkix_path_validation/3 + + + Full runtime dependencies of public_key-1.15: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- runtime_tools-2.0.1 --------------------------------------------- + --------------------------------------------------------------------- + + The runtime_tools-2.0.1 application can be applied independently of + other applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18868 Application(s): runtime_tools + Related Id(s): GH-7735 + + Fixed issue with fetching port information for observer + could crash if port had died. + + + OTP-18895 Application(s): crypto, erl_interface, os_mon, + runtime_tools + + Fixed some benign compile warnings on Windows. + + + Full runtime dependencies of runtime_tools-2.0.1: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- ssh-5.1 --------------------------------------------------------- + --------------------------------------------------------------------- + + The ssh-5.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18861 Application(s): ssh + Related Id(s): PR-7627 + + Avoid outputting ansi escape sequences to dumb ssh + clients. + + + OTP-18869 Application(s): ssh + Related Id(s): GH-7571, PR-7849 + + With this change, connection handler does not execute + socket operations until it becomes socket owner. + Previously errors could occur if connection handler + tried to work with socket whose owner exited. + + + --- Improvements and New Features --- + + OTP-18730 Application(s): ssh + Related Id(s): PR-7499 + + With this change, reverse search works with ssh shell + and non dumb terminals. + + + Full runtime dependencies of ssh-5.1: crypto-5.0, erts-14.0, + kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- ssl-11.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + The ssl-11.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18739 Application(s): public_key, ssl + + ssl application will validate id-kp-serverAuth and + id-kp-clientAuth extended key usage only in end entity + certificates. public_key application will disallow + "anyExtendedKeyUsage" for CA certificates that includes + the extended key usage extension and marks it critical. + + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18817 Application(s): ssl + + Correct handling of TLS-1.3 legacy scheme names, could + cause interop failures for TLS-1.2 clients. + + + OTP-18886 Application(s): ssl + + Add missing export for connection_info() API type. + + + --- Improvements and New Features --- + + OTP-18836 Application(s): ssl + Related Id(s): GH-7795 + + Fixed server name indication which was not handled + properly. + + + OTP-18853 Application(s): ssl + Related Id(s): PR-7841 + + Align documentation and implementation + + + OTP-18893 Application(s): ssl + Related Id(s): PR-7920, PR-7921 + + Improve connection setup by optimizing certificate + lookup. + + + Full runtime dependencies of ssl-11.1: crypto-5.0, erts-14.0, + inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-4.1 + + + --------------------------------------------------------------------- + --- stdlib-5.2 ------------------------------------------------------ + --------------------------------------------------------------------- + + The stdlib-5.2 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18777 Application(s): stdlib + Related Id(s): PR-7663 + + Make shell_docs correctly trim the newline at the end + of code blocks. + + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + OTP-18822 Application(s): stdlib + Related Id(s): PR-7796 + + Fixed a bug where autocompletion could crash the shell + when trying to expand a nested tuple. + + + OTP-18823 Application(s): stdlib + + Removed auto closing feature, in autocompletion, for + function arguments, tuples, records and maps, since + this could interfere with autocompletion of atoms. + + + OTP-18824 Application(s): stdlib + + Fixed a bug where autocompletion string formatting + would remove suggestions that had the same name but + different case. + + + OTP-18826 Application(s): stdlib + Related Id(s): PR-7797 + + Fix so that ctrl+h, ctrl+backspace in the shell only + removes one character instead of a whole word. + + + OTP-18827 Application(s): stdlib + Related Id(s): PR-7797 + + Fix so that its possible to override the default + keyboard shortcuts for the shell. + + + OTP-18828 Application(s): stdlib + Related Id(s): PR-7799 + + Allow shell local func v(), in a restricted shell + + + OTP-18829 Application(s): stdlib + Related Id(s): PR-7799 + + Report syntax error when writing an invalid attribute + like '1> -hej.' + + + OTP-18866 Application(s): stdlib + Related Id(s): GH-7875, PR-7878 + + When attempting to match part of a record in the key of + a map generator, the entire record would be matched. + + + --- Improvements and New Features --- + + OTP-18821 Application(s): stdlib + Related Id(s): OTP-18746 + + The warning for accidental use of a future + triple-quoted string delimiter has been upgraded to + instead warn for adjacent strings without intervening + white space, which effectively is the same at a string + start, but also covers the same situation at a string + end. + + + OTP-18840 Application(s): otp, stdlib + Related Id(s): PR-7629 + + The removal of the deprecated slave module, originally + planned for OTP 27, has been postponed to OTP 29. + + + OTP-18857 Application(s): stdlib, wx + Related Id(s): GH-7685 + + Guards have been added to gen_*:start* API functions to + catch bad arguments earlier. Before this change, in + some cases, a bad argument could tag along and cause + the server to fail later, right after start. + + + Full runtime dependencies of stdlib-5.2: compiler-5.0, crypto-4.5, + erts-13.1, kernel-9.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- tftp-1.1.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + The tftp-1.1.1 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18815 Application(s): diameter, erts, ftp, inets, kernel, + otp, ssh, ssl, stdlib, tftp + Related Id(s): PR-7780 + + Replaced unintentional Erlang Public License 1.1 + headers in some files with the intended Apache License + 2.0 header. + + + Full runtime dependencies of tftp-1.1.1: erts-6.0, kernel-6.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- wx-2.4 ---------------------------------------------------------- + --------------------------------------------------------------------- + + The wx-2.4 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Improvements and New Features --- + + OTP-18857 Application(s): stdlib, wx + Related Id(s): GH-7685 + + Guards have been added to gen_*:start* API functions to + catch bad arguments earlier. Before this change, in + some cases, a bad argument could tag along and cause + the server to fail later, right after start. + + + Full runtime dependencies of wx-2.4: erts-12.0, kernel-8.0, + stdlib-5.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.34 ---------------------------------------------------- + --------------------------------------------------------------------- + + The xmerl-1.3.34 application can be applied independently of other + applications on a full OTP 26 installation. + + --- Fixed Bugs and Malfunctions --- + + OTP-18799 Application(s): common_test, erl_docgen, xmerl + Related Id(s): PR-7695 + + Update all <tt> html tags to be <code> instead. + + + Full runtime dependencies of xmerl-1.3.34: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + diff --git a/release-notes/OTP-27.0-rc1.README.txt b/release-notes/OTP-27.0-rc1.README.txt new file mode 100644 index 0000000..017c55b --- /dev/null +++ b/release-notes/OTP-27.0-rc1.README.txt @@ -0,0 +1,2307 @@ +Inital Release: OTP 27.0 +Git Tag: OTP-27.0 +Date: 2024-02-14 +Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589, + OTP-18590, OTP-18594, OTP-18606, OTP-18608, + OTP-18609, OTP-18622, OTP-18639, OTP-18641, + OTP-18642, OTP-18648, OTP-18658, OTP-18667, + OTP-18668, OTP-18671, OTP-18673, OTP-18680, + OTP-18682, OTP-18684, OTP-18699, OTP-18703, + OTP-18709, OTP-18713, OTP-18714, OTP-18715, + OTP-18716, OTP-18717, OTP-18727, OTP-18741, + OTP-18742, OTP-18743, OTP-18744, OTP-18750, + OTP-18756, OTP-18761, OTP-18766, OTP-18774, + OTP-18778, OTP-18779, OTP-18781, OTP-18783, + OTP-18784, OTP-18785, OTP-18786, OTP-18787, + OTP-18788, OTP-18789, OTP-18793, OTP-18794, + OTP-18795, OTP-18796, OTP-18801, OTP-18804, + OTP-18805, OTP-18806, OTP-18807, OTP-18808, + OTP-18809, OTP-18813, OTP-18816, OTP-18819, + OTP-18820, OTP-18825, OTP-18831, OTP-18834, + OTP-18835, OTP-18846, OTP-18847, OTP-18848, + OTP-18849, OTP-18852, OTP-18856, OTP-18859, + OTP-18860, OTP-18865, OTP-18870, OTP-18874, + OTP-18875, OTP-18876, OTP-18878, OTP-18879, + OTP-18881, OTP-18887, OTP-18892, OTP-18894, + OTP-18898, OTP-18904, OTP-18908, OTP-18912, + OTP-18913, OTP-18914, OTP-18916, OTP-18918, + OTP-18920, OTP-18922, OTP-18923, OTP-18927, + OTP-18928, OTP-18929, OTP-18930, OTP-18934, + OTP-18941, OTP-18942, OTP-18944, OTP-18945, + OTP-18946, OTP-18947, OTP-18950, OTP-18951, + OTP-18954, OTP-18955, OTP-18959, OTP-18961, + OTP-18963, OTP-18967, OTP-18972, OTP-18973, + OTP-18976, OTP-18977, OTP-18978, OTP-18980 +Seq num: #312, 7809, BL-322, ERIERL-43, ERIERL-964, + ERIERL-967, ERIERL-985, GH-4992, GH-6152, + GH-6692, GH-6985, GH-7183, GH-7232, GH-7266, + GH-7295, GH-7397, GH-7432, GH-7493, GH-7494, + GH-7706, GH-7718, GH-8061, OTP-16448, + OTP-16608, OTP-16875, OTP-17734, OTP-18746, + OTP-18750, PR-6510, PR-6639, PR-6791, + PR-6985, PR-7110, PR-7125, PR-7174, PR-7202, + PR-7220, PR-7236, PR-7243, PR-7267, PR-7274, + PR-7299, PR-7313, PR-7316, PR-7348, PR-7380, + PR-7383, PR-7388, PR-7398, PR-7419, PR-7428, + PR-7441, PR-7443, PR-7451, PR-7465, PR-7470, + PR-7474, PR-7475, PR-7481, PR-7491, PR-7496, + PR-7528, PR-7534, PR-7535, PR-7538, PR-7556, + PR-7585, PR-7590, PR-7592, PR-7607, PR-7628, + PR-7639, PR-7649, PR-7651, PR-7675, PR-7684, + PR-7697, PR-7699, PR-7700, PR-7701, PR-7702, + PR-7703, PR-7711, PR-7720, PR-7726, PR-7728, + PR-7732, PR-7738, PR-7739, PR-7740, PR-7745, + PR-7779, PR-7781, PR-7782, PR-7790, PR-7809, + PR-7816, PR-7824, PR-7844, PR-7845, PR-7846, + PR-7847, PR-7856, PR-7857, PR-7869, PR-7879, + PR-7891, PR-7898, PR-7917, PR-7918, PR-7936, + PR-7942, PR-7952, PR-7957, PR-7960, PR-7963, + PR-7973, PR-7981, PR-7993, PR-8003, PR-8004, + PR-8006, PR-8026, PR-8042, PR-8063, PR-8067, + PR-8069, PR-8076, PR-8086, PR-8090, PR-8092 +System: OTP +Release: 27 +Application: asn1-5.3, common_test-1.27, compiler-8.5, + crypto-5.5, debugger-5.4, dialyzer-5.2, + diameter-2.4, edoc-1.3, eldap-1.3, + erl_interface-5.6, erts-14.3, et-1.8, + eunit-2.10, ftp-1.3, inets-9.2, + jinterface-1.15, kernel-9.3, megaco-4.6, + mnesia-4.24, observer-2.16, odbc-2.15, + os_mon-2.10, parsetools-2.6, public_key-1.16, + reltool-1.1, runtime_tools-2.1, sasl-4.3, + snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0, + syntax_tools-3.2, tftp-1.2, tools-4.0, + wx-2.5, xmerl-1.4 +Predecessor: OTP + +Check out the git tag OTP-27.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Related Id(s): GH-7183, GH-7232 + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Related Id(s): ERIERL-967, PR-7491, PR-8086 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative + comparison operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): PR-7728 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Related Id(s): PR-7470 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** POTENTIAL INCOMPATIBILITY *** + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a 0-ary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Related Id(s): PR-7649 + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Related Id(s): PR-7684, OTP-18750 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when doc. + attributes are missing in exported functions, types, and callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Related Id(s): PR-6791 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + +- Multiple trace sessions. + + Own Id: OTP-18980 + +# POTENTIAL INCOMPATIBILITIES + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Related Id(s): PR-7274 + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Related Id(s): PR-7348 + +- Introduce default value for httpd_server name configuration to improve ease of + use. + + Own Id: OTP-18641 + Related Id(s): PR-7316 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and <c>/=</c>) and all relative + comparison operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + +# OTP-27.0 + +## Fixed Bugs and Malfunctions + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and <c>/=</c>) and all relative + comparison operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +# asn1-5.3 + +## Fixed Bugs and Malfunctions + +- Multiple bugs has been eliminated in the specialized decode feature. + + Own Id: OTP-18813 + Related Id(s): PR-7790 + +## Improvements and New Features + +- Specs have been added to all `asn1ct` API functions. + + Own Id: OTP-18804 + Related Id(s): PR-7738 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of asn1-5.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27 + +## Improvements and New Features + +- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to + ensure that all output is captured. + + Own Id: OTP-18658 + Related Id(s): PR-7380 + +- The order in which multiple hooks are executed can now be reversed after each + config function. See CTH Execution Order. + + Own Id: OTP-18682 + Related Id(s): ERIERL-43, GH-7397, PR-7496 + +- The default CSS will now include a basic dark mode handling if it is preferred + by the browser. + + Own Id: OTP-18761 + Related Id(s): PR-7428 + +- `-callback` attributes have been added to `ct_suite` and `ct_hooks`. + + Own Id: OTP-18781 + Related Id(s): PR-7701 + +- The built-in cth_log_redirect hook can now be configured to replace default + logger reports in terminal with HTML logs. + + Own Id: OTP-18875 + Related Id(s): PR-7891 + +- Error handling for the `ct_property_test` framework has been enhanced. + + Own Id: OTP-18881 + Related Id(s): PR-7824 + +- Enhance test case documentation, making it clear how a test case can be + failed. + + Own Id: OTP-18892 + Related Id(s): PR-7869 + +- The failing line in the test source code is now colored to make it easier to + find on the screen. + + Own Id: OTP-18898 + Related Id(s): PR-7917 + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of common_test-1.27 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5 + +## Fixed Bugs and Malfunctions + +- Generators for binary comprehensions could be evaluated before it was known + that they would be needed. That could result in a binary comprehensions + failing if a generator that should not be evaluated until later failed. + + As an example, consider this module: + + -module(t). + -export([f/0]). + + f() -> + <<0 || _ <- [], _ <- ok, false>>. + + In Erlang/OTP 26 it would fail like so: + + > t:f(). + ** exception error: bad generator ok + in function t:f/0 (t.erl, line 6) + + In Erlang/OTP 27 it returns an empty binary: + + > t:f(). + <<>> + + Own Id: OTP-18703 + Related Id(s): GH-7494, PR-7538 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- The compiler now optimizes creation of binaries that are known to be constant. + + Consider this example: + + bin() -> + C = char(), + <<C>>. + + char() -> $*. + + Essentially, the compiler rewrites the example to the slightly more efficient: + + bin() -> + _ = char(), + <<$*>>. + + char() -> $*. + + Own Id: OTP-18673 + Related Id(s): ERIERL-964, PR-7474 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Related Id(s): ERIERL-967, PR-7491, PR-8086 + + *** HIGHLIGHT *** + +- Improved the performance of the alias analysis pass. + + Own Id: OTP-18714 + Related Id(s): GH-7432, PR-7528 + +- `-spec` attributes are now used for documentation. + + Own Id: OTP-18801 + Related Id(s): PR-7739 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when doc. + attributes are missing in exported functions, types, and callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of compiler-8.5 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which + were marked as deprecated since OTP 25. + + Own Id: OTP-18973 + +- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread + specific data. + + Own Id: OTP-18978 + Related Id(s): 7809 + +> #### Full runtime dependencies of crypto-5.5 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# debugger-5.4 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- Type specs have been added to all API functions. + + Own Id: OTP-18819 + Related Id(s): PR-7781 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of debugger-5.4 +> +> compiler-8.0, erts-14.3, kernel-8.0, stdlib-3.15, wx-2.0 + +# dialyzer-5.2 + +## Improvements and New Features + +- The `--gui` option for Dialyzer has been removed. + + Own Id: OTP-18667 + Related Id(s): PR-7443 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of dialyzer-5.2 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.4 + +## Improvements and New Features + +- `-callback` attributes have been added to `diameter_app` and + `diameter_transport`. + + Own Id: OTP-18783 + Related Id(s): PR-7699 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of diameter-2.4 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.3 + +## Fixed Bugs and Malfunctions + +- EEP 48 doc chunks now properly include links within `{@type }` macros. + + Own Id: OTP-18945 + Related Id(s): PR-8063 + +- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`. + + Own Id: OTP-18946 + Related Id(s): PR-8063 + +## Improvements and New Features + +- There is a new `edoc_html_to_markdown` module that can be used to convert + EEP-48 `application/html+erlang` to Markdown. + + Own Id: OTP-18947 + Related Id(s): PR-8063 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of edoc-1.3 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.3 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eldap-1.3 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-14.3 + +## Fixed Bugs and Malfunctions + +- Fix bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or + `-args_file`. + + Own Id: OTP-18766 + Related Id(s): PR-7639 + +- Fixed a bug that prevented the emulator from building on recent versions of + Yocto Linux. + + Own Id: OTP-18918 + Related Id(s): PR-7952 + +- Fix spectre mitigation configure test to work with GCC patches to always add + `-fcf-protection=full`. + + Own Id: OTP-18928 + Related Id(s): PR-8006 + +## Improvements and New Features + +- Refactored how the JIT handles POSIX signals and how they affect thread + stacks, allowing us to use the native stack register for Erlang stacks on more + platforms. + + Notably, containers built on 64-bit x86 Alpine Linux images will now perform + much better in sequential code. As an example, running `dialyzer` over the OTP + code base finishes about 15% quicker. + + Own Id: OTP-18568 + Related Id(s): PR-7174 + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Related Id(s): PR-7274 + + *** POTENTIAL INCOMPATIBILITY *** + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Related Id(s): PR-7348 + + *** POTENTIAL INCOMPATIBILITY *** + +- A binary returned from the `socket` receive functions is no longer created + as a sub binary of an often large receive buffer binary (socket option + `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement + reallocation efficiently. + + Own Id: OTP-18642 + Related Id(s): GH-6152, PR-7465 + +- The default process limit has been raised to `1048576` processes. + + Own Id: OTP-18699 + Related Id(s): PR-7388 + +- The erlang:system_monitor/2 functionality is now able to monitor long + message queues in the system. + + Own Id: OTP-18709 + Related Id(s): PR-7651 + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Related Id(s): PR-7470 + + *** HIGHLIGHT *** + +- When implementing an alternative carrier for the Erlang distribution, a + separate input handler process may now be registered, using + erlang:dist_ctrl_input_handler/2, also in the case when the distribution + controller is a port. + + Own Id: OTP-18774 + Related Id(s): PR-7110 + +- Add call stack trace to the error reported by erlang:process_flag/2 when + `max_heap_size` has been exceeded. + + Own Id: OTP-18779 + Related Id(s): PR-7592 + +- `-callback` attributes have been added to `erl_tracer`. + + Own Id: OTP-18794 + Related Id(s): PR-7703 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N`, has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- Socket options that take string now also accept binaries. + + Own Id: OTP-18849 + Related Id(s): PR-6510 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Changed the default value of the command line flag `-code_path_choice Choice` + to `strict`. + + Own Id: OTP-18894 + Related Id(s): PR-7243 + +- Added module loading to `erl -init_debug` printouts. + + Own Id: OTP-18929 + Related Id(s): PR-8004 + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d + + Own Id: OTP-18942 + +- The deprecated functions in `zlib` have been removed. That includes + `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and + the Adler checksum functions. + + Own Id: OTP-18950 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +- The obsolete and undocumented support for opening a port to an external + resource by passing an atom (or a string) as first argument to `open_port()`, + implemented by the vanilla driver, has been removed. This feature has been + scheduled for removal in OTP 27 since the release of OTP 26. + + Own Id: OTP-18976 + Related Id(s): PR-7125 + +- Add optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all + scheduler thread when a NIF library is unloaded. Used for releasing thread + specific data. Can be set with function `enif_set_option`. + + Own Id: OTP-18977 + Related Id(s): PR-7809 + +- Multiple trace sessions. + + Own Id: OTP-18980 + *** HIGHLIGHT *** + +> #### Full runtime dependencies of erts-14.3 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.8 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of et-1.8 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.10 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.3 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of ftp-1.3 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.2 + +## Improvements and New Features + +- Introduce default value for httpd_server name configuration to improve ease of + use. + + Own Id: OTP-18641 + Related Id(s): PR-7316 + + *** POTENTIAL INCOMPATIBILITY *** + +- With this change, `erl -S httpd` command can be used for serving current + directory content over HTTP. + + Own Id: OTP-18727 + Related Id(s): PR-7299 + +- Add `-callback` attributes to `httpd`, `mod_esi` and `mod_security`. + + Own Id: OTP-18786 + Related Id(s): PR-7700 + +- Use a relative redirect with an absolute path to prevent whoever is running + inets from having to configure the ServerName to match the network-reachable + hostname of the server. + + Own Id: OTP-18809 + +- Use proc_lib:set_label/1 to increase observability of inets processes. + + Own Id: OTP-18927 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of inets-9.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +# kernel-9.3 + +## Fixed Bugs and Malfunctions + +- Fixed a crash when calling file:delete/2 with an empty option list. + + Own Id: OTP-18590 + Related Id(s): PR-7220 + +- New functions have been added to the undocumented module `inet_dns` that + take a flag to specify if encode/decode is for mDNS. This affects how CLASS + values in the private range, with the top bit set, are handled. + + Own Id: OTP-18878 + Related Id(s): GH-7718, OTP-17734 + +- The error information for erlang:phash/2 has been corrected. + + Own Id: OTP-18904 + Related Id(s): PR-7960 + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +- Calling logger:add_handlers/1 with config option now works. + + Own Id: OTP-18954 + Related Id(s): GH-8061, PR-8076 + +- The code:del_path/1 function now also works on paths added through `-pa`, + `-pz` , `-path` and the boot script. + + Own Id: OTP-18959 + Related Id(s): GH-6692, PR-7697 + +## Improvements and New Features + +- Added file:read_file/2 with a `raw` option for reading files without going + through the file server. + + Own Id: OTP-18589 + Related Id(s): PR-7220 + +- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has + been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some + bug fixes and code cleanup has been done, and the resolver used in the test + suite has been changed to Knot DNS. See the source code. + + Kudos to Alexander Clouter that did almost all the work! + + Own Id: OTP-18713 + Related Id(s): GH-6985, PR-6985 + +- The `ebin` directories for escripts are now cached. + + Own Id: OTP-18778 + Related Id(s): PR-7556 + +- Add `-callback` attributes to `application`, `logger_handler` and + `logger_formatter`. + + Own Id: OTP-18795 + Related Id(s): PR-7703 + +- Progress reports from before logger is started are now logged when log level + is set to debug. + + Own Id: OTP-18807 + Related Id(s): ERIERL-985, PR-7732 + +- The code:where_is_file/2 and code:which/1 functions now check for + existence of the file directly instead of listing the content of each + directory in the code path. + + Own Id: OTP-18816 + Related Id(s): PR-7711 + +- Type specs has been added to the `logger:Level/1,2,3` functions. + + Own Id: OTP-18820 + Related Id(s): PR-7779 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N`, has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Application startup has been optimized by removing an intermediary process. + + Own Id: OTP-18963 + Related Id(s): PR-8042 + +- The undocumented and deprecated `file:pid2name` function has been removed. + + Own Id: OTP-18967 + Related Id(s): PR-8092 + +> #### Full runtime dependencies of kernel-9.3 +> +> crypto-5.0, erts-14.3, sasl-3.0, stdlib-6.0 + +# megaco-4.6 + +## Improvements and New Features + +- `-callback` attributes have been added to `megaco_transport`. + + Own Id: OTP-18806 + Related Id(s): PR-7740 + +- Updated types and specs for all API modules. + + Own Id: OTP-18920 + Related Id(s): BL-322 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of megaco-4.6 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.16 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of observer-2.16 +> +> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + +# odbc-2.15 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of odbc-2.15 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.10 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of os_mon-2.10 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.6 + +## Improvements and New Features + +- The `leex` documentation has been updated to use specs for documenting the + generated interface. + + Own Id: OTP-18796 + Related Id(s): PR-7703 + +- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl` + source file. + + Own Id: OTP-18912 + Related Id(s): PR-7963 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of parsetools-2.6 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.16 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- Improved exception reason when public_key:cacerts_get/0 failed. + + Own Id: OTP-18609 + Related Id(s): GH-7295, PR-7202 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of public_key-1.16 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# reltool-1.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of reltool-1.1 +> +> erts-14.3, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.1 + +## Improvements and New Features + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- Type specs had been added to all `dbg` functions. + + Own Id: OTP-18859 + Related Id(s): PR-7782 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of runtime_tools-2.1 +> +> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-14.3, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.16 + +## Improvements and New Features + +- `-callback` attributes have been added to modules + `snmpa_network_interface_filter`, `snmpa_notification_filter`, + `snmpm_network_interface_filter`, `snmpm_user`, and + `snmpa_notification_delivery_info_receiver`. + + New `-type` attributes have also been added to modules `snmp`, `snmpa`, + `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks. + + Own Id: OTP-18785 + Related Id(s): PR-7702 + +- Updated types and specs for all API modules. + + Own Id: OTP-18934 + Related Id(s): #312 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of snmp-5.16 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2 + +## Improvements and New Features + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Updated types and specs for all API modules. + + Own Id: OTP-18961 + +> #### Full runtime dependencies of ssh-5.2 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-5.0 + +# ssl-11.2 + +## Fixed Bugs and Malfunctions + +- Starting a TLS server without sufficient credentials (certificate or anonymous + cipher) would work, but it was impossible to connect to it. + + This has been corrected to return an error instead of starting the server. + + Own Id: OTP-18887 + Related Id(s): GH-7493, PR-7918 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute. + + Own Id: OTP-18788 + Related Id(s): PR-7700 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The proc_lib:set_label/1 function is now used to increase observability of + `ssl` processes. + + Own Id: OTP-18879 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of ssl-11.2 +> +> crypto-5.0, erts-14.3, inets-5.10.7, kernel-9.0, public_key-1.16, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.0 + +## Fixed Bugs and Malfunctions + +- The specs in module `binary` has been updated to reflect what is allowed by + the documentation. + + Own Id: OTP-18684 + Related Id(s): PR-7481 + +- Several functions in the `binary` module would accept arguments of the wrong + type under certain circumstances. In this release, they now raise an exception + when incorrect types are given. + + The following functions would accept an invalid pattern if the subject binary + was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`, + `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3` + + The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of + raising an exception. Similarly, calls to `binary:part/2,3` attempting to + extract 0 bytes at position 0 of a bitstring would return an empty binary + instead of raising an exception. + + Own Id: OTP-18743 + Related Id(s): PR-7607, PR-7628 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +## Improvements and New Features + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Related Id(s): GH-7183, GH-7232 + + *** HIGHLIGHT *** + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- `zip:create/2,3` will now tolerate POSIX timestamps in the provided + `file_info` records. + + Own Id: OTP-18668 + +- The callback function gen_statem:handle_event/4 has been cached in the + `gen_statem` engine to optimize callback call speed. + + Own Id: OTP-18671 + Related Id(s): PR-7419 + +- The type beam_lib:beam/0 is now exported. + + Own Id: OTP-18716 + Related Id(s): PR-7534 + +- The documentation for the `binary` module has been improved. + + Own Id: OTP-18741 + Related Id(s): PR-7585 + +- `binary:replace/3,4` now supports using a fun for supplying the replacement + binary. + + Own Id: OTP-18742 + Related Id(s): PR-7590 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- `-callback` attributes has been added to modules `sys` and `erl_error`. + + Own Id: OTP-18793 + Related Id(s): PR-7703 + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a 0-ary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Related Id(s): PR-7649 + + *** HIGHLIGHT *** + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Related Id(s): PR-7684, OTP-18750 + + *** HIGHLIGHT *** + +- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1, + and shell:prompt_width/1 have been exported to help with custom prompt + implementations. + + Own Id: OTP-18834 + Related Id(s): PR-7675, PR-7816 + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function + directly before the cursor. + + Own Id: OTP-18847 + Related Id(s): PR-7846 + +- Added support for adding a custom code formatter that formats your multi-line + shell commands in your preferred formatting on submission. See + `shell:format_shell_func/` and shell:erl_pp_format_func/1. + + Own Id: OTP-18848 + Related Id(s): PR-7847 + +- Added shell functions for viewing, forgetting and saving locally defined + functions, types and records. + + Own Id: OTP-18852 + Related Id(s): PR-7844 + +- Added string:jaro_similarity/2, which can be used to calculate the + similarity between two strings. + + Own Id: OTP-18865 + Related Id(s): PR-7879 + +- The new function ets:update_element/4 is similar to ets:update_element/3, + but takes a default tuple as the fourth argument, which will be inserted if no + previous record with that key exists. + + Own Id: OTP-18870 + Related Id(s): PR-7857 + +- Added functions to retrieve the next higher or lower key/element from + `gb_trees` and `gb_sets`, as well as returning iterators that start at + given keys/elements. + + Own Id: OTP-18874 + Related Id(s): PR-7745 + +- When he shell built-in function `c/1,2` is used to re-compile a module, + the current working directory of the original compilation is now added to the + include path. + + + Own Id: OTP-18908 + Related Id(s): PR-7957 + +- The `timer` module now uses a private table for its internal state, slightly + improving its performance. + + Own Id: OTP-18914 + Related Id(s): PR-7973 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when doc. + attributes are missing in exported functions, types, and callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Related Id(s): PR-6791 + + *** HIGHLIGHT *** + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +- The compiler will now raise a warning when updating record/map literals. As an + example, consider this module: + + -module(t). + -export([f/0]). + -record(r, {a,b,c}). + + f() -> + #r{a=1}#r{b=2}. + + The compiler raises the following warning: + + 1> c(t). + t.erl:6:12: Warning: expression updates a literal + % 6| #r{a=1}#r{b=2}. + % | ^ + + Own Id: OTP-18951 + Related Id(s): PR-8069 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of stdlib-6.0 +> +> compiler-5.0, crypto-4.5, erts-14.3, kernel-9.3, sasl-3.0 + +# syntax_tools-3.2 + +## Fixed Bugs and Malfunctions + +- The `epp_dodger` module can now handle the `maybe` and `else` keywords. + + Own Id: OTP-18608 + Related Id(s): GH-7266, PR-7267 + +- Reverting a `#wrapper` will no longer throw away changes made to + positions/annotations. + + Own Id: OTP-18805 + Related Id(s): PR-7398 + +## Improvements and New Features + +- The type erl_syntax:annotation_or_location/0 is now exported. + + Own Id: OTP-18715 + Related Id(s): PR-7535 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of syntax_tools-3.2 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# tftp-1.2 + +## Improvements and New Features + +- There is now a new `tftp_logger` callback behavior module. + + Own Id: OTP-18787 + Related Id(s): PR-7700 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of tftp-1.2 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.0 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new tool `tprof`, which combines the functionality of `eprof` + and `cprof` under one interface. It also adds heap profiling. + + Own Id: OTP-18756 + Related Id(s): PR-6639 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of tools-4.0 +> +> compiler-8.5, erts-14.3, erts-14.3, kernel-9.3, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-1.4 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that + provides out-of-the box indented output has been added. + + Own Id: OTP-18922 + Related Id(s): PR-7942 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of xmerl-1.4 +> +> erts-6.0, kernel-3.0, stdlib-2.5 + diff --git a/release-notes/OTP-27.0-rc2.README.txt b/release-notes/OTP-27.0-rc2.README.txt new file mode 100644 index 0000000..b44a5f0 --- /dev/null +++ b/release-notes/OTP-27.0-rc2.README.txt @@ -0,0 +1,3075 @@ +``` +Inital Release: OTP 27.0 +Git Tag: OTP-27.0 +Date: 2024-03-21 +Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589, + OTP-18590, OTP-18594, OTP-18606, OTP-18608, + OTP-18609, OTP-18622, OTP-18639, OTP-18641, + OTP-18642, OTP-18648, OTP-18658, OTP-18665, + OTP-18667, OTP-18668, OTP-18671, OTP-18673, + OTP-18680, OTP-18682, OTP-18684, OTP-18699, + OTP-18703, OTP-18709, OTP-18713, OTP-18714, + OTP-18715, OTP-18716, OTP-18717, OTP-18727, + OTP-18741, OTP-18742, OTP-18743, OTP-18744, + OTP-18750, OTP-18756, OTP-18761, OTP-18766, + OTP-18774, OTP-18778, OTP-18779, OTP-18781, + OTP-18783, OTP-18784, OTP-18785, OTP-18786, + OTP-18787, OTP-18788, OTP-18789, OTP-18793, + OTP-18794, OTP-18795, OTP-18796, OTP-18801, + OTP-18804, OTP-18805, OTP-18806, OTP-18807, + OTP-18808, OTP-18809, OTP-18813, OTP-18816, + OTP-18819, OTP-18820, OTP-18825, OTP-18831, + OTP-18834, OTP-18835, OTP-18846, OTP-18847, + OTP-18848, OTP-18849, OTP-18852, OTP-18856, + OTP-18859, OTP-18860, OTP-18865, OTP-18870, + OTP-18874, OTP-18875, OTP-18876, OTP-18878, + OTP-18879, OTP-18881, OTP-18884, OTP-18887, + OTP-18892, OTP-18894, OTP-18898, OTP-18904, + OTP-18908, OTP-18912, OTP-18913, OTP-18914, + OTP-18916, OTP-18918, OTP-18920, OTP-18922, + OTP-18923, OTP-18927, OTP-18928, OTP-18929, + OTP-18930, OTP-18934, OTP-18938, OTP-18941, + OTP-18942, OTP-18943, OTP-18944, OTP-18945, + OTP-18946, OTP-18947, OTP-18950, OTP-18951, + OTP-18954, OTP-18955, OTP-18959, OTP-18961, + OTP-18963, OTP-18965, OTP-18966, OTP-18967, + OTP-18968, OTP-18969, OTP-18972, OTP-18973, + OTP-18975, OTP-18976, OTP-18977, OTP-18978, + OTP-18980, OTP-18981, OTP-18984, OTP-18987, + OTP-18989, OTP-18992, OTP-18993, OTP-18994, + OTP-18995, OTP-18998, OTP-19001, OTP-19004, + OTP-19005, OTP-19010, OTP-19014, OTP-19016, + OTP-19017, OTP-19018, OTP-19020, OTP-19022, + OTP-19025, OTP-19026, OTP-19027, OTP-19029, + OTP-19030 +Seq num: BL-312, BL-322, ERIERL-43, ERIERL-964, + ERIERL-967, ERIERL-985, GH-4992, GH-6152, + GH-6692, GH-6979, GH-6985, GH-7183, GH-7232, + GH-7266, GH-7295, GH-7397, GH-7432, GH-7438, + GH-7493, GH-7494, GH-7706, GH-7718, GH-7972, + GH-8058, GH-8061, GH-8066, GH-8159, GH-8166, + OTP-16448, OTP-16608, OTP-16875, OTP-17734, + OTP-18746, OTP-18750, OTP-18835, PR-6510, + PR-6639, PR-6658, PR-6791, PR-6985, PR-7110, + PR-7125, PR-7174, PR-7202, PR-7220, PR-7236, + PR-7243, PR-7267, PR-7274, PR-7299, PR-7313, + PR-7316, PR-7348, PR-7380, PR-7383, PR-7388, + PR-7398, PR-7419, PR-7428, PR-7441, PR-7443, + PR-7447, PR-7451, PR-7465, PR-7470, PR-7474, + PR-7475, PR-7481, PR-7491, PR-7496, PR-7528, + PR-7534, PR-7535, PR-7538, PR-7556, PR-7585, + PR-7590, PR-7592, PR-7607, PR-7628, PR-7639, + PR-7649, PR-7651, PR-7675, PR-7684, PR-7697, + PR-7699, PR-7700, PR-7701, PR-7702, PR-7703, + PR-7711, PR-7720, PR-7726, PR-7728, PR-7732, + PR-7738, PR-7739, PR-7740, PR-7745, PR-7779, + PR-7781, PR-7782, PR-7790, PR-7809, PR-7816, + PR-7824, PR-7844, PR-7845, PR-7846, PR-7847, + PR-7856, PR-7857, PR-7869, PR-7879, PR-7891, + PR-7898, PR-7917, PR-7918, PR-7936, PR-7942, + PR-7952, PR-7957, PR-7960, PR-7963, PR-7973, + PR-7977, PR-7981, PR-7993, PR-8003, PR-8004, + PR-8006, PR-8026, PR-8035, PR-8042, PR-8048, + PR-8063, PR-8067, PR-8069, PR-8076, PR-8086, + PR-8090, PR-8091, PR-8092, PR-8093, PR-8095, + PR-8103, PR-8111, PR-8112, PR-8155, PR-8156, + PR-8164, PR-8168, PR-8177, PR-8182, PR-8205, + PR-8241 +System: OTP +Release: 27 +Application: asn1-5.3, common_test-1.27, compiler-8.5, + crypto-5.5, debugger-5.4, dialyzer-5.2, + diameter-2.4, edoc-1.3, eldap-1.2.13, + erl_interface-5.5.2, erts-14.3, et-1.7.1, + eunit-2.9.1, ftp-1.2.2, inets-9.2, + jinterface-1.14.1, kernel-9.3, megaco-4.6, + mnesia-4.23.1, observer-2.16, odbc-2.14.3, + os_mon-2.10, parsetools-2.6, public_key-1.16, + reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2, + snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0, + syntax_tools-3.2, tftp-1.2, tools-4.0, + wx-2.4.2, xmerl-1.4 +Predecessor: OTP +``` + +Check out the git tag OTP-27.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules [`sets`], [`ordsets`], and [`gb_sets`]. + + Own Id: OTP-18622 + Application(s): stdlib + Related Id(s): [GH-7183], [GH-7232] + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + ```erlang + a() -> ok; + a(_) -> error. + ``` + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + ```text + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + ``` + + while in Erlang/OTP 27 the diagnostic is similar to: + + ```text + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + ``` + + Own Id: OTP-18648 + Application(s): compiler, stdlib + Related Id(s): [PR-7383] + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + ```erlang + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + ``` + + Own Id: OTP-18680 + Application(s): compiler + Related Id(s): ERIERL-967, [PR-7491], [PR-8086] + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): [PR-7728] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Application(s): erts + Related Id(s): [PR-7470] + +- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the + Reference Manual. + + Example: + + ```erlang + 1> """ + a + b + c + """. + "a\nb\nc" + ``` + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + ```text + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + ``` + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): [PR-7313], [PR-7451], OTP-18746 + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- Several new functions that accept funs have been added to module [`timer`]. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Application(s): stdlib + Related Id(s): [PR-7649] + +- Sigils on string literals have been implemented as per [EEP 66], that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + ```erlang + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + ``` + + Own Id: OTP-18825 + Application(s): stdlib + Related Id(s): [PR-7684], OTP-18750 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the [`cover`] tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + [`line_coverage`] option. + + To enable native coverage in the runtime system, start it like so: + + ```text + $ erl +JPcover true + ``` + + There are also the following new functions for supporting native coverage: + + - `code:coverage_support/0` + - `code:get_coverage/2` + - `code:reset_coverage/1` + - `code:get_coverage_mode/0` + - `code:get_coverage_mode/1` + - `code:set_coverage_mode/1` + + Own Id: OTP-18856 + Application(s): compiler, erts, kernel, tools + Related Id(s): [PR-7856] + +- [EEP-59 - Documentation Attributes] has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of [EEP-48]. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Application(s): compiler, stdlib + Related Id(s): [PR-7936] + +- New [`ets`] functions `ets:first_lookup/1`, `ets:next_lookup/2`, + `ets:prev_lookup/2` and `ets:last_lookup/1`. Example: `ets:next_lookup/1` is + equivalent to `ets:next/2` followed by `ets:lookup/2` with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Application(s): stdlib + Related Id(s): [PR-6791] + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + ```erlang + -feature(maybe_expr, disable). + ``` + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + ```text + erlc -disable-feature maybe_expr some_file.erl + ``` + + Own Id: OTP-18944 + Application(s): otp, stdlib + Related Id(s): [PR-8067] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer, + diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface, + kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key, + reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp, + tools, wx, xmerl + Related Id(s): [PR-8026] + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + ```erlang + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + ``` + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Application(s): compiler, erts + Related Id(s): [PR-8090] + +- Multiple trace sessions. + + Own Id: OTP-18980 + Application(s): erts + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new [`json`] module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Application(s): asn1 + Related Id(s): [PR-8241] + +- There is a new module [`json`] for encoding and decoding [JSON]. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Application(s): stdlib + Related Id(s): [PR-8111] + +# POTENTIAL INCOMPATIBILITIES + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Application(s): erts + Related Id(s): [PR-7274] + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Application(s): erts + Related Id(s): [PR-7348] + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Application(s): inets + Related Id(s): [PR-7316] + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): [PR-7728] + + \*\*\* HIGHLIGHT \*\*\* + +- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the + Reference Manual. + + Example: + + ```erlang + 1> """ + a + b + c + """. + "a\nb\nc" + ``` + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + ```text + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + ``` + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): [PR-7313], [PR-7451], OTP-18746 + + \*\*\* HIGHLIGHT \*\*\* + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Application(s): compiler, otp, stdlib + Related Id(s): [GH-7706], [PR-7726] + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice` + flag, and using [`erl_prim_loader`] for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use `escript:extract/2` + instead of `erl_prim_loader` and `code:lib_dir/2`. + + Own Id: OTP-18966 + Application(s): kernel, otp + Related Id(s): [PR-8091] + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + ```erlang + -compile([nowarn_missing_spec]). + ``` + + and the compiler is invoked like so: + + ```text + % erlc +warn_missing_spec some_module.erl + ``` + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Application(s): compiler + Related Id(s): [GH-6979], [PR-8093] + +- The implementations of `http_uri:encode/1` and `http_uri:decode/1` are now + replaced with their equivalent, but bug free versions from module + [`uri_string`], namely `uri_string:quote/1` and `uri_string:unquote/1`. + + Own Id: OTP-19022 + Application(s): inets + +- For security reasons remove CBC ciphers form default supported cipher suites + in TLS-1.2 + + Own Id: OTP-19025 + Application(s): ssl + +- Enhance simple_one_for_one error handling. Avoid crash of transient child + returning ignore for init-function. Also disallow automatic shutdown as it + does not make sense for this supervisor type, may potentially be backwards + incompatible for no intended uses, that is supervisors will not remain + bug-compatible. + + Own Id: OTP-19029 + Application(s): stdlib + +# OTP-27.0 + +## Fixed Bugs and Malfunctions + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): [PR-7728] + + \*\*\* HIGHLIGHT \*\*\* + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): [GH-7706], [PR-7726] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +## Improvements and New Features + +- `configure` scripts of the OTP build system are now generated using Autoconf + 2.72. + + Own Id: OTP-18943 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + ```erlang + -feature(maybe_expr, disable). + ``` + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + ```text + erlc -disable-feature maybe_expr some_file.erl + ``` + + Own Id: OTP-18944 + Related Id(s): [PR-8067] + + \*\*\* HIGHLIGHT \*\*\* + +- By default `configure` scripts used when building OTP will now try to enable + support for timestamps that will work after mid-January 2038. This has + typically only been an issue on 32-bit platforms. + + If `configure` cannot figure out how to enable such timestamps, it will abort + with an error message. If you want to build the system anyway, knowing that + the system will not function properly after mid-January 2038, you can pass the + `--disable-year2038` option to `configure`, which will enable `configure` to + continue without support for timestamps after mid-January 2038. + + Own Id: OTP-18965 + Related Id(s): [PR-8095] + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice` + flag, and using [`erl_prim_loader`] for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use `escript:extract/2` + instead of `erl_prim_loader` and `code:lib_dir/2`. + + Own Id: OTP-18966 + Related Id(s): [PR-8091] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The restriction for the expression that gives a default value for a record + field is now documented. + + Own Id: OTP-18995 + Related Id(s): [GH-8166], [PR-8177] + +# asn1-5.3 + +## Fixed Bugs and Malfunctions + +- Multiple bugs has been eliminated in the [specialized decode feature]. + + Own Id: OTP-18813 + Related Id(s): [PR-7790] + +## Improvements and New Features + +- Specs have been added to all `asn1ct` API functions. + + Own Id: OTP-18804 + Related Id(s): [PR-7738] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new [`json`] module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Related Id(s): [PR-8241] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of asn1-5.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27 + +## Improvements and New Features + +- Calls to `ct:capture_start/0` and `ct:capture_stop/0` are now synchronous to + ensure that all output is captured. + + Own Id: OTP-18658 + Related Id(s): [PR-7380] + +- The order in which multiple hooks are executed can now be reversed after each + config function. See [CTH Execution Order]. + + Own Id: OTP-18682 + Related Id(s): ERIERL-43, [GH-7397], [PR-7496] + +- The default CSS will now include a basic dark mode handling if it is preferred + by the browser. + + Own Id: OTP-18761 + Related Id(s): [PR-7428] + +- `-callback` attributes have been added to [`ct_suite`] and [`ct_hooks`]. + + Own Id: OTP-18781 + Related Id(s): [PR-7701] + +- The built-in [cth_log_redirect] hook can now be configured to replace default + logger reports in terminal with HTML logs. + + Own Id: OTP-18875 + Related Id(s): [PR-7891] + +- Error handling for the [`ct_property_test`] framework has been enhanced. + + Own Id: OTP-18881 + Related Id(s): [PR-7824] + +- Enhance test case documentation, making it clear how a test case can be + failed. + + Own Id: OTP-18892 + Related Id(s): [PR-7869] + +- The failing line in the test source code is now colored to make it easier to + find on the screen. + + Own Id: OTP-18898 + Related Id(s): [PR-7917] + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- With this change, suite execution elapsed time is included in index page. + + Own Id: OTP-18981 + Related Id(s): [GH-7972], [PR-8112] + +> #### Full runtime dependencies of common_test-1.27 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5 + +## Fixed Bugs and Malfunctions + +- Generators for binary comprehensions could be evaluated before it was known + that they would be needed. That could result in a binary comprehensions + failing if a generator that should not be evaluated until later failed. + + As an example, consider this module: + + ```erlang + -module(t). + -export([f/0]). + + f() -> + <<0 || _ <- [], _ <- ok, false>>. + ``` + + In Erlang/OTP 26 it would fail like so: + + ```text + > t:f(). + ** exception error: bad generator ok + in function t:f/0 (t.erl, line 6) + ``` + + In Erlang/OTP 27 it returns an empty binary: + + ```text + > t:f(). + <<>> + ``` + + Own Id: OTP-18703 + Related Id(s): [GH-7494], [PR-7538] + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): [GH-7706], [PR-7726] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +## Improvements and New Features + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + ```erlang + a() -> ok; + a(_) -> error. + ``` + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + ```text + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + ``` + + while in Erlang/OTP 27 the diagnostic is similar to: + + ```text + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + ``` + + Own Id: OTP-18648 + Related Id(s): [PR-7383] + + \*\*\* HIGHLIGHT \*\*\* + +- The compiler now optimizes creation of binaries that are known to be constant. + + Consider this example: + + ```erlang + bin() -> + C = char(), + <<C>>. + + char() -> $*. + ``` + + Essentially, the compiler rewrites the example to the slightly more efficient: + + ```erlang + bin() -> + _ = char(), + <<$*>>. + + char() -> $*. + ``` + + Own Id: OTP-18673 + Related Id(s): ERIERL-964, [PR-7474] + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + ```erlang + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + ``` + + Own Id: OTP-18680 + Related Id(s): ERIERL-967, [PR-7491], [PR-8086] + + \*\*\* HIGHLIGHT \*\*\* + +- Improved the performance of the alias analysis pass. + + Own Id: OTP-18714 + Related Id(s): [GH-7432], [PR-7528] + +- `-spec` attributes are now used for documentation. + + Own Id: OTP-18801 + Related Id(s): [PR-7739] + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the [`cover`] tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + [`line_coverage`] option. + + To enable native coverage in the runtime system, start it like so: + + ```text + $ erl +JPcover true + ``` + + There are also the following new functions for supporting native coverage: + + - `code:coverage_support/0` + - `code:get_coverage/2` + - `code:reset_coverage/1` + - `code:get_coverage_mode/0` + - `code:get_coverage_mode/1` + - `code:set_coverage_mode/1` + + Own Id: OTP-18856 + Related Id(s): [PR-7856] + + \*\*\* HIGHLIGHT \*\*\* + +- [EEP-59 - Documentation Attributes] has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of [EEP-48]. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): [PR-7936] + + \*\*\* HIGHLIGHT \*\*\* + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + ```erlang + -compile([nowarn_missing_spec]). + ``` + + and the compiler is invoked like so: + + ```text + % erlc +warn_missing_spec some_module.erl + ``` + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Related Id(s): [GH-6979], [PR-8093] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + ```erlang + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + ``` + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): [PR-8090] + + \*\*\* HIGHLIGHT \*\*\* + +- Improved the match context reuse optimization slightly, allowing match + contexts to be passed as-is to `bit_size/1` and `byte_size/1`. + + Own Id: OTP-18987 + +- `m:erl_lint` (and by extension the [`compiler`]) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): [PR-8205] + +> #### Full runtime dependencies of compiler-8.5 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which + were marked as deprecated since OTP 25. + + Own Id: OTP-18973 + +- Add support for sm3 hash and hmac. + + Own Id: OTP-18975 + Related Id(s): [PR-6658] + +- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread + specific data. + + Own Id: OTP-18978 + Related Id(s): [PR-7809] + +- Add SM4 block cipher implemented according to GB/T 32907-2016. + + Own Id: OTP-19005 + Related Id(s): [PR-8168] + +> #### Full runtime dependencies of crypto-5.5 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# debugger-5.4 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): [PR-7441] + +## Improvements and New Features + +- Type specs have been added to all API functions. + + Own Id: OTP-18819 + Related Id(s): [PR-7781] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of debugger-5.4 +> +> compiler-8.0, erts-14.3, kernel-8.0, stdlib-3.15, wx-2.0 + +# dialyzer-5.2 + +## Improvements and New Features + +- The `--gui` option for Dialyzer has been removed. + + Own Id: OTP-18667 + Related Id(s): [PR-7443] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of dialyzer-5.2 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.4 + +## Improvements and New Features + +- `-callback` attributes have been added to [`diameter_app`] and + [`diameter_transport`]. + + Own Id: OTP-18783 + Related Id(s): [PR-7699] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of diameter-2.4 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.3 + +## Fixed Bugs and Malfunctions + +- [EEP 48] doc chunks now properly include links within `{@type }` macros. + + Own Id: OTP-18945 + Related Id(s): [PR-8063] + +- `@hidden` now means `hidden` in [EEP 48] doc chunks instead of `none`. + + Own Id: OTP-18946 + Related Id(s): [PR-8063] + +## Improvements and New Features + +- There is a new `edoc_html_to_markdown` module that can be used to convert + EEP-48 `application/html+erlang` to Markdown. + + Own Id: OTP-18947 + Related Id(s): [PR-8063] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of edoc-1.3 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.13 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of eldap-1.2.13 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.5.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-14.3 + +## Fixed Bugs and Malfunctions + +- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or + `-args_file` have been fixed. + + Own Id: OTP-18766 + Related Id(s): [PR-7639] + +- Fixed a bug that prevented the emulator from building on recent versions of + Yocto Linux. + + Own Id: OTP-18918 + Related Id(s): [PR-7952] + +- Fix spectre mitigation configure test to work with GCC patches to always add + `-fcf-protection=full`. + + Own Id: OTP-18928 + Related Id(s): [PR-8006] + +- Fix faulty reduction counting in exiting process which could cause it to do + unnecessary yielding. + + Own Id: OTP-19014 + +## Improvements and New Features + +- Refactored how the JIT handles POSIX signals and how they affect thread + stacks, allowing us to use the native stack register for Erlang stacks on more + platforms. + + Notably, containers built on 64-bit x86 Alpine Linux images will now perform + much better in sequential code. As an example, running `dialyzer` over the OTP + code base finishes about 15% quicker. + + Own Id: OTP-18568 + Related Id(s): [PR-7174] + +- The [`instrument`] module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): [PR-7236] + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Related Id(s): [PR-7274] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Related Id(s): [PR-7348] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- A binary returned from the [`socket`] receive functions is no longer created + as a sub binary of an often large receive buffer binary (socket option + `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement + reallocation efficiently. + + Own Id: OTP-18642 + Related Id(s): [GH-6152], [PR-7465] + +- The default process limit has been raised to `1048576` processes. + + Own Id: OTP-18699 + Related Id(s): [PR-7388] + +- The `erlang:system_monitor/2` functionality is now able to monitor long + message queues in the system. + + Own Id: OTP-18709 + Related Id(s): [PR-7651] + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Related Id(s): [PR-7470] + + \*\*\* HIGHLIGHT \*\*\* + +- When implementing an alternative carrier for the Erlang distribution, a + separate input handler process may now be registered, using + `erlang:dist_ctrl_input_handler/2`, also in the case when the distribution + controller is a port. + + Own Id: OTP-18774 + Related Id(s): [PR-7110] + +- The call stack trace has now been added to the error reported by + `erlang:process_flag/2` when `max_heap_size` limit has been exceeded. + + Own Id: OTP-18779 + Related Id(s): [PR-7592] + +- `-callback` attributes have been added to [`erl_tracer`]. + + Own Id: OTP-18794 + Related Id(s): [PR-7703] + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N`, has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- Socket options that take string now also accept binaries. + + Own Id: OTP-18849 + Related Id(s): [PR-6510] + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the [`cover`] tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + [`line_coverage`] option. + + To enable native coverage in the runtime system, start it like so: + + ```text + $ erl +JPcover true + ``` + + There are also the following new functions for supporting native coverage: + + - `code:coverage_support/0` + - `code:get_coverage/2` + - `code:reset_coverage/1` + - `code:get_coverage_mode/0` + - `code:get_coverage_mode/1` + - `code:set_coverage_mode/1` + + Own Id: OTP-18856 + Related Id(s): [PR-7856] + + \*\*\* HIGHLIGHT \*\*\* + +- Changed the default value of the command line flag `-code_path_choice Choice` + to `strict`. + + Own Id: OTP-18894 + Related Id(s): [PR-7243] + +- Added module loading to `erl -init_debug` printouts. + + Own Id: OTP-18929 + Related Id(s): [PR-8004] + +- When the runtime system halts, it performs various flush operations before + terminating. By default there is no limit on how much time the flush + operations are allowed to take. A new _halt flush timeout_ functionality has + been introduced which can be used for limiting the amount of time that the + flushing operations are allowed to take. For more information see the + documentation of the [`flush_timeout`] option of the `erlang:halt/2` BIF and + the documentation of the `erl` [`+zhft <Timeout>`] command line flag. + + Own Id: OTP-18938 + Related Id(s): [GH-7438], [PR-8035] + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): [PR-7981] + +- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d + + Own Id: OTP-18942 + +- The deprecated functions in [`zlib`] have been removed. That includes + `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and + the Adler checksum functions. + + Own Id: OTP-18950 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + ```erlang + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + ``` + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): [PR-8090] + + \*\*\* HIGHLIGHT \*\*\* + +- The obsolete and undocumented support for opening a port to an external + resource by passing an atom (or a string) as first argument to `open_port()`, + implemented by the vanilla driver, has been removed. This feature has been + scheduled for removal in OTP 27 since the release of OTP 26. + + Own Id: OTP-18976 + Related Id(s): [PR-7125] + +- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all + scheduler threads when a NIF library is unloaded. Used for releasing thread + specific data. Can be set with function `enif_set_option`. + + Own Id: OTP-18977 + Related Id(s): [PR-7809] + +- Multiple trace sessions. + + Own Id: OTP-18980 + \*\*\* HIGHLIGHT \*\*\* + +- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use + "large pages" (sometimes known as "huge pages" or "super pages"). This + currently only affects super-carrier allocations, but may be extended in the + future. + + Own Id: OTP-18984 + Related Id(s): [PR-7977] + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +> #### Full runtime dependencies of erts-14.3 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): [PR-7441] + +- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of et-1.7.1 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.9.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of eunit-2.9.1 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.2 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of ftp-1.2.2 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.2 + +## Improvements and New Features + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Related Id(s): [PR-7316] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The `httpd` module has been extended with an API for simple serving directory + content over HTTP. With this change, the current working directory can be + served like this: + + ``` + erl -S httpd + ``` + + An arbitrary directory can be served like this: + + ``` + erl -S httpd serve path/to/dir + ``` + + Own Id: OTP-18727 + Related Id(s): [PR-7299] + +- Add `-callback` attributes to [`httpd`], [`mod_esi`] and [`mod_security`]. + + Own Id: OTP-18786 + Related Id(s): [PR-7700] + +- Use a relative redirect with an absolute path to prevent whoever is running + inets from having to configure the ServerName to match the network-reachable + hostname of the server. + + Own Id: OTP-18809 + +- `inets` processes now use `proc_lib:set_label/1` to improve observeability. + + Own Id: OTP-18927 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- The implementations of `http_uri:encode/1` and `http_uri:decode/1` are now + replaced with their equivalent, but bug free versions from module + [`uri_string`], namely `uri_string:quote/1` and `uri_string:unquote/1`. + + Own Id: OTP-19022 + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +> #### Full runtime dependencies of inets-9.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.14.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +# kernel-9.3 + +## Fixed Bugs and Malfunctions + +- Fixed a crash when calling `file:delete/2` with an empty option list. + + Own Id: OTP-18590 + Related Id(s): [PR-7220] + +- New functions have been added to the undocumented module [`inet_dns`] that + take a flag to specify if encode/decode is for mDNS. This affects how CLASS + values in the private range, with the top bit set, are handled. + + Own Id: OTP-18878 + Related Id(s): [GH-7718], OTP-17734 + +- The error information for `erlang:phash/2` has been corrected. + + Own Id: OTP-18904 + Related Id(s): [PR-7960] + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): [GH-4992], [PR-7993] + +- Calling `logger:add_handlers/1` with config option now works. + + Own Id: OTP-18954 + Related Id(s): [GH-8061], [PR-8076] + +- The `code:del_path/1` function now also works on paths added through `-pa`, + `-pz` , `-path` and the boot script. + + Own Id: OTP-18959 + Related Id(s): [GH-6692], [PR-7697] + +## Improvements and New Features + +- Added `file:read_file/2` with a `raw` option for reading files without going + through the file server. + + Own Id: OTP-18589 + Related Id(s): [PR-7220] + +- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has + been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some + bug fixes and code cleanup has been done, and the resolver used in the test + suite has been changed to Knot DNS. See the source code. + + Kudos to Alexander Clouter that did almost all the work! + + Own Id: OTP-18713 + Related Id(s): [GH-6985], [PR-6985] + +- The `ebin` directories for escripts are now cached. + + Own Id: OTP-18778 + Related Id(s): [PR-7556] + +- `-callback` attributes haven been added to [`application`], + [`logger_handler`], and [`logger_formatter`]. + + Own Id: OTP-18795 + Related Id(s): [PR-7703] + +- Progress reports from before logger is started are now logged when log level + is set to debug. + + Own Id: OTP-18807 + Related Id(s): ERIERL-985, [PR-7732] + +- The `code:where_is_file/2` and `code:which/1` functions now check for + existence of the file directly instead of listing the content of each + directory in the code path. + + Own Id: OTP-18816 + Related Id(s): [PR-7711] + +- Type specs has been added to the [`logger:Level/1,2,3`] functions. + + Own Id: OTP-18820 + Related Id(s): [PR-7779] + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N`, has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): [PR-7845] + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the [`cover`] tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + [`line_coverage`] option. + + To enable native coverage in the runtime system, start it like so: + + ```text + $ erl +JPcover true + ``` + + There are also the following new functions for supporting native coverage: + + - `code:coverage_support/0` + - `code:get_coverage/2` + - `code:reset_coverage/1` + - `code:get_coverage_mode/0` + - `code:get_coverage_mode/1` + - `code:set_coverage_mode/1` + + Own Id: OTP-18856 + Related Id(s): [PR-7856] + + \*\*\* HIGHLIGHT \*\*\* + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): [PR-7981] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Application startup has been optimized by removing an intermediary process. + + Own Id: OTP-18963 + Related Id(s): [PR-8042] + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function `code:lib_dir/2`, the `-code_path_choice` + flag, and using [`erl_prim_loader`] for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use `escript:extract/2` + instead of `erl_prim_loader` and `code:lib_dir/2`. + + Own Id: OTP-18966 + Related Id(s): [PR-8091] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The undocumented and deprecated `file:pid2name` function has been removed. + + Own Id: OTP-18967 + Related Id(s): [PR-8092] + +- Improve error logging when the standard_io reader and/or writer terminate with + an error. + + Own Id: OTP-18989 + Related Id(s): [PR-8103] + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +> #### Full runtime dependencies of kernel-9.3 +> +> crypto-5.0, erts-14.3, sasl-3.0, stdlib-6.0 + +# megaco-4.6 + +## Improvements and New Features + +- `-callback` attributes have been added to [`megaco_transport`]. + + Own Id: OTP-18806 + Related Id(s): [PR-7740] + +- Updated types and specs for all API modules. + + Own Id: OTP-18920 + Related Id(s): BL-322 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of megaco-4.6 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.23.1 + +## Fixed Bugs and Malfunctions + +- The `mnesia_registry` module have been deprecated. + + Own Id: OTP-18994 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of mnesia-4.23.1 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.16 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): [PR-7441] + +## Improvements and New Features + +- The new function `proc_lib:set_label/1` can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, [`observer`], and it will be included in crash reports + produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and + [`gen_fsm`]. + + The label for a process can be retrieved by calling `proc_lib:get_label/1`. + + Note that those functions work on any process, not only processes that use + [`proc_lib`]. + + Example: + + ```text + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + ``` + + Own Id: OTP-18789 + Related Id(s): [PR-7720], [PR-8003] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of observer-2.16 +> +> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + +# odbc-2.14.3 + +## Fixed Bugs and Malfunctions + +- Change liborder in makefile to avoid finding system libei instead of erlang + libei. + + Own Id: OTP-19030 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of odbc-2.14.3 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.10 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of os_mon-2.10 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.6 + +## Improvements and New Features + +- The `leex` documentation has been updated to use specs for documenting the + generated interface. + + Own Id: OTP-18796 + Related Id(s): [PR-7703] + +- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl` + source file. + + Own Id: OTP-18912 + Related Id(s): [PR-7963] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of parsetools-2.6 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.16 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- Improved exception reason when `public_key:cacerts_get/0` failed. + + Own Id: OTP-18609 + Related Id(s): [GH-7295], [PR-7202] + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): [PR-7475], [PR-7898] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of public_key-1.16 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# reltool-1.0.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): [PR-7441] + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of reltool-1.0.1 +> +> erts-14.3, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.1 + +## Improvements and New Features + +- The [`instrument`] module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): [PR-7236] + +- The new function `proc_lib:set_label/1` can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, [`observer`], and it will be included in crash reports + produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and + [`gen_fsm`]. + + The label for a process can be retrieved by calling `proc_lib:get_label/1`. + + Note that those functions work on any process, not only processes that use + [`proc_lib`]. + + Example: + + ```text + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + ``` + + Own Id: OTP-18789 + Related Id(s): [PR-7720], [PR-8003] + +- Type specs had been added to all [`dbg`] functions. + + Own Id: OTP-18859 + Related Id(s): [PR-7782] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of runtime_tools-2.1 +> +> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0 + +# sasl-4.2.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of sasl-4.2.2 +> +> erts-14.3, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.16 + +## Improvements and New Features + +- `-callback` attributes have been added to modules + [`snmpa_network_interface_filter`], [`snmpa_notification_filter`], + [`snmpm_network_interface_filter`], [`snmpm_user`], and + [`snmpa_notification_delivery_info_receiver`]. + + New `-type` attributes have also been added to modules [`snmp`], [`snmpa`], + [`snmpm`], and [`snmpa_conf`] to support the previously mentioned callbacks. + + Own Id: OTP-18785 + Related Id(s): [PR-7702] + +- Updated types and specs for all API modules. + + Own Id: OTP-18934 + Related Id(s): BL-312 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of snmp-5.16 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2 + +## Fixed Bugs and Malfunctions + +- With this change, ssh processes are assigned labels for troubleshooting + purposes. + + Own Id: OTP-19017 + +## Improvements and New Features + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): [PR-7845] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Updated types and specs for all API modules. + + Own Id: OTP-18961 + +> #### Full runtime dependencies of ssh-5.2 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2 + +## Fixed Bugs and Malfunctions + +- Starting a TLS server without sufficient credentials (certificate or anonymous + cipher) would work, but it was impossible to connect to it. + + This has been corrected to return an error instead of starting the server. + + Own Id: OTP-18887 + Related Id(s): [GH-7493], [PR-7918] + +- Handle ASN.1 decode errors in more places, to improve user error handling. + + Own Id: OTP-18969 + Related Id(s): [GH-8058] + +- Improved error checking on the API functions. + + Own Id: OTP-18992 + Related Id(s): [GH-8066], [PR-8156] + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- Memory consumption has been reduced and performance increased by refactoring + internal data structures and their usage. + + Own Id: OTP-18665 + Related Id(s): [PR-7447] + +- Added `ssl_crl_cache_api:lookup/2` as an optional `-callback` attribute. + + Own Id: OTP-18788 + Related Id(s): [PR-7700] + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): [PR-7475], [PR-7898] + +- The `proc_lib:set_label/1` function is now used to increase observability of + `ssl` processes. + + Own Id: OTP-18879 + +- Add support for brainpool elliptic curves in TLS-1.3. + + Own Id: OTP-18884 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Make ssl:key_exporter_materials/4 a documented and supported API function. + + Own Id: OTP-19016 + +- For security reasons remove CBC ciphers form default supported cipher suites + in TLS-1.2 + + Own Id: OTP-19025 + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- Add cert_policy_opts option to configure certificate policy options for the + certificate path validation. + + Own Id: OTP-19027 + +> #### Full runtime dependencies of ssl-11.2 +> +> crypto-5.0, erts-14.3, inets-5.10.7, kernel-9.0, public_key-1.15, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.0 + +## Fixed Bugs and Malfunctions + +- The specs in module [`binary`] has been updated to reflect what is allowed by + the documentation. + + Own Id: OTP-18684 + Related Id(s): [PR-7481] + +- Several functions in the [`binary`] module would accept arguments of the wrong + type under certain circumstances. In this release, they now raise an exception + when incorrect types are given. + + The following functions would accept an invalid pattern if the subject binary + was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`, + `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3` + + The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of + raising an exception. Similarly, calls to `binary:part/2,3` attempting to + extract 0 bytes at position 0 of a bitstring would return an empty binary + instead of raising an exception. + + Own Id: OTP-18743 + Related Id(s): [PR-7607], [PR-7628] + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): [GH-7706], [PR-7726] + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): [GH-4992], [PR-7993] + +- Enhance simple_one_for_one error handling. Avoid crash of transient child + returning ignore for init-function. Also disallow automatic shutdown as it + does not make sense for this supervisor type, may potentially be backwards + incompatible for no intended uses, that is supervisors will not remain + bug-compatible. + + Own Id: OTP-19029 + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +## Improvements and New Features + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules [`sets`], [`ordsets`], and [`gb_sets`]. + + Own Id: OTP-18622 + Related Id(s): [GH-7183], [GH-7232] + + \*\*\* HIGHLIGHT \*\*\* + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + ```erlang + a() -> ok; + a(_) -> error. + ``` + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + ```text + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + ``` + + while in Erlang/OTP 27 the diagnostic is similar to: + + ```text + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + ``` + + Own Id: OTP-18648 + Related Id(s): [PR-7383] + + \*\*\* HIGHLIGHT \*\*\* + +- `zip:create/2,3` will now tolerate POSIX timestamps in the provided + `file_info` records. + + Own Id: OTP-18668 + +- The callback function `gen_statem:handle_event/4` has been cached in the + `gen_statem` engine to optimize callback call speed. + + Own Id: OTP-18671 + Related Id(s): [PR-7419] + +- The type `beam_lib:beam/0` is now exported. + + Own Id: OTP-18716 + Related Id(s): [PR-7534] + +- The documentation for the [`binary`] module has been improved. + + Own Id: OTP-18741 + Related Id(s): [PR-7585] + +- `binary:replace/3,4` now supports using a fun for supplying the replacement + binary. + + Own Id: OTP-18742 + Related Id(s): [PR-7590] + +- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the + Reference Manual. + + Example: + + ```erlang + 1> """ + a + b + c + """. + "a\nb\nc" + ``` + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + ```text + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + ``` + + Own Id: OTP-18750 + Related Id(s): [PR-7313], [PR-7451], OTP-18746 + + \*\*\* HIGHLIGHT \*\*\* + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- The new function `proc_lib:set_label/1` can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, [`observer`], and it will be included in crash reports + produced by processes using [`gen_server`], [`gen_statem`], [`gen_event`], and + [`gen_fsm`]. + + The label for a process can be retrieved by calling `proc_lib:get_label/1`. + + Note that those functions work on any process, not only processes that use + [`proc_lib`]. + + Example: + + ```text + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + ``` + + Own Id: OTP-18789 + Related Id(s): [PR-7720], [PR-8003] + +- `-callback` attributes has been added to modules [`sys`] and [`erl_error`]. + + Own Id: OTP-18793 + Related Id(s): [PR-7703] + +- Several new functions that accept funs have been added to module [`timer`]. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Related Id(s): [PR-7649] + + \*\*\* HIGHLIGHT \*\*\* + +- Sigils on string literals have been implemented as per [EEP 66], that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + ```erlang + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + ``` + + Own Id: OTP-18825 + Related Id(s): [PR-7684], OTP-18750 + + \*\*\* HIGHLIGHT \*\*\* + +- Functions `shell:default_multiline_prompt/1`, `shell:inverted_space_prompt/1`, + and `shell:prompt_width/1` have been exported to help with custom prompt + implementations. + + Own Id: OTP-18834 + Related Id(s): [PR-7675], [PR-7816] + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): [PR-7845] + +- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function + directly before the cursor. + + Own Id: OTP-18847 + Related Id(s): [PR-7846] + +- Added support for adding a custom code formatter that formats your multi-line + shell commands in your preferred formatting on submission. See + `shell:format_shell_func/` and `shell:erl_pp_format_func/1`. + + Own Id: OTP-18848 + Related Id(s): [PR-7847] + +- Added shell functions for viewing, forgetting and saving locally defined + functions, types and records. + + Own Id: OTP-18852 + Related Id(s): [PR-7844] + +- Added `string:jaro_similarity/2`, which can be used to calculate the + similarity between two strings. + + Own Id: OTP-18865 + Related Id(s): [PR-7879] + +- The new function `ets:update_element/4` is similar to `ets:update_element/3`, + but takes a default tuple as the fourth argument, which will be inserted if no + previous record with that key exists. + + Own Id: OTP-18870 + Related Id(s): [PR-7857] + +- Added functions to retrieve the next higher or lower key/element from + [`gb_trees`] and [`gb_sets`], as well as returning iterators that start at + given keys/elements. + + Own Id: OTP-18874 + Related Id(s): [PR-7745] + +- When the shell built-in function [`c/1,2`][c12] is used to re-compile a + module, the current working directory of the original compilation is now added + to the include path. + + [c12]: `\c:c/1` + + Own Id: OTP-18908 + Related Id(s): [PR-7957] + +- The `timer` module now uses a private table for its internal state, slightly + improving its performance. + + Own Id: OTP-18914 + Related Id(s): [PR-7973] + +- [EEP-59 - Documentation Attributes] has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of [EEP-48]. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): [PR-7936] + + \*\*\* HIGHLIGHT \*\*\* + +- New [`ets`] functions `ets:first_lookup/1`, `ets:next_lookup/2`, + `ets:prev_lookup/2` and `ets:last_lookup/1`. Example: `ets:next_lookup/1` is + equivalent to `ets:next/2` followed by `ets:lookup/2` with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Related Id(s): [PR-6791] + + \*\*\* HIGHLIGHT \*\*\* + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + ```erlang + -feature(maybe_expr, disable). + ``` + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + ```text + erlc -disable-feature maybe_expr some_file.erl + ``` + + Own Id: OTP-18944 + Related Id(s): [PR-8067] + + \*\*\* HIGHLIGHT \*\*\* + +- The compiler will now raise a warning when updating record/map literals. As an + example, consider this module: + + ```erlang + -module(t). + -export([f/0]). + -record(r, {a,b,c}). + + f() -> + #r{a=1}#r{b=2}. + ``` + + The compiler raises the following warning: + + ```text + 1> c(t). + t.erl:6:12: Warning: expression updates a literal + % 6| #r{a=1}#r{b=2}. + % | ^ + ``` + + Own Id: OTP-18951 + Related Id(s): [PR-8069] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made + them immune against table renaming. + + Own Id: OTP-18993 + Related Id(s): [PR-8048] + +- Windows now supports all functions in [`math`]. + + Own Id: OTP-19001 + Related Id(s): [PR-8164] + +- `m:erl_lint` (and by extension the [`compiler`]) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): [PR-8205] + +- There is a new module [`json`] for encoding and decoding [JSON]. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Related Id(s): [PR-8111] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of stdlib-6.0 +> +> compiler-5.0, crypto-4.5, erts-14.3, kernel-9.3, sasl-3.0 + +# syntax_tools-3.2 + +## Fixed Bugs and Malfunctions + +- The [`epp_dodger`] module can now handle the `maybe` and `else` keywords. + + Own Id: OTP-18608 + Related Id(s): [GH-7266], [PR-7267] + +- Reverting a `#wrapper` will no longer throw away changes made to + positions/annotations. + + Own Id: OTP-18805 + Related Id(s): [PR-7398] + +## Improvements and New Features + +- The type `erl_syntax:annotation_or_location/0` is now exported. + + Own Id: OTP-18715 + Related Id(s): [PR-7535] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of syntax_tools-3.2 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# tftp-1.2 + +## Improvements and New Features + +- There is a new [`tftp_logger`] callback behavior module. + + Own Id: OTP-18787 + Related Id(s): [PR-7700] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of tftp-1.2 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.0 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in [`dbg`] have been eliminated. + + Own Id: OTP-18860 + +- In Erlang/OTP 26, doing a [`cover`] analysis on the `line` level would return + multiple entries for lines on which multiple functions were defined. + + For example, consider this module: + + -module(foo). + -export([bar/0, baz/0]). + + bar() -> ok. baz() -> not_ok. + + In Erlang/OTP 26, analysing on the `line` level would return two entries for + line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,[{{foo,4},{1,0}},{{foo,4},{0,1}}]} + 4> cover:analyse(foo, calls, line). + {ok,[{{foo,4},1},{{foo,4},0}]} + + In Erlang/OTP 27, there will only be a single entry for line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,[{{foo,4},{1,0}}]} + 4> cover:analyse(foo, calls, line). + {ok,[{{foo,4},1}]} + + Own Id: OTP-18998 + Related Id(s): [GH-8159], [PR-8182] + +- Fixed align command in emacs mode. + + Own Id: OTP-19026 + Related Id(s): [PR-8155] + +## Improvements and New Features + +- Triple-Quoted Strings has been implemented as per [EEP 64]. See String in the + Reference Manual. + + Example: + + ```erlang + 1> """ + a + b + c + """. + "a\nb\nc" + ``` + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + ```text + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + ``` + + Own Id: OTP-18750 + Related Id(s): [PR-7313], [PR-7451], OTP-18746 + + \*\*\* HIGHLIGHT \*\*\* + + \*\*\* POTENTIAL INCOMPATIBILITY \*\*\* + +- There is a new tool [`tprof`], which combines the functionality of [`eprof`] + and [`cprof`] under one interface. It also adds heap profiling. + + Own Id: OTP-18756 + Related Id(s): [PR-6639] + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the [`cover`] tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + [`line_coverage`] option. + + To enable native coverage in the runtime system, start it like so: + + ```text + $ erl +JPcover true + ``` + + There are also the following new functions for supporting native coverage: + + - `code:coverage_support/0` + - `code:get_coverage/2` + - `code:reset_coverage/1` + - `code:get_coverage_mode/0` + - `code:get_coverage_mode/1` + - `code:set_coverage_mode/1` + + Own Id: OTP-18856 + Related Id(s): [PR-7856] + + \*\*\* HIGHLIGHT \*\*\* + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of tools-4.0 +> +> compiler-8.5, erts-14.3, erts-14.3, kernel-9.3, runtime_tools-2.1, stdlib-6.0 + +# wx-2.4.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of wx-2.4.2 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-1.4 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that + provides out-of-the box indented output has been added. + + Own Id: OTP-18922 + Related Id(s): [PR-7942] + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): [PR-8026] + + \*\*\* HIGHLIGHT \*\*\* + +> #### Full runtime dependencies of xmerl-1.4 +> +> erts-6.0, kernel-3.0, stdlib-2.5 + +[CTH Execution Order]: + https://erlang.org/doc/apps/common_test/ct_hooks_chapter.html#cth_execution_order +[EEP 48]: https://www.erlang.org/eeps/eep-0048 +[EEP 64]: https://www.erlang.org/eeps/eep-0064 +[EEP 66]: https://www.erlang.org/eeps/eep-0066 +[EEP-48]: https://www.erlang.org/eeps/eep-0048 +[EEP-59 - Documentation Attributes]: https://www.erlang.org/eeps/eep-0059 +[GH-4992]: https://github.com/erlang/otp/issues/4992 +[GH-6152]: https://github.com/erlang/otp/issues/6152 +[GH-6692]: https://github.com/erlang/otp/issues/6692 +[GH-6979]: https://github.com/erlang/otp/issues/6979 +[GH-6985]: https://github.com/erlang/otp/issues/6985 +[GH-7183]: https://github.com/erlang/otp/issues/7183 +[GH-7232]: https://github.com/erlang/otp/issues/7232 +[GH-7266]: https://github.com/erlang/otp/issues/7266 +[GH-7295]: https://github.com/erlang/otp/issues/7295 +[GH-7397]: https://github.com/erlang/otp/issues/7397 +[GH-7432]: https://github.com/erlang/otp/issues/7432 +[GH-7438]: https://github.com/erlang/otp/issues/7438 +[GH-7493]: https://github.com/erlang/otp/issues/7493 +[GH-7494]: https://github.com/erlang/otp/issues/7494 +[GH-7706]: https://github.com/erlang/otp/issues/7706 +[GH-7718]: https://github.com/erlang/otp/issues/7718 +[GH-7972]: https://github.com/erlang/otp/issues/7972 +[GH-8058]: https://github.com/erlang/otp/issues/8058 +[GH-8061]: https://github.com/erlang/otp/issues/8061 +[GH-8066]: https://github.com/erlang/otp/issues/8066 +[GH-8159]: https://github.com/erlang/otp/issues/8159 +[GH-8166]: https://github.com/erlang/otp/issues/8166 +[JSON]: https://en.wikipedia.org/wiki/JSON +[PR-6510]: https://github.com/erlang/otp/pull/6510 +[PR-6639]: https://github.com/erlang/otp/pull/6639 +[PR-6658]: https://github.com/erlang/otp/pull/6658 +[PR-6791]: https://github.com/erlang/otp/pull/6791 +[PR-6985]: https://github.com/erlang/otp/pull/6985 +[PR-7110]: https://github.com/erlang/otp/pull/7110 +[PR-7125]: https://github.com/erlang/otp/pull/7125 +[PR-7174]: https://github.com/erlang/otp/pull/7174 +[PR-7202]: https://github.com/erlang/otp/pull/7202 +[PR-7220]: https://github.com/erlang/otp/pull/7220 +[PR-7236]: https://github.com/erlang/otp/pull/7236 +[PR-7243]: https://github.com/erlang/otp/pull/7243 +[PR-7267]: https://github.com/erlang/otp/pull/7267 +[PR-7274]: https://github.com/erlang/otp/pull/7274 +[PR-7299]: https://github.com/erlang/otp/pull/7299 +[PR-7313]: https://github.com/erlang/otp/pull/7313 +[PR-7316]: https://github.com/erlang/otp/pull/7316 +[PR-7348]: https://github.com/erlang/otp/pull/7348 +[PR-7380]: https://github.com/erlang/otp/pull/7380 +[PR-7383]: https://github.com/erlang/otp/pull/7383 +[PR-7388]: https://github.com/erlang/otp/pull/7388 +[PR-7398]: https://github.com/erlang/otp/pull/7398 +[PR-7419]: https://github.com/erlang/otp/pull/7419 +[PR-7428]: https://github.com/erlang/otp/pull/7428 +[PR-7441]: https://github.com/erlang/otp/pull/7441 +[PR-7443]: https://github.com/erlang/otp/pull/7443 +[PR-7447]: https://github.com/erlang/otp/pull/7447 +[PR-7451]: https://github.com/erlang/otp/pull/7451 +[PR-7465]: https://github.com/erlang/otp/pull/7465 +[PR-7470]: https://github.com/erlang/otp/pull/7470 +[PR-7474]: https://github.com/erlang/otp/pull/7474 +[PR-7475]: https://github.com/erlang/otp/pull/7475 +[PR-7481]: https://github.com/erlang/otp/pull/7481 +[PR-7491]: https://github.com/erlang/otp/pull/7491 +[PR-7496]: https://github.com/erlang/otp/pull/7496 +[PR-7528]: https://github.com/erlang/otp/pull/7528 +[PR-7534]: https://github.com/erlang/otp/pull/7534 +[PR-7535]: https://github.com/erlang/otp/pull/7535 +[PR-7538]: https://github.com/erlang/otp/pull/7538 +[PR-7556]: https://github.com/erlang/otp/pull/7556 +[PR-7585]: https://github.com/erlang/otp/pull/7585 +[PR-7590]: https://github.com/erlang/otp/pull/7590 +[PR-7592]: https://github.com/erlang/otp/pull/7592 +[PR-7607]: https://github.com/erlang/otp/pull/7607 +[PR-7628]: https://github.com/erlang/otp/pull/7628 +[PR-7639]: https://github.com/erlang/otp/pull/7639 +[PR-7649]: https://github.com/erlang/otp/pull/7649 +[PR-7651]: https://github.com/erlang/otp/pull/7651 +[PR-7675]: https://github.com/erlang/otp/pull/7675 +[PR-7684]: https://github.com/erlang/otp/pull/7684 +[PR-7697]: https://github.com/erlang/otp/pull/7697 +[PR-7699]: https://github.com/erlang/otp/pull/7699 +[PR-7700]: https://github.com/erlang/otp/pull/7700 +[PR-7701]: https://github.com/erlang/otp/pull/7701 +[PR-7702]: https://github.com/erlang/otp/pull/7702 +[PR-7703]: https://github.com/erlang/otp/pull/7703 +[PR-7711]: https://github.com/erlang/otp/pull/7711 +[PR-7720]: https://github.com/erlang/otp/pull/7720 +[PR-7726]: https://github.com/erlang/otp/pull/7726 +[PR-7728]: https://github.com/erlang/otp/pull/7728 +[PR-7732]: https://github.com/erlang/otp/pull/7732 +[PR-7738]: https://github.com/erlang/otp/pull/7738 +[PR-7739]: https://github.com/erlang/otp/pull/7739 +[PR-7740]: https://github.com/erlang/otp/pull/7740 +[PR-7745]: https://github.com/erlang/otp/pull/7745 +[PR-7779]: https://github.com/erlang/otp/pull/7779 +[PR-7781]: https://github.com/erlang/otp/pull/7781 +[PR-7782]: https://github.com/erlang/otp/pull/7782 +[PR-7790]: https://github.com/erlang/otp/pull/7790 +[PR-7809]: https://github.com/erlang/otp/pull/7809 +[PR-7816]: https://github.com/erlang/otp/pull/7816 +[PR-7824]: https://github.com/erlang/otp/pull/7824 +[PR-7844]: https://github.com/erlang/otp/pull/7844 +[PR-7845]: https://github.com/erlang/otp/pull/7845 +[PR-7846]: https://github.com/erlang/otp/pull/7846 +[PR-7847]: https://github.com/erlang/otp/pull/7847 +[PR-7856]: https://github.com/erlang/otp/pull/7856 +[PR-7857]: https://github.com/erlang/otp/pull/7857 +[PR-7869]: https://github.com/erlang/otp/pull/7869 +[PR-7879]: https://github.com/erlang/otp/pull/7879 +[PR-7891]: https://github.com/erlang/otp/pull/7891 +[PR-7898]: https://github.com/erlang/otp/pull/7898 +[PR-7917]: https://github.com/erlang/otp/pull/7917 +[PR-7918]: https://github.com/erlang/otp/pull/7918 +[PR-7936]: https://github.com/erlang/otp/pull/7936 +[PR-7942]: https://github.com/erlang/otp/pull/7942 +[PR-7952]: https://github.com/erlang/otp/pull/7952 +[PR-7957]: https://github.com/erlang/otp/pull/7957 +[PR-7960]: https://github.com/erlang/otp/pull/7960 +[PR-7963]: https://github.com/erlang/otp/pull/7963 +[PR-7973]: https://github.com/erlang/otp/pull/7973 +[PR-7977]: https://github.com/erlang/otp/pull/7977 +[PR-7981]: https://github.com/erlang/otp/pull/7981 +[PR-7993]: https://github.com/erlang/otp/pull/7993 +[PR-8003]: https://github.com/erlang/otp/pull/8003 +[PR-8004]: https://github.com/erlang/otp/pull/8004 +[PR-8006]: https://github.com/erlang/otp/pull/8006 +[PR-8026]: https://github.com/erlang/otp/pull/8026 +[PR-8035]: https://github.com/erlang/otp/pull/8035 +[PR-8042]: https://github.com/erlang/otp/pull/8042 +[PR-8048]: https://github.com/erlang/otp/pull/8048 +[PR-8063]: https://github.com/erlang/otp/pull/8063 +[PR-8067]: https://github.com/erlang/otp/pull/8067 +[PR-8069]: https://github.com/erlang/otp/pull/8069 +[PR-8076]: https://github.com/erlang/otp/pull/8076 +[PR-8086]: https://github.com/erlang/otp/pull/8086 +[PR-8090]: https://github.com/erlang/otp/pull/8090 +[PR-8091]: https://github.com/erlang/otp/pull/8091 +[PR-8092]: https://github.com/erlang/otp/pull/8092 +[PR-8093]: https://github.com/erlang/otp/pull/8093 +[PR-8095]: https://github.com/erlang/otp/pull/8095 +[PR-8103]: https://github.com/erlang/otp/pull/8103 +[PR-8111]: https://github.com/erlang/otp/pull/8111 +[PR-8112]: https://github.com/erlang/otp/pull/8112 +[PR-8155]: https://github.com/erlang/otp/pull/8155 +[PR-8156]: https://github.com/erlang/otp/pull/8156 +[PR-8164]: https://github.com/erlang/otp/pull/8164 +[PR-8168]: https://github.com/erlang/otp/pull/8168 +[PR-8177]: https://github.com/erlang/otp/pull/8177 +[PR-8182]: https://github.com/erlang/otp/pull/8182 +[PR-8205]: https://github.com/erlang/otp/pull/8205 +[PR-8241]: https://github.com/erlang/otp/pull/8241 +[`+zhft <Timeout>`]: erl_cmd.md#+zhft +[`application`]: https://erlang.org/doc/man/application +[`binary`]: https://erlang.org/doc/man/binary +[`compiler`]: https://erlang.org/doc/man/compile +[`cover`]: https://erlang.org/doc/man/cover +[`cprof`]: https://erlang.org/doc/man/cprof +[`ct_hooks`]: https://erlang.org/doc/man/ct_hooks +[`ct_property_test`]: https://erlang.org/doc/man/ct_property_test +[`ct_suite`]: https://erlang.org/doc/man/ct_suite +[`dbg`]: https://erlang.org/doc/man/dbg +[`diameter_app`]: https://erlang.org/doc/man/diameter_app +[`diameter_transport`]: https://erlang.org/doc/man/diameter_transport +[`epp_dodger`]: https://erlang.org/doc/man/epp_dodger +[`eprof`]: https://erlang.org/doc/man/eprof +[`erl_error`]: https://erlang.org/doc/man/erl_error +[`erl_prim_loader`]: https://erlang.org/doc/man/erl_prim_loader +[`erl_tracer`]: https://erlang.org/doc/man/erl_tracer +[`ets`]: https://erlang.org/doc/man/ets +[`flush_timeout`]: https://erlang.org/doc/man/erlang#halt_flush_timeout +[`gb_sets`]: https://erlang.org/doc/man/gb_sets +[`gb_trees`]: https://erlang.org/doc/man/gb_trees +[`gen_event`]: https://erlang.org/doc/man/gen_event +[`gen_fsm`]: https://erlang.org/doc/man/gen_fsm +[`gen_server`]: https://erlang.org/doc/man/gen_server +[`gen_statem`]: https://erlang.org/doc/man/gen_statem +[`httpd`]: https://erlang.org/doc/man/httpd +[`inet_dns`]: https://erlang.org/doc/man/inet_dns +[`instrument`]: https://erlang.org/doc/man/instrument +[`json`]: https://erlang.org/doc/man/json +[`line_coverage`]: https://erlang.org/doc/man/compile#line_coverage +[`logger:Level/1,2,3`]: https://erlang.org/doc/man/logger +[`logger_formatter`]: https://erlang.org/doc/man/logger_formatter +[`logger_handler`]: https://erlang.org/doc/man/logger_handler +[`math`]: https://erlang.org/doc/man/math +[`megaco_transport`]: https://erlang.org/doc/man/megaco_transport +[`mod_esi`]: https://erlang.org/doc/man/mod_esi +[`mod_security`]: https://erlang.org/doc/man/mod_security +[`observer`]: https://erlang.org/doc/man/observer +[`ordsets`]: https://erlang.org/doc/man/ordsets +[`proc_lib`]: https://erlang.org/doc/man/proc_lib +[`sets`]: https://erlang.org/doc/man/sets +[`snmp`]: https://erlang.org/doc/man/snmp +[`snmpa_conf`]: https://erlang.org/doc/man/snmpa_conf +[`snmpa_network_interface_filter`]: + https://erlang.org/doc/man/snmpa_network_interface_filter +[`snmpa_notification_delivery_info_receiver`]: + https://erlang.org/doc/man/snmpa_notification_delivery_info_receiver +[`snmpa_notification_filter`]: + https://erlang.org/doc/man/snmpa_notification_filter +[`snmpa`]: https://erlang.org/doc/man/snmpa +[`snmpm_network_interface_filter`]: + https://erlang.org/doc/man/snmpm_network_interface_filter +[`snmpm_user`]: https://erlang.org/doc/man/snmpm_user +[`snmpm`]: https://erlang.org/doc/man/snmpm +[`socket`]: https://erlang.org/doc/man/socket +[`sys`]: https://erlang.org/doc/man/sys +[`tftp_logger`]: https://erlang.org/doc/man/tftp_logger +[`timer`]: https://erlang.org/doc/man/timer +[`tprof`]: https://erlang.org/doc/man/tprof +[`uri_string`]: https://erlang.org/doc/man/uri_string +[`zlib`]: https://erlang.org/doc/man/zlib +[cth_log_redirect]: + https://erlang.org/doc/apps/common_test/ct_hooks_chapter.html#built-in-cths +[specialized decode feature]: https://erlang.org/doc/apps/asn1/asn1_spec.html diff --git a/release-notes/OTP-27.0-rc3.README.txt b/release-notes/OTP-27.0-rc3.README.txt new file mode 100644 index 0000000..42d2dec --- /dev/null +++ b/release-notes/OTP-27.0-rc3.README.txt @@ -0,0 +1,2836 @@ +Inital Release: OTP 27.0 +Git Tag: OTP-27.0 +Date: 2024-04-18 +Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589, + OTP-18590, OTP-18594, OTP-18606, OTP-18608, + OTP-18609, OTP-18622, OTP-18639, OTP-18641, + OTP-18642, OTP-18648, OTP-18658, OTP-18665, + OTP-18667, OTP-18668, OTP-18671, OTP-18673, + OTP-18680, OTP-18682, OTP-18684, OTP-18699, + OTP-18703, OTP-18709, OTP-18713, OTP-18714, + OTP-18715, OTP-18716, OTP-18717, OTP-18727, + OTP-18741, OTP-18742, OTP-18743, OTP-18744, + OTP-18750, OTP-18756, OTP-18761, OTP-18766, + OTP-18774, OTP-18778, OTP-18779, OTP-18781, + OTP-18783, OTP-18784, OTP-18785, OTP-18786, + OTP-18787, OTP-18788, OTP-18789, OTP-18793, + OTP-18794, OTP-18795, OTP-18796, OTP-18801, + OTP-18804, OTP-18805, OTP-18806, OTP-18807, + OTP-18808, OTP-18809, OTP-18813, OTP-18816, + OTP-18819, OTP-18820, OTP-18825, OTP-18831, + OTP-18834, OTP-18835, OTP-18845, OTP-18846, + OTP-18847, OTP-18848, OTP-18849, OTP-18852, + OTP-18856, OTP-18859, OTP-18860, OTP-18865, + OTP-18870, OTP-18874, OTP-18875, OTP-18876, + OTP-18878, OTP-18879, OTP-18881, OTP-18884, + OTP-18887, OTP-18892, OTP-18894, OTP-18898, + OTP-18904, OTP-18908, OTP-18912, OTP-18913, + OTP-18914, OTP-18916, OTP-18918, OTP-18920, + OTP-18922, OTP-18923, OTP-18927, OTP-18928, + OTP-18929, OTP-18930, OTP-18934, OTP-18938, + OTP-18941, OTP-18942, OTP-18943, OTP-18944, + OTP-18945, OTP-18946, OTP-18947, OTP-18950, + OTP-18951, OTP-18954, OTP-18955, OTP-18959, + OTP-18961, OTP-18963, OTP-18965, OTP-18966, + OTP-18967, OTP-18968, OTP-18969, OTP-18972, + OTP-18973, OTP-18975, OTP-18976, OTP-18977, + OTP-18978, OTP-18980, OTP-18981, OTP-18984, + OTP-18987, OTP-18989, OTP-18992, OTP-18993, + OTP-18994, OTP-18995, OTP-18998, OTP-19001, + OTP-19004, OTP-19005, OTP-19010, OTP-19016, + OTP-19017, OTP-19018, OTP-19020, OTP-19022, + OTP-19025, OTP-19026, OTP-19027, OTP-19029, + OTP-19030, OTP-19042, OTP-19052, OTP-19053, + OTP-19054, OTP-19062, OTP-19063 +Seq num: #6724, BL-312, BL-322, ERIERL-43, ERIERL-964, + ERIERL-967, ERIERL-985, GH-4992, GH-6152, + GH-6692, GH-6979, GH-6985, GH-7266, GH-7295, + GH-7397, GH-7432, GH-7438, GH-7493, GH-7494, + GH-7617, GH-7706, GH-7718, GH-7972, GH-8058, + GH-8061, GH-8066, GH-8159, GH-8166, GH-8244, + OTP-16448, OTP-16608, OTP-16875, OTP-17734, + OTP-18746, OTP-18750, OTP-18835, PR-6510, + PR-6639, PR-6658, PR-6791, PR-6985, PR-7110, + PR-7125, PR-7174, PR-7183, PR-7220, PR-7232, + PR-7236, PR-7243, PR-7267, PR-7274, PR-7299, + PR-7302, PR-7313, PR-7316, PR-7348, PR-7380, + PR-7383, PR-7388, PR-7398, PR-7419, PR-7428, + PR-7441, PR-7443, PR-7447, PR-7451, PR-7465, + PR-7470, PR-7474, PR-7475, PR-7481, PR-7491, + PR-7496, PR-7528, PR-7534, PR-7535, PR-7538, + PR-7556, PR-7585, PR-7590, PR-7592, PR-7607, + PR-7628, PR-7639, PR-7649, PR-7651, PR-7675, + PR-7678, PR-7684, PR-7697, PR-7699, PR-7700, + PR-7701, PR-7702, PR-7703, PR-7711, PR-7720, + PR-7726, PR-7728, PR-7732, PR-7738, PR-7739, + PR-7740, PR-7745, PR-7779, PR-7781, PR-7782, + PR-7790, PR-7809, PR-7816, PR-7824, PR-7844, + PR-7845, PR-7846, PR-7847, PR-7856, PR-7857, + PR-7869, PR-7879, PR-7891, PR-7898, PR-7917, + PR-7918, PR-7936, PR-7942, PR-7952, PR-7957, + PR-7960, PR-7963, PR-7973, PR-7977, PR-7981, + PR-7993, PR-8003, PR-8004, PR-8006, PR-8026, + PR-8029, PR-8035, PR-8042, PR-8048, PR-8056, + PR-8063, PR-8067, PR-8069, PR-8076, PR-8086, + PR-8090, PR-8091, PR-8092, PR-8093, PR-8095, + PR-8103, PR-8111, PR-8112, PR-8155, PR-8156, + PR-8164, PR-8168, PR-8177, PR-8182, PR-8205, + PR-8230, PR-8233, PR-8241, PR-8249, PR-8250, + PR-8255, PR-8256, PR-8258, PR-8308 +System: OTP +Release: 27 +Application: asn1-5.3, common_test-1.27, compiler-8.5, + crypto-5.5, debugger-5.4, dialyzer-5.2, + diameter-2.4, edoc-1.3, eldap-1.2.13, + erl_interface-5.5.2, erts-15.0, et-1.7.1, + eunit-2.9.1, ftp-1.2.2, inets-9.2, + jinterface-1.14.1, kernel-9.3, megaco-4.6, + mnesia-4.23.1, observer-2.16, odbc-2.14.3, + os_mon-2.10, parsetools-2.6, public_key-1.16, + reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2, + snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0, + syntax_tools-3.2, tftp-1.2, tools-4.0, + wx-2.4.2, xmerl-1.4 +Predecessor: OTP + +Check out the git tag OTP-27.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Application(s): stdlib + Related Id(s): PR-7183, PR-7232 + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Application(s): compiler, stdlib + Related Id(s): PR-7383 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Application(s): compiler + Related Id(s): ERIERL-967, PR-7491, PR-8086 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): PR-7728 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Application(s): erts + Related Id(s): PR-7470 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** POTENTIAL INCOMPATIBILITY *** + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Application(s): stdlib + Related Id(s): PR-7649 + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Application(s): stdlib + Related Id(s): PR-7684, OTP-18750 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Application(s): compiler, erts, kernel, tools + Related Id(s): PR-7856 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Application(s): compiler, stdlib + Related Id(s): PR-7936 + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Application(s): stdlib + Related Id(s): PR-6791 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Application(s): otp, stdlib + Related Id(s): PR-8067 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer, + diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface, + kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key, + reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp, + tools, wx, xmerl + Related Id(s): PR-8026 + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Application(s): compiler, erts + Related Id(s): PR-8090 + +- New module `trace` providing the same trace functionality as + erlang:trace/3 and erlang:trace_pattern/3, but with the addition of + **dynamic isolated trace sessions**. + + Own Id: OTP-18980 + Application(s): erts + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Application(s): asn1 + Related Id(s): PR-8241 + +- There is a new module `json` for encoding and decoding JSON. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Application(s): stdlib + Related Id(s): PR-8111 + +# POTENTIAL INCOMPATIBILITIES + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Application(s): erts + Related Id(s): PR-7274 + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Application(s): erts + Related Id(s): PR-7348 + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Application(s): inets + Related Id(s): PR-7316 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Application(s): compiler, otp, stdlib + Related Id(s): GH-7706, PR-7726 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Application(s): kernel, otp + Related Id(s): PR-8091 + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + -compile([nowarn_missing_spec]). + + and the compiler is invoked like so: + + % erlc +warn_missing_spec some_module.erl + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Application(s): compiler + Related Id(s): GH-6979, PR-8093 + +- The implementations of http_uri:encode/1 and http_uri:decode/1 are now + replaced with their equivalent, but bug free versions from module + `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1. + + Own Id: OTP-19022 + Application(s): inets + +- For security reasons, the CBC ciphers are now longer included in the list of + default ciphers for TLS-1.2. + + Own Id: OTP-19025 + Application(s): ssl + Related Id(s): PR-8250 + +- The error handling the `simple_one_for_one` supervisor has been enhanced. A + transient child returning `ignore` will no longer cause a crash. + + Also, automatic shutdown has been disabled because it does not make sense for + this supervisor type. That is was allowed is considered a bug. Therefore, we + don't consider this an incompatible change. + + Own Id: OTP-19029 + Application(s): stdlib + Related Id(s): PR-8230 + +# OTP-27.0 + +## Fixed Bugs and Malfunctions + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- `configure` scripts of the OTP build system are now generated using Autoconf + 2.72. + + Own Id: OTP-18943 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +- By default `configure` scripts used when building OTP will now try to enable + support for timestamps that will work after mid-January 2038. This has + typically only been an issue on 32-bit platforms. + + If `configure` cannot figure out how to enable such timestamps, it will abort + with an error message. If you want to build the system anyway, knowing that + the system will not function properly after mid-January 2038, you can pass the + `--disable-year2038` option to `configure`, which will enable `configure` to + continue without support for timestamps after mid-January 2038. + + Own Id: OTP-18965 + Related Id(s): PR-8095 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Related Id(s): PR-8091 + + *** POTENTIAL INCOMPATIBILITY *** + +- The restriction for the expression that gives a default value for a record + field is now documented. + + Own Id: OTP-18995 + Related Id(s): GH-8166, PR-8177 + +# asn1-5.3 + +## Fixed Bugs and Malfunctions + +- Multiple bugs has been eliminated in the specialized decode feature. + + Own Id: OTP-18813 + Related Id(s): PR-7790 + +## Improvements and New Features + +- Specs have been added to all `asn1ct` API functions. + + Own Id: OTP-18804 + Related Id(s): PR-7738 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Related Id(s): PR-8241 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of asn1-5.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27 + +## Improvements and New Features + +- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to + ensure that all output is captured. + + Own Id: OTP-18658 + Related Id(s): PR-7380 + +- The order in which multiple hooks are executed can now be reversed after each + config function. See CTH Execution Order. + + Own Id: OTP-18682 + Related Id(s): ERIERL-43, GH-7397, PR-7496 + +- The default CSS will now include a basic dark mode handling if it is preferred + by the browser. + + Own Id: OTP-18761 + Related Id(s): PR-7428 + +- `-callback` attributes have been added to `ct_suite` and `ct_hooks`. + + Own Id: OTP-18781 + Related Id(s): PR-7701 + +- The built-in cth_log_redirect hook can now be configured to replace default + logger reports in terminal with HTML logs. + + Own Id: OTP-18875 + Related Id(s): PR-7891 + +- Error handling for the `ct_property_test` framework has been enhanced. + + Own Id: OTP-18881 + Related Id(s): PR-7824 + +- Enhance test case documentation, making it clear how a test case can be + failed. + + Own Id: OTP-18892 + Related Id(s): PR-7869 + +- The failing line in the test source code is now colored to make it easier to + find on the screen. + + Own Id: OTP-18898 + Related Id(s): PR-7917 + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The suite execution elapsed time is now included in the index page. + + Own Id: OTP-18981 + Related Id(s): GH-7972, PR-8112 + +> #### Full runtime dependencies of common_test-1.27 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5 + +## Fixed Bugs and Malfunctions + +- Generators for binary comprehensions could be evaluated before it was known + that they would be needed. That could result in a binary comprehensions + failing if a generator that should not be evaluated until later failed. + + As an example, consider this module: + + -module(t). + -export([f/0]). + + f() -> + <<0 || _ <- [], _ <- ok, false>>. + + In Erlang/OTP 26 it would fail like so: + + 1> t:f(). + ** exception error: bad generator ok + in function t:f/0 (t.erl, line 6) + + In Erlang/OTP 27 it returns an empty binary: + + 1> t:f(). + <<>> + + Own Id: OTP-18703 + Related Id(s): GH-7494, PR-7538 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- The compiler now optimizes creation of binaries that are known to be constant. + + Consider this example: + + bin() -> + C = char(), + <<C>>. + + char() -> $*. + + Essentially, the compiler rewrites the example to the slightly more efficient: + + bin() -> + _ = char(), + <<$*>>. + + char() -> $*. + + Own Id: OTP-18673 + Related Id(s): ERIERL-964, PR-7474 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Related Id(s): ERIERL-967, PR-7491, PR-8086 + + *** HIGHLIGHT *** + +- Improved the performance of the alias analysis pass. + + Own Id: OTP-18714 + Related Id(s): GH-7432, PR-7528 + +- `-spec` attributes are now used for documentation. + + Own Id: OTP-18801 + Related Id(s): PR-7739 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + -compile([nowarn_missing_spec]). + + and the compiler is invoked like so: + + % erlc +warn_missing_spec some_module.erl + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Related Id(s): GH-6979, PR-8093 + + *** POTENTIAL INCOMPATIBILITY *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +- Improved the match context reuse optimization slightly, allowing match + contexts to be passed as-is to `bit_size/1` and `byte_size/1`. + + Own Id: OTP-18987 + +- `m:erl_lint` (and by extension the `compiler`) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): PR-8205 + +> #### Full runtime dependencies of compiler-8.5 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which + were marked as deprecated since OTP 25. + + Own Id: OTP-18973 + +- Add support for sm3 hash and hmac. + + Own Id: OTP-18975 + Related Id(s): PR-6658 + +- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread + specific data. + + Own Id: OTP-18978 + Related Id(s): PR-7809 + +- Add SM4 block cipher implemented according to GB/T 32907-2016. + + Own Id: OTP-19005 + Related Id(s): PR-8168 + +> #### Full runtime dependencies of crypto-5.5 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# debugger-5.4 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- Type specs have been added to all API functions. + + Own Id: OTP-18819 + Related Id(s): PR-7781 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of debugger-5.4 +> +> compiler-8.0, erts-15.0, kernel-8.0, stdlib-3.15, wx-2.0 + +# dialyzer-5.2 + +## Improvements and New Features + +- The `--gui` option for Dialyzer has been removed. + + Own Id: OTP-18667 + Related Id(s): PR-7443 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of dialyzer-5.2 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.4 + +## Improvements and New Features + +- `-callback` attributes have been added to `diameter_app` and + `diameter_transport`. + + Own Id: OTP-18783 + Related Id(s): PR-7699 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of diameter-2.4 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.3 + +## Fixed Bugs and Malfunctions + +- EEP 48 doc chunks now properly include links within `{@type }` macros. + + Own Id: OTP-18945 + Related Id(s): PR-8063 + +- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`. + + Own Id: OTP-18946 + Related Id(s): PR-8063 + +## Improvements and New Features + +- There is a new `edoc_html_to_markdown` module that can be used to convert + EEP-48 `application/html+erlang` to Markdown. + + Own Id: OTP-18947 + Related Id(s): PR-8063 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Added module `edoc_doclet_markdown` that can be used to convert EDoc style + documentation to Markdown documentation attributes. + + Own Id: OTP-19052 + Related Id(s): PR-8308 + +> #### Full runtime dependencies of edoc-1.3 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.13 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eldap-1.2.13 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.5.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-15.0 + +## Fixed Bugs and Malfunctions + +- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or + `-args_file` have been fixed. + + Own Id: OTP-18766 + Related Id(s): PR-7639 + +- Fixed a bug that prevented the emulator from building on recent versions of + Yocto Linux. + + Own Id: OTP-18918 + Related Id(s): PR-7952 + +- Fixed spectre mitigation configure test to work with GCC patches to always add + `-fcf-protection=full`. + + Own Id: OTP-18928 + Related Id(s): PR-8006 + +- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could + cause a (case clause) crash if data is immediately available. + + Own Id: OTP-19063 + Related Id(s): OTP-18835 + +## Improvements and New Features + +- Refactored how the JIT handles POSIX signals and how they affect thread + stacks, allowing us to use the native stack register for Erlang stacks on more + platforms. + + Notably, containers built on 64-bit x86 Alpine Linux images will now perform + much better in sequential code. As an example, running `dialyzer` over the OTP + code base finishes about 15% quicker. + + Own Id: OTP-18568 + Related Id(s): PR-7174 + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The `pid` field has been removed from `erlang:fun_info/1,2`. + + Own Id: OTP-18594 + Related Id(s): PR-7274 + + *** POTENTIAL INCOMPATIBILITY *** + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Related Id(s): PR-7348 + + *** POTENTIAL INCOMPATIBILITY *** + +- A binary returned from the `socket` receive functions is no longer created + as a sub binary of an often large receive buffer binary (socket option + `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement + reallocation efficiently. + + Own Id: OTP-18642 + Related Id(s): GH-6152, PR-7465 + +- The default process limit has been raised to `1048576` processes. + + Own Id: OTP-18699 + Related Id(s): PR-7388 + +- The erlang:system_monitor/2 functionality is now able to monitor long + message queues in the system. + + Own Id: OTP-18709 + Related Id(s): PR-7651 + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Related Id(s): PR-7470 + + *** HIGHLIGHT *** + +- When implementing an alternative carrier for the Erlang distribution, a + separate input handler process may now be registered, using + erlang:dist_ctrl_input_handler/2, also in the case when the distribution + controller is a port. + + Own Id: OTP-18774 + Related Id(s): PR-7110 + +- The call stack trace has now been added to the error reported by + erlang:process_flag/2 when `max_heap_size` limit has been exceeded. + + Own Id: OTP-18779 + Related Id(s): PR-7592 + +- `-callback` attributes have been added to `erl_tracer`. + + Own Id: OTP-18794 + Related Id(s): PR-7703 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N` has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- New functions `socket:sendv/*` for sending I/O vectors have been added. + + Own Id: OTP-18845 + +- Socket options that take string now also accept binaries. + + Own Id: OTP-18849 + Related Id(s): PR-6510 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Changed the default value of the command line flag `-code_path_choice` to + `strict`. + + Note that for application systems using archives, it is necessary to add the + `code_path_choice relaxed` to the command line that invokes `erl`. + + Own Id: OTP-18894 + Related Id(s): PR-7243 + +- Added module loading to `erl -init_debug` printouts. + + Own Id: OTP-18929 + Related Id(s): PR-8004 + +- When the runtime system halts, it performs various flush operations before + terminating. By default there is no limit on how much time the flush + operations are allowed to take. A new _halt flush timeout_ functionality has + been introduced which can be used for limiting the amount of time that the + flushing operations are allowed to take. For more information see the + documentation of the `flush_timeout` option of the erlang:halt/2 BIF and + the documentation of the `erl` `+zhft <Timeout>` command line flag. + + Own Id: OTP-18938 + Related Id(s): GH-7438, PR-8035 + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d + + Own Id: OTP-18942 + +- The deprecated functions in `zlib` have been removed. That includes + `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and + the Adler checksum functions. + + Own Id: OTP-18950 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +- The obsolete and undocumented support for opening a port to an external + resource by passing an atom (or a string) as first argument to `open_port()`, + implemented by the vanilla driver, has been removed. This feature has been + scheduled for removal in OTP 27 since the release of OTP 26. + + Own Id: OTP-18976 + Related Id(s): PR-7125 + +- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all + scheduler threads when a NIF library is unloaded. Used for releasing thread + specific data. Can be set with function `enif_set_option`. + + Own Id: OTP-18977 + Related Id(s): PR-7809 + +- New module `trace` providing the same trace functionality as + erlang:trace/3 and erlang:trace_pattern/3, but with the addition of + **dynamic isolated trace sessions**. + + Own Id: OTP-18980 + *** HIGHLIGHT *** + +- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use + "large pages" (sometimes known as "huge pages" or "super pages"). This + currently only affects super-carrier allocations, but may be extended in the + future. + + Own Id: OTP-18984 + Related Id(s): PR-7977 + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +- The `socket` documentation has been reworked, and due to that a few details + were fixed: + + - socket:is_supported/1 now returns `true` for example for `protocols` that + is a "category", not an item. + - socket:cancel_monitor/1 no longer badargs for a monitor that was set by + another process, instead it returns `false` as for other unknown + `reference()`s. + + Own Id: OTP-19054 + +> #### Full runtime dependencies of erts-15.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of et-1.7.1 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.9.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eunit-2.9.1 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.2 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of ftp-1.2.2 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.2 + +## Improvements and New Features + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Related Id(s): PR-7316 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `httpd` module has been extended with an API for simple serving directory + content over HTTP. With this change, the current working directory can be + served like this: + + erl -S httpd + + An arbitrary directory can be served like this: + + erl -S httpd serve path/to/dir + + Own Id: OTP-18727 + Related Id(s): PR-7299 + +- Added `-callback` attributes to `httpd`, `mod_esi`, and `mod_security`. + + Own Id: OTP-18786 + Related Id(s): PR-7700 + +- Inets now uses a relative redirect with an absolute path to prevent whoever is + running Inets from having to configure the `ServerName` to match the + network-reachable host name of the server. + + Own Id: OTP-18809 + Related Id(s): GH-7617, PR-7678 + +- `inets` processes now use proc_lib:set_label/1 to improve observeability. + + Own Id: OTP-18927 + Related Id(s): PR-8029 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The implementations of http_uri:encode/1 and http_uri:decode/1 are now + replaced with their equivalent, but bug free versions from module + `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1. + + Own Id: OTP-19022 + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of inets-9.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.14.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +# kernel-9.3 + +## Fixed Bugs and Malfunctions + +- Fixed a crash when calling file:delete/2 with an empty option list. + + Own Id: OTP-18590 + Related Id(s): PR-7220 + +- New functions have been added to the undocumented module `inet_dns` that + take a flag to specify if encode/decode is for mDNS. This affects how CLASS + values in the private range, with the top bit set, are handled. + + Own Id: OTP-18878 + Related Id(s): GH-7718, OTP-17734 + +- The error information for erlang:phash/2 has been corrected. + + Own Id: OTP-18904 + Related Id(s): PR-7960 + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +- Calling logger:add_handlers/1 with config option now works. + + Own Id: OTP-18954 + Related Id(s): GH-8061, PR-8076 + +- The code:del_path/1 function now also works on paths added through `-pa`, + `-pz` , `-path` and the boot script. + + Own Id: OTP-18959 + Related Id(s): GH-6692, PR-7697 + +- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could + cause a (case clause) crash if data is immediately available. + + Own Id: OTP-19063 + Related Id(s): OTP-18835 + +## Improvements and New Features + +- Added file:read_file/2 with a `raw` option for reading files without going + through the file server. + + Own Id: OTP-18589 + Related Id(s): PR-7220 + +- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has + been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some + bug fixes and code cleanup has been done, and the resolver used in the test + suite has been changed to Knot DNS. See the source code. + + Kudos to Alexander Clouter that did almost all the work! + + Own Id: OTP-18713 + Related Id(s): GH-6985, PR-6985 + +- The `ebin` directories for escripts are now cached. + + Own Id: OTP-18778 + Related Id(s): PR-7556 + +- `-callback` attributes haven been added to `application`, + `logger_handler`, and `logger_formatter`. + + Own Id: OTP-18795 + Related Id(s): PR-7703 + +- Progress reports from before logger is started are now logged when log level + is set to debug. + + Own Id: OTP-18807 + Related Id(s): ERIERL-985, PR-7732 + +- The code:where_is_file/2 and code:which/1 functions now check for + existence of the file directly instead of listing the content of each + directory in the code path. + + Own Id: OTP-18816 + Related Id(s): PR-7711 + +- Type specs has been added to the `logger:Level/1,2,3` functions. + + Own Id: OTP-18820 + Related Id(s): PR-7779 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N` has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- New functions `socket:sendv/*` for sending I/O vectors have been added. + + Own Id: OTP-18845 + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Application startup has been optimized by removing an intermediary process. + + Own Id: OTP-18963 + Related Id(s): PR-8042 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Related Id(s): PR-8091 + + *** POTENTIAL INCOMPATIBILITY *** + +- The undocumented and deprecated `file:pid2name` function has been removed. + + Own Id: OTP-18967 + Related Id(s): PR-8092 + +- Error logging has been improved when the `standard_io` reader and/or writer + terminates with an error. + + Own Id: OTP-18989 + Related Id(s): PR-8103 + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +- Add an simple example (echo server) )to the socket users guide. + + Own Id: OTP-19042 + +- `inet:i/0,1,2` has been improved to allow port numbers to be shown explicitly. + + Own Id: OTP-19053 + Related Id(s): #6724 + +- The `socket` documentation has been reworked, and due to that a few details + were fixed: + + - socket:is_supported/1 now returns `true` for example for `protocols` that + is a "category", not an item. + - socket:cancel_monitor/1 no longer badargs for a monitor that was set by + another process, instead it returns `false` as for other unknown + `reference()`s. + + Own Id: OTP-19054 + +> #### Full runtime dependencies of kernel-9.3 +> +> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0 + +# megaco-4.6 + +## Improvements and New Features + +- `-callback` attributes have been added to `megaco_transport`. + + Own Id: OTP-18806 + Related Id(s): PR-7740 + +- Updated types and specs for all API modules. + + Own Id: OTP-18920 + Related Id(s): BL-322 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of megaco-4.6 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.23.1 + +## Fixed Bugs and Malfunctions + +- The `mnesia_registry` module have been deprecated. + + Own Id: OTP-18994 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of mnesia-4.23.1 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.16 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of observer-2.16 +> +> erts-14.0, et-1.5, kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3 + +# odbc-2.14.3 + +## Fixed Bugs and Malfunctions + +- The order of libs in the Makefile has been changed to avoid finding the + system's `libei` instead of Erlang's `libei`. + + Own Id: OTP-19030 + Related Id(s): GH-8244, PR-8258 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of odbc-2.14.3 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.10 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of os_mon-2.10 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.6 + +## Improvements and New Features + +- The `leex` documentation has been updated to use specs for documenting the + generated interface. + + Own Id: OTP-18796 + Related Id(s): PR-7703 + +- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl` + source file. + + Own Id: OTP-18912 + Related Id(s): PR-7963 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of parsetools-2.6 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.16 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- The exception reason when public_key:cacerts_get/0 failed has been improved. + + Own Id: OTP-18609 + Related Id(s): GH-7295, PR-7302 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of public_key-1.16 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# reltool-1.0.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of reltool-1.0.1 +> +> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.1 + +## Improvements and New Features + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- Type specs had been added to all `dbg` functions. + + Own Id: OTP-18859 + Related Id(s): PR-7782 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of runtime_tools-2.1 +> +> erts-14.2, kernel-8.1, mnesia-4.12, stdlib-6.0 + +# sasl-4.2.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of sasl-4.2.2 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.16 + +## Improvements and New Features + +- `-callback` attributes have been added to modules + `snmpa_network_interface_filter`, `snmpa_notification_filter`, + `snmpm_network_interface_filter`, `snmpm_user`, and + `snmpa_notification_delivery_info_receiver`. + + New `-type` attributes have also been added to modules `snmp`, `snmpa`, + `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks. + + Own Id: OTP-18785 + Related Id(s): PR-7702 + +- Updated types and specs for all API modules. + + Own Id: OTP-18934 + Related Id(s): BL-312 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of snmp-5.16 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2 + +## Fixed Bugs and Malfunctions + +- SSH processes are now assigned labels for troubleshooting purposes. + + Own Id: OTP-19017 + Related Id(s): PR-8249 + +## Improvements and New Features + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Updated types and specs for all API modules. + + Own Id: OTP-18961 + +> #### Full runtime dependencies of ssh-5.2 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2 + +## Fixed Bugs and Malfunctions + +- Starting a TLS server without sufficient credentials (certificate or anonymous + cipher) would work, but it was impossible to connect to it. + + This has been corrected to return an error instead of starting the server. + + Own Id: OTP-18887 + Related Id(s): GH-7493, PR-7918 + +- ASN.1 decoding errors are handled in more places to ensure that errors are + returned instead of cause a crash. + + Own Id: OTP-18969 + Related Id(s): GH-8058, PR-8256 + +- Improved error checking on the API functions. + + Own Id: OTP-18992 + Related Id(s): GH-8066, PR-8156 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + +- Memory consumption has been reduced and performance increased by refactoring + internal data structures and their usage. + + Own Id: OTP-18665 + Related Id(s): PR-7447 + +- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute. + + Own Id: OTP-18788 + Related Id(s): PR-7700 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The proc_lib:set_label/1 function is now used to increase observability of + `ssl` processes. + + Own Id: OTP-18879 + +- Brainpool elliptic curves are now supported in TLS-1.3. + + Own Id: OTP-18884 + Related Id(s): PR-8056 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The existing function ssl:key_exporter_materials/4 is now documented and + supported. + + Own Id: OTP-19016 + Related Id(s): PR-8233 + +- For security reasons, the CBC ciphers are now longer included in the list of + default ciphers for TLS-1.2. + + Own Id: OTP-19025 + Related Id(s): PR-8250 + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new `cert_policy_opts` option to configure certificate policy + options for the certificate path validation. + + Own Id: OTP-19027 + Related Id(s): PR-8255 + +> #### Full runtime dependencies of ssl-11.2 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.0 + +## Fixed Bugs and Malfunctions + +- The specs in module `binary` has been updated to reflect what is allowed by + the documentation. + + Own Id: OTP-18684 + Related Id(s): PR-7481 + +- Several functions in the `binary` module would accept arguments of the wrong + type under certain circumstances. In this release, they now raise an exception + when incorrect types are given. + + The following functions would accept an invalid pattern if the subject binary + was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`, + `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3` + + The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of + raising an exception. Similarly, calls to `binary:part/2,3` attempting to + extract 0 bytes at position 0 of a bitstring would return an empty binary + instead of raising an exception. + + Own Id: OTP-18743 + Related Id(s): PR-7607, PR-7628 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +- The error handling the `simple_one_for_one` supervisor has been enhanced. A + transient child returning `ignore` will no longer cause a crash. + + Also, automatic shutdown has been disabled because it does not make sense for + this supervisor type. That is was allowed is considered a bug. Therefore, we + don't consider this an incompatible change. + + Own Id: OTP-19029 + Related Id(s): PR-8230 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fix shell expansion of <c>-type a() :: $a.</c> in the erlang shell. + + Own Id: OTP-19062 + +## Improvements and New Features + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Related Id(s): PR-7183, PR-7232 + + *** HIGHLIGHT *** + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- `zip:create/2,3` will now tolerate POSIX timestamps in the provided + `file_info` records. + + Own Id: OTP-18668 + +- The callback function gen_statem:handle_event/4 has been cached in the + `gen_statem` engine to optimize callback call speed. + + Own Id: OTP-18671 + Related Id(s): PR-7419 + +- The type beam_lib:beam/0 is now exported. + + Own Id: OTP-18716 + Related Id(s): PR-7534 + +- The documentation for the `binary` module has been improved. + + Own Id: OTP-18741 + Related Id(s): PR-7585 + +- `binary:replace/3,4` now supports using a fun for supplying the replacement + binary. + + Own Id: OTP-18742 + Related Id(s): PR-7590 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- `-callback` attributes has been added to modules `sys` and `erl_error`. + + Own Id: OTP-18793 + Related Id(s): PR-7703 + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Related Id(s): PR-7649 + + *** HIGHLIGHT *** + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Related Id(s): PR-7684, OTP-18750 + + *** HIGHLIGHT *** + +- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1, + and shell:prompt_width/1 have been exported to help with custom prompt + implementations. + + Own Id: OTP-18834 + Related Id(s): PR-7675, PR-7816 + +- The shell now pages long output from the help command (`h(Module)`), auto + completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function + directly before the cursor. + + Own Id: OTP-18847 + Related Id(s): PR-7846 + +- Added support for adding a custom code formatter that formats your multi-line + shell commands in your preferred formatting on submission. See + `shell:format_shell_func/` and shell:erl_pp_format_func/1. + + Own Id: OTP-18848 + Related Id(s): PR-7847 + +- Added shell functions for viewing, forgetting and saving locally defined + functions, types and records. + + Own Id: OTP-18852 + Related Id(s): PR-7844 + +- Added string:jaro_similarity/2, which can be used to calculate the + similarity between two strings. + + Own Id: OTP-18865 + Related Id(s): PR-7879 + +- The new function ets:update_element/4 is similar to ets:update_element/3, + but takes a default tuple as the fourth argument, which will be inserted if no + previous record with that key exists. + + Own Id: OTP-18870 + Related Id(s): PR-7857 + +- Added functions to retrieve the next higher or lower key/element from + `gb_trees` and `gb_sets`, as well as returning iterators that start at + given keys/elements. + + Own Id: OTP-18874 + Related Id(s): PR-7745 + +- When the shell built-in function `c/1,2` is used to re-compile a + module, the current working directory of the original compilation is now added + to the include path. + + + Own Id: OTP-18908 + Related Id(s): PR-7957 + +- The `timer` module now uses a private table for its internal state, slightly + improving its performance. + + Own Id: OTP-18914 + Related Id(s): PR-7973 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Related Id(s): PR-6791 + + *** HIGHLIGHT *** + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +- The compiler will now raise a warning when updating record/map literals. As an + example, consider this module: + + -module(t). + -export([f/0]). + -record(r, {a,b,c}). + + f() -> + #r{a=1}#r{b=2}. + + The compiler raises the following warning: + + 1> c(t). + t.erl:6:12: Warning: expression updates a literal + % 6| #r{a=1}#r{b=2}. + % | ^ + + Own Id: OTP-18951 + Related Id(s): PR-8069 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made + them immune against table renaming. + + Own Id: OTP-18993 + Related Id(s): PR-8048 + +- Windows now supports all functions in `math`. + + Own Id: OTP-19001 + Related Id(s): PR-8164 + +- `m:erl_lint` (and by extension the `compiler`) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): PR-8205 + +- There is a new module `json` for encoding and decoding JSON. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Related Id(s): PR-8111 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of stdlib-6.0 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-9.3, sasl-3.0 + +# syntax_tools-3.2 + +## Fixed Bugs and Malfunctions + +- The `epp_dodger` module can now handle the `maybe` and `else` keywords. + + Own Id: OTP-18608 + Related Id(s): GH-7266, PR-7267 + +- Reverting a `#wrapper` will no longer throw away changes made to + positions/annotations. + + Own Id: OTP-18805 + Related Id(s): PR-7398 + +## Improvements and New Features + +- The type erl_syntax:annotation_or_location/0 is now exported. + + Own Id: OTP-18715 + Related Id(s): PR-7535 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of syntax_tools-3.2 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# tftp-1.2 + +## Improvements and New Features + +- There is a new `tftp_logger` callback behavior module. + + Own Id: OTP-18787 + Related Id(s): PR-7700 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of tftp-1.2 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.0 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +- In Erlang/OTP 26, doing a `cover` analysis on the `line` level would return + multiple entries for lines on which multiple functions were defined. + + For example, consider this module: + + -module(foo). + -export(bar/0, baz/0). + + bar() -> ok. baz() -> not_ok. + + In Erlang/OTP 26, analysing on the `line` level would return two entries for + line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,{{foo,4},{1,0}},{{foo,4},{0,1}}} + 4> cover:analyse(foo, calls, line). + {ok,{{foo,4},1},{{foo,4},0}} + + In Erlang/OTP 27, there will only be a single entry for line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,{{foo,4},{1,0}}} + 4> cover:analyse(foo, calls, line). + {ok,{{foo,4},1}} + + Own Id: OTP-18998 + Related Id(s): GH-8159, PR-8182 + +- Fixed align command in emacs mode. + + Own Id: OTP-19026 + Related Id(s): PR-8155 + +## Improvements and New Features + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new tool `tprof`, which combines the functionality of `eprof` + and `cprof` under one interface. It also adds heap profiling. + + Own Id: OTP-18756 + Related Id(s): PR-6639 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of tools-4.0 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-9.3, runtime_tools-2.1, stdlib-6.0 + +# wx-2.4.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of wx-2.4.2 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-1.4 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that + provides out-of-the box indented output has been added. + + Own Id: OTP-18922 + Related Id(s): PR-7942 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of xmerl-1.4 +> +> erts-6.0, kernel-3.0, stdlib-2.5 + diff --git a/release-notes/OTP-27.0.1.README.txt b/release-notes/OTP-27.0.1.README.txt new file mode 100644 index 0000000..aba4af5 --- /dev/null +++ b/release-notes/OTP-27.0.1.README.txt @@ -0,0 +1,259 @@ +Patch Package: OTP 27.0.1 +Git Tag: OTP-27.0.1 +Date: 2024-07-10 +Trouble Report Id: OTP-19091, OTP-19092, OTP-19094, OTP-19095, + OTP-19099, OTP-19100, OTP-19106, OTP-19107, + OTP-19108, OTP-19109, OTP-19116, OTP-19118, + OTP-19121, OTP-19123, OTP-19131, OTP-19137, + OTP-19140, OTP-19142, OTP-19147, OTP-19151, + OTP-19152 +Seq num: ERIERL-1043, ERIERL-1106, GH-8376, GH-8482, + GH-8484, GH-8489, GH-8574, GH-8579, GH-8580, + GH-8588, GH-8614, PR-8345, PR-8507, PR-8508, + PR-8519, PR-8534, PR-8539, PR-8542, PR-8546, + PR-8567, PR-8581, PR-8585, PR-8616, PR-8619 +System: OTP +Release: 27 +Application: compiler-8.5.1, edoc-1.3.1, erts-15.0.1, + kernel-10.0.1, public_key-1.16.1, ssh-5.2.1, + ssl-11.2.1, stdlib-6.0.1 +Predecessor: OTP 27.0 + +Check out the git tag OTP-27.0.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# OTP-27.0.1 + +## Improvements and New Features + +- Bump ex_doc version to v0.34.1 and fix copyright in published docs to have + correct year. + + Own Id: OTP-19095 + Related Id(s): PR-8507 + +# compiler-8.5.1 + +The compiler-8.5.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- One of the compiler's optimization passes would get very slow when compiling + certain modules. The compiler will now automatically disable that pass for + input that would trigger the slowdown. + + Own Id: OTP-19131 + Related Id(s): PR-8567 + +- Fix `+deterministic` to work properly with documentation attributes. + + Own Id: OTP-19142 + Related Id(s): GH-8579, PR-8585 + +> #### Full runtime dependencies of compiler-8.5.1 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# edoc-1.3.1 + +The edoc-1.3.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix broken makefile dependency when building HTML documentation. + + Own Id: OTP-19116 + Related Id(s): PR-8534 + +> #### Full runtime dependencies of edoc-1.3.1 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# erts-15.0.1 + +The erts-15.0.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- In rare circumstances the JIT could do an unsafe in-place update of a tuple. + + Own Id: OTP-19108 + Related Id(s): PR-8539 + +- When a port command crashed in the inet driver during gen_tcp:send/2, a + monitor `'DOWN'` message could be left lingering in the caller's mailbox. This + has now been fixed. + + Own Id: OTP-19121 + Related Id(s): GH-8484 + +- `'DOWN'` messages originating from a monitored port, contained the atom + `process` instead of the atom `port` as the third element when the exit reason + was not an immediate term. + + Own Id: OTP-19123 + Related Id(s): GH-8484, PR-8546 + +- Fix so that the options to enable Transparent Huge Page alignment of the + Erlang VM executable are only applied to the Erlang VM and not other native + programs such as `erlc` and `dialyzer`. This bug was introduced in Erlang/OTP + 27.0. + + Own Id: OTP-19137 + Related Id(s): GH-8574 + +- When *no time warp mode* was enabled, a smaller Erlang monotonic time could + be read than a previously read time, i.e., breaking the monotonic property. + The runtime system will abort when detecting an issue like this since OTP + 24.3.4.17 and OTP 25.0. + + Up until OTP 25 _no time warp mode_ is the default. As of OTP 26 [*multi time + warp mode*] is the default. + + Own Id: OTP-19147 + Related Id(s): ERIERL-1043, ERIERL-1106, PR-8619 + +- When calling `trace:function(Session, _, true, meta)` the meta tracer was + incorrectly set to be the calling process. Now it's set to the session tracer + as expected. + + Own Id: OTP-19151 + Related Id(s): GH-8614, PR-8616 + +> #### Full runtime dependencies of erts-15.0.1 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.0.1 + +The kernel-10.0.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Improvements and New Features + +- Polish the `logger` documentation. + + Own Id: OTP-19118 + Related Id(s): PR-8534 + +> #### Full runtime dependencies of kernel-10.0.1 +> +> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0 + +# public_key-1.16.1 + +The public_key-1.16.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix bug in dnsName constraint check, could cause valid cert to be considered + bad during path validation. + + Own Id: OTP-19100 + Related Id(s): GH-8482, PR-8508 + +> #### Full runtime dependencies of public_key-1.16.1 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# ssh-5.2.1 + +The ssh-5.2.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, race condition between connection closing and automatic + window adjustment is fixed. + + Own Id: OTP-19109 + Related Id(s): PR-8345 + +> #### Full runtime dependencies of ssh-5.2.1 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.1 + +The ssl-11.2.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Check for TLS-1.3 support should check minimum requirements. + + Own Id: OTP-19094 + Related Id(s): GH-8489 + +- If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2 negotiated convert + TLS-1.3 ECDSA schemes to TLS-1.2 hash and signature pairs for increased + interoperability. + + Own Id: OTP-19107 + Related Id(s): GH-8376 + +- TLS-1.3 negotiation now uses SNI based options correctly instead of ignoring + them. + + Own Id: OTP-19140 + +## Improvements and New Features + +- Make it easier to distinguish between a invalid signature and unsupported + signature. + + Own Id: OTP-19091 + +- Enhance ALERT logs to help understand what causes the alert. + + Own Id: OTP-19092 + Related Id(s): GH-8482 + +- When the default value for signature_algs is used, default the + signature_algs_cert to the default value + rsa_pkcs1_sha1 to allow this + algorithms for certificates but not for the TLS protocol. This is for better + interoperability. If signature_algs is set explicitly signature_algs_cert must + also be set explicitly if they should be different. + + Own Id: OTP-19152 + Related Id(s): GH-8588 + +> #### Full runtime dependencies of ssl-11.2.1 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.0.1 + +The stdlib-6.0.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix so that missing `-doc({file, File})` files only result in a warning and + not an error. + + Own Id: OTP-19099 + Related Id(s): PR-8542 + +- Fixed `json` bugs, json:encode_key_value_list/2 did not generate arrays + and json:decode/3 did not invoke the user callback for `0`. + + Own Id: OTP-19106 + Related Id(s): GH-8580, PR-8519, PR-8581 + +> #### Full runtime dependencies of stdlib-6.0.1 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# Thanks to + +Frej Drejhammar, Igor Goryachev, Michał Muskała + diff --git a/release-notes/OTP-27.0.README.txt b/release-notes/OTP-27.0.README.txt new file mode 100644 index 0000000..24ac93a --- /dev/null +++ b/release-notes/OTP-27.0.README.txt @@ -0,0 +1,3092 @@ +Inital Release: OTP 27.0 +Git Tag: OTP-27.0 +Date: 2024-05-20 +Trouble Report Id: OTP-16607, OTP-18568, OTP-18577, OTP-18589, + OTP-18590, OTP-18594, OTP-18606, OTP-18608, + OTP-18609, OTP-18622, OTP-18639, OTP-18641, + OTP-18642, OTP-18648, OTP-18658, OTP-18665, + OTP-18667, OTP-18668, OTP-18671, OTP-18673, + OTP-18680, OTP-18682, OTP-18684, OTP-18699, + OTP-18703, OTP-18709, OTP-18713, OTP-18714, + OTP-18715, OTP-18716, OTP-18717, OTP-18727, + OTP-18741, OTP-18742, OTP-18743, OTP-18744, + OTP-18750, OTP-18756, OTP-18761, OTP-18766, + OTP-18774, OTP-18778, OTP-18779, OTP-18781, + OTP-18783, OTP-18784, OTP-18785, OTP-18786, + OTP-18787, OTP-18788, OTP-18789, OTP-18793, + OTP-18794, OTP-18795, OTP-18796, OTP-18801, + OTP-18804, OTP-18805, OTP-18806, OTP-18807, + OTP-18808, OTP-18809, OTP-18813, OTP-18816, + OTP-18819, OTP-18820, OTP-18825, OTP-18831, + OTP-18834, OTP-18835, OTP-18845, OTP-18846, + OTP-18847, OTP-18848, OTP-18849, OTP-18852, + OTP-18856, OTP-18859, OTP-18860, OTP-18865, + OTP-18870, OTP-18874, OTP-18875, OTP-18876, + OTP-18878, OTP-18879, OTP-18881, OTP-18884, + OTP-18887, OTP-18892, OTP-18894, OTP-18898, + OTP-18904, OTP-18908, OTP-18912, OTP-18913, + OTP-18914, OTP-18916, OTP-18918, OTP-18920, + OTP-18922, OTP-18923, OTP-18927, OTP-18928, + OTP-18929, OTP-18930, OTP-18934, OTP-18938, + OTP-18941, OTP-18942, OTP-18943, OTP-18944, + OTP-18945, OTP-18946, OTP-18947, OTP-18950, + OTP-18951, OTP-18954, OTP-18955, OTP-18959, + OTP-18961, OTP-18963, OTP-18965, OTP-18966, + OTP-18967, OTP-18968, OTP-18969, OTP-18972, + OTP-18973, OTP-18975, OTP-18976, OTP-18977, + OTP-18978, OTP-18980, OTP-18981, OTP-18984, + OTP-18987, OTP-18989, OTP-18992, OTP-18993, + OTP-18994, OTP-18995, OTP-18998, OTP-19001, + OTP-19004, OTP-19005, OTP-19010, OTP-19016, + OTP-19017, OTP-19018, OTP-19020, OTP-19022, + OTP-19025, OTP-19026, OTP-19027, OTP-19029, + OTP-19030, OTP-19033, OTP-19042, OTP-19052, + OTP-19053, OTP-19054, OTP-19057, OTP-19063, + OTP-19073, OTP-19074, OTP-19075, OTP-19077, + OTP-19079, OTP-19080, OTP-19081, OTP-19082, + OTP-19086, OTP-19087, OTP-19088, OTP-19089, + OTP-19090 +Seq num: #6724, BL-312, BL-322, ERIERL-43, ERIERL-964, + ERIERL-967, ERIERL-985, GH-4992, GH-6152, + GH-6692, GH-6979, GH-6985, GH-7266, GH-7295, + GH-7397, GH-7432, GH-7438, GH-7483, GH-7493, + GH-7494, GH-7539, GH-7617, GH-7706, GH-7718, + GH-7972, GH-8058, GH-8061, GH-8066, GH-8159, + GH-8166, GH-8244, GH-8360, GH-8364, GH-8365, + GH-8366, GH-8452, OTP-16448, OTP-16608, + OTP-16875, OTP-17734, OTP-18746, OTP-18750, + OTP-18835, PR-6510, PR-6639, PR-6658, + PR-6791, PR-6985, PR-7110, PR-7125, PR-7174, + PR-7183, PR-7220, PR-7232, PR-7236, PR-7243, + PR-7267, PR-7274, PR-7299, PR-7302, PR-7313, + PR-7316, PR-7348, PR-7380, PR-7383, PR-7388, + PR-7398, PR-7419, PR-7428, PR-7441, PR-7443, + PR-7447, PR-7451, PR-7465, PR-7470, PR-7474, + PR-7475, PR-7481, PR-7491, PR-7496, PR-7528, + PR-7534, PR-7535, PR-7538, PR-7556, PR-7585, + PR-7590, PR-7592, PR-7607, PR-7628, PR-7639, + PR-7649, PR-7651, PR-7675, PR-7678, PR-7684, + PR-7697, PR-7699, PR-7700, PR-7701, PR-7702, + PR-7703, PR-7711, PR-7720, PR-7726, PR-7728, + PR-7732, PR-7738, PR-7739, PR-7740, PR-7745, + PR-7779, PR-7781, PR-7782, PR-7790, PR-7809, + PR-7816, PR-7824, PR-7844, PR-7845, PR-7846, + PR-7847, PR-7856, PR-7857, PR-7869, PR-7879, + PR-7891, PR-7898, PR-7917, PR-7918, PR-7936, + PR-7942, PR-7952, PR-7957, PR-7960, PR-7963, + PR-7973, PR-7977, PR-7981, PR-7993, PR-8003, + PR-8004, PR-8006, PR-8026, PR-8029, PR-8035, + PR-8042, PR-8048, PR-8056, PR-8063, PR-8067, + PR-8069, PR-8076, PR-8086, PR-8090, PR-8091, + PR-8092, PR-8093, PR-8095, PR-8103, PR-8111, + PR-8112, PR-8155, PR-8156, PR-8164, PR-8168, + PR-8177, PR-8182, PR-8205, PR-8230, PR-8233, + PR-8241, PR-8249, PR-8250, PR-8255, PR-8256, + PR-8258, PR-8288, PR-8308, PR-8324, PR-8345, + PR-8363, PR-8375, PR-8382, PR-8389, PR-8396, + PR-8399 +System: OTP +Release: 27 +Application: asn1-5.3, common_test-1.27, compiler-8.5, + crypto-5.5, debugger-5.4, dialyzer-5.2, + diameter-2.4, edoc-1.3, eldap-1.2.13, + erl_interface-5.5.2, erts-15.0, et-1.7.1, + eunit-2.9.1, ftp-1.2.2, inets-9.2, + jinterface-1.14.1, kernel-10.0, megaco-4.6, + mnesia-4.23.2, observer-2.16, odbc-2.14.3, + os_mon-2.10, parsetools-2.6, public_key-1.16, + reltool-1.0.1, runtime_tools-2.1, sasl-4.2.2, + snmp-5.16, ssh-5.2, ssl-11.2, stdlib-6.0, + syntax_tools-3.2, tftp-1.2, tools-4.0, + wx-2.4.2, xmerl-2.0 +Predecessor: OTP + +Check out the git tag OTP-27.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Thanks to voltone for interop testing and related discussions. + + Own Id: OTP-18606 + Application(s): public_key, ssl + Related Id(s): OTP-16448, OTP-16875 + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Application(s): stdlib + Related Id(s): PR-7183, PR-7232 + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Application(s): compiler, stdlib + Related Id(s): PR-7383 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Application(s): compiler + Related Id(s): ERIERL-967, PR-7491, PR-8086 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): PR-7728 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Application(s): erts + Related Id(s): PR-7470 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new tool `tprof`, which combines the functionality of `eprof` + and `cprof` under one interface and adds heap profiling. It also has + functionality to help with profiling process hierarchies. + + _Example_: + + 1> tprof:profile(lists, seq, [1, 16], #{type => call_memory}). + + ****** Process <0.92.0> -- 100.00% of total *** + FUNCTION CALLS WORDS PER CALL [ %] + lists:seq_loop/3 5 32 6.40 [100.00] + 32 [ 100.0] + ok + + Own Id: OTP-18756 + Application(s): tools + Related Id(s): PR-6639 + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Application(s): stdlib + Related Id(s): PR-7649 + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Application(s): stdlib + Related Id(s): PR-7684, OTP-18750 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Application(s): compiler, erts, kernel, tools + Related Id(s): PR-7856 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Application(s): compiler, stdlib + Related Id(s): PR-7936 + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Application(s): stdlib + Related Id(s): PR-6791 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Application(s): otp, stdlib + Related Id(s): PR-8067 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer, + diameter, edoc, eldap, erl_interface, erts, et, eunit, ftp, inets, jinterface, + kernel, megaco, mnesia, observer, odbc, os_mon, parsetools, public_key, + reltool, runtime_tools, sasl, snmp, ssh, ssl, stdlib, syntax_tools, tftp, + tools, wx, xmerl + Related Id(s): PR-8026 + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Application(s): compiler, erts + Related Id(s): PR-8090 + +- There is a new module `trace` in Kernel providing the same trace + functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the + addition of **dynamic isolated trace sessions**. + + Own Id: OTP-18980 + Application(s): erts, kernel + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Application(s): asn1 + Related Id(s): PR-8241 + +- There is a new module `json` for encoding and decoding JSON. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Application(s): stdlib + Related Id(s): PR-8111 + +- For security reasons, the CBC ciphers are now longer included in the list of + default ciphers for TLS-1.2. + + Own Id: OTP-19025 + Application(s): ssl + Related Id(s): PR-8250 + + *** POTENTIAL INCOMPATIBILITY *** + +# POTENTIAL INCOMPATIBILITIES + +- The `pid` field returned from `erlang:fun_info/1,2` is now always the pid for + the `init` process of the local node, not the pid for the actual process that + created the fun. + + Own Id: OTP-18594 + Application(s): erts + Related Id(s): PR-7274 + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Application(s): erts + Related Id(s): PR-7348 + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Application(s): inets + Related Id(s): PR-7316 + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Application(s): otp + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Application(s): stdlib, tools + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Application(s): compiler, otp, stdlib + Related Id(s): GH-7706, PR-7726 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Application(s): kernel, otp + Related Id(s): PR-8091 + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + -compile([nowarn_missing_spec]). + + and the compiler is invoked like so: + + % erlc +warn_missing_spec some_module.erl + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Application(s): compiler + Related Id(s): GH-6979, PR-8093 + +- The existing function ssl:key_exporter_materials/4 is now documented and + supported. + + Own Id: OTP-19016 + Application(s): crypto, public_key + Related Id(s): PR-8233 + +- The implementations of http_uri:encode/1 and http_uri:decode/1 are now + replaced with their equivalent, but bug free versions from module + `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1. + + Own Id: OTP-19022 + Application(s): inets + +- For security reasons, the CBC ciphers are now longer included in the list of + default ciphers for TLS-1.2. + + Own Id: OTP-19025 + Application(s): ssl + Related Id(s): PR-8250 + + *** HIGHLIGHT *** + +- The error handling the `simple_one_for_one` supervisor has been enhanced. A + transient child returning `ignore` will no longer cause a crash. + + Also, automatic shutdown has been disabled because it does not make sense for + this supervisor type. That is was allowed is considered a bug. Therefore, we + don't consider this an incompatible change. + + Own Id: OTP-19029 + Application(s): stdlib + Related Id(s): PR-8230 + +- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack, + about which we were alerted by Hubert Kario from Red Hat. You can find more + details about the attack at https://people.redhat.com/~hkario/marvin/ + Functions that may be vulnerable are now deprecated. + + Note that you might mitigate the problem by using appropriate versions of + OpenSSL together with our software, but we recommend not using them at all. + + Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and + do not enable RSA-key exchange cipher suites (not supported by default). + + Own Id: OTP-19075 + Application(s): crypto, public_key + +- Some default values in Xmerl has been changed to avoid XML External Entity + (XXE) vulnerabilities if you're parsing untrusted XML. + + xmerl_scan: the default value for allow_entities has changed to false. + xmerl_sax_parser: the default value for external_entities has changed to none. + + Own Id: OTP-19079 + Application(s): xmerl + Related Id(s): GH-7539 + +# OTP-27.0 + +## Fixed Bugs and Malfunctions + +- As announced in OTP 26.1, `0.0` is no longer considered equivalent to `-0.0` + when using the term equivalence operators (`=:=` and `=/=`). + + The arithmetic equality operators (`==` and `/=`) and all relative comparison + operations still consider `0.0` equal to `-0.0`. + + Own Id: OTP-18717 + Related Id(s): PR-7728 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- `configure` scripts of the OTP build system are now generated using Autoconf + 2.72. + + Own Id: OTP-18943 + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +- By default `configure` scripts used when building OTP will now try to enable + support for timestamps that will work after mid-January 2038. This has + typically only been an issue on 32-bit platforms. + + If `configure` cannot figure out how to enable such timestamps, it will abort + with an error message. If you want to build the system anyway, knowing that + the system will not function properly after mid-January 2038, you can pass the + `--disable-year2038` option to `configure`, which will enable `configure` to + continue without support for timestamps after mid-January 2038. + + Own Id: OTP-18965 + Related Id(s): PR-8095 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Related Id(s): PR-8091 + + *** POTENTIAL INCOMPATIBILITY *** + +- The restriction for the expression that gives a default value for a record + field is now documented. + + Own Id: OTP-18995 + Related Id(s): GH-8166, PR-8177 + +# asn1-5.3 + +## Fixed Bugs and Malfunctions + +- Multiple bugs has been eliminated in the specialized decode feature. + + Own Id: OTP-18813 + Related Id(s): PR-7790 + +## Improvements and New Features + +- Specs have been added to all `asn1ct` API functions. + + Own Id: OTP-18804 + Related Id(s): PR-7738 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The `jer` (JSON Encoding Rules) for ASN.1 now use the new `json` module for + encoding and decoding JSON. Thus, there is no longer any need for an external + JSON library. + + Own Id: OTP-19018 + Related Id(s): PR-8241 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of asn1-5.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27 + +## Improvements and New Features + +- Calls to ct:capture_start/0 and ct:capture_stop/0 are now synchronous to + ensure that all output is captured. + + Own Id: OTP-18658 + Related Id(s): PR-7380 + +- The order in which multiple hooks are executed can now be reversed after each + config function. See CTH Execution Order. + + Own Id: OTP-18682 + Related Id(s): ERIERL-43, GH-7397, PR-7496 + +- The default CSS will now include a basic dark mode handling if it is preferred + by the browser. + + Own Id: OTP-18761 + Related Id(s): PR-7428 + +- `-callback` attributes have been added to `ct_suite` and `ct_hooks`. + + Own Id: OTP-18781 + Related Id(s): PR-7701 + +- The built-in cth_log_redirect hook can now be configured to replace default + logger reports in terminal with HTML logs. + + Own Id: OTP-18875 + Related Id(s): PR-7891 + +- Error handling for the `ct_property_test` framework has been enhanced. + + Own Id: OTP-18881 + Related Id(s): PR-7824 + +- Enhance test case documentation, making it clear how a test case can be + failed. + + Own Id: OTP-18892 + Related Id(s): PR-7869 + +- The failing line in the test source code is now colored to make it easier to + find on the screen. + + Own Id: OTP-18898 + Related Id(s): PR-7917 + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The suite execution elapsed time is now included in the index page. + + Own Id: OTP-18981 + Related Id(s): GH-7972, PR-8112 + +> #### Full runtime dependencies of common_test-1.27 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5 + +## Fixed Bugs and Malfunctions + +- Generators for binary comprehensions could be evaluated before it was known + that they would be needed. That could result in a binary comprehensions + failing if a generator that should not be evaluated until later failed. + + As an example, consider this module: + + -module(t). + -export([f/0]). + + f() -> + <<0 || _ <- [], _ <- ok, false>>. + + In Erlang/OTP 26 it would fail like so: + + 1> t:f(). + ** exception error: bad generator ok + in function t:f/0 (t.erl, line 6) + + In Erlang/OTP 27 it returns an empty binary: + + 1> t:f(). + <<>> + + Own Id: OTP-18703 + Related Id(s): GH-7494, PR-7538 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- The compiler now optimizes creation of binaries that are known to be constant. + + Consider this example: + + bin() -> + C = char(), + <<C>>. + + char() -> $*. + + Essentially, the compiler rewrites the example to the slightly more efficient: + + bin() -> + _ = char(), + <<$*>>. + + char() -> $*. + + Own Id: OTP-18673 + Related Id(s): ERIERL-964, PR-7474 + +- The compiler will now merge consecutive updates of the same record. + + As an example, the body of the following function will be combined into a + single tuple creation instruction: + + -record(r, {a,b,c,d}). + + update(Value) -> + R0 = #r{}, + R1 = R0#r{a=Value}, + R2 = R1#r{b=2}, + R2#r{c=3}. + + Own Id: OTP-18680 + Related Id(s): ERIERL-967, PR-7491, PR-8086 + + *** HIGHLIGHT *** + +- Improved the performance of the alias analysis pass. + + Own Id: OTP-18714 + Related Id(s): GH-7432, PR-7528 + +- `-spec` attributes are now used for documentation. + + Own Id: OTP-18801 + Related Id(s): PR-7739 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The order in which the compiler looks up options has changed. + + When there is a conflict in the compiler options given in the `-compile()` + attribute and options given to the compiler, the options given in the + `-compile()` attribute overrides the option given to the compiler, which in + turn overrides options given in the `ERL_COMPILER_OPTIONS` environment + variable. + + Example: + + If `some_module.erl` has the following attribute: + + -compile([nowarn_missing_spec]). + + and the compiler is invoked like so: + + % erlc +warn_missing_spec some_module.erl + + no warnings will be issued for functions that do not have any specs. + + Own Id: OTP-18968 + Related Id(s): GH-6979, PR-8093 + + *** POTENTIAL INCOMPATIBILITY *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +- Improved the match context reuse optimization slightly, allowing match + contexts to be passed as-is to `bit_size/1` and `byte_size/1`. + + Own Id: OTP-18987 + +- `m:erl_lint` (and by extension the `compiler`) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): PR-8205 + +> #### Full runtime dependencies of compiler-8.5 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Removed functions `crypto_dyn_iv_init/3` and `crypto_dyn_iv_update/3` which + were marked as deprecated since OTP 25. + + Own Id: OTP-18973 + +- Add support for sm3 hash and hmac. + + Own Id: OTP-18975 + Related Id(s): PR-6658 + +- `OPENSSL_thread_stop` is called when `crypto` is purged to not leak thread + specific data. + + Own Id: OTP-18978 + Related Id(s): PR-7809 + +- Add SM4 block cipher implemented according to GB/T 32907-2016. + + Own Id: OTP-19005 + Related Id(s): PR-8168 + +- The existing function ssl:key_exporter_materials/4 is now documented and + supported. + + Own Id: OTP-19016 + Related Id(s): PR-8233 + + *** POTENTIAL INCOMPATIBILITY *** + +- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack, + about which we were alerted by Hubert Kario from Red Hat. You can find more + details about the attack at https://people.redhat.com/~hkario/marvin/ + Functions that may be vulnerable are now deprecated. + + Note that you might mitigate the problem by using appropriate versions of + OpenSSL together with our software, but we recommend not using them at all. + + Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and + do not enable RSA-key exchange cipher suites (not supported by default). + + Own Id: OTP-19075 + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of crypto-5.5 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# debugger-5.4 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- Type specs have been added to all API functions. + + Own Id: OTP-18819 + Related Id(s): PR-7781 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The Debugger now use a trace session for its internal use of tracing to avoid + interfering with the user's use of tracing. + + Own Id: OTP-19074 + Related Id(s): PR-8389 + +> #### Full runtime dependencies of debugger-5.4 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0 + +# dialyzer-5.2 + +## Improvements and New Features + +- The `--gui` option for Dialyzer has been removed. + + Own Id: OTP-18667 + Related Id(s): PR-7443 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of dialyzer-5.2 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.4 + +## Improvements and New Features + +- `-callback` attributes have been added to `diameter_app` and + `diameter_transport`. + + Own Id: OTP-18783 + Related Id(s): PR-7699 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Pick peer can now also handle request of type `#diameter_packet{}`. + + Own Id: OTP-19090 + Related Id(s): PR-8399 + +> #### Full runtime dependencies of diameter-2.4 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.3 + +## Fixed Bugs and Malfunctions + +- EEP 48 doc chunks now properly include links within `{@type }` macros. + + Own Id: OTP-18945 + Related Id(s): PR-8063 + +- `@hidden` now means `hidden` in EEP 48 doc chunks instead of `none`. + + Own Id: OTP-18946 + Related Id(s): PR-8063 + +## Improvements and New Features + +- There is a new `edoc_html_to_markdown` module that can be used to convert + EEP-48 `application/html+erlang` to Markdown. + + Own Id: OTP-18947 + Related Id(s): PR-8063 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Added module `edoc_doclet_markdown` that can be used to convert EDoc style + documentation to Markdown documentation attributes. + + Own Id: OTP-19052 + Related Id(s): PR-8308 + +> #### Full runtime dependencies of edoc-1.3 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.13 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eldap-1.2.13 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.5.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-15.0 + +## Fixed Bugs and Malfunctions + +- Bugs in how `erl -extra` interacts with passing flags via ERL\_\*FLAGS or + `-args_file` have been fixed. + + Own Id: OTP-18766 + Related Id(s): PR-7639 + +- Fixed a bug that prevented the emulator from building on recent versions of + Yocto Linux. + + Own Id: OTP-18918 + Related Id(s): PR-7952 + +- Fixed spectre mitigation configure test to work with GCC patches to always add + `-fcf-protection=full`. + + Own Id: OTP-18928 + Related Id(s): PR-8006 + +- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could + cause a (case clause) crash if data is immediately available. + + Own Id: OTP-19063 + Related Id(s): OTP-18835 + +- Fix bug on Windows where `exit_status` would not be sent when a port exits + after the stdin/stdout handles have been closed. + + Own Id: OTP-19077 + Related Id(s): PR-8324 + +## Improvements and New Features + +- Refactored how the JIT handles POSIX signals and how they affect thread + stacks, allowing us to use the native stack register for Erlang stacks on more + platforms. + + Notably, containers built on 64-bit x86 Alpine Linux images will now perform + much better in sequential code. As an example, running `dialyzer` over the OTP + code base finishes about 15% quicker. + + Own Id: OTP-18568 + Related Id(s): PR-7174 + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The `pid` field returned from `erlang:fun_info/1,2` is now always the pid for + the `init` process of the local node, not the pid for the actual process that + created the fun. + + Own Id: OTP-18594 + Related Id(s): PR-7274 + + *** POTENTIAL INCOMPATIBILITY *** + +- By default, escripts will now be compiled instead of interpreted. That means + that the `compiler` application must be installed. + + Own Id: OTP-18639 + Related Id(s): PR-7348 + + *** POTENTIAL INCOMPATIBILITY *** + +- A binary returned from the `socket` receive functions is no longer created + as a sub binary of an often large receive buffer binary (socket option + `{otp,rcvbuf}`). This avoids space waste, trusting the allocators to implement + reallocation efficiently. + + Own Id: OTP-18642 + Related Id(s): GH-6152, PR-7465 + +- The default process limit has been raised to `1048576` processes. + + Own Id: OTP-18699 + Related Id(s): PR-7388 + +- The erlang:system_monitor/2 functionality is now able to monitor long + message queues in the system. + + Own Id: OTP-18709 + Related Id(s): PR-7651 + +- The `erl` command now supports the `-S` flag, which is similar to the `-run` + flag, except that it will pass all arguments up to end of the command line to + the called function. (The `-run` flag will not pass arguments beginning with a + hyphen.) Another difference is that `-S` will always call a function with one + argument, passing an empty list if no arguments were given. + + Own Id: OTP-18744 + Related Id(s): PR-7470 + + *** HIGHLIGHT *** + +- When implementing an alternative carrier for the Erlang distribution, a + separate input handler process may now be registered, using + erlang:dist_ctrl_input_handler/2, also in the case when the distribution + controller is a port. + + Own Id: OTP-18774 + Related Id(s): PR-7110 + +- The call stack trace has now been added to the error reported by + erlang:process_flag/2 when `max_heap_size` limit has been exceeded. + + Own Id: OTP-18779 + Related Id(s): PR-7592 + +- `-callback` attributes have been added to `erl_tracer`. + + Own Id: OTP-18794 + Related Id(s): PR-7703 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N` has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- New functions `socket:sendv/*` for sending I/O vectors have been added. + + Own Id: OTP-18845 + +- Socket options that take string now also accept binaries. + + Own Id: OTP-18849 + Related Id(s): PR-6510 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Changed the default value of the command line flag `-code_path_choice` to + `strict`. + + Note that for application systems using archives, it is necessary to add the + `code_path_choice relaxed` to the command line that invokes `erl`. + + Own Id: OTP-18894 + Related Id(s): PR-7243 + +- Added module loading to `erl -init_debug` printouts. + + Own Id: OTP-18929 + Related Id(s): PR-8004 + +- When the runtime system halts, it performs various flush operations before + terminating. By default there is no limit on how much time the flush + operations are allowed to take. A new _halt flush timeout_ functionality has + been introduced which can be used for limiting the amount of time that the + flushing operations are allowed to take. For more information see the + documentation of the `flush_timeout` option of the erlang:halt/2 BIF and + the documentation of the `erl` `+zhft <Timeout>` command line flag. + + Own Id: OTP-18938 + Related Id(s): GH-7438, PR-8035 + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- Updated asmjit to version a465fe71ab3d0e224b2b4bd0fac69ae68ab9239d + + Own Id: OTP-18942 + +- The deprecated functions in `zlib` have been removed. That includes + `inflateChunk/{1,2}`, `getBufSize/1`, `setBufSize/2`, the CRC32 functions, and + the Adler checksum functions. + + Own Id: OTP-18950 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Safe destructive update of tuples has been implemented in the compiler and + runtime system. This allows the VM to update tuples in-place when it is safe + to do so, thus improving performance by doing less copying but also by + producing less garbage. + + Example: + + -record(rec, {a,b,c}). + + update(#rec{a=needs_update,b=N}=R0) -> + R = R0#rec{a=up_to_date}, + if + N < 0 -> + R#rec{c=negative}; + N == 0 -> + R#rec{c=zero}; + N > 0 -> + R#rec{c=positive} + end. + + The record updates in each of the three clauses of the `if` can safely be done + in-place, because variable `R` is not used again. + + Own Id: OTP-18972 + Related Id(s): PR-8090 + + *** HIGHLIGHT *** + +- The obsolete and undocumented support for opening a port to an external + resource by passing an atom (or a string) as first argument to `open_port()`, + implemented by the vanilla driver, has been removed. This feature has been + scheduled for removal in OTP 27 since the release of OTP 26. + + Own Id: OTP-18976 + Related Id(s): PR-7125 + +- An optional NIF callback `ERL_NIF_OPT_ON_UNLOAD_THREAD` to be called by all + scheduler threads when a NIF library is unloaded. Used for releasing thread + specific data. Can be set with function `enif_set_option`. + + Own Id: OTP-18977 + Related Id(s): PR-7809 + +- There is a new module `trace` in Kernel providing the same trace + functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the + addition of **dynamic isolated trace sessions**. + + Own Id: OTP-18980 + *** HIGHLIGHT *** + +- Added the `+MMlp on|off` emulator option to let the `mseg` allocator use + "large pages" (sometimes known as "huge pages" or "super pages"). This + currently only affects super-carrier allocations, but may be extended in the + future. + + Own Id: OTP-18984 + Related Id(s): PR-7977 + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +- The `socket` documentation has been reworked, and due to that a few details + were fixed: + + - socket:is_supported/1 now returns `true` for example for `protocols` that + is a "category", not an item. + - socket:cancel_monitor/1 no longer badargs for a monitor that was set by + another process, instead it returns `false` as for other unknown + `reference()`s. + + Own Id: OTP-19054 + +> #### Full runtime dependencies of erts-15.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of et-1.7.1 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.9.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of eunit-2.9.1 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.2 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of ftp-1.2.2 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.2 + +## Improvements and New Features + +- Introduced a default value for httpd_server name configuration to improve ease + of use. + + Own Id: OTP-18641 + Related Id(s): PR-7316 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `httpd` module has been extended with an API for simple serving directory + content over HTTP. With this change, the current working directory can be + served like this: + + erl -S httpd + + An arbitrary directory can be served like this: + + erl -S httpd serve path/to/dir + + Own Id: OTP-18727 + Related Id(s): PR-7299 + +- Added `-callback` attributes to `httpd`, `mod_esi`, and `mod_security`. + + Own Id: OTP-18786 + Related Id(s): PR-7700 + +- Inets now uses a relative redirect with an absolute path to prevent whoever is + running Inets from having to configure the `ServerName` to match the + network-reachable host name of the server. + + Own Id: OTP-18809 + Related Id(s): GH-7617, PR-7678 + +- `inets` processes now use proc_lib:set_label/1 to improve observeability. + + Own Id: OTP-18927 + Related Id(s): PR-8029 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The implementations of http_uri:encode/1 and http_uri:decode/1 are now + replaced with their equivalent, but bug free versions from module + `uri_string`, namely uri_string:quote/1 and uri_string:unquote/1. + + Own Id: OTP-19022 + *** POTENTIAL INCOMPATIBILITY *** + +- With this change, the API specs are updated. + + Own Id: OTP-19033 + +> #### Full runtime dependencies of inets-9.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.14.1 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +# kernel-10.0 + +## Fixed Bugs and Malfunctions + +- Fixed a crash when calling file:delete/2 with an empty option list. + + Own Id: OTP-18590 + Related Id(s): PR-7220 + +- New functions have been added to the undocumented module `inet_dns` that + take a flag to specify if encode/decode is for mDNS. This affects how CLASS + values in the private range, with the top bit set, are handled. + + Own Id: OTP-18878 + Related Id(s): GH-7718, OTP-17734 + +- The error information for erlang:phash/2 has been corrected. + + Own Id: OTP-18904 + Related Id(s): PR-7960 + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +- Calling logger:add_handlers/1 with config option now works. + + Own Id: OTP-18954 + Related Id(s): GH-8061, PR-8076 + +- The code:del_path/1 function now also works on paths added through `-pa`, + `-pz` , `-path` and the boot script. + + Own Id: OTP-18959 + Related Id(s): GH-6692, PR-7697 + +- A call to `socket:recv|recvfrom|recvmsg/*` with Timeout = 0 on Windows could + cause a (case clause) crash if data is immediately available. + + Own Id: OTP-19063 + Related Id(s): OTP-18835 + +- Improve heuristic for when a characters is wide in the shell for systems with + old libc versions. + + Own Id: OTP-19087 + Related Id(s): PR-8382 + +- Fix reading a line when reading from io:user/0 to not consider `\r` without + `\n` to be a new line when `erl` is started with `-noshell`. + + Own Id: OTP-19088 + Related Id(s): GH-8360, PR-8396 + +## Improvements and New Features + +- Added file:read_file/2 with a `raw` option for reading files without going + through the file server. + + Own Id: OTP-18589 + Related Id(s): PR-7220 + +- The undocumented Erlang DNS resolver library (`inet_dns` and `inet_res`) has + been augmented to handle IXFR, NOTIFY, UPDATE and TSIG records. With this some + bug fixes and code cleanup has been done, and the resolver used in the test + suite has been changed to Knot DNS. See the source code. + + Kudos to Alexander Clouter that did almost all the work! + + Own Id: OTP-18713 + Related Id(s): GH-6985, PR-6985 + +- The `ebin` directories for escripts are now cached. + + Own Id: OTP-18778 + Related Id(s): PR-7556 + +- `-callback` attributes haven been added to `application`, + `logger_handler`, and `logger_formatter`. + + Own Id: OTP-18795 + Related Id(s): PR-7703 + +- Progress reports from before logger is started are now logged when log level + is set to debug. + + Own Id: OTP-18807 + Related Id(s): ERIERL-985, PR-7732 + +- The code:where_is_file/2 and code:which/1 functions now check for + existence of the file directly instead of listing the content of each + directory in the code path. + + Own Id: OTP-18816 + Related Id(s): PR-7711 + +- Type specs has been added to the `logger:Level/1,2,3` functions. + + Own Id: OTP-18820 + Related Id(s): PR-7779 + +- For `inet_backend = socket`, setting the `active` socket option alone, to + `once`, `true` or `N` has been optimized, as well as the corresponding data + delivery. + + Own Id: OTP-18835 + +- New functions `socket:sendv/*` for sending I/O vectors have been added. + + Own Id: OTP-18845 + +- The shell now pages long output from the documentation help command + (`h(Module)`), auto completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- Optimized code loading by moving certain operations from the code server to + the caller. + + Own Id: OTP-18941 + Related Id(s): PR-7981 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Application startup has been optimized by removing an intermediary process. + + Own Id: OTP-18963 + Related Id(s): PR-8042 + +- The existing experimental support for archive files will be changed in a + future release. The support for having an archive in an escript will remain, + but the support for using archives in a release will either become more + limited or completely removed. + + As of Erlang/OTP 27, the function code:lib_dir/2, the `-code_path_choice` + flag, and using `erl_prim_loader` for reading members of an archive are + deprecated. + + To remain compatible with future version of Erlang/OTP `escript` scripts that + need to retrieve data files from its archive should use escript:extract/2 + instead of `erl_prim_loader` and code:lib_dir/2. + + Own Id: OTP-18966 + Related Id(s): PR-8091 + + *** POTENTIAL INCOMPATIBILITY *** + +- The undocumented and deprecated `file:pid2name` function has been removed. + + Own Id: OTP-18967 + Related Id(s): PR-8092 + +- There is a new module `trace` in Kernel providing the same trace + functionality as erlang:trace/3 and erlang:trace_pattern/3, but with the + addition of **dynamic isolated trace sessions**. + + Own Id: OTP-18980 + *** HIGHLIGHT *** + +- Error logging has been improved when the io:standard_io/0 reader and/or + writer terminates with an error. + + Own Id: OTP-18989 + Related Id(s): PR-8103 + +- `inet_backend = socket` has been optimized and reworked to be more compatible + with the original `inet_backend = inet`. + + Own Id: OTP-19004 + Related Id(s): OTP-18835 + +- Add an simple example (echo server) )to the socket users guide. + + Own Id: OTP-19042 + +- `inet:i/0,1,2` has been improved to allow port numbers to be shown explicitly. + + Own Id: OTP-19053 + Related Id(s): #6724 + +- The `socket` documentation has been reworked, and due to that a few details + were fixed: + + - socket:is_supported/1 now returns `true` for example for `protocols` that + is a "category", not an item. + - socket:cancel_monitor/1 no longer badargs for a monitor that was set by + another process, instead it returns `false` as for other unknown + `reference()`s. + + Own Id: OTP-19054 + +- Add `stdin`, `stdout` and `stderr` keys to io:getopts/1 on + io:standard_io/0 to indicate if the respective I/O device is backed by a + terminal. + + Own Id: OTP-19089 + Related Id(s): PR-8396 + +> #### Full runtime dependencies of kernel-10.0 +> +> crypto-5.0, erts-15.0, sasl-3.0, stdlib-6.0 + +# megaco-4.6 + +## Improvements and New Features + +- `-callback` attributes have been added to `megaco_transport`. + + Own Id: OTP-18806 + Related Id(s): PR-7740 + +- Updated types and specs for all API modules. + + Own Id: OTP-18920 + Related Id(s): BL-322 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of megaco-4.6 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.23.2 + +## Fixed Bugs and Malfunctions + +- The `mnesia_registry` module have been deprecated. + + Own Id: OTP-18994 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of mnesia-4.23.2 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.16 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- `m:etop` has been updated to use dbg:session/2 in order to not interfere + with any other tracing. + + Own Id: OTP-19082 + Related Id(s): PR-8363 + +> #### Full runtime dependencies of observer-2.16 +> +> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3 + +# odbc-2.14.3 + +## Fixed Bugs and Malfunctions + +- The order of libs in the Makefile has been changed to avoid finding the + system's `libei` instead of Erlang's `libei`. + + Own Id: OTP-19030 + Related Id(s): GH-8244, PR-8258 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of odbc-2.14.3 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.10 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of os_mon-2.10 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.6 + +## Improvements and New Features + +- The `leex` documentation has been updated to use specs for documenting the + generated interface. + + Own Id: OTP-18796 + Related Id(s): PR-7703 + +- yecc now wraps the `-module` attribute with `-file` to indicate the `.yrl` + source file. + + Own Id: OTP-18912 + Related Id(s): PR-7963 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of parsetools-2.6 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.16 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Thanks to voltone for interop testing and related discussions. + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + + *** HIGHLIGHT *** + +- The exception reason when public_key:cacerts_get/0 failed has been improved. + + Own Id: OTP-18609 + Related Id(s): GH-7295, PR-7302 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- The existing function ssl:key_exporter_materials/4 is now documented and + supported. + + Own Id: OTP-19016 + Related Id(s): PR-8233 + + *** POTENTIAL INCOMPATIBILITY *** + +- Due to another attack on PKCS #1 v1.5 padding, known as the Marvin attack, + about which we were alerted by Hubert Kario from Red Hat. You can find more + details about the attack at https://people.redhat.com/~hkario/marvin/ + Functions that may be vulnerable are now deprecated. + + Note that you might mitigate the problem by using appropriate versions of + OpenSSL together with our software, but we recommend not using them at all. + + Also avoid using TLS versions prior to TLS-1.2 (not supported by default) and + do not enable RSA-key exchange cipher suites (not supported by default). + + Own Id: OTP-19075 + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of public_key-1.16 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# reltool-1.0.1 + +## Fixed Bugs and Malfunctions + +- The dependencies for this application are now listed in the app file. + + Own Id: OTP-18831 + Related Id(s): PR-7441 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of reltool-1.0.1 +> +> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.1 + +## Improvements and New Features + +- The `instrument` module can now track allocations on a per-process or + per-port basis. + + Own Id: OTP-18577 + Related Id(s): PR-7236 + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- Type specs had been added to all `dbg` functions. + + Own Id: OTP-18859 + Related Id(s): PR-7782 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- `m:dbg` have been updated to use trace sessions. + + dbg:session_create/1, dbg:session/2, and dbg:session_destroy/1 have been + added to work sessions. See the documentation for details. + + Own Id: OTP-19081 + Related Id(s): PR-8363 + +> #### Full runtime dependencies of runtime_tools-2.1 +> +> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.2.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of sasl-4.2.2 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.16 + +## Improvements and New Features + +- `-callback` attributes have been added to modules + `snmpa_network_interface_filter`, `snmpa_notification_filter`, + `snmpm_network_interface_filter`, `snmpm_user`, and + `snmpa_notification_delivery_info_receiver`. + + New `-type` attributes have also been added to modules `snmp`, `snmpa`, + `snmpm`, and `snmpa_conf` to support the previously mentioned callbacks. + + Own Id: OTP-18785 + Related Id(s): PR-7702 + +- Updated types and specs for all API modules. + + Own Id: OTP-18934 + Related Id(s): BL-312 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of snmp-5.16 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2 + +## Fixed Bugs and Malfunctions + +- SSH processes are now assigned labels for troubleshooting purposes. + + Own Id: OTP-19017 + Related Id(s): PR-8249 + +- With this change, ssh client will automatically adjust transfer window size + for commands executed remotely over SSH. + + Own Id: OTP-19057 + Related Id(s): GH-7483, PR-8345 + +## Improvements and New Features + +- The shell now pages long output from the documentation help command + (`h(Module)`), auto completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Updated types and specs for all API modules. + + Own Id: OTP-18961 + +> #### Full runtime dependencies of ssh-5.2 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2 + +## Fixed Bugs and Malfunctions + +- Starting a TLS server without sufficient credentials (certificate or anonymous + cipher) would work, but it was impossible to connect to it. + + This has been corrected to return an error instead of starting the server. + + Own Id: OTP-18887 + Related Id(s): GH-7493, PR-7918 + +- ASN.1 decoding errors are handled in more places to ensure that errors are + returned instead of cause a crash. + + Own Id: OTP-18969 + Related Id(s): GH-8058, PR-8256 + +- Improved error checking on the API functions. + + Own Id: OTP-18992 + Related Id(s): GH-8066, PR-8156 + +## Improvements and New Features + +- The `ssl` client can negotiate and handle certificate status request (OCSP + stapling support on the client side). + + Thanks to voltone for interop testing and related discussions. + + Own Id: OTP-18606 + Related Id(s): OTP-16448, OTP-16875 + + *** HIGHLIGHT *** + +- Memory consumption has been reduced and performance increased by refactoring + internal data structures and their usage. + + Own Id: OTP-18665 + Related Id(s): PR-7447 + +- Added ssl_crl_cache_api:lookup/2 as an optional `-callback` attribute. + + Own Id: OTP-18788 + Related Id(s): PR-7700 + +- Key customization support has been extended to allow flexibility for + implementers of for instance hardware security modules (HSM) or trusted + platform modules (TPM). + + Own Id: OTP-18876 + Related Id(s): PR-7475, PR-7898 + +- The proc_lib:set_label/1 function is now used to increase observability of + `ssl` processes. + + Own Id: OTP-18879 + +- Brainpool elliptic curves are now supported in TLS-1.3. + + Own Id: OTP-18884 + Related Id(s): PR-8056 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- For security reasons, the CBC ciphers are now longer included in the list of + default ciphers for TLS-1.2. + + Own Id: OTP-19025 + Related Id(s): PR-8250 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new `cert_policy_opts` option to configure certificate policy + options for the certificate path validation. + + Own Id: OTP-19027 + Related Id(s): PR-8255 + +> #### Full runtime dependencies of ssl-11.2 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.15, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.0 + +## Fixed Bugs and Malfunctions + +- The specs in module `binary` has been updated to reflect what is allowed by + the documentation. + + Own Id: OTP-18684 + Related Id(s): PR-7481 + +- Several functions in the `binary` module would accept arguments of the wrong + type under certain circumstances. In this release, they now raise an exception + when incorrect types are given. + + The following functions would accept an invalid pattern if the subject binary + was empty or if the `{scope,{0,0}}` option was given: `binary:match/2,3`, + `binary:matches/2,3`, `binary:replace/3,4`, and `binary:split/2,3` + + The call `binary:copy(<<1:1>>, 0)` would return an empty binary instead of + raising an exception. Similarly, calls to `binary:part/2,3` attempting to + extract 0 bytes at position 0 of a bitstring would return an empty binary + instead of raising an exception. + + Own Id: OTP-18743 + Related Id(s): PR-7607, PR-7628 + +- The documentation for the preprocessor now mentions that `defined(Name)` can + be called in the condition for an `-if` or `-elif` directive to test whether + `Name` is the name of a defined macro. (This feature was implemented in OTP + 21.) + + If a function call in an `-if` or `-elif` with a name that is not the name of + a guard BIF, there would not be a compilation error, but would instead cause + the lines following the directive to be skipped. This has now been changed to + be a compilation error. + + Own Id: OTP-18784 + Related Id(s): GH-7706, PR-7726 + + *** POTENTIAL INCOMPATIBILITY *** + +- `get_until` requests using the I/O protocol now correctly return a binary or + list when `eof` is the last item returned by the callback. + + Own Id: OTP-18930 + Related Id(s): GH-4992, PR-7993 + +- The error handling the `simple_one_for_one` supervisor has been enhanced. A + transient child returning `ignore` will no longer cause a crash. + + Also, automatic shutdown has been disabled because it does not make sense for + this supervisor type. That is was allowed is considered a bug. Therefore, we + don't consider this an incompatible change. + + Own Id: OTP-19029 + Related Id(s): PR-8230 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fix shell expansion to not crash when expanding a map with non-atom keys and + to not list zero arity functions when an argument has been given. + + Own Id: OTP-19073 + Related Id(s): GH-8364, GH-8365, GH-8366, PR-8375 + +## Improvements and New Features + +- The functions `is_equal/2`, `map/2`, and `filtermap/2` have been added to the + modules `sets`, `ordsets`, and `gb_sets`. + + Own Id: OTP-18622 + Related Id(s): PR-7183, PR-7232 + + *** HIGHLIGHT *** + +- The compiler now emits nicer error message for function head mismatches. For + example, given: + + a() -> ok; + a(_) -> error. + + Erlang/OTP 26 and earlier would emit a diagnostic similar to: + + t.erl:6:1: head mismatch + % 6| a(_) -> error. + % | ^ + + while in Erlang/OTP 27 the diagnostic is similar to: + + t.erl:6:1: head mismatch: function a with arities 0 and 1 is regarded as two distinct functions. Is the number of arguments incorrect or is the semicolon in a/0 unwanted? + % 6| a(_) -> error. + % | ^ + + Own Id: OTP-18648 + Related Id(s): PR-7383 + + *** HIGHLIGHT *** + +- `zip:create/2,3` will now tolerate POSIX timestamps in the provided + `file_info` records. + + Own Id: OTP-18668 + +- The callback function gen_statem:handle_event/4 has been cached in the + `gen_statem` engine to optimize callback call speed. + + Own Id: OTP-18671 + Related Id(s): PR-7419 + +- The type beam_lib:beam/0 is now exported. + + Own Id: OTP-18716 + Related Id(s): PR-7534 + +- The documentation for the `binary` module has been improved. + + Own Id: OTP-18741 + Related Id(s): PR-7585 + +- `binary:replace/3,4` now supports using a fun for supplying the replacement + binary. + + Own Id: OTP-18742 + Related Id(s): PR-7590 + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- The new function proc_lib:set_label/1 can be used to add a descriptive term + to any process that does not have a registered name. The name will be shown by + tools such as `\c:i/0`, `observer`, and it will be included in crash reports + produced by processes using `gen_server`, `gen_statem`, `gen_event`, and + `gen_fsm`. + + The label for a process can be retrieved by calling proc_lib:get_label/1. + + Note that those functions work on any process, not only processes that use + `proc_lib`. + + Example: + + 1> self(). + <0.90.0> + 2> proc_lib:set_label(my_label). + ok + 3> i(). + . + . + . + <0.90.0> erlang:apply/2 2586 75011 0 + my_label c:pinfo/2 51 + 4> proc_lib:get_label(self()). + my_label + + Own Id: OTP-18789 + Related Id(s): PR-7720, PR-8003 + +- `-callback` attributes has been added to modules `sys` and `erl_error`. + + Own Id: OTP-18793 + Related Id(s): PR-7703 + +- Several new functions that accept funs have been added to module `timer`. + + Functions `apply_after/2`, `apply_interval/2`, and `apply_repeatedly/2` accept + a nullary fun as the second argument, while functions `apply_after/3`, + `apply_interval/3`, and `apply_repeatedly/3` accept an n-ary fun as the second + and a list of n arguments for the fun as the third argument. + + Own Id: OTP-18808 + Related Id(s): PR-7649 + + *** HIGHLIGHT *** + +- Sigils on string literals have been implemented as per EEP 66, that is: + binary and string sigils in verbatim and escape characters variants, as well + as a default (vanilla) Sigil. All for ordinary strings and for triple-quoted + strings (EEP 64). See Sigils in the Reference Manual. + + Examples: + + 1> ~"Björn". + <<"Björn"/utf8>> + 2> ~b"Björn". + <<"Björn"/utf8>> + 3> ~S"\s*(\w+)". + "\\s*(\\w+)" + 4> ~B"\s*(\w+)". + <<"\\s*(\\w+)">> + + Own Id: OTP-18825 + Related Id(s): PR-7684, OTP-18750 + + *** HIGHLIGHT *** + +- Functions shell:default_multiline_prompt/1, shell:inverted_space_prompt/1, + and shell:prompt_width/1 have been exported to help with custom prompt + implementations. + + Own Id: OTP-18834 + Related Id(s): PR-7675, PR-7816 + +- The shell now pages long output from the documentation help command + (`h(Module)`), auto completions and the search command. + + Own Id: OTP-18846 + Related Id(s): PR-7845 + +- The `M-h` hotkey (Alt/Option-h) now outputs help for the module or function + directly before the cursor. + + Own Id: OTP-18847 + Related Id(s): PR-7846 + +- Added support for adding a custom code formatter that formats your multi-line + shell commands in your preferred formatting on submission. See + `shell:format_shell_func/` and shell:erl_pp_format_func/1. + + Own Id: OTP-18848 + Related Id(s): PR-7847 + +- Added shell functions for viewing, forgetting and saving locally defined + functions, types and records. + + Own Id: OTP-18852 + Related Id(s): PR-7844 + +- Added string:jaro_similarity/2, which can be used to calculate the + similarity between two strings. + + Own Id: OTP-18865 + Related Id(s): PR-7879 + +- The new function ets:update_element/4 is similar to ets:update_element/3, + but takes a default tuple as the fourth argument, which will be inserted if no + previous record with that key exists. + + Own Id: OTP-18870 + Related Id(s): PR-7857 + +- Added functions to retrieve the next higher or lower key/element from + `gb_trees` and `gb_sets`, as well as returning iterators that start at + given keys/elements. + + Own Id: OTP-18874 + Related Id(s): PR-7745 + +- When the shell built-in function `c/1,2` is used to re-compile a + module, the current working directory of the original compilation is now added + to the include path. + + + Own Id: OTP-18908 + Related Id(s): PR-7957 + +- The `timer` module now uses a private table for its internal state, slightly + improving its performance. + + Own Id: OTP-18914 + Related Id(s): PR-7973 + +- EEP-59 - Documentation Attributes has been implemented. + + Documentation attributes can be used to document functions, types, callbacks, + and modules. The keyword `-moduledoc "Documentation here".` is used to + document modules, while `-doc "Documentation here".` can be used on top of + functions, types, and callbacks to document them, respectively. + + - Types, callbacks, and function documentation can be set to `hidden` either + via `-doc false` or `-doc hidden`. When documentation attributes mark a type + as hidden, they will not be part of the documentation. + - The documentation from `moduledoc` and `doc` gets added by default to the + binary beam file, following the format of EEP-48. + - Using the compiler flag `warn_missing_doc` will raise a warning when `-doc` + attributes are missing in exported functions, types, and callbacks. + - Using the compiler flag `warn_missing_spec_documented` will raise a warning + when spec attributes are missing in documented functions, types, and + callbacks. + - `moduledoc`s and `doc`s may refer to external files to be embedded, such as + `-doc {file, "README.md"}.`, which refers to the file `README.md` found in + the current working directory. + - The compiler warns about exported functions whose specs refer to hidden + types. Thus, there will be warnings when a hidden type (meaning, the type is + not part of the documentation) gets used in an exported function. + + Own Id: OTP-18916 + Related Id(s): PR-7936 + + *** HIGHLIGHT *** + +- New `ets` functions ets:first_lookup/1, ets:next_lookup/2, + ets:prev_lookup/2 and ets:last_lookup/1. Example: ets:next_lookup/1 is + equivalent to ets:next/2 followed by ets:lookup/2 with the next key. The + new combined functions are more efficient and with guaranteed atomicity. + + Own Id: OTP-18923 + Related Id(s): PR-6791 + + *** HIGHLIGHT *** + +- The `maybe` expression is now enabled by default. + + To use `maybe` as an atom, it needs to be single-quoted. Alternatively, the + `maybe` expression can be disabled by disabling the `maybe_expr` feature. That + can be done by placing the following the line at the beginning of an Erlang + source file: + + -feature(maybe_expr, disable). + + Another way to disable the `maybe_expr` feature is by passing the + `-disable-feature` option to `erlc`: + + erlc -disable-feature maybe_expr some_file.erl + + Own Id: OTP-18944 + Related Id(s): PR-8067 + + *** HIGHLIGHT *** + +- The compiler will now raise a warning when updating record/map literals. As an + example, consider this module: + + -module(t). + -export([f/0]). + -record(r, {a,b,c}). + + f() -> + #r{a=1}#r{b=2}. + + The compiler raises the following warning: + + 1> c(t). + t.erl:6:12: Warning: expression updates a literal + % 6| #r{a=1}#r{b=2}. + % | ^ + + Own Id: OTP-18951 + Related Id(s): PR-8069 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Optimized `ets:foldl` and `ets:foldr` to use new `ets:next_lookup`. Also made + them immune against table renaming. + + Own Id: OTP-18993 + Related Id(s): PR-8048 + +- Windows now supports all functions in `math`. + + Own Id: OTP-19001 + Related Id(s): PR-8164 + +- `m:erl_lint` (and by extension the `compiler`) will now warn for code using + deprecated callbacks. + + The only callback currenly deprecated is `format_status/2` in `gen_server`, + `gen_event` and `gen_statem`. + + You can use `nowarn_deprecated_callback` to silence the warning. + + Own Id: OTP-19010 + Related Id(s): PR-8205 + +- There is a new module `json` for encoding and decoding JSON. + + Both encoding and decoding can be customized. Decoding can be done in a + SAX-like fashion and handle multiple documents and streams of data. + + Own Id: OTP-19020 + Related Id(s): PR-8111 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of stdlib-6.0 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# syntax_tools-3.2 + +## Fixed Bugs and Malfunctions + +- The `epp_dodger` module can now handle the `maybe` and `else` keywords. + + Own Id: OTP-18608 + Related Id(s): GH-7266, PR-7267 + +- Reverting a `#wrapper` will no longer throw away changes made to + positions/annotations. + + Own Id: OTP-18805 + Related Id(s): PR-7398 + +## Improvements and New Features + +- The type erl_syntax:annotation_or_location/0 is now exported. + + Own Id: OTP-18715 + Related Id(s): PR-7535 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of syntax_tools-3.2 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# tftp-1.2 + +## Improvements and New Features + +- There is a new `tftp_logger` callback behavior module. + + Own Id: OTP-18787 + Related Id(s): PR-7700 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of tftp-1.2 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.0 + +## Fixed Bugs and Malfunctions + +- Dialyzer warnings due to type specs added in `dbg` have been eliminated. + + Own Id: OTP-18860 + +- In Erlang/OTP 26, doing a `cover` analysis on the `line` level would return + multiple entries for lines on which multiple functions were defined. + + For example, consider this module: + + -module(foo). + -export(bar/0, baz/0). + + bar() -> ok. baz() -> not_ok. + + +{% raw %} + + + In Erlang/OTP 26, analysing on the `line` level would return two entries for + line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,{{foo,4},{1,0}},{{foo,4},{0,1}}} + 4> cover:analyse(foo, calls, line). + {ok,{{foo,4},1},{{foo,4},0}} + + In Erlang/OTP 27, there will only be a single entry for line 4: + + 1> cover:compile_module(foo). + {ok,foo} + 2> foo:bar(). + ok + 3> cover:analyse(foo, coverage, line). + {ok,{{foo,4},{1,0}}} + 4> cover:analyse(foo, calls, line). + {ok,{{foo,4},1}} + +{% endraw %} + + Own Id: OTP-18998 + Related Id(s): GH-8159, PR-8182 + +- Fixed align command in emacs mode. + + Own Id: OTP-19026 + Related Id(s): PR-8155 + +## Improvements and New Features + +- Triple-Quoted Strings has been implemented as per EEP 64. See String in the + Reference Manual. + + Example: + + 1> """ + a + b + c + """. + "a\nb\nc" + + Adjacent string literals without intervening white space is now a syntax + error, to avoid possible confusion with triple-quoted strings. For example: + + 1> "abc""xyz". + "xyz". + * 1:6: adjacent string literals without intervening white space + + Own Id: OTP-18750 + Related Id(s): PR-7313, PR-7451, OTP-18746 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- There is a new tool `tprof`, which combines the functionality of `eprof` + and `cprof` under one interface and adds heap profiling. It also has + functionality to help with profiling process hierarchies. + + _Example_: + + 1> tprof:profile(lists, seq, [1, 16], #{type => call_memory}). + + ****** Process <0.92.0> -- 100.00% of total *** + FUNCTION CALLS WORDS PER CALL [ %] + lists:seq_loop/3 5 32 6.40 [100.00] + 32 [ 100.0] + ok + + Own Id: OTP-18756 + Related Id(s): PR-6639 + + *** HIGHLIGHT *** + +- Native coverage support has been implemented in the JIT. It will automatically + be used by the `cover` tool to reduce the execution overhead when running + cover-compiled code. + + There are also new APIs to support native coverage without using the `cover` + tool. + + To instrument code for native coverage it must be compiled with the + `line_coverage` option. + + To enable native coverage in the runtime system, start it like so: + + $ erl +JPcover true + + There are also the following new functions for supporting native coverage: + + - code:coverage_support/0 + - code:get_coverage/2 + - code:reset_coverage/1 + - code:get_coverage_mode/0 + - code:get_coverage_mode/1 + - code:set_coverage_mode/1 + + Own Id: OTP-18856 + Related Id(s): PR-7856 + + *** HIGHLIGHT *** + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +- Improved the align command in emacs mode. + + Own Id: OTP-19080 + Related Id(s): PR-8288 + +> #### Full runtime dependencies of tools-4.0 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.4.2 + +## Improvements and New Features + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of wx-2.4.2 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.0 + +## Fixed Bugs and Malfunctions + +- Some default values in Xmerl has been changed to avoid XML External Entity + (XXE) vulnerabilities if you're parsing untrusted XML. + + xmerl_scan: the default value for allow_entities has changed to false. + xmerl_sax_parser: the default value for external_entities has changed to none. + + Own Id: OTP-19079 + Related Id(s): GH-7539 + + *** POTENTIAL INCOMPATIBILITY *** + +- An event state in xmerl_sax_parser which was updated in the event callback for + a startEntity was not saved. + + Own Id: OTP-19086 + Related Id(s): GH-8452 + +## Improvements and New Features + +- Function specifications and types have been added to all public API functions. + + Own Id: OTP-18913 + +- As an alternative to `xmerl_xml`, a new export module `xmerl_xml_indent` that + provides out-of-the box indented output has been added. + + Own Id: OTP-18922 + Related Id(s): PR-7942 + +- The documentation has been migrated to use Markdown and ExDoc. + + Own Id: OTP-18955 + Related Id(s): PR-8026 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of xmerl-2.0 +> +> erts-6.0, kernel-3.0, stdlib-2.5 + +# Thanks to + +Alexander Clouter, Andrea Leopardi, Angelo Lakra, Anshul Mittal (WhatsApp), +Anupama Singh, Artem Solomatin, Benjamin Philip, chiroptical, Christian Flicker, +Fabian N.C. van 't Hooft, Frej Drejhammar, Gilbert, Guilherme Andrade, Gustaw +Lippa, Ildar Khizbulin, Ilya Klyuchnikov, Ivan Sokolov, Jakub Witczak, Jan +Uhlig, jdamanalo, jianhui, João Henrique Ferreira de Freitas, Johannes Christ, +Jonatan Männchen, Jonathan Arnett, José Valim, Jurek Michal-AMJ018, +lexprfuncall, LJZN, Luca Succi, Łukasz Niemier, Marcelino Alberdi Pereira, Maria +Scott, Marko Mindek, Matthew Pope, Maxim Fedorov, Max Nordlund kivra, M-I, +Michael Davis, Michal Jurek, Michal Kuratczyk, Michał Muskała, Nelson Vides, +neo, Nikolay Amiantov, Paul Guyot, Paulo F. Oliveira, Richard Carlsson, Roberto +Aloi, Robin Morisset, Ryota Kinukawa, Sacha, Sergey Yelin, Takeru Ohta, Tomas +Abrahamsson, William Fank Thomé, WLSF, yastanotheruser, zeyun chen, Zeyu Zhang + diff --git a/release-notes/OTP-27.1.1.README.txt b/release-notes/OTP-27.1.1.README.txt new file mode 100644 index 0000000..3038f99 --- /dev/null +++ b/release-notes/OTP-27.1.1.README.txt @@ -0,0 +1,154 @@ +Patch Package: OTP 27.1.1 +Git Tag: OTP-27.1.1 +Date: 2024-09-30 +Trouble Report Id: OTP-19227, OTP-19236, OTP-19238, OTP-19241, + OTP-19245, OTP-19251, OTP-19252, OTP-19254, + OTP-19256, OTP-19257 +Seq num: #8848, #8853, ERIERL-1130, GH-8832, PR-8261, + PR-8780, PR-8809, PR-8836, PR-8858 +System: OTP +Release: 27 +Application: common_test-1.27.2, erts-15.1.1, + public_key-1.16.3, ssl-11.2.3, stdlib-6.1.1 +Predecessor: OTP 27.1 + +Check out the git tag OTP-27.1.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# common_test-1.27.2 + +The common_test-1.27.2 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, HTML reports include jQuery version 3.7.1. + + Own Id: OTP-19252 + Related Id(s): PR-8858 + +> #### Full runtime dependencies of common_test-1.27.2 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# erts-15.1.1 + +The erts-15.1.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- On Windows, successive failed socket calls caused socket to become + "uninitialized". + + Own Id: OTP-19251 + Related Id(s): #8853 + +- The socket framework fails to start on a IPv6-only Windows machine. + + Own Id: OTP-19254 + Related Id(s): #8848 + +> #### Full runtime dependencies of erts-15.1.1 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# public_key-1.16.3 + +The public_key-1.16.3 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Introduction of verify_fun/4 unfortunately introduced an argument switch for + some specific path validation errors so that verify_fun/3 could under these + circumstances be called with a DER cert instead of a decod cert, also in this + situation the verify_fun/4 would have the certificates in reverse order. + + Own Id: OTP-19245 + Related Id(s): GH-8832 + +## Improvements and New Features + +- Do not hide crypto badarg reason, this error handling enhancement facilitates + debugging. These kind of runtime errors are not documented and should never be + relied on for matching, they are intended for catching input errors early. + + Own Id: OTP-19238 + +> #### Full runtime dependencies of public_key-1.16.3 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# ssl-11.2.3 + +Note! The ssl-11.2.3 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.2 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Starting from TLS-1.3 some server handshake alerts might arrive after + ssl:connection/2,3,4 has returned. If the socket is in active mode the + controlling process will get the alert message, but passive sockets would only + get {error, closed} on next call to ssl:recv/2,3 or ssl/setopts/2. Passive + sockets calls will now return {error, error_alert()} instead. + + Own Id: OTP-19236 + Related Id(s): PR-8261 + +- Servers configured to support only version (pre TLS-1.2) should ignore hello + version extension, as it is an unknown extension to them, this will result in + that new clients that do not support the old server version will get an + insufficient security alert from the server and not a protocol version alert, + this is consistent with how old servers not able to support higher protocol + versions work. + + Own Id: OTP-19257 + +> #### Full runtime dependencies of ssl-11.2.3 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.2, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.1.1 + +The stdlib-6.1.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Remove whitespace stripping of returned binaries in json:decode/3. + + Own Id: OTP-19227 + Related Id(s): ERIERL-1130, PR-8809 + +- Fix zip:unzip/2 to not crash when extracting zip files with garbage in the + Zip64 extra header. This bug was introduced in Erlang 27.1 and has so far only + been seen on some archives creates by MS Excel. + + Own Id: OTP-19241 + Related Id(s): PR-8836 + +- With this change, shutdown procedure handles a race condition between + supervisor executing a shutdown and child process termination from other + reason. + + Own Id: OTP-19256 + Related Id(s): PR-8780 + +> #### Full runtime dependencies of stdlib-6.1.1 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# Thanks to + +Jakub Witczak + diff --git a/release-notes/OTP-27.1.2.README.txt b/release-notes/OTP-27.1.2.README.txt new file mode 100644 index 0000000..0d5cc52 --- /dev/null +++ b/release-notes/OTP-27.1.2.README.txt @@ -0,0 +1,238 @@ +Patch Package: OTP 27.1.2 +Git Tag: OTP-27.1.2 +Date: 2024-10-17 +Trouble Report Id: OTP-19124, OTP-19235, OTP-19246, OTP-19247, + OTP-19249, OTP-19258, OTP-19265, OTP-19266, + OTP-19267, OTP-19268, OTP-19269, OTP-19274, + OTP-19286, OTP-19288 +Seq num: ERIERL-1127, ERIERL-1133, ERIERL-1134, + ERIERL-1137, ERIERL-1138, GH-6455, GH-7550, + GH-8223, GH-8835, GH-8875, GH-8880, GH-8908, + OTP-18520, OTP-19061, PR-8226, PR-8766, + PR-8837, PR-8854, PR-8866, PR-8876, PR-8890, + PR-8892, PR-8895, PR-8897, PR-8901, PR-8914, + PR-8916 +System: OTP +Release: 27 +Application: common_test-1.27.3, erts-15.1.2, + kernel-10.1.1, ssh-5.2.3, ssl-11.2.4, + stdlib-6.1.2 +Predecessor: OTP 27.1.1 + +Check out the git tag OTP-27.1.2, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# common_test-1.27.3 + +The common_test-1.27.3 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, jquery and tablesorter licenses are added to COPYRIGHT file. + Also tablesorter is updated to version 2.32. + + Own Id: OTP-19265 + Related Id(s): PR-8876 + +> #### Full runtime dependencies of common_test-1.27.3 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# erts-15.1.2 + +The erts-15.1.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- A bug has been fixed where receiving an SCTP message with `gen_sctp` could + waste the first fragments of a message and only deliver the last fragment. + + This happened with low probability when the OS signaled that the socket was + ready for reading in combination with an internal time-out retry. + + A bug has been fixed with a lingering time-out from after an SCTP connect that + could stop the flow of incoming messages on an active `gen_tcp` socket. + + Own Id: OTP-19235 + Related Id(s): ERIERL-1133, PR-8837 + +- An boolean option `non_block_send` for SCTP, has ben added to be able to + achieve the old behaviour to avoid blocking send operations by passing the OS + network stack error message (`{error,eagain}` through. + + Own Id: OTP-19258 + Related Id(s): ERIERL-1134, OTP-19061 + +- The call gen_tcp:send/2 could hang indefinitely despite having set the + `send_timeout` option for the following unfortunate combination of + circumstances: + + - The socket has to be in passive mode. + - All output buffers had to be filled util the `high_watermark` was hit, + causing the gen_tcp:send/2 operation to block. + - While the send operation was blocked, a `gen_tcp:recv/2,3` call had to be + done from a different process. It had to block, waiting for data for a while + before completing the operation, and the received packet had to fill at + least 75% of the receive buffer. + + Under these circumstances he information that a send operation was waiting got + lost, so the send operation that blocked in the first placed would never + return. The data it had would be sent, though, and send operations from other + processes, still work. + + This bug has been fixed. + + Own Id: OTP-19267 + Related Id(s): ERIERL-1138, GH-6455, PR-8892, OTP-18520 + +- In rare circumstances, in code that matches multiple tuples, the JIT could + generate code that would raise a `badmatch` exception even if the given tuples + were correct. + + Own Id: OTP-19268 + Related Id(s): GH-8875, PR-8895 + +- Fixed beam crash that could happen if resetting `call_time` or `call_memory` + trace counters of a function while it is called. Bug exists since OTP R16. + + Own Id: OTP-19269 + Related Id(s): GH-8835, PR-8897 + +> #### Full runtime dependencies of erts-15.1.2 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.1.1 + +Note! The kernel-10.1.1 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- A bug has been fixed where receiving an SCTP message with `gen_sctp` could + waste the first fragments of a message and only deliver the last fragment. + + This happened with low probability when the OS signaled that the socket was + ready for reading in combination with an internal time-out retry. + + A bug has been fixed with a lingering time-out from after an SCTP connect that + could stop the flow of incoming messages on an active `gen_tcp` socket. + + Own Id: OTP-19235 + Related Id(s): ERIERL-1133, PR-8837 + +- An boolean option `non_block_send` for SCTP, has ben added to be able to + achieve the old behaviour to avoid blocking send operations by passing the OS + network stack error message (`{error,eagain}` through. + + Own Id: OTP-19258 + Related Id(s): ERIERL-1134, OTP-19061 + +> #### Full runtime dependencies of kernel-10.1.1 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# ssh-5.2.3 + +The ssh-5.2.3 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, a race condition is removed from ssh client connection setup + procedure. + + Own Id: OTP-19124 + Related Id(s): GH-7550, PR-8766 + +- With this change, ssh:connect is not affected by presence of EXIT message in + queue. + + Own Id: OTP-19246 + Related Id(s): GH-8223, PR-8854 + +- With this change, ssh appends {active, false} option after socket options + received from user - so that false value is always used. + + Own Id: OTP-19247 + Related Id(s): PR-8226 + +> #### Full runtime dependencies of ssh-5.2.3 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.4 + +Note! The ssl-11.2.4 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.2 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Refactor trying to also make some optimizations introduced a bug in signature + algorithms checks in OTP-26.2.1. This could manifest itself in not being able + to negotiate connections using certificates needing to use some TLS-1.2 + compatibility legacy signature schemes. + + Own Id: OTP-19249 + Related Id(s): ERIERL-1137, PR-8866 + +- Correct timeout handling for termination code run for own alerts, so that + intended timeout is used instead of falling back to OS TCP-stack timeout that + is unreasonably long on some platforms. + + Own Id: OTP-19274 + Related Id(s): PR-8901 + +- Fix assertion so that works as intended. This could result in that some + TLS-1.2 clients would fail to connect to the the erlang server. Bug introduced + in OTP-27.1.1 + + Own Id: OTP-19288 + Related Id(s): GH-8908, PR-8916 + +> #### Full runtime dependencies of ssl-11.2.4 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.2, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.1.2 + +The stdlib-6.1.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, uri_string:normalize assumes empty path (do not crash) when + no path is provided in the URI map. + + Own Id: OTP-19266 + Related Id(s): ERIERL-1127, PR-8890 + +- Fixed spec for json:format/3. + + Own Id: OTP-19286 + Related Id(s): GH-8880, PR-8914 + +> #### Full runtime dependencies of stdlib-6.1.2 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# Thanks to + +Jakub Witczak + diff --git a/release-notes/OTP-27.1.3.README.txt b/release-notes/OTP-27.1.3.README.txt new file mode 100644 index 0000000..4f2f4ea --- /dev/null +++ b/release-notes/OTP-27.1.3.README.txt @@ -0,0 +1,234 @@ +Patch Package: OTP 27.1.3 +Git Tag: OTP-27.1.3 +Date: 2024-12-05 +Trouble Report Id: OTP-19240, OTP-19293, OTP-19311, OTP-19325, + OTP-19326, OTP-19328, OTP-19332, OTP-19340, + OTP-19350, OTP-19352, OTP-19357, OTP-19365, + OTP-19366, OTP-19374 +Seq num: #8989, CVE-2024-53846, ERIERL-1134, + ERIERL-1139, ERIERL-1147, ERIERL-1157, + GH-8929, GH-9009, GH-9014, GH-9100, + OTP-19061, OTP-19240, OTP-19532, PR-8840, + PR-8924, PR-8931, PR-8980, PR-8995, PR-9001, + PR-9024, PR-9053, PR-9080, PR-9111, PR-9130 +System: OTP +Release: 27 +Application: common_test-1.27.4, compiler-8.5.3, + erts-15.1.3, kernel-10.1.2, + public_key-1.16.4, ssh-5.2.4, ssl-11.2.5 +Predecessor: OTP 27.1.2 + +Check out the git tag OTP-27.1.3, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# common_test-1.27.4 + +The common_test-1.27.4 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, cth_surefire hook module handles group path reduction for a + skipped group. This fixes a bug manifesting with improper group path for a + group executed after a group which was skipped. + + Own Id: OTP-19365 + Related Id(s): ERIERL-1157, PR-9080 + +## Improvements and New Features + +- With this change, prefix option can be specified in cth_conn_log option list. + Option allows to specify how much of additional information is added in raw + log output. + + Own Id: OTP-19293 + Related Id(s): ERIERL-1139, PR-8924, PR-8931 + +> #### Full runtime dependencies of common_test-1.27.4 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5.3 + +The compiler-8.5.3 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- In rare circumstances, the destructive tuple update optimization could be + applied when it was unsafe. + + Own Id: OTP-19340 + Related Id(s): GH-9014, PR-9024 + +- In rare circumstances involving appending to multiple binaries, the compile + could emit unsafe code that would crash the runtime system. + + Own Id: OTP-19374 + Related Id(s): GH-9100, PR-9111 + +> #### Full runtime dependencies of compiler-8.5.3 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# erts-15.1.3 + +The erts-15.1.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- gen_udp:send on domain local can leak inet_reply messages. + + Own Id: OTP-19332 + Related Id(s): #8989 + +- net:getifaddrs does not properly report the running flag on windows. + + Own Id: OTP-19366 + Related Id(s): ERIERL-1134, OTP-19061 + +> #### Full runtime dependencies of erts-15.1.3 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.1.2 + +Note! The kernel-10.1.2 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- On windows the socket:recv could return with success ({ok, Data}) even though + not all data had been read. + + Own Id: OTP-19328 + +- gen_udp:send on domain local can leak inet_reply messages. + + Own Id: OTP-19332 + Related Id(s): #8989 + +- Failure to create an UDP IPv6 socket when inet_backend = socket with certain + IPv6 socket options. + + Own Id: OTP-19357 + +- net:getifaddrs does not properly report the running flag on windows. + + Own Id: OTP-19366 + Related Id(s): ERIERL-1134, OTP-19061 + +> #### Full runtime dependencies of kernel-10.1.2 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# public_key-1.16.4 + +The public_key-1.16.4 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- If both `ext-key-usage` and `key-usage` are defined for a certificate it + should be checked that these usages are consistent with each other. This will + have the affect that such certificates where the `ext-key-usages` is marked as + critical and the usages is consistent with the `key-use` it can be considered + valid without mandatory application specific checks for the `ext-key-useage` + extension. + + Own Id: OTP-19240 + Related Id(s): PR-8840, OTP-19532 + +- Handle decoding of EDDSA key properly, when decoding a PEM file that contains + only the public EDDSA key. + + Own Id: OTP-19350 + Related Id(s): GH-9009, PR-9053 + +> #### Full runtime dependencies of public_key-1.16.4 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# ssh-5.2.4 + +The ssh-5.2.4 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, ssh connection does not crash upon receiving exit-signal + message for an already terminated channel. + + Own Id: OTP-19326 + Related Id(s): GH-8929, PR-8995 + +> #### Full runtime dependencies of ssh-5.2.4 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.5 + +Note! The ssl-11.2.5 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- Avoid generating an internal alert for case that should have been an orderly + shutdown by the supervisor. + + Own Id: OTP-19311 + Related Id(s): PR-8980 + +- If present, extended key-usage TLS (SSL) role check (`pk-clientAuth`, + `pk-serverAuth`) should always be performed for peer-cert. An intermediate CA + cert may relax the requirement if `AnyExtendedKeyUsage` purpose is present. + + In OTP-25.3.2.8, OTP-26.2 and OTP-27.0 these requirements became too relaxed. + There where two problems, firstly the peer cert extension was only checked if + it was marked critical, and secondly the CA cert check did not assert the + relaxed `AnyExtendedKeyUsage` purpose. + + This could result in that certificates might be misused for purposes not + intended by the certificate authority. + + Thanks to Bryan Paxton for reporting the issue. + + Own Id: OTP-19352 + Related Id(s): PR-9130, CVE-2024-53846, OTP-19240 + +## Improvements and New Features + +- Back port certificate_authorities option for TLS-1.3 servers to pre TLS-1.3 + servers to enable them to disable the sending of certificate authorities in + their certificate request. This will have same affect as the the TLS-1.3 + server option although it is handled by a different mechanism in these + versions, where the functionality is described to be more of a guidance, + although some pre TLS clients have proven to make it mandatory as in TLS-1.3 + extension handling. + + Own Id: OTP-19325 + Related Id(s): ERIERL-1147, PR-9001 + +> #### Full runtime dependencies of ssl-11.2.5 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# Thanks to + +Frej Drejhammar, zmstone + diff --git a/release-notes/OTP-27.1.README.txt b/release-notes/OTP-27.1.README.txt new file mode 100644 index 0000000..414076a --- /dev/null +++ b/release-notes/OTP-27.1.README.txt @@ -0,0 +1,1038 @@ +Patch Package: OTP 27.1 +Git Tag: OTP-27.1 +Date: 2024-09-18 +Trouble Report Id: OTP-17848, OTP-19032, OTP-19097, OTP-19098, + OTP-19101, OTP-19102, OTP-19103, OTP-19104, + OTP-19105, OTP-19110, OTP-19112, OTP-19113, + OTP-19114, OTP-19119, OTP-19122, OTP-19126, + OTP-19128, OTP-19129, OTP-19130, OTP-19132, + OTP-19133, OTP-19134, OTP-19136, OTP-19138, + OTP-19139, OTP-19143, OTP-19145, OTP-19146, + OTP-19148, OTP-19153, OTP-19154, OTP-19157, + OTP-19163, OTP-19164, OTP-19166, OTP-19167, + OTP-19168, OTP-19169, OTP-19170, OTP-19171, + OTP-19172, OTP-19173, OTP-19175, OTP-19176, + OTP-19178, OTP-19179, OTP-19181, OTP-19182, + OTP-19183, OTP-19186, OTP-19187, OTP-19188, + OTP-19189, OTP-19190, OTP-19191, OTP-19192, + OTP-19193, OTP-19197, OTP-19199, OTP-19200, + OTP-19201, OTP-19202, OTP-19203, OTP-19205, + OTP-19206, OTP-19208, OTP-19209, OTP-19210, + OTP-19211, OTP-19212, OTP-19214, OTP-19215, + OTP-19216, OTP-19217, OTP-19218, OTP-19219, + OTP-19220, OTP-19222 +Seq num: #8399, ERIERL-1102, ERIERL-1104, ERIERL-870, + GH-4362, GH-7621, GH-7746, GH-8378, GH-8454, + GH-8472, GH-8477, GH-8486, GH-8498, GH-8561, + GH-8562, GH-8568, GH-8604, GH-8605, GH-8613, + GH-8630, GH-8656, GH-8657, GH-8661, GH-8690, + GH-8715, GH-8738, GH-8748, GH-8779, GH-8785, + OTP-18671, OTP-18835, OTP-19101, OTP-19175, + PR-7226, PR-7419, PR-7919, PR-8261, PR-8310, + PR-8472, PR-8478, PR-8499, PR-8503, PR-8515, + PR-8516, PR-8518, PR-8521, PR-8528, PR-8539, + PR-8541, PR-8543, PR-8555, PR-8560, PR-8575, + PR-8578, PR-8583, PR-8584, PR-8596, PR-8611, + PR-8623, PR-8627, PR-8636, PR-8638, PR-8655, + PR-8672, PR-8683, PR-8686, PR-8690, PR-8692, + PR-8702, PR-8703, PR-8707, PR-8709, PR-8731, + PR-8739, PR-8740, PR-8741, PR-8742, PR-8751, + PR-8757, PR-8765, PR-8774, PR-8777, PR-8781 +System: OTP +Release: 27 +Application: asn1-5.3.1, common_test-1.27.1, + compiler-8.5.2, crypto-5.5.1, dialyzer-5.2.1, + diameter-2.4.1, edoc-1.3.2, erts-15.1, + ftp-1.2.3, inets-9.3, kernel-10.1, odbc-2.15, + public_key-1.16.2, runtime_tools-2.1.1, + snmp-5.17, ssh-5.2.2, ssl-11.2.2, stdlib-6.1, + syntax_tools-3.2.1, tftp-1.2.1, tools-4.1, + wx-2.4.3, xmerl-2.1 +Predecessor: OTP 27.0.1 + +Check out the git tag OTP-27.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# HIGHLIGHTS + +- The `zip` module has been updated with support for: + + - zip64 archives - Archives larger than 4GB or with more than 2^32 entries. + - extended timestamps - Higher resolution and in UTC. + - UID/GID - Save and extract the original UID/GID. + - Fixes so that permission mode attributes are correctly read and set for + files in archives. + - zip:list_dir/2 now also returns directories, not only files. (You can + disable this behaviour by using the option `skip_directories`). + + Various bugs in the original implementation have also been fixed, such as: + + - Correctly encode and decode the DOS timestamps for entries within an archive + (that is the non-extended timestamp). + - Fix DOS timestamps to be set to localtime instead of UTC (use extended + timestamps for UTC timestamps). + - Use the unix file attributes read from disk when creating archives instead + of setting everything to 644. + + Own Id: OTP-19214 + Application(s): erts, stdlib + Related Id(s): PR-8765 + +# POTENTIAL INCOMPATIBILITIES + +- Progress reports for a dynamically started supervisor will now be logged at + debug level. + + Own Id: OTP-19202 + Application(s): stdlib + Related Id(s): GH-8715, PR-8261, PR-8741 + +# OTP-27.1 + +## Fixed Bugs and Malfunctions + +- The description of the pre-defined macros has been clarified. In particular, + it is now made clear that the release returned by `?OTP_RELEASE` is the + release under which the compiler is run. + + Own Id: OTP-19103 + Related Id(s): GH-8486, PR-8518 + +- `ex_doc` now runs using an explicit escript instance instead of `/usr/bin/env` + so that package tools such as `nix` can build the documentation. + + Own Id: OTP-19145 + Related Id(s): GH-8378, PR-8596 + +- The `otp_patch_apply` script, used for patching OTP applications, has been + fixed. It was not possible (and still is not possible) to apply applications + from the OTP 27.0.1 patch package onto an OTP 27.0 installation. + + Own Id: OTP-19182 + +- `./otp_build download_ex_doc` was using `sha1sum` and `sha256sum` which work + on various Unix systems. macOS does not have these applications installed by + default, so we added a new dependency to the build process, `shasum`, which is + installed by default on macOS and allows us to check the integrity of + `ex_doc`. + + Own Id: OTP-19193 + Related Id(s): GH-8656, PR-8707 + +- On documentation web pages using Mermaid JS scripts for figures, the scripts + are now loaded asynchronously so that the rest of pages can be shown while the + scripts are still downloading. + + Own Id: OTP-19197 + Related Id(s): PR-8731 + +## Improvements and New Features + +- The obsolete documentation for OAM Principles has been removed. + + Own Id: OTP-19110 + Related Id(s): PR-8528 + +# asn1-5.3.1 + +The asn1-5.3.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a cosmetic but harmless issue with the ASN.1 compiler passing on the + `undec_rest` option to the Erlang compiler. + + Own Id: OTP-19218 + Related Id(s): GH-8779, PR-8781 + +> #### Full runtime dependencies of asn1-5.3.1 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27.1 + +The common_test-1.27.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Groups with empty list specifying groups and test cases no longer crash + execution. + + Own Id: OTP-19032 + Related Id(s): GH-4362, PR-7919 + +- The Common_Test documentation and type specs have been polished. + + Own Id: OTP-19148 + Related Id(s): PR-8516 + +- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other + programs that are included in Erlang/OTP. + + Own Id: OTP-19201 + Related Id(s): PR-8740 + +> #### Full runtime dependencies of common_test-1.27.1 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5.2 + +The compiler-8.5.2 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a crash in an optimization pass relating to appending binaries. + + Own Id: OTP-19168 + Related Id(s): GH-8630 + +- Fixed a bug in the compiler's alias analysis pass that could make it emit + unsafe code. + + Own Id: OTP-19178 + Related Id(s): PR-8686 + +> #### Full runtime dependencies of compiler-8.5.2 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5.1 + +The crypto-5.5.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- crypto built with `--enable-fips` will now accept an OpenSSL 3 lib without + fips provider as long as fips mode is not enabled. + + Own Id: OTP-19212 + Related Id(s): GH-8562 + +## Improvements and New Features + +- Added a warning in the documentation to avoid calling crypto:start/0 as it + does not work for FIPS mode. Use `application:start(crypto)` instead. + + Own Id: OTP-19143 + +- Deprecation of RSA encryption functions has been reverted, as there still + exists legitimate use cases with other padding modes than PKCS-1. + + While use PCKS-1 padding with some versions of cryptolib could be considered + secure, we still recommend using other algorithms that are less sensitive to + oracle attacks. + + Own Id: OTP-19163 + +- Compiler warnings for some removed functions have been corrected to point out + the correct replacement functions. + + Own Id: OTP-19186 + Related Id(s): PR-8709 + +> #### Full runtime dependencies of crypto-5.5.1 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# dialyzer-5.2.1 + +The dialyzer-5.2.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other + programs that are included in Erlang/OTP. + + Own Id: OTP-19201 + Related Id(s): PR-8740 + +> #### Full runtime dependencies of dialyzer-5.2.1 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.4.1 + +The diameter-2.4.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Function specs for the main API module has been updated. + + Own Id: OTP-19126 + Related Id(s): #8399 + +- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other + programs that are included in Erlang/OTP. + + Own Id: OTP-19201 + Related Id(s): PR-8740 + +- diameter:stop_service/1 has been made more synchronous. + + Own Id: OTP-19206 + Related Id(s): ERIERL-1102 + +> #### Full runtime dependencies of diameter-2.4.1 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.3.2 + +The edoc-1.3.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Broken links in release notes have been mended. + + Own Id: OTP-19139 + Related Id(s): PR-8584 + +> #### Full runtime dependencies of edoc-1.3.2 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# erts-15.1 + +The erts-15.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The `erl -man example` has been corrected to not consider values set in + `ERL_ZFLAGS` and stop parsing arguments when a `--` is encountered. + + Own Id: OTP-19098 + Related Id(s): GH-8477, PR-8478 + +- Compiler warnings for Windows I/O back-end have been silenced. + + Own Id: OTP-19113 + +- Bugs related to `return_to` trace have been fixed. It did not work for more + than once trace session and it did sometimes not trigger for exceptions. + + Own Id: OTP-19122 + +- Potential deadlocks while writing a crash dump have been eliminated. + + Own Id: OTP-19133 + Related Id(s): GH-8498, PR-8521 + +- When loading a damaged or too old BEAM file, the runtime system could crash. + + Own Id: OTP-19153 + Related Id(s): PR-8623 + +- A scheduler thread could get stuck when deleting a memory allocator carrier + when adjacent carriers were deleted and/or inserted simultaneously by other + schedulers. This in turn could cause the other schedulers to get stuck as + well. + + Own Id: OTP-19154 + Related Id(s): GH-8613, PR-8627 + +- Statistics for number of carriers in a shared pool after calling + `instrument:allocations` or `instrument:carriers` are now correct. Also, a + potential bug in carrier block scanning was eliminated. + + Own Id: OTP-19166 + Related Id(s): PR-8636 + +- A race in the kTLS flavour of SSL distribution has been fixed so that + `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS + encryption to be activated too late when some encrypted data had already been + read into the `inet_drv.c` buffer as unencrypted. + + Own Id: OTP-19175 + Related Id(s): GH-8561, PR-8690 + +- Fixed an emulator crash relating to compressed ETS tables. + + Own Id: OTP-19176 + Related Id(s): PR-8683 + +- A function (encode_sockaddr) was called with superfluous argument, on Windows, + in the net nif. + + Own Id: OTP-19181 + +- Fixed a crash that could happen on reallocation failure. + + Own Id: OTP-19192 + +- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other + programs that are included in Erlang/OTP. + + Own Id: OTP-19201 + Related Id(s): PR-8740 + +- A previous correction in the Erlang/OTP 27.0.1 emergency patch had the + unfortunate side effect of sometimes causing an unnecessary fullsweep (major) + garbage collection instead of a generation (minor) garbage collection. This + has been corrected. + + Own Id: OTP-19209 + Related Id(s): PR-8539, PR-8751 + +- Fixed trace matchspec functions `trace` and `enable_trace` to use the session + tracer when enabling trace flags on untraced processes. + + Own Id: OTP-19211 + Related Id(s): GH-8657 + +- Fixed a typo in the type spec for erlang:garbage_collection_defaults/0. + + Own Id: OTP-19215 + Related Id(s): PR-8757 + +- Corrected socket:ioctl for genaddr (SIOCGENADDR). + + Own Id: OTP-19216 + +- The support for Transparent Huge Pages has been disabled on non-amd64 Linux + systems. + + Own Id: OTP-19219 + Related Id(s): PR-8702 + +- Fixed a race condition on Windows when upgrading from `-noshell` to a shell + that would cause Erlang to crash with the error: + + {'GetOverlappedResult', + 'The I/O operation has been aborted because of either a thread exit or an application request.'}. + + Own Id: OTP-19220 + Related Id(s): GH-7621, PR-8774 + +## Improvements and New Features + +- Added functions `getservbyname` and `getservbyport` to the `net` module. + + Own Id: OTP-19101 + Related Id(s): OTP-18835 + +- Introduced enet | esock variants of `inet` functions, either when called + with sockets, with explicit inet_backend config or with the e inet_backend + kernel config option. + + Own Id: OTP-19132 + Related Id(s): OTP-19101 + +- Optimize process and port creation when such tracing is not enabled by any + trace session. + + Own Id: OTP-19167 + Related Id(s): PR-8655 + +- Compiler warnings for some removed functions have been corrected to point out + the correct replacement functions. + + Own Id: OTP-19186 + Related Id(s): PR-8709 + +- A boolean option `read_ahead` has been implemented for `gen_tcp`, default + `true`, to facilitate not reading past (caching data) the end of a packet. In + particular, for kTLS, caching data could read in data that was supposed to be + decrypted by the platform's network stack, before crypto parameters could be + activated. + + Own Id: OTP-19199 + Related Id(s): GH-8561, GH-8690, GH-8785, OTP-19175 + +- The `zip` module has been updated with support for: + + - zip64 archives - Archives larger than 4GB or with more than 2^32 entries. + - extended timestamps - Higher resolution and in UTC. + - UID/GID - Save and extract the original UID/GID. + - Fixes so that permission mode attributes are correctly read and set for + files in archives. + - zip:list_dir/2 now also returns directories, not only files. (You can + disable this behaviour by using the option `skip_directories`). + + Various bugs in the original implementation have also been fixed, such as: + + - Correctly encode and decode the DOS timestamps for entries within an archive + (that is the non-extended timestamp). + - Fix DOS timestamps to be set to localtime instead of UTC (use extended + timestamps for UTC timestamps). + - Use the unix file attributes read from disk when creating archives instead + of setting everything to 644. + + Own Id: OTP-19214 + Related Id(s): PR-8765 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of erts-15.1 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# ftp-1.2.3 + +The ftp-1.2.3 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Eliminated a race condition that sometimes resulted in ftp:recv_bin/2 + returning `ok` instead of `{ok, Data}`. + + Own Id: OTP-19119 + Related Id(s): GH-8454, PR-8543 + +> #### Full runtime dependencies of ftp-1.2.3 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.3 + +The inets-9.3 application can be applied independently of other applications on +a full OTP 27 installation. + +## Improvements and New Features + +- The documentation for the `httpd` module has been improved, along with + correction of headings and types. + + Own Id: OTP-19171 + Related Id(s): PR-8578 + +- Userinfo is now properly percent-decoded before usage in headers. + + Own Id: OTP-19172 + Related Id(s): PR-8575 + +> #### Full runtime dependencies of inets-9.3 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# kernel-10.1 + +Note! The kernel-10.1 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- A faulty assertion was corrected in the `prim_tty` module. This assertion + could trigger when invalid UTF-8 was read from stdin just as the mode was + changed from unicode to latin1. + + Own Id: OTP-19097 + Related Id(s): PR-8503 + +- Opening a `disk_log` file and combining `head_func` with `rotate` options did + not work. + + Own Id: OTP-19104 + Related Id(s): ERIERL-870 + +- Fixed an error info printout for erlang:is_process_alive/1 on non-local + pids. + + Own Id: OTP-19134 + Related Id(s): PR-8560 + +- A race in the kTLS flavour of SSL distribution has been fixed so that + `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS + encryption to be activated too late when some encrypted data had already been + read into the `inet_drv.c` buffer as unencrypted. + + Own Id: OTP-19175 + Related Id(s): GH-8561, PR-8690 + +- Fixed a deadlock when an application crashes during startup and log messages + were sent to standard out. Logger would fail to print the messages to standard + out and instead print them to standard error. + + Own Id: OTP-19205 + +- The `-proto_dist` init parameter will no longer be ignored when specified + multiple times. It will now log a warning and use the first specified value. + + Own Id: OTP-19208 + Related Id(s): PR-8672 + +- Corrected socket:ioctl for genaddr (SIOCGENADDR). + + Own Id: OTP-19216 + +## Improvements and New Features + +- Added functions `getservbyname` and `getservbyport` to the `net` module. + + Own Id: OTP-19101 + Related Id(s): OTP-18835 + +- Introduced enet | esock variants of `inet` functions, either when called + with sockets, with explicit inet_backend config or with the e inet_backend + kernel config option. + + Own Id: OTP-19132 + Related Id(s): OTP-19101 + +- The function socket:i/0 now uses the `net` module (instead of the `inet` + module) for service translation. + + Own Id: OTP-19138 + Related Id(s): OTP-19101 + +- A boolean option `read_ahead` has been implemented for `gen_tcp`, default + `true`, to facilitate not reading past (caching data) the end of a packet. In + particular, for kTLS, caching data could read in data that was supposed to be + decrypted by the platform's network stack, before crypto parameters could be + activated. + + Own Id: OTP-19199 + Related Id(s): GH-8561, GH-8690, GH-8785, OTP-19175 + +> #### Full runtime dependencies of kernel-10.1 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# odbc-2.15 + +The odbc-2.15 application can be applied independently of other applications on +a full OTP 27 installation. + +## Improvements and New Features + +- Figures in the documentation have been improved. + + Own Id: OTP-19130 + Related Id(s): PR-7226 + +> #### Full runtime dependencies of odbc-2.15 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# public_key-1.16.2 + +The public_key-1.16.2 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- For completeness handle rsa_pss implicit default value, although this will + probably not be commonly used as it provides very weak security. + + Own Id: OTP-19179 + +- The `public_key:cacerts_load()` function could in some error cases return + `undefined` instead of `{error, Reason}`. + + Own Id: OTP-19183 + Related Id(s): GH-8604 + +- Added support for DragonFly. + + Own Id: OTP-19191 + Related Id(s): PR-8703 + +## Improvements and New Features + +- Deprecation of RSA encryption functions has been reverted, as there still + exists legitimate use cases with other padding modes than PKCS-1. + + While use PCKS-1 padding with some versions of cryptolib could be considered + secure, we still recommend using other algorithms that are less sensitive to + oracle attacks. + + Own Id: OTP-19163 + +- It is now possible to use a verification fun of arity 4, giving the user fun + access to both encoded and decoded versions of the certificate. This is + desirable as a workaround for encoding errors preventing re-encoding from + being reliable. This also saves some work load if the encoded version is + needed. + + Note that calling public_key:pkix_path_validation/3 with only decoded certs + is not recommended, due to the decoding workarounds, although it will work as + long as the workarounds are not needed. + + If the decoded version is needed before thecall to `public_key` it is + recommend to use the combined_cert- type to avoid double decoding. Note that + the path validation algorithm itself always needs both the encoded and decoded + versions of the certs. + + The ssl implementation will now benefit from using this function instead of + emulating the verify_fun/4. + + Own Id: OTP-19169 + +> #### Full runtime dependencies of public_key-1.16.2 +> +> asn1-3.0, crypto-4.6, erts-6.0, kernel-3.0, stdlib-3.5 + +# runtime_tools-2.1.1 + +The runtime_tools-2.1.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a bug where dbg sessions on remote nodes were terminated prematurely. + + Own Id: OTP-19188 + Related Id(s): PR-8692 + +> #### Full runtime dependencies of runtime_tools-2.1.1 +> +> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# snmp-5.17 + +The snmp-5.17 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Man pages are now available for `erl`, `erlc`, `dialyzer`, and all other + programs that are included in Erlang/OTP. + + Own Id: OTP-19201 + Related Id(s): PR-8740 + +## Improvements and New Features + +- Figures in the documentation have been improved. + + Own Id: OTP-19130 + Related Id(s): PR-7226 + +> #### Full runtime dependencies of snmp-5.17 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2.2 + +The ssh-5.2.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The SSh daemon started with a TCP port number argument will now re-try + obtaining a listen socket before returning an error to the user. + + Own Id: OTP-19170 + Related Id(s): GH-7746 + +- Robustness has been improved by monitoring the connection handler process + before casting the socket control notification. + + Own Id: OTP-19173 + Related Id(s): PR-8310 + +> #### Full runtime dependencies of ssh-5.2.2 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.2 + +Note! The ssl-11.2.2 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.2 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- A race in the kTLS flavour of SSL distribution has been fixed so that + `inet_drv.c` doesn't read ahead too much data, which could cause the kTLS + encryption to be activated too late when some encrypted data had already been + read into the `inet_drv.c` buffer as unencrypted. + + Own Id: OTP-19175 + Related Id(s): GH-8561, PR-8690 + +## Improvements and New Features + +- All TLS-1.3 terminations are now graceful (previous TLS version terminations + already were). + + Own Id: OTP-17848 + +- It is now possible to use a verification fun of arity 4, giving the user fun + access to both encoded and decoded versions of the certificate. This is + desirable as a workaround for encoding errors preventing re-encoding from + being reliable. This also saves some work load if the encoded version is + needed. + + Note that calling public_key:pkix_path_validation/3 with only decoded certs + is not recommended, due to the decoding workarounds, although it will work as + long as the workarounds are not needed. + + If the decoded version is needed before thecall to `public_key` it is + recommend to use the combined_cert- type to avoid double decoding. Note that + the path validation algorithm itself always needs both the encoded and decoded + versions of the certs. + + The ssl implementation will now benefit from using this function instead of + emulating the verify_fun/4. + + Own Id: OTP-19169 + +- Compiler warnings for some removed functions have been corrected to point out + the correct replacement functions. + + Own Id: OTP-19186 + Related Id(s): PR-8709 + +- Include more information in logging of SNI (Server Name Indication) mismatch + error. + + Own Id: OTP-19187 + +> #### Full runtime dependencies of ssl-11.2.2 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.2, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.1 + +The stdlib-6.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The help printout for incorrect io:format/0 strings now handles the `k` + modifier correctly. + + Own Id: OTP-19146 + Related Id(s): GH-8568, PR-8611 + +- Fixed a bug that caused the shell completion to crash when keyword and tuple + appeared on the same line. + + Own Id: OTP-19157 + Related Id(s): PR-8638 + +- Due to PR-7419/OTP-18671, the cached internal value of the `callback_mode` + started leaking out to `logger` reports, which could cause `logger` handlers + to crash. This has now been fixed to show the value that was set, as before + caching. + + Own Id: OTP-19164 + Related Id(s): GH-8605, PR-7419, OTP-18671 + +- Fixed an emulator crash relating to compressed ETS tables. + + Own Id: OTP-19176 + Related Id(s): PR-8683 + +- The error description for maps:update/3 will no longer insist that the third + argument is not a map when a key could not be found + + Own Id: OTP-19189 + +- Multiple issues have been corrected in the markdown parser that creates + documentation for the shell. + + The parser was incorrectly parsing formatted markdown (either bold or italics) + within parenthesis. This used to not be shown correctly in the shell + documentation `(_Option._)`, which was displayed verbatim. This fix makes + `Option.` to appear in italics. + + The markdown parser is also used in the creation of other documentation + formats, so this was a bug that affected other generated documentation + formats. + + Own Id: OTP-19200 + Related Id(s): GH-8738, PR-8739 + +- Fixed category for some codepoint ranges in `unicode_util`. + + Own Id: OTP-19210 + Related Id(s): GH-8748 + +- Fixed `argparse` to print sub-commands help when available. + + Own Id: OTP-19222 + Related Id(s): PR-8777 + +## Improvements and New Features + +- Class annotation to HTML from fenced blocks have been added. + + Own Id: OTP-19105 + Related Id(s): PR-8499 + +- Added JSON formatting functions for indented output. + + Own Id: OTP-19112 + +- Improved illegal pattern error for accidental map associations. + + Own Id: OTP-19128 + Related Id(s): PR-8555 + +- Progress reports for a dynamically started supervisor will now be logged at + debug level. + + Own Id: OTP-19202 + Related Id(s): GH-8715, PR-8261, PR-8741 + + *** POTENTIAL INCOMPATIBILITY *** + +- The `zip` module has been updated with support for: + + - zip64 archives - Archives larger than 4GB or with more than 2^32 entries. + - extended timestamps - Higher resolution and in UTC. + - UID/GID - Save and extract the original UID/GID. + - Fixes so that permission mode attributes are correctly read and set for + files in archives. + - zip:list_dir/2 now also returns directories, not only files. (You can + disable this behaviour by using the option `skip_directories`). + + Various bugs in the original implementation have also been fixed, such as: + + - Correctly encode and decode the DOS timestamps for entries within an archive + (that is the non-extended timestamp). + - Fix DOS timestamps to be set to localtime instead of UTC (use extended + timestamps for UTC timestamps). + - Use the unix file attributes read from disk when creating archives instead + of setting everything to 644. + + Own Id: OTP-19214 + Related Id(s): PR-8765 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of stdlib-6.1 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# syntax_tools-3.2.1 + +The syntax_tools-3.2.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The documentation for `syntax_tools` has been polished after the migration to + the new documentation system. + + Own Id: OTP-19102 + Related Id(s): PR-8515 + +> #### Full runtime dependencies of syntax_tools-3.2.1 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# tftp-1.2.1 + +The tftp-1.2.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Improvements and New Features + +- The legacy dependency to `error_logger` has been removed. `logger` is now + used. + + Own Id: OTP-19114 + +> #### Full runtime dependencies of tftp-1.2.1 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.1 + +The tools-4.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- `m:tprof` no longer crashes when using pause/restart/continue when profiling + all modules. + + Own Id: OTP-19136 + Related Id(s): GH-8472, PR-8472, PR-8541 + +- On systems supporting native coverage, calls to `cover` could hang or crash + if cover-compiled module had been reloaded from outside `cover`. This has been + corrected so that `cover` now recovers from the error and and sends a report + to the logger about the failure to retrieve coverage information. + + Own Id: OTP-19203 + Related Id(s): GH-8661, PR-8742 + +## Improvements and New Features + +- Figures in the documentation have been improved. + + Own Id: OTP-19130 + Related Id(s): PR-7226 + +> #### Full runtime dependencies of tools-4.1 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.4.3 + +The wx-2.4.3 application can be applied independently of other applications on a +full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Documentation has been improved. + + Own Id: OTP-19190 + +> #### Full runtime dependencies of wx-2.4.3 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.1 + +The xmerl-2.1 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Corrected export functions from internal structure to XML so xmlText items of + type cdata are handled correctly. They were just exported as normal text + instead of output in a CDATA section. + + Own Id: OTP-19217 + Related Id(s): ERIERL-1104 + +## Improvements and New Features + +- The type spec for xmerl_sax_parser:file/2 has been corrected to indicate + that it can return an `{error, _}` tuple. + + Own Id: OTP-19129 + Related Id(s): PR-8583 + +> #### Full runtime dependencies of xmerl-2.1 +> +> erts-6.0, kernel-3.0, stdlib-2.5 + +# Thanks to + +Aaron Renner, Anders Ågren Thuné, Andrea Leopardi, Anupama Singh, Cesar Guzman, +Dániel Szoboszlay, Douglas Vought, Frej Drejhammar, jakob svenningsson, Jan +Uhlig, Janusz Woźniak, Johannes Christ, Jonatan Kłosko, José Valim, Kian-Meng +Ang, lexprfuncall, Loïc Hoguin, Louis Pilfold, Marcelino Alberdi Pereira, Maria +Scott, Michael Neumann, Michał Muskała, nixxquality, Peter Lemenkov, Roger +Lipscombe, Siim Liiser, Svilen Ivanov, Urban Koistinen, Wojtek Mach + diff --git a/release-notes/OTP-27.2.1.README.txt b/release-notes/OTP-27.2.1.README.txt new file mode 100644 index 0000000..b24487b --- /dev/null +++ b/release-notes/OTP-27.2.1.README.txt @@ -0,0 +1,155 @@ +Patch Package: OTP 27.2.1 +Git Tag: OTP-27.2.1 +Date: 2025-01-23 +Trouble Report Id: OTP-19385, OTP-19388, OTP-19392, OTP-19407, + OTP-19418, OTP-19435, OTP-19439, OTP-19444, + OTP-19446 +Seq num: ERIERL-1165, ERIERL-1166, ERIERL-1179, + ERIERL-1183, GH-9065, GH-9163, GH-9211, + GH-9237, PR-9139, PR-9155, PR-9156, PR-9161, + PR-9234, PR-9274, PR-9309, PR-9314, PR-9318, + PR-9327 +System: OTP +Release: 27 +Application: common_test-1.27.6, dialyzer-5.3.1, + erts-15.2.1, kernel-10.2.1, ssh-5.2.6, + tftp-1.2.2 +Predecessor: OTP 27.2 + +Check out the git tag OTP-27.2.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# common_test-1.27.6 + +The common_test-1.27.6 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Common test will now not crash when running tests with otp26 and earlier, + while having previous test resuts from otp27. + + Own Id: OTP-19385 + Related Id(s): ERIERL-1166, PR-9155, PR-9156 + +> #### Full runtime dependencies of common_test-1.27.6 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# dialyzer-5.3.1 + +The dialyzer-5.3.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a crash caused by the use of opaque types. + + Own Id: OTP-19439 + Related Id(s): ERIERL-1183, PR-9314 + +> #### Full runtime dependencies of dialyzer-5.3.1 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# erts-15.2.1 + +The erts-15.2.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed configure tests for GCC 14 + + Own Id: OTP-19407 + Related Id(s): GH-9211, PR-9234 + +- Fix bug where log printouts would go missing when `application_controller` is + stopping while log messages are being sent. + + This bug was introduced by OTP-19078 in Erlang/OTP 26.2.5. + + Own Id: OTP-19418 + Related Id(s): GH-9163, PR-9274 + +> #### Full runtime dependencies of erts-15.2.1 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.1 + +Note! The kernel-10.2.1 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Fix the default group_leader to reply `{error,request}` on invalid I/O + requests instead of crashing. + + This bug was introduced in Erlang/OTP 27.2. + + Own Id: OTP-19444 + Related Id(s): GH-9237, PR-9318 + +> #### Full runtime dependencies of kernel-10.2.1 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# ssh-5.2.6 + +The ssh-5.2.6 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change, type specs for ssh:connection_info/1,2 functions are fixed + so they include \{error, term()\} return value. + + Own Id: OTP-19388 + Related Id(s): ERIERL-1165, PR-9161 + +- With this change, ssh client accepts a banner sent during processing keyboard + interactive user authentication. + + Own Id: OTP-19392 + Related Id(s): GH-9065, PR-9139 + +- With this change, large sftp transfers does not hang. Redundant window + adjustment are not requested. + + Own Id: OTP-19435 + Related Id(s): PR-9309 + +> #### Full runtime dependencies of ssh-5.2.6 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# tftp-1.2.2 + +The tftp-1.2.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix specs in tftp:read_file function. + + Own Id: OTP-19446 + Related Id(s): ERIERL-1179, PR-9327 + +> #### Full runtime dependencies of tftp-1.2.2 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# Thanks to + +Alexandre Rodrigues, Luke Bakken + diff --git a/release-notes/OTP-27.2.2.README.txt b/release-notes/OTP-27.2.2.README.txt new file mode 100644 index 0000000..fe544e8 --- /dev/null +++ b/release-notes/OTP-27.2.2.README.txt @@ -0,0 +1,123 @@ +Patch Package: OTP 27.2.2 +Git Tag: OTP-27.2.2 +Date: 2025-02-06 +Trouble Report Id: OTP-19240, OTP-19381, OTP-19411, OTP-19445, + OTP-19455, OTP-19462 +Seq num: ERIERL-1174, ERIERL-1177, GH-9112, GH-9117, + GH-9177, GH-9208, PR-9273, PR-9286, PR-9322, + PR-9356, PR-9372, PR-9377 +System: OTP +Release: 27 +Application: compiler-8.5.5, erts-15.2.2, kernel-10.2.2, + public_key-1.17.1, ssl-11.2.7 +Predecessor: OTP 27.2.1 + +Check out the git tag OTP-27.2.2, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# compiler-8.5.5 + +The compiler-8.5.5 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Eliminated a bug in the alias analysis pass that could potentially cause + unsafe optimizations of binary construction or record updates. + + Own Id: OTP-19455 + Related Id(s): PR-9356 + +> #### Full runtime dependencies of compiler-8.5.5 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# erts-15.2.2 + +The erts-15.2.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Disabled an unsafe runtime optimization in binary construction that caused + silent memory corruption. + + Own Id: OTP-19462 + Related Id(s): ERIERL-1177, PR-9372 + +> #### Full runtime dependencies of erts-15.2.2 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.2 + +Note! The kernel-10.2.2 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Fixed a couple of bugs that could make `global`'s internal state inconsistent + when a connection was reconnected. + + Own Id: OTP-19381 + Related Id(s): GH-9112, GH-9117, PR-9377 + +> #### Full runtime dependencies of kernel-10.2.2 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# public_key-1.17.1 + +The public_key-1.17.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Consider keyCertSign to compatible with extended key usage for TLS + client/server auth in CAs, adhere to wide spread implementations + + Own Id: OTP-19240 + Related Id(s): GH-9208, PR-9286 + +> #### Full runtime dependencies of public_key-1.17.1 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# ssl-11.2.7 + +Note! The ssl-11.2.7 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- An initiated handshake should always be closed with an alert, some corner + cases have been fixed so that this should always be the case. + + Own Id: OTP-19411 + Related Id(s): ERIERL-1174, PR-9273 + +- Correct option handling to work properly for paused handshaking. Could result + in unwanted alerts or or error messages. + + Own Id: OTP-19445 + Related Id(s): GH-9177, PR-9322 + +> #### Full runtime dependencies of ssl-11.2.7 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# Thanks to + +Frej Drejhammar + diff --git a/release-notes/OTP-27.2.3.README.txt b/release-notes/OTP-27.2.3.README.txt new file mode 100644 index 0000000..494ae4f --- /dev/null +++ b/release-notes/OTP-27.2.3.README.txt @@ -0,0 +1,65 @@ +Patch Package: OTP 27.2.3 +Git Tag: OTP-27.2.3 +Date: 2025-02-17 +Trouble Report Id: OTP-19457, OTP-19467, OTP-19486 +Seq num: ERIERL-1189, ERIERL-1190, PR-9387, PR-9408, + PR-9418 +System: OTP +Release: 27 +Application: inets-9.3.2, ssl-11.2.8 +Predecessor: OTP 27.2.2 + +Check out the git tag OTP-27.2.3, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# inets-9.3.2 + +The inets-9.3.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Improved robustness of httpd startup procedure. + + Own Id: OTP-19486 + Related Id(s): ERIERL-1190, PR-9408 + +> #### Full runtime dependencies of inets-9.3.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# ssl-11.2.8 + +Note! The ssl-11.2.8 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- Setting protocol version to a lower value then supported by default in server + API function called after ssl:listen/2 could result in wrong default values + being used and connections failing with insufficient security. + + Own Id: OTP-19457 + Related Id(s): PR-9418 + +- Improve error handling of server name indication fun. This implies that if the + `sni_fun` returns `undefined` we will attempt connection with original option + values, if it returns `unrecognized` we end the connection with + UNRECOGNIZED_NAME alert and if provided options fail option verification we + will end the connection with a HANDSHAKE_FAILURE and an error log. + + Own Id: OTP-19467 + Related Id(s): ERIERL-1189, PR-9387 + +> #### Full runtime dependencies of ssl-11.2.8 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + diff --git a/release-notes/OTP-27.2.4.README.txt b/release-notes/OTP-27.2.4.README.txt new file mode 100644 index 0000000..ba08026 --- /dev/null +++ b/release-notes/OTP-27.2.4.README.txt @@ -0,0 +1,49 @@ +Patch Package: OTP 27.2.4 +Git Tag: OTP-27.2.4 +Date: 2025-02-20 +Trouble Report Id: OTP-19438, OTP-19466 +Seq num: CVE-2025-26618, ERIERL-1173, ERIERL-1180 +System: OTP +Release: 27 +Application: snmp-5.18.1, ssh-5.2.7 +Predecessor: OTP 27.2.3 + +Check out the git tag OTP-27.2.4, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# snmp-5.18.1 + +The snmp-5.18.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- SNMP Agent transports type (intAgentTransports) was incorrectly not documented + as a list of transports. Also add a couple of config file generation examples. + + Own Id: OTP-19438 + Related Id(s): ERIERL-1180 + +> #### Full runtime dependencies of snmp-5.18.1 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2.7 + +The ssh-5.2.7 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- SFTP packets exceeding max packet size are not processed and dropped. + + Own Id: OTP-19466 + Related Id(s): ERIERL-1173, CVE-2025-26618 + +> #### Full runtime dependencies of ssh-5.2.7 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 diff --git a/release-notes/OTP-27.2.README.txt b/release-notes/OTP-27.2.README.txt new file mode 100644 index 0000000..3e8544e --- /dev/null +++ b/release-notes/OTP-27.2.README.txt @@ -0,0 +1,766 @@ +Patch Package: OTP 27.2 +Git Tag: OTP-27.2 +Date: 2024-12-11 +Trouble Report Id: OTP-19158, OTP-19221, OTP-19223, OTP-19225, + OTP-19232, OTP-19234, OTP-19243, OTP-19248, + OTP-19253, OTP-19260, OTP-19261, OTP-19264, + OTP-19270, OTP-19273, OTP-19280, OTP-19281, + OTP-19282, OTP-19283, OTP-19284, OTP-19289, + OTP-19292, OTP-19299, OTP-19300, OTP-19301, + OTP-19302, OTP-19304, OTP-19305, OTP-19307, + OTP-19309, OTP-19310, OTP-19320, OTP-19321, + OTP-19322, OTP-19329, OTP-19330, OTP-19331, + OTP-19333, OTP-19335, OTP-19338, OTP-19341, + OTP-19342, OTP-19344, OTP-19351, OTP-19353, + OTP-19360, OTP-19361, OTP-19362, OTP-19368, + OTP-19370, OTP-19372, OTP-19373, OTP-19375, + OTP-19377, OTP-19379, OTP-19380, OTP-19387 +Seq num: ERIERL-1091, ERIERL-1093, ERIERL-1149, + ERIERL-1152, ERIERL-1154, GH-7466, GH-8487, + GH-8510, GH-8544, GH-8706, GH-8755, GH-8759, + GH-8769, GH-8783, GH-8810, GH-8815, GH-8818, + GH-8821, GH-8829, GH-8867, GH-8899, GH-8903, + GH-8942, GH-8948, GH-8963, GH-8983, GH-8997, + GH-9027, GH-9087, PR-8532, PR-8671, PR-8744, + PR-8776, PR-8788, PR-8789, PR-8794, PR-8800, + PR-8801, PR-8816, PR-8833, PR-8838, PR-8844, + PR-8856, PR-8878, PR-8879, PR-8884, PR-8889, + PR-8898, PR-8902, PR-8906, PR-8907, PR-8909, + PR-8912, PR-8919, PR-8920, PR-8921, PR-8947, + PR-8949, PR-8954, PR-8955, PR-8956, PR-8959, + PR-8970, PR-8972, PR-8978, PR-8986, PR-8987, + PR-9002, PR-9003, PR-9008, PR-9016, PR-9021, + PR-9023, PR-9034, PR-9043, PR-9062, PR-9067, + PR-9078, PR-9093, PR-9097, PR-9108, PR-9127 +System: OTP +Release: 27 +Application: common_test-1.27.5, compiler-8.5.4, + crypto-5.5.2, debugger-5.5, dialyzer-5.3, + eldap-1.2.14, erts-15.2, inets-9.3.1, + kernel-10.2, megaco-4.7, mnesia-4.23.3, + observer-2.17, os_mon-2.10.1, + public_key-1.17, snmp-5.18, ssh-5.2.5, + ssl-11.2.6, stdlib-6.2, tools-4.1.1 +Predecessor: OTP 27.1.3 + +Check out the git tag OTP-27.2, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# POTENTIAL INCOMPATIBILITIES + +- The HTTP client now correctly takes into account the `full_result` option when + returning an asynchronous request. + + Own Id: OTP-19158 + Application(s): inets + +# OTP-27.2 + +## Improvements and New Features + +- The `SECURITY.md` file with guidelines for reporting vulnerabilities and + security issues has been added to the git repository. + + Own Id: OTP-19338 + Related Id(s): PR-9023 + +# common_test-1.27.5 + +The common_test-1.27.5 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a bug where the sum of testcases' execution time in HTML logs was + sometimes miscalculated, and the table was not fully printed. + + Own Id: OTP-19284 + Related Id(s): ERIERL-1093, PR-8909 + +> #### Full runtime dependencies of common_test-1.27.5 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.5.4 + +The compiler-8.5.4 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed a crash in the common sub-expression elimination pass. + + Own Id: OTP-19243 + Related Id(s): GH-8818, PR-8838 + +- Fixed a bug where bogus code was generated for consecutive calls to + erlang:setelement/2, potentially crashing the runtime system. + + Own Id: OTP-19270 + Related Id(s): GH-8783, PR-8898 + +- When the `line_coverage` option was used, exceptions could show the wrong line + for where the exception was raised. + + Own Id: OTP-19282 + Related Id(s): PR-8907 + +- The `line_coverage` option would be ignored if given in a `compile()` + attribute within a module. + + Own Id: OTP-19309 + Related Id(s): GH-8942, PR-8970 + +- A segment matching a float in a binary generator will now skip any invalid + float (such as a NaN) and continue matching the rest of the binary. Before + this correction, the comprehension would stop as soon as an invalid float was + encountered. + + Example: + + 1> BadFloat = <<-1:64>>. + <<"ÿÿÿÿÿÿÿÿ">> + 2> [X || <<X:64/float>> <= <<0.0/float,BadFloat/binary,42.0/float>>]. + [0.0,42.0] + + Own Id: OTP-19331 + Related Id(s): PR-8978 + +> #### Full runtime dependencies of compiler-8.5.4 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5.2 + +The crypto-5.5.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro with installed FIPS + support. + + Own Id: OTP-19223 + Related Id(s): GH-8769, PR-8800 + +- Fixed crypto:hash_final/1 for digest types `shake128` and `shake256` when + using OpenSSL 3.4 or newer. + + Own Id: OTP-19329 + Related Id(s): GH-8997, PR-9002 + +> #### Full runtime dependencies of crypto-5.5.2 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# debugger-5.5 + +The debugger-5.5 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This + has been corrected so that the following now works: + + 1> F = fun is_atom/1. + #Fun.erl.42.18682967> + > F(a). + true + 3> Id = fun id/1. + #Fun.erl.42.18682967> + 4> Id(42). + ** exception error: undefined shell command id/1 + 5> id(I) -> I. + ok + 6> Id(42). + 42 + + The Debugger has also been corrected to correctly handle this syntax for a + BIF. + + Own Id: OTP-19322 + Related Id(s): GH-8963, PR-8987 + +## Improvements and New Features + +- Erlang/OTP type specifications has been updated to eliminate overlapping + domains. + + Own Id: OTP-19310 + Related Id(s): GH-8810, GH-8821, PR-8986 + +> #### Full runtime dependencies of debugger-5.5 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-3.15, wx-2.0 + +# dialyzer-5.3 + +The dialyzer-5.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed type inference for `erlang:system_info(logical_processors)`. + + Own Id: OTP-19307 + Related Id(s): GH-8948, PR-8954 + +- Dialyzer would crash when attempting to analyze a module compiled with the + `line_coverage` option. + + Own Id: OTP-19344 + Related Id(s): GH-9027, PR-9034 + +## Improvements and New Features + +- Erlang/OTP type specifications has been updated to eliminate overlapping + domains. + + Own Id: OTP-19310 + Related Id(s): GH-8810, GH-8821, PR-8986 + +> #### Full runtime dependencies of dialyzer-5.3 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# eldap-1.2.14 + +The eldap-1.2.14 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Corrected dialyzer spec for usage of TLS options. The incorrect usage for the + options in `eldap` could cause dialyzer warnings in user code referring to + `eldap` specs. + + Own Id: OTP-19281 + Related Id(s): PR-8906 + +> #### Full runtime dependencies of eldap-1.2.14 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erts-15.2 + +The erts-15.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled + off socket more like gen_tcp:accept/1, for example the options `tos` or + `tclass`. + + When setting SCTP options that are unsupported on the platform, some should be + silently ignored, but a bug caused the option parsing to derail so the options + after could bail out and cause an error instead. This has been fixed. + + Own Id: OTP-19225 + Related Id(s): PR-8789 + +- Fixed a bug where Erlang would corrupt the terminal settings if stdin was a + TTY but stdout was not. + + Own Id: OTP-19232 + Related Id(s): GH-8487, PR-8794 + +- Fixed a bug in the non-JIT VM when loading a NIF over a function that is + already traced by more than one session. This caused a VM crash. This bug has + existed since OTP-27.0, where multiple trace sessions were introduced. + + Own Id: OTP-19248 + Related Id(s): PR-8856 + +- Fixed a bug where the loading of modules with extremely large binary + construction instructions crashed the emulator on AArch64. + + Own Id: OTP-19261 + Related Id(s): GH-8815, PR-8816 + +- `inet:getifaddrs/0,1` is improved when using inet_backend = socket. + + Own Id: OTP-19264 + +- win32reg:value/2 will no longer crash the emulator when the value is an + unterminated REG_SZ of size 0. + + Own Id: OTP-19283 + Related Id(s): GH-8903, PR-8912 + +- `Makefile` dependency generation on Windows in WSL 2 has been corrected. + + Own Id: OTP-19300 + Related Id(s): PR-8955 + +- Fix lock order violation if a NIF monitor `down` callback calls + `enif_whereis_pid`. Would cause debug emulator to crash but could potentially + lead to deadlocks in optimized emulator. + + Own Id: OTP-19330 + Related Id(s): GH-8983, PR-9008 + +- Fixed compilation faults when compiling using `--enable-vm-probes`. + + Own Id: OTP-19333 + +- Fixed `erl_nif.h` on Windows to compile when gcc or clang is used. + + Own Id: OTP-19341 + Related Id(s): PR-9016 + +- Fixed a minor issue in the JIT debug information that confused tools like GDB + and perf. + + Own Id: OTP-19362 + Related Id(s): PR-9003 + +## Improvements and New Features + +- Improved documentation of timers. + + Own Id: OTP-19360 + Related Id(s): ERIERL-1149, PR-9062 + +- The label for a process can now be retrieved also using + `process_info(Pid, label)` in addition to proc_lib:get_label/1. + + This new option is useful when one wants to retrieve more than one process + info item. For example: + + process_info(Pid, [label,registered_name]) + + Own Id: OTP-19373 + Related Id(s): PR-9108 + +> #### Full runtime dependencies of erts-15.2 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# inets-9.3.1 + +The inets-9.3.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The HTTP client now correctly takes into account the `full_result` option when + returning an asynchronous request. + + Own Id: OTP-19158 + *** POTENTIAL INCOMPATIBILITY *** + +- A synchronous httpc:request now timeouts after the `Timeout` specified in + `HttpOption {timeout, Timeout}`. + + Own Id: OTP-19221 + Related Id(s): ERIERL-1091, PR-8788, PR-8801 + +- Fixed a bug where calling httpc:set_options/2 when one of keys: _ipfamily_ or + _unix_socket_, was not present, would cause the other value to get overriden + by the default value. The validation of these options was also improved. + + Own Id: OTP-19379 + Related Id(s): GH-8829, PR-8878 + +## Improvements and New Features + +- The variable `Env` in the `mod_esi` callback will now have an additional + property `{connect_addr, Addr}` indicating on which address the server + received a connection. + + Own Id: OTP-19377 + Related Id(s): ERIERL-1152, PR-9127 + +> #### Full runtime dependencies of inets-9.3.1 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# kernel-10.2 + +Note! The kernel-10.2 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- gen_sctp:peeloff/2 has been fixed to inherit socket options to the peeled + off socket more like gen_tcp:accept/1, for example the options `tos` or + `tclass`. + + When setting SCTP options that are unsupported on the platform, some should be + silently ignored, but a bug caused the option parsing to derail so the options + after could bail out and cause an error instead. This has been fixed. + + Own Id: OTP-19225 + Related Id(s): PR-8789 + +- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h + again. + + Own Id: OTP-19260 + Related Id(s): PR-8884 + +- `inet:getifaddrs/0,1` is improved when using inet_backend = socket. + + Own Id: OTP-19264 + +- Fixed logger:report/0 to mandate at least one element in the report. This + fixes an issue with overlapping `spec` domains in all `logger` functions + that use logger:report/0. + + Own Id: OTP-19302 + Related Id(s): PR-8959 + +- Fixed deadlock on `code_server`. Multiple calls loading the same module with + an `on_load` function loading call would create a deadlock. + + Own Id: OTP-19305 + Related Id(s): GH-7466, GH-8510, PR-8744 + +## Improvements and New Features + +- The Kernel application now recognizes the `epmd_module` and + `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`. + + Own Id: OTP-19253 + Related Id(s): PR-8671 + +- The `inetrc` kernel argument will now tolerate atoms again to improve + compatibility with old configurations that relied on atoms working by + accident. + + The expected type always was, and still remains, a string. + + Own Id: OTP-19280 + Related Id(s): GH-8899, PR-8902 + +- The file:io_device/0 type has been updated to clearly show the difference + between a `raw` and `cooked` IoDevice. + + Own Id: OTP-19301 + Related Id(s): PR-8956 + +- Erlang/OTP type specifications has been updated to eliminate overlapping + domains. + + Own Id: OTP-19310 + Related Id(s): GH-8810, GH-8821, PR-8986 + +- Added the kernel parameter `os_cmd_shell` that controls which shell should + be used by os:cmd/1. + + Own Id: OTP-19342 + Related Id(s): PR-8972 + +- Added logging support to io:user/0, io:standard_io/0 and + io:standard_error/0. See io:setopts/2 for more details. + + Own Id: OTP-19372 + Related Id(s): PR-8947 + +> #### Full runtime dependencies of kernel-10.2 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# megaco-4.7 + +The megaco-4.7 application can be applied independently of other applications on +a full OTP 27 installation. + +## Improvements and New Features + +- Erlang/OTP type specifications has been updated to eliminate overlapping + domains. + + Own Id: OTP-19310 + Related Id(s): GH-8810, GH-8821, PR-8986 + +> #### Full runtime dependencies of megaco-4.7 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.23.3 + +The mnesia-4.23.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Mnesia table converted from `ext_copies` to `disc_copies` will now be properly + saved to disk. + + Own Id: OTP-19292 + Related Id(s): GH-8706, PR-8921 + +- Mnesia could crash if table was deleted during checkpoint initialization. + + Own Id: OTP-19368 + Related Id(s): ERIERL-1154, PR-9093 + +> #### Full runtime dependencies of mnesia-4.23.3 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.17 + +The observer-2.17 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- In the Memory tab of `crashdump_viewer`, the blocks sizes in + `Allocator Summary` would all be `N/A`. + + Own Id: OTP-19353 + Related Id(s): PR-8532 + +## Improvements and New Features + +- The Kernel application now recognizes the `epmd_module` and + `erl_epmd_listen_port` parameters, similar to `-kernel:connect_all`. + + Own Id: OTP-19253 + Related Id(s): PR-8671 + +> #### Full runtime dependencies of observer-2.17 +> +> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3 + +# os_mon-2.10.1 + +The os_mon-2.10.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed the `memsup` memory alarm to use `available_memory` when available, + instead of always using `free_memory`. + + Own Id: OTP-19304 + Related Id(s): GH-8759, PR-8776 + +> #### Full runtime dependencies of os_mon-2.10.1 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# public_key-1.17 + +The public_key-1.17 application can be applied independently of other +applications on a full OTP 27 installation. + +## Improvements and New Features + +- public_key:cacerts_load/1 can now be configured via the application + environment. + + Own Id: OTP-19321 + Related Id(s): PR-8920 + +- On MacOS, CA certificates are now also loaded from the system keychain. + + Own Id: OTP-19375 + Related Id(s): PR-8844 + +> #### Full runtime dependencies of public_key-1.17 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# snmp-5.18 + +The snmp-5.18 application can be applied independently of other applications on +a full OTP 27 installation. + +## Improvements and New Features + +- Erlang/OTP type specifications has been updated to eliminate overlapping + domains. + + Own Id: OTP-19310 + Related Id(s): GH-8810, GH-8821, PR-8986 + +> #### Full runtime dependencies of snmp-5.18 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.2.5 + +The ssh-5.2.5 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Documentation is polished after OTP-27 migration to markdown. + + Own Id: OTP-19335 + Related Id(s): PR-9021 + +> #### Full runtime dependencies of ssh-5.2.5 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.6 + +Note! The ssl-11.2.6 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Improvements and New Features + +- Enhanced return value spec for active messages from the TLS connection socket. + + Own Id: OTP-19387 + Related Id(s): PR-9067 + +> #### Full runtime dependencies of ssl-11.2.6 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.2 + +The stdlib-6.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Made it possible to expand help text displayed by pressing ^[h by pressing ^[h + again. + + Own Id: OTP-19260 + Related Id(s): PR-8884 + +- Defining a fun in the shell using the syntax `fun Name/Arity` would fail. This + has been corrected so that the following now works: + + 1> F = fun is_atom/1. + #Fun.erl.42.18682967> + > F(a). + true + 3> Id = fun id/1. + #Fun.erl.42.18682967> + 4> Id(42). + ** exception error: undefined shell command id/1 + 5> id(I) -> I. + ok + 6> Id(42). + 42 + + The Debugger has also been corrected to correctly handle this syntax for a + BIF. + + Own Id: OTP-19322 + Related Id(s): GH-8963, PR-8987 + +- Fixed a bug where completion of 'fun(' would cause the shell to crash. + + Own Id: OTP-19351 + Related Id(s): PR-9043 + +- Fixed a bug causing the shell to crash while trying to complete an expression + starting with a '/' or a variable followed by '(' or '/'. E.g. Foo/ and Foo(. + + Own Id: OTP-19361 + Related Id(s): PR-9078 + +- zip:extract/2 with `keep_old_files` now respects the `cwd` option. + + Own Id: OTP-19370 + Related Id(s): GH-9087, PR-9097 + +- Fixed an error in uri_string:percent_decode spec + + Own Id: OTP-19380 + Related Id(s): GH-8755 + +## Improvements and New Features + +- Updated shell docs to display the type spec, that is, `h(erlang, min, 2)` now + prints the type spec and documentation in the shell. + + > h(erlang,min,2). + + -spec min(Term1, Term2) -> Minimum + when Term1 :: term(), Term2 :: term(), Minimum :: term(). + + Returns the smallest of Term1 and Term2. If the terms compare equal with the == operator, Term1 is returned. + + Own Id: OTP-19234 + Related Id(s): GH-8544, PR-8833 + +- The file:io_device/0 type has been updated to clearly show the difference + between a `raw` and `cooked` IoDevice. + + Own Id: OTP-19301 + Related Id(s): PR-8956 + +- Added json:format_key_value_list/3 and + json:format_key_value_list_checked/3. + + Own Id: OTP-19320 + Related Id(s): PR-8889 + +- Improved documentation of timers. + + Own Id: OTP-19360 + Related Id(s): ERIERL-1149, PR-9062 + +- Added logging support to io:user/0, io:standard_io/0 and + io:standard_error/0. See io:setopts/2 for more details. + + Own Id: OTP-19372 + Related Id(s): PR-8947 + +> #### Full runtime dependencies of stdlib-6.2 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# tools-4.1.1 + +The tools-4.1.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed some deprecated errors on emacs-29. + + Own Id: OTP-19273 + Related Id(s): PR-8879 + +- The `cover` tool could sometimes wrongly report lines as uncovered. + + Own Id: OTP-19289 + Related Id(s): GH-8867, PR-8919 + +- Fixed `tprof:format(IoDevice, ...)` to not demand unicode encoding supported + by `IoDevice`. + + Own Id: OTP-19299 + Related Id(s): PR-8949 + +> #### Full runtime dependencies of tools-4.1.1 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# Thanks to + +Bryan Paxton, Daniel Finke, Dániel Szoboszlay, dependabotbot, Ildar Khizbulin, +Jakub Witczak, Jonatan Kłosko, José Valim, Loïc Hoguin, Maas-Maarten Zeeman, +Maria Scott, Marko Mindek, Péter Gömöri, Radek Szymczyszyn, Svilen Ivanov, +Yaroslav Maslennikov, zmstone + diff --git a/release-notes/OTP-27.3.1.README.txt b/release-notes/OTP-27.3.1.README.txt new file mode 100644 index 0000000..da736fc --- /dev/null +++ b/release-notes/OTP-27.3.1.README.txt @@ -0,0 +1,218 @@ +Patch Package: OTP 27.3.1 +Git Tag: OTP-27.3.1 +Date: 2025-03-28 +Trouble Report Id: OTP-19391, OTP-19437, OTP-19469, OTP-19525, + OTP-19527, OTP-19529, OTP-19542, OTP-19543, + OTP-19545, OTP-19546, OTP-19547, OTP-19548, + OTP-19549, OTP-19559 +Seq num: #9172, CVE-2025-30211, ERIERL-1204, + ERIERL-1205, ERIERL-1206, GH-8891, GH-9483, + GH-9554, OTP-19472, OTP-19544, PR-9221, + PR-9486, PR-9534, PR-9545, PR-9553, PR-9577, + PR-9587, PR-9588, PR-9596, PR-9611, PR-9612 +System: OTP +Release: 27 +Application: asn1-5.3.3, erts-15.2.4, kernel-10.2.4, + mnesia-4.23.5, ssh-5.2.9, ssl-11.2.10, + stdlib-6.2.2 +Predecessor: OTP 27.3 + +Check out the git tag OTP-27.3.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# OTP-27.3.1 + +## Fixed Bugs and Malfunctions + +- Update used ExDoc version to v0.37.3 + + Own Id: OTP-19525 + Related Id(s): PR-9553 + +# asn1-5.3.3 + +The asn1-5.3.3 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The JER backend will now include the SIZE constraint in the type info for + OCTET STRINGs, and a SIZE constraint with a range will now be included for BIT + STRINGs. This does not change the actual encoding or decoding of JER, but can + be useful for tools. + + Own Id: OTP-19542 + Related Id(s): ERIERL-1204, PR-9588 + +## Improvements and New Features + +- When using the JSON encoding rules, it is now possible to call the decode/2 + function in the following way with data that has already been decoded by + json:decode/1: + + SomeModule:decode(Type, {json_decoded, Decoded}). + + Own Id: OTP-19547 + Related Id(s): ERIERL-1206, PR-9611 + +> #### Full runtime dependencies of asn1-5.3.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# erts-15.2.4 + +The erts-15.2.4 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Behavior for socket:recv/3 has been improved. The behavior has also been + clarified in the documentation. + + Own Id: OTP-19469 + Related Id(s): #9172 + +- Trace messages due to `receive` tracing could potentially be delayed a very + long time if the traced process waited in a `receive` expression without + clauses matching on messages (timed wait), or just did not enter a `receive` + expression for a very long time. + + Own Id: OTP-19527 + Related Id(s): PR-9577 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19548 + Related Id(s): OTP-19472 + +> #### Full runtime dependencies of erts-15.2.4 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.4 + +Note! The kernel-10.2.4 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Behavior for socket:recv/3 has been improved. The behavior has also been + clarified in the documentation. + + Own Id: OTP-19469 + Related Id(s): #9172 + +- An infinite loop in CNAME loop detection that can cause Out Of Memory has been + fixed. This affected CNAME lookup with the internal DNS resolver. + + Own Id: OTP-19545 + Related Id(s): PR-9587, OTP-19544 + +> #### Full runtime dependencies of kernel-10.2.4 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# mnesia-4.23.5 + +The mnesia-4.23.5 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change mnesia will merge schema of tables using external backends. + + Own Id: OTP-19437 + Related Id(s): PR-9534 + +> #### Full runtime dependencies of mnesia-4.23.5 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# ssh-5.2.9 + +The ssh-5.2.9 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Reception of malicious KEX init message does not result with ssh daemon + excessive memory usage. + + Own Id: OTP-19543 + Related Id(s): CVE-2025-30211 + +- Call to ssh:daemon_replace_options does not crash when argument is not a valid + daemon ref. + + Own Id: OTP-19559 + Related Id(s): GH-9554, PR-9545 + +> #### Full runtime dependencies of ssh-5.2.9 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.10 + +Note! The ssl-11.2.10 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- Correct handling of unassigned signature algorithms to properly ignore them + instead of failing the handshake. + + Own Id: OTP-19529 + Related Id(s): GH-9483, PR-9486 + +- Update key mechanism in CRL cache so that CRL DP with same URI path component + becomes distinguishable from each other. + + Own Id: OTP-19549 + Related Id(s): GH-8891, PR-9612 + +## Improvements and New Features + +- Add callback for NSS keylogging so that it can work as expected for all + scenarios. + + Own Id: OTP-19391 + Related Id(s): PR-9221 + +> #### Full runtime dependencies of ssl-11.2.10 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.2.2 + +The stdlib-6.2.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed crash when fetching `initial_call` when user code have modified the + `process_dictionary`. + + Own Id: OTP-19546 + Related Id(s): ERIERL-1205, PR-9596 + +> #### Full runtime dependencies of stdlib-6.2.2 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# Thanks to + +Alexandre Rodrigues, Marc Worrell, Sergei Shuvatov, zmstone + diff --git a/release-notes/OTP-27.3.2.README.txt b/release-notes/OTP-27.3.2.README.txt new file mode 100644 index 0000000..aaae43a --- /dev/null +++ b/release-notes/OTP-27.3.2.README.txt @@ -0,0 +1,196 @@ +Patch Package: OTP 27.3.2 +Git Tag: OTP-27.3.2 +Date: 2025-04-04 +Trouble Report Id: OTP-19482, OTP-19560, OTP-19561, OTP-19562, + OTP-19563, OTP-19564, OTP-19565, OTP-19567, + OTP-19568, OTP-19569, OTP-19571 +Seq num: ERIERL-1207, ERIERL-1208, ERIERL-1210, + ERIERL-1211, ERIERL-1212, ERIERL-1214, + ERIERL-1216, GH-9541, PR-9650, PR-9658, + PR-9661, PR-9676 +System: OTP +Release: 27 +Application: asn1-5.3.4, compiler-8.6.1, erts-15.2.5, + kernel-10.2.5, megaco-4.7.1, snmp-5.18.2, + ssl-11.2.11, xmerl-2.1.2 +Predecessor: OTP 27.3.1 + +Check out the git tag OTP-27.3.2, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# asn1-5.3.4 + +The asn1-5.3.4 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Negative REAL numbers greater than -1 would be incorrectly encoded (the minus + sign would be lost). + + Own Id: OTP-19567 + Related Id(s): ERIERL-1214, PR-9658 + +> #### Full runtime dependencies of asn1-5.3.4 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# compiler-8.6.1 + +The compiler-8.6.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix the compiler crash when the inner-most tuple in a nested tuple with 3 + layers is updated. + + Own Id: OTP-19561 + Related Id(s): ERIERL-1208, ERIERL-1210, PR-9650 + +> #### Full runtime dependencies of compiler-8.6.1 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# erts-15.2.5 + +The erts-15.2.5 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- On Windows, using socket:sendv, a large IOV (size > MAX), the tail was not + sent. + + Own Id: OTP-19482 + +- Uplift pcre 8.44 to pcre 8.45 + + Own Id: OTP-19565 + +> #### Full runtime dependencies of erts-15.2.5 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.5 + +Note! The kernel-10.2.5 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.2.5 (first satisfied in OTP 27.3.2) + +## Fixed Bugs and Malfunctions + +- On Windows, using socket:sendv, a large IOV (size > MAX), the tail was not + sent. + + Own Id: OTP-19482 + +- gen_tcp connect with a sockaddr with loopback address failed. + + Own Id: OTP-19560 + Related Id(s): GH-9541 + +- Remove debug printouts from gen_tcp_socket + + Own Id: OTP-19564 + +> #### Full runtime dependencies of kernel-10.2.5 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# megaco-4.7.1 + +The megaco-4.7.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Correct type spec for ActionReply + + Own Id: OTP-19563 + Related Id(s): ERIERL-1216 + +> #### Full runtime dependencies of megaco-4.7.1 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# snmp-5.18.2 + +The snmp-5.18.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- When manager receives an v3 inform (request) it used engine-id and full + address (including port number) to check if engine was known. This did not + work if agent used ephemeral ports for notifications. Has now been changed to + only use (context) engine-id and address (without port). + + Own Id: OTP-19562 + Related Id(s): ERIERL-1207 + +- Fixed snmp_generic (dialyzer) spec for function table_func. + + Own Id: OTP-19568 + Related Id(s): ERIERL-1211 + +> #### Full runtime dependencies of snmp-5.18.2 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssl-11.2.11 + +Note! The ssl-11.2.11 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- Correct the debug functionality for NSS keylogging for TLS-1.3 introduced in + OTP-27.3.1 so that TLS-1.3 key updates items always get correct counter value + and each item is logged as one single line. + + Own Id: OTP-19569 + Related Id(s): PR-9661 + +> #### Full runtime dependencies of ssl-11.2.11 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# xmerl-2.1.2 + +The xmerl-2.1.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Corrected faulty type specification + + Corrected type specification for the input parameter of xmerl_xs:value_of/1. + + Also replaced underscore in the return type specifications of + xmerl_xs:select/2, xmerl_xpath:string/2 and xmerl_xpath:string/3 with + specified return values to improve documentation. + + Own Id: OTP-19571 + Related Id(s): ERIERL-1212, PR-9676 + +> #### Full runtime dependencies of xmerl-2.1.2 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Björn Gustavsson + diff --git a/release-notes/OTP-27.3.3.README.txt b/release-notes/OTP-27.3.3.README.txt new file mode 100644 index 0000000..be0a3ef --- /dev/null +++ b/release-notes/OTP-27.3.3.README.txt @@ -0,0 +1,130 @@ +Patch Package: OTP 27.3.3 +Git Tag: OTP-27.3.3 +Date: 2025-04-16 +Trouble Report Id: OTP-19581, OTP-19582, OTP-19585, OTP-19592, + OTP-19595 +Seq num: CVE-2025-32433, ERIERL-1219, ERIERL-1222, + PR-9566, PR-9679, PR-9706 +System: OTP +Release: 27 +Application: erts-15.2.6, kernel-10.2.6, megaco-4.7.2, + ssh-5.2.10, ssl-11.2.12 +Predecessor: OTP 27.3.2 + +Check out the git tag OTP-27.3.3, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# erts-15.2.6 + +The erts-15.2.6 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed bug in `call_memory` tracing that could cause wildly incorrect reported + memory values. Bug exists since OTP 27.1. + + Also fixed return type spec of trace:info/3. + + Own Id: OTP-19581 + Related Id(s): ERIERL-1219, PR-9706 + +> #### Full runtime dependencies of erts-15.2.6 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.6 + +Note! The kernel-10.2.6 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.2.5 (first satisfied in OTP 27.3.2) + +## Fixed Bugs and Malfunctions + +- Fixed bug in `call_memory` tracing that could cause wildly incorrect reported + memory values. Bug exists since OTP 27.1. + + Also fixed return type spec of trace:info/3. + + Own Id: OTP-19581 + Related Id(s): ERIERL-1219, PR-9706 + +> #### Full runtime dependencies of kernel-10.2.6 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# megaco-4.7.2 + +The megaco-4.7.2 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Corrected type spec for type mid(). + + Own Id: OTP-19585 + Related Id(s): ERIERL-1222 + +> #### Full runtime dependencies of megaco-4.7.2 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# ssh-5.2.10 + +The ssh-5.2.10 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Reception of wrong Unicode does not cause unnecessary processing. US-ASCII + fields are not decoded as Unicode. + + Own Id: OTP-19582 + Related Id(s): PR-9679 + +- SSH daemon disconnects upon receiving connection protocol message for + unauthenticated used. + + Thanks to Fabian Bäumer, Marcel Maehren, Marcus Brinkmann, Nurullah Erinola, + Jörg Schwenk (Ruhr University Bochum). + + Own Id: OTP-19595 + Related Id(s): CVE-2025-32433 + +> #### Full runtime dependencies of ssh-5.2.10 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.12 + +Note! The ssl-11.2.12 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Improvements and New Features + +- Lower log level for user cancelation as this is not an error case. Also handle + possible undecrypted close alert during TLS-1.3 handshake. + + Own Id: OTP-19592 + Related Id(s): PR-9566 + +> #### Full runtime dependencies of ssl-11.2.12 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# Thanks to + +Simon Cornish + diff --git a/release-notes/OTP-27.3.4.1.README.txt b/release-notes/OTP-27.3.4.1.README.txt new file mode 100644 index 0000000..c73c541 --- /dev/null +++ b/release-notes/OTP-27.3.4.1.README.txt @@ -0,0 +1,219 @@ +Patch Package: OTP 27.3.4.1 +Git Tag: OTP-27.3.4.1 +Date: 2025-06-16 +Trouble Report Id: OTP-19634, OTP-19635, OTP-19637, OTP-19638, + OTP-19640, OTP-19646, OTP-19647, OTP-19649, + OTP-19653, OTP-19658, OTP-19659, OTP-19662, + OTP-19667, OTP-19676 +Seq num: CVE-2025-4748, ERIERL-1225, ERIERL-1235, + GH-6463, GH-9102, GH-9722, GH-9771, GH-9816, + GH-9841, GH-9875, PR-9103, PR-9691, PR-9838, + PR-9846, PR-9849, PR-9859, PR-9876, PR-9896, + PR-9897, PR-9898, PR-9905, PR-9912, PR-9941 +System: OTP +Release: 27 +Application: asn1-5.3.4.1, eldap-1.2.14.1, + kernel-10.2.7.1, ssh-5.2.11.1, ssl-11.2.12.1, + stdlib-6.2.2.1, xmerl-2.1.3.1 +Predecessor: OTP 27.3.4 + +Check out the git tag OTP-27.3.4.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# OTP-27.3.4.1 + +## Fixed Bugs and Malfunctions + +- Disable warnings as error for `ex_doc` when any Erlang/OTP application has + been disabled by configure. + + Own Id: OTP-19646 + Related Id(s): GH-9875, PR-9876 + +# asn1-5.3.4.1 + +The asn1-5.3.4.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The ASN.1 compiler could generate code that would cause Dialyzer with the + `unmatched_returns` option to emit warnings. + + Own Id: OTP-19638 + Related Id(s): GH-9841, PR-9846 + +> #### Full runtime dependencies of asn1-5.3.4.1 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# eldap-1.2.14.1 + +The eldap-1.2.14.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- With this change eldap's 'not' function will have specs fixed. + + Own Id: OTP-19658 + Related Id(s): PR-9859 + +> #### Full runtime dependencies of eldap-1.2.14.1 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# kernel-10.2.7.1 + +Note! The kernel-10.2.7.1 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.2.5 (first satisfied in OTP 27.3.2) + +## Fixed Bugs and Malfunctions + +- A remote shell can now exit by closing the input stream, without terminating + the remote node. + + Own Id: OTP-19667 + Related Id(s): PR-9912 + +## Improvements and New Features + +- Document default buffer sizes + + Own Id: OTP-19640 + Related Id(s): GH-9722 + +> #### Full runtime dependencies of kernel-10.2.7.1 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# ssh-5.2.11.1 + +The ssh-5.2.11.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Various channel closing robustness improvements. Avoid crashes when channel + handling process closes channel and immediately exits. Avoid breaking the + protocol by sending duplicated channel-close messages. Cleanup channels which + timeout during closing procedure. + + Own Id: OTP-19634 + Related Id(s): GH-9102, PR-9103 + +- Improved interoperability with clients acting as Paramiko. + + Own Id: OTP-19637 + Related Id(s): GH-6463, PR-9838 + +> #### Full runtime dependencies of ssh-5.2.11.1 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.12.1 + +Note! The ssl-11.2.12.1 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- hs_keylog callback properly handle alert in initial states, where encryption + is not yet used. Also add keylog callback invocation for corner-case where + server alert is encrypted with application secrets as client is already in + connection state. + + Own Id: OTP-19635 + Related Id(s): ERIERL-1235, PR-9849 + +## Improvements and New Features + +- The documentation for SSL option `verify_fun` has been improved. + + Own Id: OTP-19676 + Related Id(s): PR-9691 + +> #### Full runtime dependencies of ssl-11.2.12.1 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.2.2.1 + +The stdlib-6.2.2.1 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The `save_module/1` command in the shell now saves both the locally defined + records and the imported records using the `rr/1` command. + + Own Id: OTP-19647 + Related Id(s): GH-9816, PR-9897 + +- It's now possible to write `lists:map(fun is_atom/1, [])` or + `lists:map(fun my_func/1, [])`, in the shell, instead of + `lists:map(fun erlang:is_atom/1, [])` or + `lists:map(fun shell_default:my_func/1, [])`. + + Own Id: OTP-19649 + Related Id(s): GH-9771, PR-9898 + +- Properly strip the leading `/` and drive letter from filepaths when zipping + and unzipping archives. + + Thanks to Wander Nauta for finding and responsibly disclosing this + vulnerability to the Erlang/OTP project. + + Own Id: OTP-19653 + Related Id(s): PR-9941, CVE-2025-4748 + +- Shell no longer crashes when requesting to autocomplete map keys containing + non-atoms. + + Own Id: OTP-19659 + Related Id(s): PR-9896 + +- A remote shell can now exit by closing the input stream, without terminating + the remote node. + + Own Id: OTP-19667 + Related Id(s): PR-9912 + +> #### Full runtime dependencies of stdlib-6.2.2.1 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# xmerl-2.1.3.1 + +The xmerl-2.1.3.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- The type specs of xmerl_scan:file/2 and xmerl_scan:string/2 has been + updated to return `dynamic/0`. Due to hook functions they can return any user + defined term. + + Own Id: OTP-19662 + Related Id(s): ERIERL-1225, PR-9905 + +> #### Full runtime dependencies of xmerl-2.1.3.1 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Dan Janowski, Ilya Averyanov, Yaroslav Maslennikov + diff --git a/release-notes/OTP-27.3.4.README.txt b/release-notes/OTP-27.3.4.README.txt new file mode 100644 index 0000000..a1f21b4 --- /dev/null +++ b/release-notes/OTP-27.3.4.README.txt @@ -0,0 +1,112 @@ +Patch Package: OTP 27.3.4 +Git Tag: OTP-27.3.4 +Date: 2025-05-08 +Trouble Report Id: OTP-19577, OTP-19599, OTP-19602, OTP-19605, + OTP-19608, OTP-19625 +Seq num: CVE-2025-46712, ERIERL-1220, GH-9707, + GH-9720, PR-9696, PR-9724, PR-9753, PR-9765, + PR-9767 +System: OTP +Release: 27 +Application: erts-15.2.7, kernel-10.2.7, ssh-5.2.11, + xmerl-2.1.3 +Predecessor: OTP 27.3.3 + +Check out the git tag OTP-27.3.4, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# erts-15.2.7 + +The erts-15.2.7 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed an emulator crash when setting an error_handler module that was not yet + loaded. + + Own Id: OTP-19577 + Related Id(s): ERIERL-1220, PR-9696 + +- Fixed a rare bug that could cause an emulator crash after unloading a module + or erasing a persistent_term. + + Own Id: OTP-19599 + Related Id(s): PR-9724 + +> #### Full runtime dependencies of erts-15.2.7 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.7 + +Note! The kernel-10.2.7 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.2.5 (first satisfied in OTP 27.3.2) + +## Fixed Bugs and Malfunctions + +- With this change, disk_log will not crash when using chunk_step/3 after log + size was decreased. + + Own Id: OTP-19605 + Related Id(s): GH-9720, PR-9765 + +- With this change, disk_log will not run into infinite loop when using + chunk/2,3 after log size was decreased. + + Own Id: OTP-19608 + Related Id(s): GH-9707, PR-9767 + +> #### Full runtime dependencies of kernel-10.2.7 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# ssh-5.2.11 + +The ssh-5.2.11 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fix KEX strict implementation according to draft-miller-sshm-strict-kex-01 + document. + + Own Id: OTP-19625 + Related Id(s): CVE-2025-46712 + +> #### Full runtime dependencies of ssh-5.2.11 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# xmerl-2.1.3 + +The xmerl-2.1.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Improvements and New Features + +- A new option to discard whitespace before the `xml` tag when reading from a + stream has been added to the Xmerl SAX parser. + + - **`{discard_ws_before_xml_document, Boolean}`** - Discard whitespace before + `xml` tag instead of returning a fatal error if set to `true` (`false` is + default) + + Own Id: OTP-19602 + Related Id(s): PR-9753 + +> #### Full runtime dependencies of xmerl-2.1.3 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Lý Nhật Tâm + diff --git a/release-notes/OTP-27.3.README.txt b/release-notes/OTP-27.3.README.txt new file mode 100644 index 0000000..949490c --- /dev/null +++ b/release-notes/OTP-27.3.README.txt @@ -0,0 +1,346 @@ +Patch Package: OTP 27.3 +Git Tag: OTP-27.3 +Date: 2025-03-05 +Trouble Report Id: OTP-19397, OTP-19399, OTP-19400, OTP-19405, + OTP-19410, OTP-19416, OTP-19418, OTP-19423, + OTP-19428, OTP-19429, OTP-19433, OTP-19442, + OTP-19443, OTP-19447, OTP-19449, OTP-19458, + OTP-19459, OTP-19468, OTP-19471, OTP-19475, + OTP-19489, OTP-19490, OTP-19491, OTP-19495, + OTP-19496, OTP-19501, OTP-19504 +Seq num: ERIERL-1195, GH-8208, GH-8634, GH-9000, + GH-9096, GH-9150, GH-9163, GH-9190, GH-9222, + GH-9306, GH-9332, GH-9348, GH-9359, PR-8209, + PR-8640, PR-8811, PR-9136, PR-9151, PR-9160, + PR-9185, PR-9188, PR-9248, PR-9274, PR-9288, + PR-9295, PR-9303, PR-9307, PR-9308, PR-9331, + PR-9335, PR-9338, PR-9349, PR-9358, PR-9368, + PR-9371, PR-9379, PR-9419, PR-9424, PR-9463, + PR-9469, PR-9499 +System: OTP +Release: 27 +Application: asn1-5.3.2, common_test-1.27.7, compiler-8.6, + crypto-5.5.3, erts-15.2.3, kernel-10.2.3, + mnesia-4.23.4, ssh-5.2.8, ssl-11.2.9, + stdlib-6.2.1, syntax_tools-3.2.2, xmerl-2.1.1 +Predecessor: OTP 27.2.4 + +Check out the git tag OTP-27.3, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# asn1-5.3.2 + +The asn1-5.3.2 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Multiple bugs in decoding of the `REAL` type has been eliminated. Also, the + documentation for `REAL` has been updated to mention the special values `0`, + `PLUS-INFINITY`, and `MINUS-INFINITY`. + + Own Id: OTP-19504 + Related Id(s): GH-9096, PR-9469 + +> #### Full runtime dependencies of asn1-5.3.2 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.27.7 + +The common_test-1.27.7 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Reduced the memory usage when testcases prints a lot to the log. + + Own Id: OTP-19489 + Related Id(s): PR-9424 + +- Fixed the built-in hook `cth_surefire` to not crash when a group within a + skipped group is skipped. + + Own Id: OTP-19491 + Related Id(s): PR-9419 + +> #### Full runtime dependencies of common_test-1.27.7 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-8.6 + +The compiler-8.6 application can be applied independently of other applications +on a full OTP 27 installation. + +## Improvements and New Features + +- The `beam_validator` pass in the compiler that validates generated BEAM now + does stronger checks for binary syntax matching. + + Own Id: OTP-19449 + Related Id(s): PR-9338 + +> #### Full runtime dependencies of compiler-8.6 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.5.3 + +The crypto-5.5.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- `crypto` will now work when ED25519 and X25519 are available while ED448 and + X448 are not, which is the case in LibreSSL. This is necessary for supporting + TLS1.3 using LibreSSL. + + Own Id: OTP-19399 + Related Id(s): GH-9000, PR-9136 + +> #### Full runtime dependencies of crypto-5.5.3 +> +> erts-9.0, kernel-5.3, stdlib-3.9 + +# erts-15.2.3 + +The erts-15.2.3 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed failed runtime assert in debug VM when built with statically linked + NIFs. + + Own Id: OTP-19443 + Related Id(s): GH-9306, PR-9307 + +- Fixed a bug where reading a binary from `persistent_term` could cause a + segmentation fault on Windows. This bug was introduced in Erlang/OTP 27.0. + + Own Id: OTP-19458 + Related Id(s): GH-9222, PR-9349 + +- Fixed a crash in `erlexec` (an executable used by `erl` during startup) when a + `PATH` longer than 10240 was set. + + Own Id: OTP-19471 + Related Id(s): PR-9331 + +- Fixed bug in `erlang:halt`. Two processes calling `erlang:halt` at the same + time could lead to one of them crashing with `badarg` as if it called + `erlang:halt(undefined,undefined)`. + + Own Id: OTP-19490 + Related Id(s): GH-8634, PR-8640 + +- Fixed BEAM crash when a custom thread sends a large map (>128 keys) externally + encoded with, for example, `erl_drv_send_term()`. + + Own Id: OTP-19495 + Related Id(s): GH-8208, PR-8209 + +> #### Full runtime dependencies of erts-15.2.3 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.2.3 + +Note! The kernel-10.2.3 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- erts-15.1 (first satisfied in OTP 27.1) + +## Fixed Bugs and Malfunctions + +- Clarify inet:setopts documentation + + Own Id: OTP-19416 + Related Id(s): PR-9248 + +- Fix bug where log printouts would go missing when `application_controller` is + stopping while log messages are being sent. + + This bug was introduced by OTP-19078 in Erlang/OTP 26.2.5. + + Own Id: OTP-19418 + Related Id(s): GH-9163, PR-9274 + +- Fixes a bug in the socket type spec, which caused Dialyzer to reject some + valid programs. + + Own Id: OTP-19429 + Related Id(s): PR-9295, PR-9379 + +> #### Full runtime dependencies of kernel-10.2.3 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# mnesia-4.23.4 + +The mnesia-4.23.4 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Mnesia could fail to load a table, if one of the copy holders was moved during + startup. + + Own Id: OTP-19501 + Related Id(s): ERIERL-1195, PR-9499 + +> #### Full runtime dependencies of mnesia-4.23.4 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# ssh-5.2.8 + +The ssh-5.2.8 application can be applied independently of other applications on +a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Minor documentation improvements. + + Own Id: OTP-19410 + Related Id(s): PR-9188 + +- Function specification for ssh_sftp:start_channel/2 is fixed. + + Own Id: OTP-19475 + Related Id(s): GH-9359, PR-9368 + +> #### Full runtime dependencies of ssh-5.2.8 +> +> crypto-5.0, erts-14.0, kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.2.9 + +Note! The ssl-11.2.9 application _cannot_ be applied independently of other +applications on an arbitrary OTP 27 installation. + + On a full OTP 27 installation, also the following runtime + dependency has to be satisfied: + -- public_key-1.16.4 (first satisfied in OTP 27.1.3) + +## Fixed Bugs and Malfunctions + +- The function for selecting the best server certificate and key pair has been + enhanced when several options are available to ensure that the fallback will + not always be chosen. + + Own Id: OTP-19423 + Related Id(s): PR-9185 + +- Avoided duplicating a few algorithms in default values caused by an + interoperability workaround not needed in this case. + + Own Id: OTP-19428 + Related Id(s): PR-9288 + +- Fixed two alert bugs, which could result in a crash instead of an alert. + + Own Id: OTP-19433 + Related Id(s): PR-9308 + +> #### Full runtime dependencies of ssl-11.2.9 +> +> crypto-5.0, erts-15.0, inets-5.10.7, kernel-9.0, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-6.0 + +# stdlib-6.2.1 + +The stdlib-6.2.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Fixed argparse:help/2 to accept the program name as part of the command + path. + + Own Id: OTP-19397 + Related Id(s): PR-9160 + +- Fixed argparse:format_help/2 crash on 'hidden' command. + + Own Id: OTP-19400 + Related Id(s): GH-9150, PR-9151 + +- Fixed the type specification for timer:sleep/1 by adding the value + `infinity` to its input type. + + Own Id: OTP-19442 + Related Id(s): PR-9303 + +- Eliminated a crash in zip:unzip/1 while unzipping an archive where a + directory within was read-only. This bug was introduced in Erlang/OTP 27.1. + + Own Id: OTP-19447 + Related Id(s): GH-9332, PR-9335 + +- Fixed map comprehension result when a key value is replaced. + + Own Id: OTP-19459 + Related Id(s): GH-9348, PR-9358 + +- Fixed string:jaro_similarity/1 for matching strings of length 1. + + Own Id: OTP-19468 + Related Id(s): PR-9371 + +> #### Full runtime dependencies of stdlib-6.2.1 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0 + +# syntax_tools-3.2.2 + +The syntax_tools-3.2.2 application can be applied independently of other +applications on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Annotation of `maybe` expressions has been corrected. + + Own Id: OTP-19405 + Related Id(s): PR-8811 + +> #### Full runtime dependencies of syntax_tools-3.2.2 +> +> compiler-7.0, erts-9.0, kernel-5.0, stdlib-4.0 + +# xmerl-2.1.1 + +The xmerl-2.1.1 application can be applied independently of other applications +on a full OTP 27 installation. + +## Fixed Bugs and Malfunctions + +- Some old-style `catch` expressions in the xmerl_sax_parser when the + continuation fun was called caused the stack to grow until all free memory was + exhausted. These parts have been rewritten so that the parser now runs + correctly without growing the stack. At the same time all old-style `catch` + expressions in xmerl were replaced with `try`/`catch`. + + Own Id: OTP-19496 + Related Id(s): GH-9190, PR-9463 + +> #### Full runtime dependencies of xmerl-2.1.1 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Adam Bray, Alexandre Rodrigues, Brandon Duff, Daniel Gorin, dependabotbot, +Eric Meadows-Jönsson, Jan Uhlig, Jean-Sébastien Pédron, Jesse Stimpson, +lexprfuncall, Maria Scott, Marko Mindek, Nikita Vorobey, Olivier Boudeville, Rin +Kuryloski, Roberto Aloi, Simon Cornish, Stefan Grundmann, victor23k, Volker +Schlecht + diff --git a/release-notes/OTP-28.0-rc1.README.txt b/release-notes/OTP-28.0-rc1.README.txt new file mode 100644 index 0000000..9202369 --- /dev/null +++ b/release-notes/OTP-28.0-rc1.README.txt @@ -0,0 +1,2440 @@ +Inital Release: OTP 28.0 +Git Tag: OTP-28.0 +Date: 2025-02-12 +Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125, + OTP-19127, OTP-19135, OTP-19141, OTP-19144, + OTP-19155, OTP-19156, OTP-19159, OTP-19161, + OTP-19180, OTP-19184, OTP-19194, OTP-19204, + OTP-19207, OTP-19224, OTP-19226, OTP-19228, + OTP-19230, OTP-19231, OTP-19233, OTP-19250, + OTP-19259, OTP-19262, OTP-19263, OTP-19271, + OTP-19278, OTP-19279, OTP-19285, OTP-19287, + OTP-19290, OTP-19295, OTP-19296, OTP-19297, + OTP-19303, OTP-19306, OTP-19308, OTP-19313, + OTP-19314, OTP-19315, OTP-19317, OTP-19323, + OTP-19324, OTP-19334, OTP-19337, OTP-19339, + OTP-19343, OTP-19345, OTP-19354, OTP-19355, + OTP-19364, OTP-19367, OTP-19369, OTP-19371, + OTP-19376, OTP-19386, OTP-19393, OTP-19394, + OTP-19396, OTP-19398, OTP-19401, OTP-19403, + OTP-19404, OTP-19406, OTP-19413, OTP-19414, + OTP-19419, OTP-19420, OTP-19421, OTP-19422, + OTP-19425, OTP-19426, OTP-19427, OTP-19430, + OTP-19431, OTP-19432, OTP-19441, OTP-19450, + OTP-19451, OTP-19452, OTP-19453, OTP-19454, + OTP-19456, OTP-19460, OTP-19463, OTP-19465, + OTP-19472, OTP-19473, OTP-19474, OTP-19476, + OTP-19477, OTP-19478, OTP-19479, OTP-19480, + OTP-19481, OTP-19484, OTP-19485 +Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113, + GH-8223, GH-8483, GH-8558, GH-8822, GH-8842, + GH-8967, GH-8985, GH-9092, GH-9113, GH-9173, + GH-9255, GH-9279, OTP-16608, PR-7830, + PR-8078, PR-8100, PR-8207, PR-8261, PR-8429, + PR-8494, PR-8540, PR-8547, PR-8556, PR-8573, + PR-8589, PR-8590, PR-8592, PR-8600, PR-8625, + PR-8642, PR-8651, PR-8660, PR-8697, PR-8699, + PR-8704, PR-8734, PR-8772, PR-8792, PR-8793, + PR-8798, PR-8805, PR-8812, PR-8820, PR-8862, + PR-8885, PR-8887, PR-8894, PR-8913, PR-8926, + PR-8932, PR-8937, PR-8938, PR-8943, PR-8945, + PR-8960, PR-8962, PR-8966, PR-8968, PR-8973, + PR-8975, PR-8976, PR-8988, PR-9005, PR-9006, + PR-9013, PR-9019, PR-9020, PR-9042, PR-9045, + PR-9079, PR-9082, PR-9083, PR-9094, PR-9095, + PR-9106, PR-9116, PR-9121, PR-9122, PR-9129, + PR-9154, PR-9171, PR-9186, PR-9192, PR-9207, + PR-9219, PR-9229, PR-9231, PR-9232, PR-9246, + PR-9251, PR-9253, PR-9271, PR-9272, PR-9275, + PR-9276, PR-9277, PR-9280, PR-9289, PR-9299, + PR-9305, PR-9316, PR-9330, PR-9333, PR-9342, + PR-9344, PR-9363, PR-9376, PR-9396, PR-9398, + PR-9399, PR-9402 +System: OTP +Release: 28 +Application: asn1-5.3.2, common_test-1.28, compiler-9.0, + crypto-5.6, debugger-6.0, dialyzer-5.4, + diameter-2.5, edoc-1.4, eldap-1.2.15, + erl_interface-5.6, erts-16.0, eunit-2.10, + inets-9.3.2, jinterface-1.15, kernel-10.3, + megaco-4.8, mnesia-4.24, odbc-2.16, + os_mon-2.11, parsetools-2.7, + runtime_tools-2.2, sasl-4.3, snmp-5.19, + ssh-5.3, ssl-11.3, stdlib-7.0, + syntax_tools-4.0, tools-4.1.2, wx-2.5 +Predecessor: OTP + +Check out the git tag OTP-28.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Application(s): compiler, stdlib + Related Id(s): PR-8699, PR-9094 + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8926 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Application(s): erts, stdlib + Related Id(s): GH-8037, PR-8962 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8625 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Application(s): stdlib + Related Id(s): GH-8099, PR-8100 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia, + parsetools, runtime_tools, snmp + Related Id(s): PR-9079 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299 + + *** POTENTIAL INCOMPATIBILITY *** + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Application(s): otp, stdlib + Related Id(s): PR-9106 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Application(s): stdlib + Related Id(s): PR-9316 + +# POTENTIAL INCOMPATIBILITIES + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Application(s): stdlib + Related Id(s): PR-8772 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Application(s): compiler, erts, stdlib + Related Id(s): PR-8913 + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Application(s): asn1 + Related Id(s): PR-8798 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Application(s): compiler, erts, stdlib + Related Id(s): GH-8967, PR-8988 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Application(s): common_test + Related Id(s): PR-9045 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Application(s): ssh + Related Id(s): PR-9277 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + +# OTP-28.0 + +## Improvements and New Features + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +# asn1-5.3.2 + +## Fixed Bugs and Malfunctions + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Related Id(s): PR-8798 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of asn1-5.3.2 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.28 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- The overage reports in HTML can be rendered in dark mode if requested by the + user's browser. + + Own Id: OTP-19159 + Related Id(s): PR-7830 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Related Id(s): PR-9045 + + *** POTENTIAL INCOMPATIBILITY *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of common_test-1.28 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-9.0 + +## Fixed Bugs and Malfunctions + +- The compiler will now emit warnings when some map patterns cannot possibly + match because a previous clauses matches the same pattern. For example: + + mm_1(#{}) -> a; + mm_1(#{b := B}) -> {b,B}. + + mm_2(#{a := A}) -> {a,A}; + mm_2(#{a := A, b := B}) -> {b,A,B}. + + The second clause of these function can never match and the compiler will now + emit a warning for both of them. + + Note that the compiler is not guaranteed to emit warnings for every possible + map pattern that cannot match. + + Own Id: OTP-19141 + Related Id(s): GH-8558, PR-8600 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The final validation step in the compiler will now reject modules containing + functions with more than 255 arguments. No impact is expected as the emulator + has always refused to load these modules. + + Own Id: OTP-19376 + Related Id(s): GH-9113, PR-9121 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now + `compressed` and `deterministic`. + + Own Id: OTP-19096 + Related Id(s): PR-8494 + +- Provided that the map argument for a maps:put/3 call is known to the + compiler to be a map, the compiler will replace such calls with the + corresponding update using the map syntax. + + Own Id: OTP-19115 + Related Id(s): PR-8540 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as + guard BIFs in order to gain performance. + + The following BIFs that are optimized in this way: `binary_to_atom/1`, + `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and + `list_to_existing_atom/1`. + + Own Id: OTP-19339 + Related Id(s): PR-9042, PR-9122 + +- The compiler now converts known documentation attribute metadata entries from + unicode:chardata/0 to unicode:unicode_binary/0. + + Own Id: OTP-19394 + Related Id(s): PR-9192 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +> #### Full runtime dependencies of compiler-9.0 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.6 + +## Improvements and New Features + +- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1 + functions have been deprecated. + + Own Id: OTP-19155 + Related Id(s): PR-8592 + +- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is + loaded without application `crypto` being loaded. In this case FIPS will be + disabled even if the user had set application parameter `fips_mode`. + + Own Id: OTP-19156 + Related Id(s): PR-8590 + +- The functionality of crypto:crypto_one_time_aead/6 is now also available in + the new functions crypto:crypto_one_time_aead_init/4 and + crypto:crypto_one_time_aead/4, which makes it possible to reuse + initialization. + + Own Id: OTP-19426 + Related Id(s): PR-9289 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of crypto-5.6 +> +> erts-9.0, kernel-6.0, stdlib-3.9 + +# debugger-6.0 + +## Fixed Bugs and Malfunctions + +- Error handling has been improved when modules fail to load. + + Own Id: OTP-19484 + Related Id(s): GH-7819, PR-9399 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of debugger-6.0 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# dialyzer-5.4 + +## Fixed Bugs and Malfunctions + +- The `-Wno_unknown` option will now prevent a warning being printed to standard + output when the command line interface is used. + + Own Id: OTP-19262 + Related Id(s): GH-8822, PR-8885 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of dialyzer-5.4 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.5 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of diameter-2.5 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.4 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of edoc-1.4 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.15 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of eldap-1.2.15 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-16.0 + +## Fixed Bugs and Malfunctions + +- ETS tables with more than 2 billion keys are now supported. + + Own Id: OTP-19144 + Related Id(s): PR-8589 + +- The zlib library included in Erlang/OTP has been updated to version 1.3.1. + + Own Id: OTP-19259 + Related Id(s): PR-8862 + +- `to_erl` no longer clears the screen when attaching to a `run_erl` session. + + Own Id: OTP-19263 + Related Id(s): PR-8943 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed a bug where `erlc` would crash if its path contained spaces. + + Own Id: OTP-19295 + Related Id(s): PR-8937 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a + timezone without daylight saving (for example `UTC`) to assume that the + provided localtime does not have DST. This has always been the behaviour, but + glibc versions after 2.37 changed it so that the behavior in Erlang also + changed. + + Own Id: OTP-19453 + Related Id(s): PR-9207 + +- Support for the `TZ` environment variable has been added on Windows. Before + this change only the time zone configured in the OS was ever used. + + Own Id: OTP-19454 + Related Id(s): PR-9207 + +## Improvements and New Features + +- The trace:system/3 function has been added. It has a similar interface as + erlang:system_monitor/2 but it also supports trace sessions. + + Own Id: OTP-19271 + Related Id(s): PR-8660 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Two BIFs have been added to the `erlang` module. + + erlang:processes_iterator/0 returns a process iterator that can be used to + iterate through the process table. + + erlang:process_next/1 takes in a process iterator and returns a 2-tuple, + consisting of a process identifier and a new process iterator. When the + process iterator runs out of processes in the process table, `none` will be + returned. + + Using these BIFs to scan the processes scales better than using + erlang:processes/0, at the cost of giving less consistency guarantees. + Process identifiers returned from consecutive calls of erlang:process_next/1 + may not be a consistent snapshot of all elements existing in the table during + any of the calls. A process identifier is only guaranteed to be returned from + a call to erlang:processes_next/1 if it was alive before the call to + erlang:processes_iterator/0 and was still alive when + erlang:processes_next/1 returned `none`. + + Own Id: OTP-19369 + Related Id(s): PR-9129 + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- When booting the runtime system on a 32-bit computer with a single core, the + boot code will try to minimize the peak memory use by disabling parallel + loading of BEAM files. + + Own Id: OTP-19450 + Related Id(s): PR-9342 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- `erlc` will now write compiler warnings and errors to standard error, instead + of standard output, in common with other language compilers. + + Own Id: OTP-19460 + Related Id(s): GH-9255, PR-9363 + +- Fixed the Windows build to always include `.pdb` files for all DLLs and + executables to help with debugging. + + Own Id: OTP-19465 + Related Id(s): PR-9229 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19472 + Related Id(s): #9388 + +- An optimization for appending 0 bits to a binary was removed in patch releases + for OTP versions 25, 26, and 27. This optimization has been reintroduced in + Erlang/OTP 28. + + Own Id: OTP-19473 + Related Id(s): PR-8697, PR-9396 + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on + systems with kernel polling enabled (that is most Unix systems), file + descriptors that are always re-enabled as soon as they trigger are now part of + a specialized pollset just as `driver_select`. This reduces the CPU usage in + such scenarios as the erts does not have to re-insert the FD everytime it it + triggered. As a result of this optimization `socket` based reading uses a + lot less CPU and achieves a higher throughput. + + Own Id: OTP-19479 + Related Id(s): PR-9275 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The Windows installer no longer creates the `erl.ini` file, making + installations redistributable. + + Own Id: OTP-19481 + Related Id(s): PR-9330 + +> #### Full runtime dependencies of erts-16.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# eunit-2.10 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# inets-9.3.2 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +> #### Full runtime dependencies of inets-9.3.2 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The `.class` files of jinterface are now part of the prebuilt archive using + Java 8. + + Own Id: OTP-19308 + Related Id(s): PR-8960 + +# kernel-10.3 + +## Fixed Bugs and Malfunctions + +- Fixed an issue where output to the shell would not print the prompt on a new + line. + + Own Id: OTP-19228 + Related Id(s): PR-8820 + +- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io + requests in latin1 encoding will not be translated to unicode and back to + latin1. + + Own Id: OTP-19296 + Related Id(s): PR-9013 + +- Fixed a bug where a composing unicode character would bind to a character not + available to the user and deleting that character would cause a crash. + + Own Id: OTP-19297 + Related Id(s): PR-9005 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The Erlang shell no longer crashes when a shell prompt ends with an escape + sequence. + + Own Id: OTP-19414 + Related Id(s): PR-9272 + +## Improvements and New Features + +- application:load/1 slows down as the number of directories in the code path + increases because the call to code:where_is_file/1 for the '.app' file must + scan each directory for the app. + + `code_server` maintains a cache of the contents of directories in the path. + Re-using that cache when searching for '.app' files in application:load/1 + may improve its runtime, especially when loading multiple applications. + + Own Id: OTP-19194 + Related Id(s): PR-8078 + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly + allowed to connect to the node by calling net_kernel:allow/1 + + Own Id: OTP-19287 + Related Id(s): PR-8207 + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5 + functions now also accept an option map as last argument containing the + `timeout` and `always_spawn` options. The `always_spawn` option can be used in + order to ensure that the call operation will use a newly spawned process when + executing the remote call. + + Own Id: OTP-19343 + Related Id(s): PR-8642 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- `t:io:standard_error/0` has been updated to write via a NIF API instead of a + port. This allows it to access the dirty-scheduler pool and make sure that + writes have been written to the OSs `stderr` when io:format/3 and equivalent + return. + + Own Id: OTP-19401 + Related Id(s): PR-9116 + +- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise + an exception if the command fails to execute. + + Own Id: OTP-19404 + Related Id(s): PR-9082 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +> #### Full runtime dependencies of kernel-10.3 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# megaco-4.8 + +## Improvements and New Features + +- Nano seconds are now used for (example) meas result presentation. + + Nanoseconds are now used, for example, in `meas` result presentations. + + Own Id: OTP-19403 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of megaco-4.8 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# odbc-2.16 + +## Improvements and New Features + +- Updated odbc configure to enable easier use of iodbc driver. + + Own Id: OTP-19456 + Related Id(s): PR-9083 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of odbc-2.16 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.11 + +## Improvements and New Features + +- `m:disksup` will now recognize HAMMER2 volumes. + + Own Id: OTP-19207 + Related Id(s): PR-8704 + +> #### Full runtime dependencies of os_mon-2.11 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.7 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of parsetools-2.7 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# runtime_tools-2.2 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of runtime_tools-2.2 +> +> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Fixed Bugs and Malfunctions + +- Fixed the documentation for the ExtraFiles option to systools:make_tar/2. + + Own Id: OTP-19279 + Related Id(s): GH-8842, PR-8894 + +## Improvements and New Features + +- `.appup` files are now included in releases in order to make it possible to + create upgrade packages from an installed release. + + Own Id: OTP-19398 + Related Id(s): PR-8973 + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.19 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of snmp-5.19 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.3 + +## Fixed Bugs and Malfunctions + +- The implementation of the ssh server-side supervision tree has been improved. + + Own Id: OTP-19324 + Related Id(s): GH-8223, PR-8968 + +## Improvements and New Features + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Related Id(s): PR-9277 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of ssh-5.3 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3 + +## Improvements and New Features + +- Refactoring, minor optimizations and improved log printouts. + + Own Id: OTP-19367 + Related Id(s): PR-9019 + +- supervisor:which_child/2 is now used to make start-up code for + TLS-connections simpler and more straight forward, and to increase stability + and maintainability of the ssl application. + + Own Id: OTP-19406 + Related Id(s): PR-9231 + +- The data handling for tls-v1.3 has been optimized. + + Own Id: OTP-19430 + Related Id(s): PR-9305 + +- Added experimental socket support. + + Own Id: OTP-19463 + Related Id(s): PR-9398 + +> #### Full runtime dependencies of ssl-11.3 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0 + +## Fixed Bugs and Malfunctions + +- Shell help now orders the commands in alphabetical order. + + Own Id: OTP-19161 + Related Id(s): PR-8573 + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Related Id(s): PR-8772 + + *** POTENTIAL INCOMPATIBILITY *** + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- argparse:help/1 now accepts unicode:chardata/0. + + Own Id: OTP-19303 + Related Id(s): PR-8932 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did + not start the traversal from root nodes. This fix makes both traversals only + start or restart from a root node in one of the components, or an arbitrary + node if no root node can be visited. + + Own Id: OTP-19393 + Related Id(s): PR-9171 + +- Auto-completion in the shell is now significantly faster for function + parameters that uses complex custom types. + + Own Id: OTP-19413 + Related Id(s): PR-9271 + +- Stringfying a non-latin1 atom will now produce a readable string instead of + encoding each character using `\x{...}` escape sequences. Example: + + -define(S(T), ??T). + + atom() -> + ?S('атом'). + + The `atom/0` function now returns `"'атом'"` instead of + `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`. + + Own Id: OTP-19421 + Related Id(s): GH-9173, PR-9276 + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +- `m:dets` could print error messages to standard output when repairing DETS + files. This has been changed to send the messages to the error logger. + + `ets:fun2ms` would print an error message to standard output as well as + returning an error tuple. The printing of the message has been removed. + + Own Id: OTP-19427 + Related Id(s): PR-9232 + +- The functions for converting to and from the RFC1339 date and time format + would not properly handle fractional seconds for negative times. + + Own Id: OTP-19441 + Related Id(s): GH-9279, PR-9280 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- Singleton type variables in an union type do not make sense from Dialyzer's + point of view. The following example is ill-typed: + + -spec run_test(Opts) -> term() + when Opts :: {join_specs, Bool} | {test, Bool}. + + This used to be reported as a warning. In OTP-28, this is an error + + Own Id: OTP-19125 + Related Id(s): PR-8556 + +- By default, sets created by the `sets` module will now be represented as + maps. + + Own Id: OTP-19127 + Related Id(s): PR-8429 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Before restarting a child, a supervisor must check if the restart limit is + reached. This adds a penalty to the overall restart time, which should be kept + low. The algorithm has been optimized from 2\*O(n) to O(n) behavior. + + Own Id: OTP-19204 + Related Id(s): PR-8261 + +- Added the possibility to configure shell docs column width through the stdlib + parameter `shell_docs_columns`. + + Own Id: OTP-19224 + Related Id(s): PR-8651 + +- The io:setopts/2 function now accepts the `line_history` option for more + explicit handling of when to save shell history. + + Own Id: OTP-19230 + Related Id(s): PR-8792 + +- The shell now prints a help message explaining how to interrupt a running + command when stuck executing a command for longer than 5 seconds. + + Own Id: OTP-19231 + Related Id(s): PR-8793 + +- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and + produced as output of calendar:system_time_to_rfc3339/2. + + Own Id: OTP-19250 + Related Id(s): PR-8812 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- Added io:get_password/0 that can read passwords from stdin when in "raw" + `-noshell` mode. + + Own Id: OTP-19315 + Related Id(s): PR-8962, PR-9006 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Related Id(s): GH-8099, PR-8100 + + *** HIGHLIGHT *** + +- The supervisor:which_child/2 function has been added to facilitate getting + the pid of a sibling process; that is a process under same supervisor as the + process that calls to call the new function. + + Own Id: OTP-19345 + Related Id(s): PR-8976 + +- The function erl_anno:set_end_location/2 for setting the end location of a + token has been added. + + Own Id: OTP-19354 + Related Id(s): PR-8966 + +- Added a warning for calling non-exported functions with the remote function + call syntax from the same module, and likewise for the remote fun syntax. + + Own Id: OTP-19371 + Related Id(s): GH-9092, PR-9095 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- The callback function `handle_continue/2` in `gen_server` callback modules is + now cached like the others, thanks to code cleanup and optimization of the + internal behaviour loop. + + This should only improve performance, not affect functionality. + + Own Id: OTP-19474 + Related Id(s): PR-9333 + +- Encoding done by the `json` module has been optimized. + + Own Id: OTP-19476 + Related Id(s): PR-9251 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Related Id(s): PR-9316 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of stdlib-7.0 +> +> compiler-5.0, crypto-4.5, erts-15.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# syntax_tools-4.0 + +## Fixed Bugs and Malfunctions + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of syntax_tools-4.0 +> +> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0 + +# tools-4.1.2 + +## Fixed Bugs and Malfunctions + +- A crash has been eliminated in tprof:collect/0 when unloading a module while + collecting traces. + + Own Id: OTP-19135 + Related Id(s): GH-8483, PR-8547 + +- Improved the `indent-region` Emacs command, which could indent badly when + inside multiline string. + + Own Id: OTP-19396 + Related Id(s): PR-9186 + +- eprof:start_profiling/3 can now return information about which process it + failed to trace. + + Own Id: OTP-19419 + Related Id(s): PR-9219 + +> #### Full runtime dependencies of tools-4.1.2 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# Thanks to + +Aleksander Lisiecki, Anders Ågren Thuné, Andrea Leopardi, Ariel Otilibili, +Benedikt Reinartz, Brujo Benavides, Chris Freeze, Christophe De Troyer, Cocoa, +Dániel Szoboszlay, dependabotbot, Dmitri Vereshchagin, Douglas Vought, Egor +Ignatov, Frank Hunleth, Fredrik Frantzen, Frej Drejhammar, Hichem Fantar, iri, +Isabell H, Jan Uhlig, Jean-Sébastien Pédron, João Henrique Ferreira de Freitas, +Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José Valim, Juan Barrios, +Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, lucioleKi, Lukasz +Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek, Martin Davidsson, +Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael Neumann, Nelson Vides, +Onno Vos, preciz, Richard Carlsson, Robin Morisset, Roeland van Batenburg, +sabiwara, siiky, Stavros Aronis, Steffen Deusch, Tobias Pfeiffer, Tomer, Vance +Shipley, William Fank Thomé, Wojtek Mach + diff --git a/release-notes/OTP-28.0-rc2.README.txt b/release-notes/OTP-28.0-rc2.README.txt new file mode 100644 index 0000000..9121950 --- /dev/null +++ b/release-notes/OTP-28.0-rc2.README.txt @@ -0,0 +1,2831 @@ +Inital Release: OTP 28.0 +Git Tag: OTP-28.0 +Date: 2025-03-19 +Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125, + OTP-19127, OTP-19135, OTP-19141, OTP-19144, + OTP-19155, OTP-19156, OTP-19159, OTP-19161, + OTP-19180, OTP-19184, OTP-19194, OTP-19198, + OTP-19204, OTP-19207, OTP-19224, OTP-19226, + OTP-19228, OTP-19230, OTP-19231, OTP-19233, + OTP-19250, OTP-19259, OTP-19262, OTP-19263, + OTP-19271, OTP-19278, OTP-19279, OTP-19285, + OTP-19287, OTP-19290, OTP-19295, OTP-19296, + OTP-19297, OTP-19303, OTP-19306, OTP-19308, + OTP-19313, OTP-19314, OTP-19315, OTP-19317, + OTP-19323, OTP-19324, OTP-19334, OTP-19337, + OTP-19339, OTP-19343, OTP-19345, OTP-19354, + OTP-19355, OTP-19364, OTP-19367, OTP-19369, + OTP-19371, OTP-19376, OTP-19386, OTP-19393, + OTP-19394, OTP-19396, OTP-19398, OTP-19401, + OTP-19403, OTP-19404, OTP-19406, OTP-19413, + OTP-19414, OTP-19419, OTP-19420, OTP-19421, + OTP-19422, OTP-19425, OTP-19426, OTP-19427, + OTP-19430, OTP-19431, OTP-19432, OTP-19441, + OTP-19450, OTP-19451, OTP-19452, OTP-19453, + OTP-19454, OTP-19456, OTP-19460, OTP-19463, + OTP-19465, OTP-19472, OTP-19473, OTP-19474, + OTP-19476, OTP-19477, OTP-19478, OTP-19479, + OTP-19480, OTP-19481, OTP-19483, OTP-19484, + OTP-19485, OTP-19487, OTP-19488, OTP-19492, + OTP-19500, OTP-19502, OTP-19503, OTP-19505, + OTP-19507, OTP-19508, OTP-19509, OTP-19510, + OTP-19512, OTP-19513, OTP-19514, OTP-19515, + OTP-19516, OTP-19517, OTP-19518, OTP-19519, + OTP-19520, OTP-19521, OTP-19522, OTP-19523, + OTP-19524, OTP-19526, OTP-19531, OTP-19532, + OTP-19534, OTP-19535, OTP-19536, OTP-19537, + OTP-19538, OTP-19539, OTP-19540, OTP-19541, + OTP-19544 +Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113, + GH-8223, GH-8483, GH-8558, GH-8822, GH-8842, + GH-8967, GH-8985, GH-9092, GH-9113, GH-9173, + GH-9255, GH-9279, GH-9366, GH-9413, GH-9438, + GH-9487, OTP-16608, OTP-19545, PR-7830, + PR-7970, PR-8078, PR-8100, PR-8207, PR-8261, + PR-8429, PR-8494, PR-8540, PR-8547, PR-8556, + PR-8573, PR-8589, PR-8590, PR-8592, PR-8600, + PR-8625, PR-8642, PR-8651, PR-8660, PR-8670, + PR-8695, PR-8697, PR-8699, PR-8704, PR-8734, + PR-8772, PR-8792, PR-8793, PR-8798, PR-8805, + PR-8812, PR-8820, PR-8862, PR-8885, PR-8887, + PR-8894, PR-8913, PR-8926, PR-8932, PR-8937, + PR-8938, PR-8943, PR-8945, PR-8960, PR-8962, + PR-8966, PR-8968, PR-8973, PR-8975, PR-8976, + PR-8988, PR-9005, PR-9006, PR-9013, PR-9019, + PR-9020, PR-9042, PR-9045, PR-9079, PR-9082, + PR-9083, PR-9094, PR-9095, PR-9106, PR-9116, + PR-9119, PR-9121, PR-9122, PR-9124, PR-9129, + PR-9141, PR-9149, PR-9154, PR-9171, PR-9186, + PR-9192, PR-9207, PR-9219, PR-9229, PR-9231, + PR-9232, PR-9246, PR-9251, PR-9253, PR-9269, + PR-9271, PR-9272, PR-9275, PR-9276, PR-9277, + PR-9280, PR-9287, PR-9289, PR-9299, PR-9305, + PR-9316, PR-9327, PR-9330, PR-9333, PR-9342, + PR-9344, PR-9363, PR-9376, PR-9396, PR-9398, + PR-9399, PR-9402, PR-9406, PR-9408, PR-9409, + PR-9410, PR-9417, PR-9433, PR-9441, PR-9445, + PR-9446, PR-9448, PR-9468, PR-9472, PR-9478, + PR-9484, PR-9488, PR-9495, PR-9504, PR-9508, + PR-9511, PR-9514, PR-9515, PR-9516, PR-9517, + PR-9518, PR-9519, PR-9538, PR-9563, PR-9579, + PR-9582, PR-9587, PR-9590 +System: OTP +Release: 28 +Application: asn1-5.3.3, common_test-1.28, compiler-9.0, + crypto-5.6, debugger-6.0, dialyzer-5.4, + diameter-2.5, edoc-1.4, eldap-1.2.15, + erl_interface-5.6, erts-16.0, eunit-2.10, + inets-9.3.3, jinterface-1.15, kernel-10.3, + megaco-4.8, mnesia-4.24, odbc-2.16, + os_mon-2.11, parsetools-2.7, public_key-1.18, + runtime_tools-2.2, sasl-4.3, snmp-5.19, + ssh-5.3, ssl-11.3, stdlib-7.0, + syntax_tools-4.0, tools-4.1.2, wx-2.5, + xmerl-2.1.2 +Predecessor: OTP + +Check out the git tag OTP-28.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Application(s): compiler, stdlib + Related Id(s): PR-8699, PR-9094 + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8926 + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Application(s): erts + Related Id(s): PR-9269, PR-9519, PR-9590 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Application(s): erts, stdlib + Related Id(s): GH-8037, PR-8962 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8625 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Application(s): stdlib + Related Id(s): GH-8099, PR-8100 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia, + parsetools, runtime_tools, snmp + Related Id(s): PR-9079 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299 + + *** POTENTIAL INCOMPATIBILITY *** + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Application(s): otp, stdlib + Related Id(s): PR-9106 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Application(s): stdlib + Related Id(s): PR-9316 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Application(s): compiler + Related Id(s): PR-8695 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Application(s): stdlib + Related Id(s): PR-9468 + +# POTENTIAL INCOMPATIBILITIES + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Application(s): stdlib + Related Id(s): PR-8772 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Application(s): compiler, erts, stdlib + Related Id(s): PR-8913 + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Application(s): asn1 + Related Id(s): PR-8798 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Application(s): compiler, erts, stdlib + Related Id(s): GH-8967, PR-8988 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Application(s): common_test + Related Id(s): PR-9045 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Application(s): ssh + Related Id(s): PR-9277 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Application(s): erts + Related Id(s): PR-8670 + +# OTP-28.0 + +## Improvements and New Features + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Fixes the sarif generation in the scan code script + + Own Id: OTP-19492 + Related Id(s): PR-9409 + +# asn1-5.3.3 + +## Fixed Bugs and Malfunctions + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Related Id(s): PR-8798 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of asn1-5.3.3 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.28 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- The overage reports in HTML can be rendered in dark mode if requested by the + user's browser. + + Own Id: OTP-19159 + Related Id(s): PR-7830 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Related Id(s): PR-9045 + + *** POTENTIAL INCOMPATIBILITY *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +> #### Full runtime dependencies of common_test-1.28 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-9.0 + +## Fixed Bugs and Malfunctions + +- The compiler will now emit warnings when some map patterns cannot possibly + match because a previous clauses matches the same pattern. For example: + + mm_1(#{}) -> a; + mm_1(#{b := B}) -> {b,B}. + + mm_2(#{a := A}) -> {a,A}; + mm_2(#{a := A, b := B}) -> {b,A,B}. + + The second clause of these function can never match and the compiler will now + emit a warning for both of them. + + Note that the compiler is not guaranteed to emit warnings for every possible + map pattern that cannot match. + + Own Id: OTP-19141 + Related Id(s): GH-8558, PR-8600 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The final validation step in the compiler will now reject modules containing + functions with more than 255 arguments. No impact is expected as the emulator + has always refused to load these modules. + + Own Id: OTP-19376 + Related Id(s): GH-9113, PR-9121 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now + `compressed` and `deterministic`. + + Own Id: OTP-19096 + Related Id(s): PR-8494 + +- Provided that the map argument for a maps:put/3 call is known to the + compiler to be a map, the compiler will replace such calls with the + corresponding update using the map syntax. + + Own Id: OTP-19115 + Related Id(s): PR-8540 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as + guard BIFs in order to gain performance. + + The following BIFs that are optimized in this way: `binary_to_atom/1`, + `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and + `list_to_existing_atom/1`. + + Own Id: OTP-19339 + Related Id(s): PR-9042, PR-9122 + +- The compiler now converts known documentation attribute metadata entries from + unicode:chardata/0 to unicode:unicode_binary/0. + + Own Id: OTP-19394 + Related Id(s): PR-9192 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Related Id(s): PR-8695 + + *** HIGHLIGHT *** + +- BEAM files no longer include a `Meta` chunk if there are no features used. + That slightly decreases the size of BEAM files, and it also ensures that + `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules. + + Own Id: OTP-19524 + Related Id(s): PR-9517 + +> #### Full runtime dependencies of compiler-9.0 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.6 + +## Fixed Bugs and Malfunctions + +- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded. + + Own Id: OTP-19500 + Related Id(s): PR-9119 + +## Improvements and New Features + +- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1 + functions have been deprecated. + + Own Id: OTP-19155 + Related Id(s): PR-8592 + +- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is + loaded without application `crypto` being loaded. In this case FIPS will be + disabled even if the user had set application parameter `fips_mode`. + + Own Id: OTP-19156 + Related Id(s): PR-8590 + +- The functionality of crypto:crypto_one_time_aead/6 is now also available in + the new functions crypto:crypto_one_time_aead_init/4 and + crypto:crypto_one_time_aead/4, which makes it possible to reuse + initialization. + + Own Id: OTP-19426 + Related Id(s): PR-9289 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If + present, it contains the version of the FIPS provider which may be different + than the version of the rest of OpenSSL. + + Own Id: OTP-19487 + Related Id(s): GH-9366, PR-9410 + +- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and + `cmac_cipher_algorithm()`. + + Own Id: OTP-19510 + Related Id(s): PR-9448 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of crypto-5.6 +> +> erts-9.0, kernel-6.0, stdlib-3.9 + +# debugger-6.0 + +## Fixed Bugs and Malfunctions + +- Error handling has been improved when modules fail to load. + + Own Id: OTP-19484 + Related Id(s): GH-7819, PR-9399 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of debugger-6.0 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# dialyzer-5.4 + +## Fixed Bugs and Malfunctions + +- The `-Wno_unknown` option will now prevent a warning being printed to standard + output when the command line interface is used. + + Own Id: OTP-19262 + Related Id(s): GH-8822, PR-8885 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of dialyzer-5.4 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.5 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of diameter-2.5 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.4 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of edoc-1.4 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.15 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of eldap-1.2.15 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-16.0 + +## Fixed Bugs and Malfunctions + +- ETS tables with more than 2 billion keys are now supported. + + Own Id: OTP-19144 + Related Id(s): PR-8589 + +- The zlib library included in Erlang/OTP has been updated to version 1.3.1. + + Own Id: OTP-19259 + Related Id(s): PR-8862 + +- `to_erl` no longer clears the screen when attaching to a `run_erl` session. + + Own Id: OTP-19263 + Related Id(s): PR-8943 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed a bug where `erlc` would crash if its path contained spaces. + + Own Id: OTP-19295 + Related Id(s): PR-8937 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a + timezone without daylight saving (for example `UTC`) to assume that the + provided localtime does not have DST. This has always been the behaviour, but + glibc versions after 2.37 changed it so that the behavior in Erlang also + changed. + + Own Id: OTP-19453 + Related Id(s): PR-9207 + +- Support for the `TZ` environment variable has been added on Windows. Before + this change only the time zone configured in the OS was ever used. + + Own Id: OTP-19454 + Related Id(s): PR-9207 + +- Suppressed various warnings when building the emulator with recent versions of + GCC + + Own Id: OTP-19488 + Related Id(s): GH-9413, PR-9417 + +- Fixed a bug in re:run and re:compile where the pattern parameter would be read + incorrectly if it was a sub-binary. + + Own Id: OTP-19507 + Related Id(s): GH-9438, PR-9478 + +- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be + part of the directory path when building Erlang/OTP. Bug has been present + since R11B released 2006. + + Own Id: OTP-19518 + Related Id(s): GH-9487, PR-9488 + +- Fixed the index types of modules `atomics` and `counters` from `integer()` to + `pos_integer()`, which is more correct. + + Own Id: OTP-19532 + Related Id(s): PR-9538 + +## Improvements and New Features + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Related Id(s): PR-9269, PR-9519, PR-9590 + + *** HIGHLIGHT *** + +- The trace:system/3 function has been added. It has a similar interface as + erlang:system_monitor/2 but it also supports trace sessions. + + Own Id: OTP-19271 + Related Id(s): PR-8660 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Two BIFs have been added to the `erlang` module. + + erlang:processes_iterator/0 returns a process iterator that can be used to + iterate through the process table. + + erlang:process_next/1 takes in a process iterator and returns a 2-tuple, + consisting of a process identifier and a new process iterator. When the + process iterator runs out of processes in the process table, `none` will be + returned. + + Using these BIFs to scan the processes scales better than using + erlang:processes/0, at the cost of giving less consistency guarantees. + Process identifiers returned from consecutive calls of erlang:process_next/1 + may not be a consistent snapshot of all elements existing in the table during + any of the calls. A process identifier is only guaranteed to be returned from + a call to erlang:processes_next/1 if it was alive before the call to + erlang:processes_iterator/0 and was still alive when + erlang:processes_next/1 returned `none`. + + Own Id: OTP-19369 + Related Id(s): PR-9129 + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- When booting the runtime system on a 32-bit computer with a single core, the + boot code will try to minimize the peak memory use by disabling parallel + loading of BEAM files. + + Own Id: OTP-19450 + Related Id(s): PR-9342 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- `erlc` will now write compiler warnings and errors to standard error, instead + of standard output, in common with other language compilers. + + Own Id: OTP-19460 + Related Id(s): GH-9255, PR-9363 + +- Fixed the Windows build to always include `.pdb` files for all DLLs and + executables to help with debugging. + + Own Id: OTP-19465 + Related Id(s): PR-9229 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19472 + Related Id(s): #9388 + +- An optimization for appending 0 bits to a binary was removed in patch releases + for OTP versions 25, 26, and 27. This optimization has been reintroduced in + Erlang/OTP 28. + + Own Id: OTP-19473 + Related Id(s): PR-8697, PR-9396 + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on + systems with kernel polling enabled (that is most Unix systems), file + descriptors that are always re-enabled as soon as they trigger are now part of + a specialized pollset just as `driver_select`. This reduces the CPU usage in + such scenarios as the erts does not have to re-insert the FD everytime it it + triggered. As a result of this optimization `socket` based reading uses a + lot less CPU and achieves a higher throughput. + + Own Id: OTP-19479 + Related Id(s): PR-9275 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The Windows installer no longer creates the `erl.ini` file, making + installations redistributable. + + Own Id: OTP-19481 + Related Id(s): PR-9330 + +- Added erlang:hibernate/0, which hibernates a process without discarding the + stack. + + Own Id: OTP-19503 + Related Id(s): PR-9406 + +- The asmjit library (used by BeamJIT) has been updated to version + 029075b84bf0161a761beb63e6eda519a29020db. + + Own Id: OTP-19509 + Related Id(s): PR-9495 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Related Id(s): PR-8670 + + *** POTENTIAL INCOMPATIBILITY *** + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +> #### Full runtime dependencies of erts-16.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# eunit-2.10 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# inets-9.3.3 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- Enhanced http client documentation. + + Own Id: OTP-19520 + Related Id(s): PR-9516 + +- Enhance made to mod_esi documentation + + Own Id: OTP-19521 + Related Id(s): PR-9472 + +> #### Full runtime dependencies of inets-9.3.3 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The `.class` files of jinterface are now part of the prebuilt archive using + Java 8. + + Own Id: OTP-19308 + Related Id(s): PR-8960 + +# kernel-10.3 + +## Fixed Bugs and Malfunctions + +- Fixed an issue where output to the shell would not print the prompt on a new + line. + + Own Id: OTP-19228 + Related Id(s): PR-8820 + +- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io + requests in latin1 encoding will not be translated to unicode and back to + latin1. + + Own Id: OTP-19296 + Related Id(s): PR-9013 + +- Fixed a bug where a composing unicode character would bind to a character not + available to the user and deleting that character would cause a crash. + + Own Id: OTP-19297 + Related Id(s): PR-9005 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The Erlang shell no longer crashes when a shell prompt ends with an escape + sequence. + + Own Id: OTP-19414 + Related Id(s): PR-9272 + +- code:get_doc/1 now works for cover-compiled modules. + + Own Id: OTP-19513 + Related Id(s): PR-9433 + +- An infinite loop in CNAME loop detection that can cause Out Of Memory has been + fixed. This affected CNAME lookup with the internal DNS resolver. + + Own Id: OTP-19544 + Related Id(s): PR-9587, OTP-19545 + +## Improvements and New Features + +- application:load/1 slows down as the number of directories in the code path + increases because the call to code:where_is_file/1 for the '.app' file must + scan each directory for the app. + + `code_server` maintains a cache of the contents of directories in the path. + Re-using that cache when searching for '.app' files in application:load/1 + may improve its runtime, especially when loading multiple applications. + + Own Id: OTP-19194 + Related Id(s): PR-8078 + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly + allowed to connect to the node by calling net_kernel:allow/1 + + Own Id: OTP-19287 + Related Id(s): PR-8207 + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5 + functions now also accept an option map as last argument containing the + `timeout` and `always_spawn` options. The `always_spawn` option can be used in + order to ensure that the call operation will use a newly spawned process when + executing the remote call. + + Own Id: OTP-19343 + Related Id(s): PR-8642 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- `t:io:standard_error/0` has been updated to write via a NIF API instead of a + port. This allows it to access the dirty-scheduler pool and make sure that + writes have been written to the OSs `stderr` when io:format/3 and equivalent + return. + + Own Id: OTP-19401 + Related Id(s): PR-9116 + +- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise + an exception if the command fails to execute. + + Own Id: OTP-19404 + Related Id(s): PR-9082 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- Add a configure chapter to the socket usage guide + + Own Id: OTP-19522 + Related Id(s): PR-9508 + +> #### Full runtime dependencies of kernel-10.3 +> +> crypto-5.0, erts-15.1, sasl-3.0, stdlib-6.0 + +# megaco-4.8 + +## Fixed Bugs and Malfunctions + +- Add missing spec and doc for exported functions. + + Own Id: OTP-19523 + +## Improvements and New Features + +- Nano seconds are now used for (example) meas result presentation. + + Nanoseconds are now used, for example, in `meas` result presentations. + + Own Id: OTP-19403 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of megaco-4.8 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# odbc-2.16 + +## Improvements and New Features + +- Updated odbc configure to enable easier use of iodbc driver. + + Own Id: OTP-19456 + Related Id(s): PR-9083 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of odbc-2.16 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.11 + +## Improvements and New Features + +- `m:disksup` will now recognize HAMMER2 volumes. + + Own Id: OTP-19207 + Related Id(s): PR-8704 + +> #### Full runtime dependencies of os_mon-2.11 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.7 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of parsetools-2.7 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.18 + +## Improvements and New Features + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of public_key-1.18 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# runtime_tools-2.2 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of runtime_tools-2.2 +> +> erts-15.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Fixed Bugs and Malfunctions + +- Fixed the documentation for the ExtraFiles option to systools:make_tar/2. + + Own Id: OTP-19279 + Related Id(s): GH-8842, PR-8894 + +## Improvements and New Features + +- `.appup` files are now included in releases in order to make it possible to + create upgrade packages from an installed release. + + Own Id: OTP-19398 + Related Id(s): PR-8973 + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.19 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of snmp-5.19 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.3 + +## Fixed Bugs and Malfunctions + +- The implementation of the ssh server-side supervision tree has been improved. + + Own Id: OTP-19324 + Related Id(s): GH-8223, PR-8968 + +## Improvements and New Features + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Related Id(s): PR-9277 + + *** POTENTIAL INCOMPATIBILITY *** + +- Daemon can be configured (bannerfun option) to send banner message at the + beginning of user authentication. + + Own Id: OTP-19535 + Related Id(s): PR-9149 + +> #### Full runtime dependencies of ssh-5.3 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3 + +## Improvements and New Features + +- Refactoring, minor optimizations and improved log printouts. + + Own Id: OTP-19367 + Related Id(s): PR-9019 + +- supervisor:which_child/2 is now used to make start-up code for + TLS-connections simpler and more straight forward, and to increase stability + and maintainability of the ssl application. + + Own Id: OTP-19406 + Related Id(s): PR-9231 + +- The data handling for tls-v1.3 has been optimized. + + Own Id: OTP-19430 + Related Id(s): PR-9305 + +- Added experimental socket support. + + Own Id: OTP-19463 + Related Id(s): PR-9398 + +- Improve code health by removing dead code. + + Own Id: OTP-19531 + Related Id(s): PR-9563 + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +> #### Full runtime dependencies of ssl-11.3 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0 + +## Fixed Bugs and Malfunctions + +- Shell help now orders the commands in alphabetical order. + + Own Id: OTP-19161 + Related Id(s): PR-8573 + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Related Id(s): PR-8772 + + *** POTENTIAL INCOMPATIBILITY *** + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- argparse:help/1 now accepts unicode:chardata/0. + + Own Id: OTP-19303 + Related Id(s): PR-8932 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did + not start the traversal from root nodes. This fix makes both traversals only + start or restart from a root node in one of the components, or an arbitrary + node if no root node can be visited. + + Own Id: OTP-19393 + Related Id(s): PR-9171 + +- Auto-completion in the shell is now significantly faster for function + parameters that uses complex custom types. + + Own Id: OTP-19413 + Related Id(s): PR-9271 + +- Stringfying a non-latin1 atom will now produce a readable string instead of + encoding each character using `\x{...}` escape sequences. Example: + + -define(S(T), ??T). + + atom() -> + ?S('атом'). + + The `atom/0` function now returns `"'атом'"` instead of + `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`. + + Own Id: OTP-19421 + Related Id(s): GH-9173, PR-9276 + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +- `m:dets` could print error messages to standard output when repairing DETS + files. This has been changed to send the messages to `logger`. + + `ets:fun2ms` would print an error message to standard output as well as + returning an error tuple. The printing of the message has been removed. + + Own Id: OTP-19427 + Related Id(s): PR-9232, PR-9446 + +- The functions for converting to and from the RFC1339 date and time format + would not properly handle fractional seconds for negative times. + + Own Id: OTP-19441 + Related Id(s): GH-9279, PR-9280 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Corrected the spec of ets:update_element/4. + + Own Id: OTP-19514 + Related Id(s): PR-9504 + +- Corrected the spec for ets:info/1. + + Own Id: OTP-19515 + Related Id(s): PR-9514 + +- Details in the hibernation implementation and time-out handling has been + improved for `gen_statem`. In particular to avoid selective receive when + cancelling a time-out. + + Own Id: OTP-19540 + Related Id(s): PR-9579 + +## Improvements and New Features + +- Singleton type variables in an union type do not make sense from Dialyzer's + point of view. The following example is ill-typed: + + -spec run_test(Opts) -> term() + when Opts :: {join_specs, Bool} | {test, Bool}. + + This used to be reported as a warning. In OTP-28, this is an error + + Own Id: OTP-19125 + Related Id(s): PR-8556 + +- By default, sets created by the `sets` module will now be represented as + maps. + + Own Id: OTP-19127 + Related Id(s): PR-8429 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Before restarting a child, a supervisor must check if the restart limit is + reached. This adds a penalty to the overall restart time, which should be kept + low. The algorithm has been optimized from 2\*O(n) to O(n) behavior. + + Own Id: OTP-19204 + Related Id(s): PR-8261 + +- Added the possibility to configure shell docs column width through the stdlib + parameter `shell_docs_columns`. + + Own Id: OTP-19224 + Related Id(s): PR-8651 + +- The io:setopts/2 function now accepts the `line_history` option for more + explicit handling of when to save shell history. + + Own Id: OTP-19230 + Related Id(s): PR-8792 + +- The shell now prints a help message explaining how to interrupt a running + command when stuck executing a command for longer than 5 seconds. + + Own Id: OTP-19231 + Related Id(s): PR-8793 + +- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and + produced as output of calendar:system_time_to_rfc3339/2. + + Own Id: OTP-19250 + Related Id(s): PR-8812 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- Added io:get_password/0 that can read passwords from stdin when in "raw" + `-noshell` mode. + + Own Id: OTP-19315 + Related Id(s): PR-8962, PR-9006 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Related Id(s): GH-8099, PR-8100 + + *** HIGHLIGHT *** + +- The supervisor:which_child/2 function has been added to facilitate getting + the pid of a sibling process; that is a process under same supervisor as the + process that calls to call the new function. + + Own Id: OTP-19345 + Related Id(s): PR-8976 + +- The function erl_anno:set_end_location/2 for setting the end location of a + token has been added. + + Own Id: OTP-19354 + Related Id(s): PR-8966 + +- Added a warning for calling non-exported functions with the remote function + call syntax from the same module, and likewise for the remote fun syntax. + + Own Id: OTP-19371 + Related Id(s): GH-9092, PR-9095 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- The callback function `handle_continue/2` in `gen_server` callback modules is + now cached like the others, thanks to code cleanup and optimization of the + internal behaviour loop. + + This should only improve performance, not affect functionality. + + Own Id: OTP-19474 + Related Id(s): PR-9333 + +- Encoding done by the `json` module has been optimized. + + Own Id: OTP-19476 + Related Id(s): PR-9251 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Related Id(s): PR-9316 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Functions of a module can now be grouped in the shell code completion by using + the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public + API">>). fetch()->... + + + Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature. + + Own Id: OTP-19483 + Related Id(s): [PR-9408] + + +- Added calendar:universal_time_to_system_time/1,2 and + calendar:local_time_to_system_time/1,2 + + Own Id: OTP-19505 + Related Id(s): PR-9445 + +- Improve error messages for json:decode/1. + + Own Id: OTP-19508 + Related Id(s): PR-9484 + +- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when + the heir is a supervisor process that cannot handle custom messages. + + Own Id: OTP-19512 + Related Id(s): PR-7970 + +- Added support for the Unicode 16 standard. + + Own Id: OTP-19516 + Related Id(s): PR-9141, PR-9518 + +- When documenting a function or type that needs to deal with durations, usually + we can document it as "time in milliseconds". Since the `timer` family of + functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it + is useful to be able to use this type in type specifications. + + Own Id: OTP-19526 + Related Id(s): PR-9515 + +- A new event time-out has been implemented in `gen_server`, that behaves more + like the one in `gen_statem`. Documentation and test cases are planned for a + later patch. + + Own Id: OTP-19537 + Related Id(s): PR-9287 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Related Id(s): PR-9468 + + *** HIGHLIGHT *** + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +> #### Full runtime dependencies of stdlib-7.0 +> +> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# syntax_tools-4.0 + +## Fixed Bugs and Malfunctions + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +> #### Full runtime dependencies of syntax_tools-4.0 +> +> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0 + +# tools-4.1.2 + +## Fixed Bugs and Malfunctions + +- A crash has been eliminated in tprof:collect/0 when unloading a module while + collecting traces. + + Own Id: OTP-19135 + Related Id(s): GH-8483, PR-8547 + +- Improved the `indent-region` Emacs command, which could indent badly when + inside multiline string. + + Own Id: OTP-19396 + Related Id(s): PR-9186 + +- eprof:start_profiling/3 can now return information about which process it + failed to trace. + + Own Id: OTP-19419 + Related Id(s): PR-9219 + +- Fixed a race condition when processes cause the Cover server to be started at + the same time. + + Own Id: OTP-19517 + Related Id(s): PR-9124 + +> #### Full runtime dependencies of tools-4.1.2 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.1.2 + +## Fixed Bugs and Malfunctions + +- With this change all public functions in xmerl have specs. + + Own Id: OTP-19534 + Related Id(s): PR-9327 + +> #### Full runtime dependencies of xmerl-2.1.2 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea +Leopardi, Ariel Otilibili, Benedikt Reinartz, Brujo Benavides, Chris Freeze, +Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, Dániel +Szoboszlay, dependabotbot, Dmitri Vereshchagin, Douglas Vought, Egor Ignatov, +Eksperimental, Frank Hunleth, Fredrik Frantzen, Frej Drejhammar, Gary Rennie, +Hichem Fantar, iri, Isabell H, Jan Uhlig, Jean-Sébastien Pédron, João Henrique +Ferreira de Freitas, Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José +Valim, Juan Barrios, Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, +lucioleKi, Lukasz Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek, +Martin Davidsson, Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael +Neumann, Nelson Vides, Onno Vos, preciz, Richard Carlsson, Roberto Aloi, Robin +Morisset, Roeland van Batenburg, ruslandoga, S0AndS0, sabiwara, Sergei Shuvatov, +siiky, Simon Cornish, Stavros Aronis, Steffen Deusch, Tobias Pfeiffer, Tomer, +Vance Shipley, William Fank Thomé, williamthome, William Yang, Wojtek Mach + diff --git a/release-notes/OTP-28.0-rc3.README.txt b/release-notes/OTP-28.0-rc3.README.txt new file mode 100644 index 0000000..3dde184 --- /dev/null +++ b/release-notes/OTP-28.0-rc3.README.txt @@ -0,0 +1,3332 @@ +Inital Release: OTP 28.0 +Git Tag: OTP-28.0 +Date: 2025-04-16 +Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125, + OTP-19127, OTP-19135, OTP-19141, OTP-19144, + OTP-19155, OTP-19156, OTP-19159, OTP-19161, + OTP-19180, OTP-19184, OTP-19194, OTP-19198, + OTP-19204, OTP-19207, OTP-19224, OTP-19226, + OTP-19228, OTP-19230, OTP-19231, OTP-19233, + OTP-19250, OTP-19259, OTP-19262, OTP-19263, + OTP-19271, OTP-19278, OTP-19279, OTP-19285, + OTP-19287, OTP-19290, OTP-19295, OTP-19296, + OTP-19297, OTP-19303, OTP-19306, OTP-19308, + OTP-19313, OTP-19314, OTP-19315, OTP-19317, + OTP-19323, OTP-19324, OTP-19334, OTP-19337, + OTP-19339, OTP-19343, OTP-19345, OTP-19354, + OTP-19355, OTP-19364, OTP-19367, OTP-19369, + OTP-19371, OTP-19376, OTP-19386, OTP-19393, + OTP-19394, OTP-19396, OTP-19398, OTP-19401, + OTP-19403, OTP-19404, OTP-19406, OTP-19413, + OTP-19414, OTP-19419, OTP-19420, OTP-19421, + OTP-19422, OTP-19425, OTP-19426, OTP-19427, + OTP-19430, OTP-19431, OTP-19432, OTP-19441, + OTP-19450, OTP-19451, OTP-19452, OTP-19453, + OTP-19454, OTP-19456, OTP-19460, OTP-19463, + OTP-19465, OTP-19472, OTP-19473, OTP-19474, + OTP-19476, OTP-19477, OTP-19478, OTP-19479, + OTP-19480, OTP-19481, OTP-19483, OTP-19484, + OTP-19485, OTP-19487, OTP-19488, OTP-19492, + OTP-19500, OTP-19502, OTP-19503, OTP-19505, + OTP-19507, OTP-19508, OTP-19509, OTP-19510, + OTP-19512, OTP-19513, OTP-19514, OTP-19515, + OTP-19516, OTP-19517, OTP-19518, OTP-19519, + OTP-19520, OTP-19521, OTP-19522, OTP-19523, + OTP-19524, OTP-19526, OTP-19528, OTP-19531, + OTP-19532, OTP-19534, OTP-19535, OTP-19536, + OTP-19537, OTP-19538, OTP-19539, OTP-19540, + OTP-19541, OTP-19544, OTP-19551, OTP-19553, + OTP-19554, OTP-19555, OTP-19566, OTP-19570, + OTP-19572, OTP-19573, OTP-19574, OTP-19575, + OTP-19576, OTP-19578, OTP-19580, OTP-19584, + OTP-19586, OTP-19588, OTP-19589, OTP-19590, + OTP-19591, OTP-19593, OTP-19594, OTP-19596, + OTP-19597, OTP-19598 +Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113, + GH-8223, GH-8483, GH-8558, GH-8822, GH-8842, + GH-8967, GH-8985, GH-9092, GH-9113, GH-9173, + GH-9255, GH-9279, GH-9366, GH-9413, GH-9436, + GH-9438, GH-9487, GH-9500, GH-9536, GH-9565, + GH-9668, OTP-16608, OTP-19545, PR-7830, + PR-7970, PR-8078, PR-8100, PR-8207, PR-8261, + PR-8429, PR-8494, PR-8540, PR-8547, PR-8556, + PR-8573, PR-8589, PR-8590, PR-8592, PR-8600, + PR-8625, PR-8642, PR-8651, PR-8660, PR-8670, + PR-8695, PR-8697, PR-8699, PR-8704, PR-8734, + PR-8772, PR-8792, PR-8793, PR-8798, PR-8805, + PR-8812, PR-8820, PR-8862, PR-8885, PR-8887, + PR-8894, PR-8913, PR-8926, PR-8932, PR-8937, + PR-8938, PR-8943, PR-8945, PR-8960, PR-8962, + PR-8966, PR-8968, PR-8973, PR-8975, PR-8976, + PR-8988, PR-9005, PR-9006, PR-9013, PR-9019, + PR-9020, PR-9042, PR-9045, PR-9079, PR-9082, + PR-9083, PR-9094, PR-9095, PR-9106, PR-9116, + PR-9119, PR-9121, PR-9122, PR-9124, PR-9129, + PR-9141, PR-9149, PR-9154, PR-9171, PR-9186, + PR-9192, PR-9207, PR-9214, PR-9219, PR-9229, + PR-9231, PR-9232, PR-9246, PR-9251, PR-9253, + PR-9269, PR-9271, PR-9272, PR-9275, PR-9276, + PR-9277, PR-9280, PR-9287, PR-9289, PR-9298, + PR-9299, PR-9305, PR-9316, PR-9327, PR-9330, + PR-9333, PR-9342, PR-9344, PR-9363, PR-9376, + PR-9396, PR-9398, PR-9399, PR-9402, PR-9406, + PR-9408, PR-9409, PR-9410, PR-9417, PR-9433, + PR-9441, PR-9445, PR-9446, PR-9448, PR-9468, + PR-9472, PR-9478, PR-9484, PR-9488, PR-9495, + PR-9504, PR-9508, PR-9511, PR-9514, PR-9515, + PR-9516, PR-9517, PR-9518, PR-9519, PR-9537, + PR-9538, PR-9543, PR-9563, PR-9571, PR-9579, + PR-9582, PR-9586, PR-9587, PR-9590, PR-9594, + PR-9595, PR-9608, PR-9610, PR-9615, PR-9621, + PR-9625, PR-9630, PR-9639, PR-9648, PR-9659, + PR-9660, PR-9670, PR-9671, PR-9677, PR-9678, + PR-9680, PR-9705, PR-9711, PR-9714 +System: OTP +Release: 28 +Application: asn1-5.3.5, common_test-1.28, compiler-9.0, + crypto-5.6, debugger-6.0, dialyzer-5.4, + diameter-2.5, edoc-1.4, eldap-1.2.15, + erl_interface-5.6, erts-16.0, et-1.7.2, + eunit-2.10, ftp-1.2.4, inets-9.3.3, + jinterface-1.15, kernel-10.3, megaco-4.8, + mnesia-4.24, observer-2.18, odbc-2.16, + os_mon-2.11, parsetools-2.7, public_key-1.18, + reltool-1.0.2, runtime_tools-2.2, sasl-4.3, + snmp-5.19, ssh-5.3, ssl-11.3, stdlib-7.0, + syntax_tools-4.0, tftp-1.2.3, tools-4.1.2, + wx-2.5, xmerl-2.1.3 +Predecessor: OTP + +Check out the git tag OTP-28.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Application(s): compiler, stdlib + Related Id(s): PR-8699, PR-9094 + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8926 + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Application(s): erts + Related Id(s): PR-9269, PR-9519, PR-9590 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Application(s): erts, stdlib + Related Id(s): GH-8037, PR-8962 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8625 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Application(s): stdlib + Related Id(s): GH-8099, PR-8100 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia, + parsetools, runtime_tools, snmp + Related Id(s): PR-9079 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** POTENTIAL INCOMPATIBILITY *** + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Application(s): otp, stdlib + Related Id(s): PR-9106 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Application(s): stdlib + Related Id(s): PR-9316 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Application(s): compiler + Related Id(s): PR-8695 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Application(s): stdlib + Related Id(s): PR-9468 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Application(s): otp + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + +# POTENTIAL INCOMPATIBILITIES + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Application(s): stdlib + Related Id(s): PR-8772 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Application(s): compiler, erts, stdlib + Related Id(s): PR-8913 + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Application(s): asn1 + Related Id(s): PR-8798 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Application(s): compiler, erts, stdlib + Related Id(s): GH-8967, PR-8988 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Application(s): common_test + Related Id(s): PR-9045 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Application(s): ssh + Related Id(s): PR-9277 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Application(s): erts + Related Id(s): PR-8670 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Application(s): stdlib + Related Id(s): PR-9680 + +# OTP-28.0 + +## Improvements and New Features + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Fixes the sarif generation in the scan code script + + Own Id: OTP-19492 + Related Id(s): PR-9409 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + + *** HIGHLIGHT *** + +# asn1-5.3.5 + +## Fixed Bugs and Malfunctions + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Related Id(s): PR-8798 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of asn1-5.3.5 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.28 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- The overage reports in HTML can be rendered in dark mode if requested by the + user's browser. + + Own Id: OTP-19159 + Related Id(s): PR-7830 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Related Id(s): PR-9045 + + *** POTENTIAL INCOMPATIBILITY *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of common_test-1.28 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-9.0 + +## Fixed Bugs and Malfunctions + +- The compiler will now emit warnings when some map patterns cannot possibly + match because a previous clauses matches the same pattern. For example: + + mm_1(#{}) -> a; + mm_1(#{b := B}) -> {b,B}. + + mm_2(#{a := A}) -> {a,A}; + mm_2(#{a := A, b := B}) -> {b,A,B}. + + The second clause of these function can never match and the compiler will now + emit a warning for both of them. + + Note that the compiler is not guaranteed to emit warnings for every possible + map pattern that cannot match. + + Own Id: OTP-19141 + Related Id(s): GH-8558, PR-8600 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The final validation step in the compiler will now reject modules containing + functions with more than 255 arguments. No impact is expected as the emulator + has always refused to load these modules. + + Own Id: OTP-19376 + Related Id(s): GH-9113, PR-9121 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now + `compressed` and `deterministic`. + + Own Id: OTP-19096 + Related Id(s): PR-8494 + +- Provided that the map argument for a maps:put/3 call is known to the + compiler to be a map, the compiler will replace such calls with the + corresponding update using the map syntax. + + Own Id: OTP-19115 + Related Id(s): PR-8540 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as + guard BIFs in order to gain performance. + + The following BIFs that are optimized in this way: `binary_to_atom/1`, + `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and + `list_to_existing_atom/1`. + + Own Id: OTP-19339 + Related Id(s): PR-9042, PR-9122 + +- The compiler now converts known documentation attribute metadata entries from + unicode:chardata/0 to unicode:unicode_binary/0. + + Own Id: OTP-19394 + Related Id(s): PR-9192 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Related Id(s): PR-8695 + + *** HIGHLIGHT *** + +- BEAM files no longer include a `Meta` chunk if there are no features used. + That slightly decreases the size of BEAM files, and it also ensures that + `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules. + + Own Id: OTP-19524 + Related Id(s): PR-9517 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of compiler-9.0 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.6 + +## Fixed Bugs and Malfunctions + +- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded. + + Own Id: OTP-19500 + Related Id(s): PR-9119 + +- Added copyright and license to crypto_ec_curves.erl + + Own Id: OTP-19554 + +## Improvements and New Features + +- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1 + functions have been deprecated. + + Own Id: OTP-19155 + Related Id(s): PR-8592 + +- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is + loaded without application `crypto` being loaded. In this case FIPS will be + disabled even if the user had set application parameter `fips_mode`. + + Own Id: OTP-19156 + Related Id(s): PR-8590 + +- The functionality of crypto:crypto_one_time_aead/6 is now also available in + the new functions crypto:crypto_one_time_aead_init/4 and + crypto:crypto_one_time_aead/4, which makes it possible to reuse + initialization. + + Own Id: OTP-19426 + Related Id(s): PR-9289 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If + present, it contains the version of the FIPS provider which may be different + than the version of the rest of OpenSSL. + + Own Id: OTP-19487 + Related Id(s): GH-9366, PR-9410 + +- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and + `cmac_cipher_algorithm()`. + + Own Id: OTP-19510 + Related Id(s): PR-9448 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of crypto-5.6 +> +> erts-9.0, kernel-6.0, stdlib-3.9 + +# debugger-6.0 + +## Fixed Bugs and Malfunctions + +- Error handling has been improved when modules fail to load. + + Own Id: OTP-19484 + Related Id(s): GH-7819, PR-9399 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of debugger-6.0 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# dialyzer-5.4 + +## Fixed Bugs and Malfunctions + +- The `-Wno_unknown` option will now prevent a warning being printed to standard + output when the command line interface is used. + + Own Id: OTP-19262 + Related Id(s): GH-8822, PR-8885 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of dialyzer-5.4 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.5 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of diameter-2.5 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.4 + +## Fixed Bugs and Malfunctions + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of edoc-1.4 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.15 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eldap-1.2.15 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-16.0 + +## Fixed Bugs and Malfunctions + +- ETS tables with more than 2 billion keys are now supported. + + Own Id: OTP-19144 + Related Id(s): PR-8589 + +- The zlib library included in Erlang/OTP has been updated to version 1.3.1. + + Own Id: OTP-19259 + Related Id(s): PR-8862 + +- `to_erl` no longer clears the screen when attaching to a `run_erl` session. + + Own Id: OTP-19263 + Related Id(s): PR-8943 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed a bug where `erlc` would crash if its path contained spaces. + + Own Id: OTP-19295 + Related Id(s): PR-8937 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a + timezone without daylight saving (for example `UTC`) to assume that the + provided localtime does not have DST. This has always been the behaviour, but + glibc versions after 2.37 changed it so that the behavior in Erlang also + changed. + + Own Id: OTP-19453 + Related Id(s): PR-9207 + +- Support for the `TZ` environment variable has been added on Windows. Before + this change only the time zone configured in the OS was ever used. + + Own Id: OTP-19454 + Related Id(s): PR-9207 + +- Suppressed various warnings when building the emulator with recent versions of + GCC + + Own Id: OTP-19488 + Related Id(s): GH-9413, PR-9417 + +- Fixed a bug in re:run and re:compile where the pattern parameter would be read + incorrectly if it was a sub-binary. + + Own Id: OTP-19507 + Related Id(s): GH-9438, PR-9478 + +- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be + part of the directory path when building Erlang/OTP. Bug has been present + since R11B released 2006. + + Own Id: OTP-19518 + Related Id(s): GH-9487, PR-9488 + +- Fixed the index types of modules `atomics` and `counters` from `integer()` to + `pos_integer()`, which is more correct. + + Own Id: OTP-19532 + Related Id(s): PR-9538 + +- Fix `erl` flags `+Q`, `+P` and `+t` to not allow values greater + than 4294975487. Before this fix, the runtime would either truncate the value + or crash depending on which value was given. + + Own Id: OTP-19594 + Related Id(s): GH-9668, PR-9671 + +## Improvements and New Features + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Related Id(s): PR-9269, PR-9519, PR-9590 + + *** HIGHLIGHT *** + +- The trace:system/3 function has been added. It has a similar interface as + erlang:system_monitor/2 but it also supports trace sessions. + + Own Id: OTP-19271 + Related Id(s): PR-8660 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Two BIFs have been added to the `erlang` module. + + erlang:processes_iterator/0 returns a process iterator that can be used to + iterate through the process table. + + erlang:process_next/1 takes in a process iterator and returns a 2-tuple, + consisting of a process identifier and a new process iterator. When the + process iterator runs out of processes in the process table, `none` will be + returned. + + Using these BIFs to scan the processes scales better than using + erlang:processes/0, at the cost of giving less consistency guarantees. + Process identifiers returned from consecutive calls of erlang:process_next/1 + may not be a consistent snapshot of all elements existing in the table during + any of the calls. A process identifier is only guaranteed to be returned from + a call to erlang:processes_next/1 if it was alive before the call to + erlang:processes_iterator/0 and was still alive when + erlang:processes_next/1 returned `none`. + + Own Id: OTP-19369 + Related Id(s): PR-9129 + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- When booting the runtime system on a 32-bit computer with a single core, the + boot code will try to minimize the peak memory use by disabling parallel + loading of BEAM files. + + Own Id: OTP-19450 + Related Id(s): PR-9342 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- `erlc` will now write compiler warnings and errors to standard error, instead + of standard output, in common with other language compilers. + + Own Id: OTP-19460 + Related Id(s): GH-9255, PR-9363 + +- Fixed the Windows build to always include `.pdb` files for all DLLs and + executables to help with debugging. + + Own Id: OTP-19465 + Related Id(s): PR-9229 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19472 + Related Id(s): #9388 + +- An optimization for appending 0 bits to a binary was removed in patch releases + for OTP versions 25, 26, and 27. This optimization has been reintroduced in + Erlang/OTP 28. + + Own Id: OTP-19473 + Related Id(s): PR-8697, PR-9396 + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on + systems with kernel polling enabled (that is most Unix systems), file + descriptors that are always re-enabled as soon as they trigger are now part of + a specialized pollset just as `driver_select`. This reduces the CPU usage in + such scenarios as the erts does not have to re-insert the FD everytime it it + triggered. As a result of this optimization `socket` based reading uses a + lot less CPU and achieves a higher throughput. + + Own Id: OTP-19479 + Related Id(s): PR-9275 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The Windows installer no longer creates the `erl.ini` file, making + installations redistributable. + + Own Id: OTP-19481 + Related Id(s): PR-9330 + +- Added erlang:hibernate/0, which hibernates a process without discarding the + stack. + + Own Id: OTP-19503 + Related Id(s): PR-9406 + +- The asmjit library (used by BeamJIT) has been updated to version + 029075b84bf0161a761beb63e6eda519a29020db. + + Own Id: OTP-19509 + Related Id(s): PR-9495 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Related Id(s): PR-8670 + + *** POTENTIAL INCOMPATIBILITY *** + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- The `+R` emulator options has been removed. It has had any effect since + Erlang/OTP R9. + + Own Id: OTP-19551 + Related Id(s): PR-9608 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +- Add `+JPperfdirectory <dir>` for specifying which directory Erlang should + place perf symbol information files. + + Own Id: OTP-19589 + Related Id(s): GH-9500, PR-9639 + +- Allow multiple static nifs to be part of the same archive. See the NIF + documentation for details. + + Own Id: OTP-19590 + Related Id(s): PR-9625 + +- Various improvements reducing lock contention on run queues due to task + stealing. + + Own Id: OTP-19591 + Related Id(s): PR-9594 + +> #### Full runtime dependencies of erts-16.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of et-1.7.2 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.10 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.4 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ftp-1.2.4 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.3.3 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +## Improvements and New Features + +- Enhanced http client documentation. + + Own Id: OTP-19520 + Related Id(s): PR-9516 + +- Enhance made to mod_esi documentation + + Own Id: OTP-19521 + Related Id(s): PR-9472 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of inets-9.3.3 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The `.class` files of jinterface are now part of the prebuilt archive using + Java 8. + + Own Id: OTP-19308 + Related Id(s): PR-8960 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +# kernel-10.3 + +## Fixed Bugs and Malfunctions + +- Fixed an issue where output to the shell would not print the prompt on a new + line. + + Own Id: OTP-19228 + Related Id(s): PR-8820 + +- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io + requests in latin1 encoding will not be translated to unicode and back to + latin1. + + Own Id: OTP-19296 + Related Id(s): PR-9013 + +- Fixed a bug where a composing unicode character would bind to a character not + available to the user and deleting that character would cause a crash. + + Own Id: OTP-19297 + Related Id(s): PR-9005 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The Erlang shell no longer crashes when a shell prompt ends with an escape + sequence. + + Own Id: OTP-19414 + Related Id(s): PR-9272 + +- code:get_doc/1 now works for cover-compiled modules. + + Own Id: OTP-19513 + Related Id(s): PR-9433 + +- An infinite loop in CNAME loop detection that can cause Out Of Memory has been + fixed. This affected CNAME lookup with the internal DNS resolver. + + Own Id: OTP-19544 + Related Id(s): PR-9587, OTP-19545 + +- The internal resolver framework has been fixed to wait with the first resolver + lookup until the ERL_INETRC environment variable has been applied. + + Previously, on some platform(s) (Linux) a first lookup when figuring out the + domain name was always placed on the `native` resolver even if ERL_INETRC was + used to disable it. + + Own Id: OTP-19555 + Related Id(s): PR-9543 + +- Fix `logger:add_handler(default, ...)` to correctly replay events generated + during startup when the default logger is set to `undefined` in logger's + configuration parameters. + + Own Id: OTP-19588 + Related Id(s): GH-9436, PR-9595 + +## Improvements and New Features + +- application:load/1 slows down as the number of directories in the code path + increases because the call to code:where_is_file/1 for the '.app' file must + scan each directory for the app. + + `code_server` maintains a cache of the contents of directories in the path. + Re-using that cache when searching for '.app' files in application:load/1 + may improve its runtime, especially when loading multiple applications. + + Own Id: OTP-19194 + Related Id(s): PR-8078 + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly + allowed to connect to the node by calling net_kernel:allow/1 + + Own Id: OTP-19287 + Related Id(s): PR-8207 + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5 + functions now also accept an option map as last argument containing the + `timeout` and `always_spawn` options. The `always_spawn` option can be used in + order to ensure that the call operation will use a newly spawned process when + executing the remote call. + + Own Id: OTP-19343 + Related Id(s): PR-8642 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- `t:io:standard_error/0` has been updated to write via a NIF API instead of a + port. This allows it to access the dirty-scheduler pool and make sure that + writes have been written to the OSs `stderr` when io:format/3 and equivalent + return. + + Own Id: OTP-19401 + Related Id(s): PR-9116 + +- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise + an exception if the command fails to execute. + + Own Id: OTP-19404 + Related Id(s): PR-9082 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- Add a configure chapter to the socket usage guide + + Own Id: OTP-19522 + Related Id(s): PR-9508 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +> #### Full runtime dependencies of kernel-10.3 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# megaco-4.8 + +## Fixed Bugs and Malfunctions + +- Add missing spec and doc for exported functions. + + Own Id: OTP-19523 + +## Improvements and New Features + +- Nano seconds are now used for (example) meas result presentation. + + Nanoseconds are now used, for example, in `meas` result presentations. + + Own Id: OTP-19403 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19570 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Tweaked some of the meas examples in order to make them benchmark compatible. + + Own Id: OTP-19598 + +> #### Full runtime dependencies of megaco-4.8 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.18 + +## Improvements and New Features + +- With this change etop from observer application will scroll as top from shell + + Own Id: OTP-19528 + Related Id(s): PR-9659 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of observer-2.18 +> +> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3 + +# odbc-2.16 + +## Improvements and New Features + +- Updated odbc configure to enable easier use of iodbc driver. + + Own Id: OTP-19456 + Related Id(s): PR-9083 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of odbc-2.16 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.11 + +## Improvements and New Features + +- `m:disksup` will now recognize HAMMER2 volumes. + + Own Id: OTP-19207 + Related Id(s): PR-8704 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of os_mon-2.11 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.7 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of parsetools-2.7 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.18 + +## Improvements and New Features + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Ignore instead of crashing unhandled entries when loading CA-certificates. + + Own Id: OTP-19573 + Related Id(s): GH-9565, PR-9677 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of public_key-1.18 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# reltool-1.0.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of reltool-1.0.2 +> +> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.2 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- With this change observer will use cheaper iterators to avoid locking when not + necessary. + + Own Id: OTP-19584 + Related Id(s): PR-9711 + +> #### Full runtime dependencies of runtime_tools-2.2 +> +> erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Fixed Bugs and Malfunctions + +- Fixed the documentation for the ExtraFiles option to systools:make_tar/2. + + Own Id: OTP-19279 + Related Id(s): GH-8842, PR-8894 + +## Improvements and New Features + +- `.appup` files are now included in releases in order to make it possible to + create upgrade packages from an installed release. + + Own Id: OTP-19398 + Related Id(s): PR-8973 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.19 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19572 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of snmp-5.19 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.3 + +## Fixed Bugs and Malfunctions + +- The implementation of the ssh server-side supervision tree has been improved. + + Own Id: OTP-19324 + Related Id(s): GH-8223, PR-8968 + +- SSH daemon accepts fun as tcpip_tunnel_in option. This provides more control + over TCP connection tunnel handle by server. + + Own Id: OTP-19566 + Related Id(s): PR-9571 + +## Improvements and New Features + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Related Id(s): PR-9277 + + *** POTENTIAL INCOMPATIBILITY *** + +- Daemon can be configured (bannerfun option) to send banner message at the + beginning of user authentication. + + Own Id: OTP-19535 + Related Id(s): PR-9149 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- For interoperability reasons, SSH ignore message with no length specified is + treated as message with zero length specified - it will not cause decode + error. + + Own Id: OTP-19586 + Related Id(s): PR-9214 + +- Documentation improvements. + + Own Id: OTP-19596 + Related Id(s): PR-9298 + +> #### Full runtime dependencies of ssh-5.3 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3 + +## Improvements and New Features + +- Refactoring, minor optimizations and improved log printouts. + + Own Id: OTP-19367 + Related Id(s): PR-9019 + +- supervisor:which_child/2 is now used to make start-up code for + TLS-connections simpler and more straight forward, and to increase stability + and maintainability of the ssl application. + + Own Id: OTP-19406 + Related Id(s): PR-9231 + +- The data handling for tls-v1.3 has been optimized. + + Own Id: OTP-19430 + Related Id(s): PR-9305 + +- Added experimental socket support. + + Own Id: OTP-19463 + Related Id(s): PR-9398 + +- Improve code health by removing dead code. + + Own Id: OTP-19531 + Related Id(s): PR-9563 + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ssl-11.3 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0 + +## Fixed Bugs and Malfunctions + +- Shell help now orders the commands in alphabetical order. + + Own Id: OTP-19161 + Related Id(s): PR-8573 + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Related Id(s): PR-8772 + + *** POTENTIAL INCOMPATIBILITY *** + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- argparse:help/1 now accepts unicode:chardata/0. + + Own Id: OTP-19303 + Related Id(s): PR-8932 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did + not start the traversal from root nodes. This fix makes both traversals only + start or restart from a root node in one of the components, or an arbitrary + node if no root node can be visited. + + Own Id: OTP-19393 + Related Id(s): PR-9171 + +- Auto-completion in the shell is now significantly faster for function + parameters that uses complex custom types. + + Own Id: OTP-19413 + Related Id(s): PR-9271 + +- Stringfying a non-latin1 atom will now produce a readable string instead of + encoding each character using `\x{...}` escape sequences. Example: + + -define(S(T), ??T). + + atom() -> + ?S('атом'). + + The `atom/0` function now returns `"'атом'"` instead of + `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`. + + Own Id: OTP-19421 + Related Id(s): GH-9173, PR-9276 + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +- `m:dets` could print error messages to standard output when repairing DETS + files. This has been changed to send the messages to `logger`. + + `ets:fun2ms` would print an error message to standard output as well as + returning an error tuple. The printing of the message has been removed. + + Own Id: OTP-19427 + Related Id(s): PR-9232, PR-9446 + +- The functions for converting to and from the RFC1339 date and time format + would not properly handle fractional seconds for negative times. + + Own Id: OTP-19441 + Related Id(s): GH-9279, PR-9280 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Corrected the spec of ets:update_element/4. + + Own Id: OTP-19514 + Related Id(s): PR-9504 + +- Corrected the spec for ets:info/1. + + Own Id: OTP-19515 + Related Id(s): PR-9514 + +- Details in the hibernation implementation and time-out handling has been + improved for `gen_statem`. In particular to avoid selective receive when + cancelling a time-out. + + Own Id: OTP-19540 + Related Id(s): PR-9579 + +- Fix `zip` extraction to wrap invalid DOS timestamps to their correct value + instead of returning the actual value. Before this fix the timestamp returned + could have a second greater than 59. The bug has been present since Erlang/OTP + 27.1. + + Own Id: OTP-19593 + Related Id(s): GH-9536, PR-9537 + +## Improvements and New Features + +- Singleton type variables in an union type do not make sense from Dialyzer's + point of view. The following example is ill-typed: + + -spec run_test(Opts) -> term() + when Opts :: {join_specs, Bool} | {test, Bool}. + + This used to be reported as a warning. In OTP-28, this is an error + + Own Id: OTP-19125 + Related Id(s): PR-8556 + +- By default, sets created by the `sets` module will now be represented as + maps. + + Own Id: OTP-19127 + Related Id(s): PR-8429 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Before restarting a child, a supervisor must check if the restart limit is + reached. This adds a penalty to the overall restart time, which should be kept + low. The algorithm has been optimized from 2\*O(n) to O(n) behavior. + + Own Id: OTP-19204 + Related Id(s): PR-8261 + +- Added the possibility to configure shell docs column width through the stdlib + parameter `shell_docs_columns`. + + Own Id: OTP-19224 + Related Id(s): PR-8651 + +- The io:setopts/2 function now accepts the `line_history` option for more + explicit handling of when to save shell history. + + Own Id: OTP-19230 + Related Id(s): PR-8792 + +- The shell now prints a help message explaining how to interrupt a running + command when stuck executing a command for longer than 5 seconds. + + Own Id: OTP-19231 + Related Id(s): PR-8793 + +- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and + produced as output of calendar:system_time_to_rfc3339/2. + + Own Id: OTP-19250 + Related Id(s): PR-8812 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- Added io:get_password/0 that can read passwords from stdin when in "raw" + `-noshell` mode. + + Own Id: OTP-19315 + Related Id(s): PR-8962, PR-9006 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Related Id(s): GH-8099, PR-8100 + + *** HIGHLIGHT *** + +- The supervisor:which_child/2 function has been added to facilitate getting + the pid of a sibling process; that is a process under same supervisor as the + process that calls to call the new function. + + Own Id: OTP-19345 + Related Id(s): PR-8976 + +- The function erl_anno:set_end_location/2 for setting the end location of a + token has been added. + + Own Id: OTP-19354 + Related Id(s): PR-8966 + +- Added a warning for calling non-exported functions with the remote function + call syntax from the same module, and likewise for the remote fun syntax. + + Own Id: OTP-19371 + Related Id(s): GH-9092, PR-9095 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- The callback function `handle_continue/2` in `gen_server` callback modules is + now cached like the others, thanks to code cleanup and optimization of the + internal behaviour loop. + + This should only improve performance, not affect functionality. + + Own Id: OTP-19474 + Related Id(s): PR-9333 + +- Encoding done by the `json` module has been optimized. + + Own Id: OTP-19476 + Related Id(s): PR-9251 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Related Id(s): PR-9316 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Functions of a module can now be grouped in the shell code completion by using + the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public + API">>). fetch()->... + + + Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature. + + Own Id: OTP-19483 + Related Id(s): [PR-9408] + + +- Added calendar:universal_time_to_system_time/1,2 and + calendar:local_time_to_system_time/1,2 + + Own Id: OTP-19505 + Related Id(s): PR-9445 + +- Improve error messages for json:decode/1. + + Own Id: OTP-19508 + Related Id(s): PR-9484 + +- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when + the heir is a supervisor process that cannot handle custom messages. + + Own Id: OTP-19512 + Related Id(s): PR-7970 + +- Added support for the Unicode 16 standard. + + Own Id: OTP-19516 + Related Id(s): PR-9141, PR-9518 + +- When documenting a function or type that needs to deal with durations, usually + we can document it as "time in milliseconds". Since the `timer` family of + functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it + is useful to be able to use this type in type specifications. + + Own Id: OTP-19526 + Related Id(s): PR-9515 + +- A new event time-out has been implemented in `gen_server`, that behaves more + like the one in `gen_statem`. + + See the type gen_server:action/0 for `{timeout|hibernate,...}`, and also + related functions. + + Own Id: OTP-19537 + Related Id(s): PR-9287, PR-9615, PR-9621 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Related Id(s): PR-9468 + + *** HIGHLIGHT *** + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- A list of PCRE2 incompatibilities is documented in a user's guide for stdlib. + + Own Id: OTP-19578 + Related Id(s): PR-9705 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Related Id(s): PR-9680 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of stdlib-7.0 +> +> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# syntax_tools-4.0 + +## Fixed Bugs and Malfunctions + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of syntax_tools-4.0 +> +> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0 + +# tftp-1.2.3 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tftp-1.2.3 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.1.2 + +## Fixed Bugs and Malfunctions + +- A crash has been eliminated in tprof:collect/0 when unloading a module while + collecting traces. + + Own Id: OTP-19135 + Related Id(s): GH-8483, PR-8547 + +- Improved the `indent-region` Emacs command, which could indent badly when + inside multiline string. + + Own Id: OTP-19396 + Related Id(s): PR-9186 + +- eprof:start_profiling/3 can now return information about which process it + failed to trace. + + Own Id: OTP-19419 + Related Id(s): PR-9219 + +- Fixed a race condition when processes cause the Cover server to be started at + the same time. + + Own Id: OTP-19517 + Related Id(s): PR-9124 + +- Fix bug in `tprof` where the session name could not be set. + + Own Id: OTP-19580 + Related Id(s): PR-9648 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tools-4.1.2 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.1.3 + +## Fixed Bugs and Malfunctions + +- With this change all public functions in xmerl have specs. + + Own Id: OTP-19534 + Related Id(s): PR-9327 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of xmerl-2.1.3 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea +Leopardi, Ariel Otilibili, Benedikt Reinartz, Brujo Benavides, Chris Freeze, +Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, Dániel +Szoboszlay, dependabotbot, Dmitri Vereshchagin, Dominic Letz, Douglas Vought, +Egor Ignatov, Eksperimental, Frank Hunleth, Freddie Lamble, Fredrik Frantzen, +Frej Drejhammar, Gary Rennie, Hichem Fantar, Ilya Klyuchnikov, iri, Isabell H, +Jan Uhlig, Jean-Sébastien Pédron, João Henrique Ferreira de Freitas, Johannes +Christ, Jonas Bernoulli, Jonatan Kłosko, José Valim, Juan Barrios, Julian +Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, lucioleKi, Lukasz Samson, +Maria Scott, Mario Idival, Mario Uher, Marko Mindek, Martin Davidsson, Matwey V. +Kornilov, Maxim Fedorov, Michael Davis, Michael Neumann, Nelson Vides, Nicholas +Moen, Onno Vos, Paul Guyot, preciz, Richard Carlsson, Roberto Aloi, Robin +Morisset, Roeland van Batenburg, ruslandoga, S0AndS0, sabiwara, Sam Weaver, +Sergei Shuvatov, siiky, Simon Cornish, Stavros Aronis, Stefan Grundmann, Steffen +Deusch, Tobias Pfeiffer, Tomer, Vadim Yanitskiy, Vance Shipley, William Fank +Thomé, williamthome, William Yang, Wojtek Mach + diff --git a/release-notes/OTP-28.0-rc4.README.txt b/release-notes/OTP-28.0-rc4.README.txt new file mode 100644 index 0000000..2cdae55 --- /dev/null +++ b/release-notes/OTP-28.0-rc4.README.txt @@ -0,0 +1,3652 @@ +Inital Release: OTP 28.0 +Git Tag: OTP-28.0 +Date: 2025-05-05 +Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125, + OTP-19127, OTP-19135, OTP-19141, OTP-19144, + OTP-19155, OTP-19156, OTP-19159, OTP-19161, + OTP-19180, OTP-19184, OTP-19194, OTP-19198, + OTP-19204, OTP-19207, OTP-19224, OTP-19226, + OTP-19228, OTP-19230, OTP-19231, OTP-19233, + OTP-19250, OTP-19259, OTP-19262, OTP-19263, + OTP-19271, OTP-19278, OTP-19279, OTP-19285, + OTP-19287, OTP-19290, OTP-19295, OTP-19296, + OTP-19297, OTP-19303, OTP-19306, OTP-19308, + OTP-19313, OTP-19314, OTP-19315, OTP-19317, + OTP-19323, OTP-19324, OTP-19334, OTP-19337, + OTP-19339, OTP-19343, OTP-19345, OTP-19354, + OTP-19355, OTP-19364, OTP-19367, OTP-19369, + OTP-19371, OTP-19376, OTP-19386, OTP-19393, + OTP-19394, OTP-19396, OTP-19398, OTP-19401, + OTP-19403, OTP-19404, OTP-19406, OTP-19413, + OTP-19414, OTP-19419, OTP-19420, OTP-19421, + OTP-19422, OTP-19425, OTP-19426, OTP-19427, + OTP-19430, OTP-19431, OTP-19432, OTP-19441, + OTP-19450, OTP-19451, OTP-19452, OTP-19453, + OTP-19454, OTP-19456, OTP-19460, OTP-19463, + OTP-19465, OTP-19472, OTP-19473, OTP-19474, + OTP-19476, OTP-19477, OTP-19478, OTP-19479, + OTP-19480, OTP-19481, OTP-19483, OTP-19484, + OTP-19485, OTP-19487, OTP-19488, OTP-19492, + OTP-19500, OTP-19502, OTP-19503, OTP-19505, + OTP-19507, OTP-19508, OTP-19509, OTP-19510, + OTP-19512, OTP-19513, OTP-19514, OTP-19515, + OTP-19516, OTP-19517, OTP-19518, OTP-19519, + OTP-19520, OTP-19521, OTP-19522, OTP-19523, + OTP-19524, OTP-19526, OTP-19528, OTP-19531, + OTP-19532, OTP-19534, OTP-19535, OTP-19536, + OTP-19537, OTP-19538, OTP-19539, OTP-19540, + OTP-19541, OTP-19544, OTP-19551, OTP-19553, + OTP-19554, OTP-19555, OTP-19556, OTP-19566, + OTP-19570, OTP-19572, OTP-19573, OTP-19574, + OTP-19575, OTP-19576, OTP-19578, OTP-19580, + OTP-19584, OTP-19586, OTP-19588, OTP-19589, + OTP-19590, OTP-19591, OTP-19593, OTP-19594, + OTP-19596, OTP-19597, OTP-19598, OTP-19601, + OTP-19603, OTP-19604, OTP-19607, OTP-19609, + OTP-19612, OTP-19613, OTP-19614, OTP-19615, + OTP-19616, OTP-19617, OTP-19618, OTP-19620, + OTP-19621 +Seq num: #9388, GH-7819, GH-8037, GH-8099, GH-8113, + GH-8223, GH-8483, GH-8558, GH-8822, GH-8842, + GH-8967, GH-8985, GH-9092, GH-9113, GH-9173, + GH-9255, GH-9279, GH-9366, GH-9413, GH-9436, + GH-9438, GH-9487, GH-9500, GH-9536, GH-9565, + GH-9668, GH-9754, OTP-16608, OTP-19482, + OTP-19545, PR-7830, PR-7970, PR-8078, + PR-8100, PR-8207, PR-8261, PR-8429, PR-8494, + PR-8540, PR-8547, PR-8556, PR-8573, PR-8589, + PR-8590, PR-8592, PR-8600, PR-8625, PR-8642, + PR-8651, PR-8660, PR-8670, PR-8695, PR-8697, + PR-8699, PR-8704, PR-8734, PR-8772, PR-8792, + PR-8793, PR-8798, PR-8805, PR-8812, PR-8820, + PR-8862, PR-8885, PR-8887, PR-8894, PR-8913, + PR-8926, PR-8932, PR-8937, PR-8938, PR-8943, + PR-8945, PR-8960, PR-8962, PR-8966, PR-8968, + PR-8973, PR-8975, PR-8976, PR-8988, PR-9005, + PR-9006, PR-9013, PR-9019, PR-9020, PR-9042, + PR-9045, PR-9079, PR-9082, PR-9083, PR-9094, + PR-9095, PR-9106, PR-9116, PR-9119, PR-9121, + PR-9122, PR-9124, PR-9129, PR-9141, PR-9149, + PR-9154, PR-9171, PR-9186, PR-9192, PR-9207, + PR-9214, PR-9219, PR-9229, PR-9231, PR-9232, + PR-9246, PR-9251, PR-9253, PR-9269, PR-9271, + PR-9272, PR-9275, PR-9276, PR-9277, PR-9280, + PR-9287, PR-9289, PR-9298, PR-9299, PR-9305, + PR-9316, PR-9321, PR-9327, PR-9330, PR-9333, + PR-9334, PR-9342, PR-9344, PR-9363, PR-9376, + PR-9396, PR-9398, PR-9399, PR-9402, PR-9406, + PR-9408, PR-9409, PR-9410, PR-9417, PR-9433, + PR-9441, PR-9445, PR-9446, PR-9448, PR-9468, + PR-9472, PR-9478, PR-9484, PR-9488, PR-9495, + PR-9504, PR-9508, PR-9511, PR-9514, PR-9515, + PR-9516, PR-9517, PR-9518, PR-9519, PR-9537, + PR-9538, PR-9543, PR-9563, PR-9571, PR-9574, + PR-9579, PR-9582, PR-9586, PR-9587, PR-9590, + PR-9594, PR-9595, PR-9604, PR-9608, PR-9610, + PR-9615, PR-9621, PR-9625, PR-9630, PR-9639, + PR-9648, PR-9659, PR-9660, PR-9670, PR-9671, + PR-9677, PR-9678, PR-9680, PR-9705, PR-9711, + PR-9714, PR-9717, PR-9718, PR-9733, PR-9735, + PR-9755, PR-9758, PR-9759, PR-9772, PR-9774, + PR-9775, PR-9786 +System: OTP +Release: 28 +Application: asn1-5.4, common_test-1.28, compiler-9.0, + crypto-5.6, debugger-6.0, dialyzer-5.4, + diameter-2.5, edoc-1.4, eldap-1.2.15, + erl_interface-5.6, erts-16.0, et-1.7.2, + eunit-2.10, ftp-1.2.4, inets-9.3.3, + jinterface-1.15, kernel-10.3, megaco-4.8, + mnesia-4.24, observer-2.18, odbc-2.16, + os_mon-2.11, parsetools-2.7, public_key-1.18, + reltool-1.0.2, runtime_tools-2.2, sasl-4.3, + snmp-5.19, ssh-5.3, ssl-11.3, stdlib-7.0, + syntax_tools-4.0, tftp-1.2.3, tools-4.1.2, + wx-2.5, xmerl-2.1.3 +Predecessor: OTP + +Check out the git tag OTP-28.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Application(s): compiler, stdlib + Related Id(s): PR-8699, PR-9094 + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8926 + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Application(s): erts + Related Id(s): PR-9269, PR-9519, PR-9590 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Application(s): erts, stdlib + Related Id(s): GH-8037, PR-8962 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8625 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Application(s): stdlib + Related Id(s): GH-8099, PR-8100 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia, + parsetools, runtime_tools, snmp + Related Id(s): PR-9079 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** POTENTIAL INCOMPATIBILITY *** + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Application(s): otp, stdlib + Related Id(s): PR-9106 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Application(s): stdlib + Related Id(s): PR-9316 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Application(s): compiler + Related Id(s): PR-8695 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Application(s): stdlib + Related Id(s): PR-9468 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Application(s): otp + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + +- Added functions that produce utf-8 binaries instead of iolists. New functions + are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2, + io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3. + + Own Id: OTP-19556 + Application(s): stdlib + Related Id(s): PR-9772 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Application(s): compiler, erts, kernel + Related Id(s): PR-8670, PR-9334, PR-9604 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Application(s): asn1, public_key + Related Id(s): PR-9774 + + *** POTENTIAL INCOMPATIBILITY *** + +# POTENTIAL INCOMPATIBILITIES + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Application(s): stdlib + Related Id(s): PR-8772 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Application(s): compiler, erts, stdlib + Related Id(s): PR-8913 + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Application(s): asn1 + Related Id(s): PR-8798 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Application(s): compiler, erts, stdlib + Related Id(s): GH-8967, PR-8988 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Application(s): common_test + Related Id(s): PR-9045 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Application(s): ssh + Related Id(s): PR-9277 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Application(s): erts + Related Id(s): PR-8670 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Application(s): stdlib + Related Id(s): PR-9680 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Application(s): asn1, public_key + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + +- The socket option names for built-in socket options in the module `socket` has + been cleaned up. + + Now, for known socket options, it is only the canonical protocol names that + are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due + to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the + incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the + same protocol number as `ip`. + + So, to reduce confusion, all enumerated protocol names with the same number, + are not allowed for the known protocol options, only the canonical name. + + Own Id: OTP-19615 + Application(s): erts + Related Id(s): PR-9718 + +# OTP-28.0 + +## Improvements and New Features + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Fixes the sarif generation in the scan code script + + Own Id: OTP-19492 + Related Id(s): PR-9409 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + + *** HIGHLIGHT *** + +- Fixes wrong relationship order for SPDX packages and mistaken inclusion of + erts documentation in the erts test SPDX package. + + Own Id: OTP-19601 + Related Id(s): PR-9717 + +- sbom validates copyrights to be of a specific format, as defined in the + LICENSE-HEADERS.md, which will prevent mistakes in copyrights + + Own Id: OTP-19607 + Related Id(s): PR-9758 + +# asn1-5.4 + +## Fixed Bugs and Malfunctions + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Related Id(s): PR-8798 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of asn1-5.4 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.28 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- The overage reports in HTML can be rendered in dark mode if requested by the + user's browser. + + Own Id: OTP-19159 + Related Id(s): PR-7830 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Related Id(s): PR-9045 + + *** POTENTIAL INCOMPATIBILITY *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of common_test-1.28 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-9.0 + +## Fixed Bugs and Malfunctions + +- The compiler will now emit warnings when some map patterns cannot possibly + match because a previous clauses matches the same pattern. For example: + + mm_1(#{}) -> a; + mm_1(#{b := B}) -> {b,B}. + + mm_2(#{a := A}) -> {a,A}; + mm_2(#{a := A, b := B}) -> {b,A,B}. + + The second clause of these function can never match and the compiler will now + emit a warning for both of them. + + Note that the compiler is not guaranteed to emit warnings for every possible + map pattern that cannot match. + + Own Id: OTP-19141 + Related Id(s): GH-8558, PR-8600 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The final validation step in the compiler will now reject modules containing + functions with more than 255 arguments. No impact is expected as the emulator + has always refused to load these modules. + + Own Id: OTP-19376 + Related Id(s): GH-9113, PR-9121 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now + `compressed` and `deterministic`. + + Own Id: OTP-19096 + Related Id(s): PR-8494 + +- Provided that the map argument for a maps:put/3 call is known to the + compiler to be a map, the compiler will replace such calls with the + corresponding update using the map syntax. + + Own Id: OTP-19115 + Related Id(s): PR-8540 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as + guard BIFs in order to gain performance. + + The following BIFs that are optimized in this way: `binary_to_atom/1`, + `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and + `list_to_existing_atom/1`. + + Own Id: OTP-19339 + Related Id(s): PR-9042, PR-9122 + +- The compiler now converts known documentation attribute metadata entries from + unicode:chardata/0 to unicode:unicode_binary/0. + + Own Id: OTP-19394 + Related Id(s): PR-9192 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Related Id(s): PR-8695 + + *** HIGHLIGHT *** + +- BEAM files no longer include a `Meta` chunk if there are no features used. + That slightly decreases the size of BEAM files, and it also ensures that + `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules. + + Own Id: OTP-19524 + Related Id(s): PR-9517 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of compiler-9.0 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.6 + +## Fixed Bugs and Malfunctions + +- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded. + + Own Id: OTP-19500 + Related Id(s): PR-9119 + +- Added copyright and license to crypto_ec_curves.erl + + Own Id: OTP-19554 + +## Improvements and New Features + +- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1 + functions have been deprecated. + + Own Id: OTP-19155 + Related Id(s): PR-8592 + +- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is + loaded without application `crypto` being loaded. In this case FIPS will be + disabled even if the user had set application parameter `fips_mode`. + + Own Id: OTP-19156 + Related Id(s): PR-8590 + +- The functionality of crypto:crypto_one_time_aead/6 is now also available in + the new functions crypto:crypto_one_time_aead_init/4 and + crypto:crypto_one_time_aead/4, which makes it possible to reuse + initialization. + + Own Id: OTP-19426 + Related Id(s): PR-9289 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If + present, it contains the version of the FIPS provider which may be different + than the version of the rest of OpenSSL. + + Own Id: OTP-19487 + Related Id(s): GH-9366, PR-9410 + +- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and + `cmac_cipher_algorithm()`. + + Own Id: OTP-19510 + Related Id(s): PR-9448 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of crypto-5.6 +> +> erts-9.0, kernel-6.0, stdlib-3.9 + +# debugger-6.0 + +## Fixed Bugs and Malfunctions + +- Error handling has been improved when modules fail to load. + + Own Id: OTP-19484 + Related Id(s): GH-7819, PR-9399 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of debugger-6.0 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# dialyzer-5.4 + +## Fixed Bugs and Malfunctions + +- The `-Wno_unknown` option will now prevent a warning being printed to standard + output when the command line interface is used. + + Own Id: OTP-19262 + Related Id(s): GH-8822, PR-8885 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of dialyzer-5.4 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.5 + +## Fixed Bugs and Malfunctions + +- With this change diameter will not crash when decoding a DiameterURI without + port number. + + Own Id: OTP-19620 + Related Id(s): PR-9321 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- With this change diameter will not use slave terminology + + Own Id: OTP-19621 + Related Id(s): PR-9786 + +> #### Full runtime dependencies of diameter-2.5 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.4 + +## Fixed Bugs and Malfunctions + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of edoc-1.4 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.15 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eldap-1.2.15 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5. + + Own Id: OTP-19614 + Related Id(s): PR-9775 + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-16.0 + +## Fixed Bugs and Malfunctions + +- ETS tables with more than 2 billion keys are now supported. + + Own Id: OTP-19144 + Related Id(s): PR-8589 + +- The zlib library included in Erlang/OTP has been updated to version 1.3.1. + + Own Id: OTP-19259 + Related Id(s): PR-8862 + +- `to_erl` no longer clears the screen when attaching to a `run_erl` session. + + Own Id: OTP-19263 + Related Id(s): PR-8943 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed a bug where `erlc` would crash if its path contained spaces. + + Own Id: OTP-19295 + Related Id(s): PR-8937 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a + timezone without daylight saving (for example `UTC`) to assume that the + provided localtime does not have DST. This has always been the behaviour, but + glibc versions after 2.37 changed it so that the behavior in Erlang also + changed. + + Own Id: OTP-19453 + Related Id(s): PR-9207 + +- Support for the `TZ` environment variable has been added on Windows. Before + this change only the time zone configured in the OS was ever used. + + Own Id: OTP-19454 + Related Id(s): PR-9207 + +- Suppressed various warnings when building the emulator with recent versions of + GCC + + Own Id: OTP-19488 + Related Id(s): GH-9413, PR-9417 + +- Fixed a bug in re:run and re:compile where the pattern parameter would be read + incorrectly if it was a sub-binary. + + Own Id: OTP-19507 + Related Id(s): GH-9438, PR-9478 + +- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be + part of the directory path when building Erlang/OTP. Bug has been present + since R11B released 2006. + + Own Id: OTP-19518 + Related Id(s): GH-9487, PR-9488 + +- Fixed the index types of modules `atomics` and `counters` from `integer()` to + `pos_integer()`, which is more correct. + + Own Id: OTP-19532 + Related Id(s): PR-9538 + +- Fix `erl` flags `+Q`, `+P` and `+t` to not allow values greater + than 4294975487. Before this fix, the runtime would either truncate the value + or crash depending on which value was given. + + Own Id: OTP-19594 + Related Id(s): GH-9668, PR-9671 + +- The socket option names for built-in socket options in the module `socket` has + been cleaned up. + + Now, for known socket options, it is only the canonical protocol names that + are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due + to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the + incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the + same protocol number as `ip`. + + So, to reduce confusion, all enumerated protocol names with the same number, + are not allowed for the known protocol options, only the canonical name. + + Own Id: OTP-19615 + Related Id(s): PR-9718 + + *** POTENTIAL INCOMPATIBILITY *** + +- On windows, socket:sendv could incorrectly return {ok, integer()} on Windows. + + Own Id: OTP-19617 + Related Id(s): OTP-19482 + +## Improvements and New Features + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Related Id(s): PR-9269, PR-9519, PR-9590 + + *** HIGHLIGHT *** + +- The trace:system/3 function has been added. It has a similar interface as + erlang:system_monitor/2 but it also supports trace sessions. + + Own Id: OTP-19271 + Related Id(s): PR-8660 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Two BIFs have been added to the `erlang` module. + + erlang:processes_iterator/0 returns a process iterator that can be used to + iterate through the process table. + + erlang:process_next/1 takes in a process iterator and returns a 2-tuple, + consisting of a process identifier and a new process iterator. When the + process iterator runs out of processes in the process table, `none` will be + returned. + + Using these BIFs to scan the processes scales better than using + erlang:processes/0, at the cost of giving less consistency guarantees. + Process identifiers returned from consecutive calls of erlang:process_next/1 + may not be a consistent snapshot of all elements existing in the table during + any of the calls. A process identifier is only guaranteed to be returned from + a call to erlang:processes_next/1 if it was alive before the call to + erlang:processes_iterator/0 and was still alive when + erlang:processes_next/1 returned `none`. + + Own Id: OTP-19369 + Related Id(s): PR-9129 + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- When booting the runtime system on a 32-bit computer with a single core, the + boot code will try to minimize the peak memory use by disabling parallel + loading of BEAM files. + + Own Id: OTP-19450 + Related Id(s): PR-9342 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- `erlc` will now write compiler warnings and errors to standard error, instead + of standard output, in common with other language compilers. + + Own Id: OTP-19460 + Related Id(s): GH-9255, PR-9363 + +- Fixed the Windows build to always include `.pdb` files for all DLLs and + executables to help with debugging. + + Own Id: OTP-19465 + Related Id(s): PR-9229 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19472 + Related Id(s): #9388 + +- An optimization for appending 0 bits to a binary was removed in patch releases + for OTP versions 25, 26, and 27. This optimization has been reintroduced in + Erlang/OTP 28. + + Own Id: OTP-19473 + Related Id(s): PR-8697, PR-9396 + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on + systems with kernel polling enabled (that is most Unix systems), file + descriptors that are always re-enabled as soon as they trigger are now part of + a specialized pollset just as `driver_select`. This reduces the CPU usage in + such scenarios as the erts does not have to re-insert the FD everytime it it + triggered. As a result of this optimization `socket` based reading uses a + lot less CPU and achieves a higher throughput. + + Own Id: OTP-19479 + Related Id(s): PR-9275 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The Windows installer no longer creates the `erl.ini` file, making + installations redistributable. + + Own Id: OTP-19481 + Related Id(s): PR-9330 + +- Added erlang:hibernate/0, which hibernates a process without discarding the + stack. + + Own Id: OTP-19503 + Related Id(s): PR-9406 + +- The asmjit library (used by BeamJIT) has been updated to version + 029075b84bf0161a761beb63e6eda519a29020db. + + Own Id: OTP-19509 + Related Id(s): PR-9495 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Related Id(s): PR-8670 + + *** POTENTIAL INCOMPATIBILITY *** + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- The `+R` emulator options has been removed. It has had any effect since + Erlang/OTP R9. + + Own Id: OTP-19551 + Related Id(s): PR-9608 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +- Add `+JPperfdirectory <dir>` for specifying which directory Erlang should + place perf symbol information files. + + Own Id: OTP-19589 + Related Id(s): GH-9500, PR-9639 + +- Allow multiple static nifs to be part of the same archive. See the NIF + documentation for details. + + Own Id: OTP-19590 + Related Id(s): PR-9625 + +- Various improvements reducing lock contention on run queues due to task + stealing. + + Own Id: OTP-19591 + Related Id(s): PR-9594 + +- The new implementation has the same behavior as the previous one. The newer + compilers already have native support for FP16, so this implementation is only + relevant for older compilers. For this reason, the new implementation has not + been tested for speed. + + Own Id: OTP-19603 + Related Id(s): PR-9735 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +- Update internal `ryu` implementation to use latest version. The new version is + a little bit faster in some scenarios. `ryu` is used by `float_to_list/1` and + similar functions to convert floats to strings. + + Own Id: OTP-19613 + Related Id(s): PR-9733 + +- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5. + + Own Id: OTP-19614 + Related Id(s): PR-9775 + +- Small optimization in binary_to_term by not allocating an unnecessary large + native stack frame. + + Own Id: OTP-19618 + Related Id(s): PR-9759 + +> #### Full runtime dependencies of erts-16.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of et-1.7.2 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.10 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.4 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ftp-1.2.4 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.3.3 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Enhanced http client documentation. + + Own Id: OTP-19520 + Related Id(s): PR-9516 + +- Enhance made to mod_esi documentation + + Own Id: OTP-19521 + Related Id(s): PR-9472 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of inets-9.3.3 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The `.class` files of jinterface are now part of the prebuilt archive using + Java 8. + + Own Id: OTP-19308 + Related Id(s): PR-8960 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +# kernel-10.3 + +## Fixed Bugs and Malfunctions + +- Fixed an issue where output to the shell would not print the prompt on a new + line. + + Own Id: OTP-19228 + Related Id(s): PR-8820 + +- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io + requests in latin1 encoding will not be translated to unicode and back to + latin1. + + Own Id: OTP-19296 + Related Id(s): PR-9013 + +- Fixed a bug where a composing unicode character would bind to a character not + available to the user and deleting that character would cause a crash. + + Own Id: OTP-19297 + Related Id(s): PR-9005 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The Erlang shell no longer crashes when a shell prompt ends with an escape + sequence. + + Own Id: OTP-19414 + Related Id(s): PR-9272 + +- code:get_doc/1 now works for cover-compiled modules. + + Own Id: OTP-19513 + Related Id(s): PR-9433 + +- An infinite loop in CNAME loop detection that can cause Out Of Memory has been + fixed. This affected CNAME lookup with the internal DNS resolver. + + Own Id: OTP-19544 + Related Id(s): PR-9587, OTP-19545 + +- The internal resolver framework has been fixed to wait with the first resolver + lookup until the ERL_INETRC environment variable has been applied. + + Previously, on some platform(s) (Linux) a first lookup when figuring out the + domain name was always placed on the `native` resolver even if ERL_INETRC was + used to disable it. + + Own Id: OTP-19555 + Related Id(s): PR-9543 + +- Fix `logger:add_handler(default, ...)` to correctly replay events generated + during startup when the default logger is set to `undefined` in logger's + configuration parameters. + + Own Id: OTP-19588 + Related Id(s): GH-9436, PR-9595 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- application:load/1 slows down as the number of directories in the code path + increases because the call to code:where_is_file/1 for the '.app' file must + scan each directory for the app. + + `code_server` maintains a cache of the contents of directories in the path. + Re-using that cache when searching for '.app' files in application:load/1 + may improve its runtime, especially when loading multiple applications. + + Own Id: OTP-19194 + Related Id(s): PR-8078 + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly + allowed to connect to the node by calling net_kernel:allow/1 + + Own Id: OTP-19287 + Related Id(s): PR-8207 + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5 + functions now also accept an option map as last argument containing the + `timeout` and `always_spawn` options. The `always_spawn` option can be used in + order to ensure that the call operation will use a newly spawned process when + executing the remote call. + + Own Id: OTP-19343 + Related Id(s): PR-8642 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- `t:io:standard_error/0` has been updated to write via a NIF API instead of a + port. This allows it to access the dirty-scheduler pool and make sure that + writes have been written to the OSs `stderr` when io:format/3 and equivalent + return. + + Own Id: OTP-19401 + Related Id(s): PR-9116 + +- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise + an exception if the command fails to execute. + + Own Id: OTP-19404 + Related Id(s): PR-9082 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- Add a configure chapter to the socket usage guide + + Own Id: OTP-19522 + Related Id(s): PR-9508 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of kernel-10.3 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# megaco-4.8 + +## Fixed Bugs and Malfunctions + +- Add missing spec and doc for exported functions. + + Own Id: OTP-19523 + +## Improvements and New Features + +- Nano seconds are now used for (example) meas result presentation. + + Nanoseconds are now used, for example, in `meas` result presentations. + + Own Id: OTP-19403 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19570 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Tweaked some of the meas examples in order to make them benchmark compatible. + + Own Id: OTP-19598 + +> #### Full runtime dependencies of megaco-4.8 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.18 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- With this change etop from observer application will scroll as top from shell + + Own Id: OTP-19528 + Related Id(s): PR-9659 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of observer-2.18 +> +> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3 + +# odbc-2.16 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Updated odbc configure to enable easier use of iodbc driver. + + Own Id: OTP-19456 + Related Id(s): PR-9083 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of odbc-2.16 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.11 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- `m:disksup` will now recognize HAMMER2 volumes. + + Own Id: OTP-19207 + Related Id(s): PR-8704 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of os_mon-2.11 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.7 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of parsetools-2.7 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.18 + +## Fixed Bugs and Malfunctions + +- Enable public_key to decode legacy certs using md2 hash. + + Own Id: OTP-19616 + Related Id(s): GH-9754, PR-9755 + +## Improvements and New Features + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Ignore instead of crashing unhandled entries when loading CA-certificates. + + Own Id: OTP-19573 + Related Id(s): GH-9565, PR-9677 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of public_key-1.18 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# reltool-1.0.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of reltool-1.0.2 +> +> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.2 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- With this change observer will use cheaper iterators to avoid locking when not + necessary. + + Own Id: OTP-19584 + Related Id(s): PR-9711 + +> #### Full runtime dependencies of runtime_tools-2.2 +> +> erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Fixed Bugs and Malfunctions + +- Fixed the documentation for the ExtraFiles option to systools:make_tar/2. + + Own Id: OTP-19279 + Related Id(s): GH-8842, PR-8894 + +## Improvements and New Features + +- `.appup` files are now included in releases in order to make it possible to + create upgrade packages from an installed release. + + Own Id: OTP-19398 + Related Id(s): PR-8973 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.19 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19572 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of snmp-5.19 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.3 + +## Fixed Bugs and Malfunctions + +- The implementation of the ssh server-side supervision tree has been improved. + + Own Id: OTP-19324 + Related Id(s): GH-8223, PR-8968 + +- SSH daemon accepts fun as tcpip_tunnel_in option. This provides more control + over TCP connection tunnel handle by server. + + Own Id: OTP-19566 + Related Id(s): PR-9571 + +## Improvements and New Features + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Related Id(s): PR-9277 + + *** POTENTIAL INCOMPATIBILITY *** + +- Daemon can be configured (bannerfun option) to send banner message at the + beginning of user authentication. + + Own Id: OTP-19535 + Related Id(s): PR-9149 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- For interoperability reasons, SSH ignore message with no length specified is + treated as message with zero length specified - it will not cause decode + error. + + Own Id: OTP-19586 + Related Id(s): PR-9214 + +- Documentation improvements. + + Own Id: OTP-19596 + Related Id(s): PR-9298 + +> #### Full runtime dependencies of ssh-5.3 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3 + +## Improvements and New Features + +- Refactoring, minor optimizations and improved log printouts. + + Own Id: OTP-19367 + Related Id(s): PR-9019 + +- supervisor:which_child/2 is now used to make start-up code for + TLS-connections simpler and more straight forward, and to increase stability + and maintainability of the ssl application. + + Own Id: OTP-19406 + Related Id(s): PR-9231 + +- The data handling for tls-v1.3 has been optimized. + + Own Id: OTP-19430 + Related Id(s): PR-9305 + +- Added experimental socket support. + + Own Id: OTP-19463 + Related Id(s): PR-9398 + +- Improve code health by removing dead code. + + Own Id: OTP-19531 + Related Id(s): PR-9563 + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ssl-11.3 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0 + +## Fixed Bugs and Malfunctions + +- Shell help now orders the commands in alphabetical order. + + Own Id: OTP-19161 + Related Id(s): PR-8573 + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Related Id(s): PR-8772 + + *** POTENTIAL INCOMPATIBILITY *** + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- argparse:help/1 now accepts unicode:chardata/0. + + Own Id: OTP-19303 + Related Id(s): PR-8932 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did + not start the traversal from root nodes. This fix makes both traversals only + start or restart from a root node in one of the components, or an arbitrary + node if no root node can be visited. + + Own Id: OTP-19393 + Related Id(s): PR-9171 + +- Auto-completion in the shell is now significantly faster for function + parameters that uses complex custom types. + + Own Id: OTP-19413 + Related Id(s): PR-9271 + +- Stringfying a non-latin1 atom will now produce a readable string instead of + encoding each character using `\x{...}` escape sequences. Example: + + -define(S(T), ??T). + + atom() -> + ?S('атом'). + + The `atom/0` function now returns `"'атом'"` instead of + `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`. + + Own Id: OTP-19421 + Related Id(s): GH-9173, PR-9276 + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +- `m:dets` could print error messages to standard output when repairing DETS + files. This has been changed to send the messages to `logger`. + + `ets:fun2ms` would print an error message to standard output as well as + returning an error tuple. The printing of the message has been removed. + + Own Id: OTP-19427 + Related Id(s): PR-9232, PR-9446 + +- The functions for converting to and from the RFC1339 date and time format + would not properly handle fractional seconds for negative times. + + Own Id: OTP-19441 + Related Id(s): GH-9279, PR-9280 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Corrected the spec of ets:update_element/4. + + Own Id: OTP-19514 + Related Id(s): PR-9504 + +- Corrected the spec for ets:info/1. + + Own Id: OTP-19515 + Related Id(s): PR-9514 + +- Details in the hibernation implementation and time-out handling has been + improved for `gen_statem`. In particular to avoid selective receive when + cancelling a time-out. + + Own Id: OTP-19540 + Related Id(s): PR-9579 + +- Fix `zip` extraction to wrap invalid DOS timestamps to their correct value + instead of returning the actual value. Before this fix the timestamp returned + could have a second greater than 59. The bug has been present since Erlang/OTP + 27.1. + + Own Id: OTP-19593 + Related Id(s): GH-9536, PR-9537 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Singleton type variables in an union type do not make sense from Dialyzer's + point of view. The following example is ill-typed: + + -spec run_test(Opts) -> term() + when Opts :: {join_specs, Bool} | {test, Bool}. + + This used to be reported as a warning. In OTP-28, this is an error + + Own Id: OTP-19125 + Related Id(s): PR-8556 + +- By default, sets created by the `sets` module will now be represented as + maps. + + Own Id: OTP-19127 + Related Id(s): PR-8429 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Before restarting a child, a supervisor must check if the restart limit is + reached. This adds a penalty to the overall restart time, which should be kept + low. The algorithm has been optimized from 2\*O(n) to O(n) behavior. + + Own Id: OTP-19204 + Related Id(s): PR-8261 + +- Added the possibility to configure shell docs column width through the stdlib + parameter `shell_docs_columns`. + + Own Id: OTP-19224 + Related Id(s): PR-8651 + +- The io:setopts/2 function now accepts the `line_history` option for more + explicit handling of when to save shell history. + + Own Id: OTP-19230 + Related Id(s): PR-8792 + +- The shell now prints a help message explaining how to interrupt a running + command when stuck executing a command for longer than 5 seconds. + + Own Id: OTP-19231 + Related Id(s): PR-8793 + +- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and + produced as output of calendar:system_time_to_rfc3339/2. + + Own Id: OTP-19250 + Related Id(s): PR-8812 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- Added io:get_password/0 that can read passwords from stdin when in "raw" + `-noshell` mode. + + Own Id: OTP-19315 + Related Id(s): PR-8962, PR-9006 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Related Id(s): GH-8099, PR-8100 + + *** HIGHLIGHT *** + +- The supervisor:which_child/2 function has been added to facilitate getting + the pid of a sibling process; that is a process under same supervisor as the + process that calls to call the new function. + + Own Id: OTP-19345 + Related Id(s): PR-8976 + +- The function erl_anno:set_end_location/2 for setting the end location of a + token has been added. + + Own Id: OTP-19354 + Related Id(s): PR-8966 + +- Added a warning for calling non-exported functions with the remote function + call syntax from the same module, and likewise for the remote fun syntax. + + Own Id: OTP-19371 + Related Id(s): GH-9092, PR-9095 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- The callback function `handle_continue/2` in `gen_server` callback modules is + now cached like the others, thanks to code cleanup and optimization of the + internal behaviour loop. + + This should only improve performance, not affect functionality. + + Own Id: OTP-19474 + Related Id(s): PR-9333 + +- Encoding done by the `json` module has been optimized. + + Own Id: OTP-19476 + Related Id(s): PR-9251 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Related Id(s): PR-9316 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- Functions of a module can now be grouped in the shell code completion by using + the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public + API">>). fetch()->... + + + Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature. + + Own Id: OTP-19483 + Related Id(s): [PR-9408] + + +- Added calendar:universal_time_to_system_time/1,2 and + calendar:local_time_to_system_time/1,2 + + Own Id: OTP-19505 + Related Id(s): PR-9445 + +- Improve error messages for json:decode/1. + + Own Id: OTP-19508 + Related Id(s): PR-9484 + +- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when + the heir is a supervisor process that cannot handle custom messages. + + Own Id: OTP-19512 + Related Id(s): PR-7970 + +- Added support for the Unicode 16 standard. + + Own Id: OTP-19516 + Related Id(s): PR-9141, PR-9518 + +- When documenting a function or type that needs to deal with durations, usually + we can document it as "time in milliseconds". Since the `timer` family of + functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it + is useful to be able to use this type in type specifications. + + Own Id: OTP-19526 + Related Id(s): PR-9515 + +- A new event time-out has been implemented in `gen_server`, that behaves more + like the one in `gen_statem`. + + See the type gen_server:action/0 for `{timeout|hibernate,...}`, and also + related functions. + + Own Id: OTP-19537 + Related Id(s): PR-9287, PR-9615, PR-9621 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Related Id(s): PR-9468 + + *** HIGHLIGHT *** + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- Added functions that produce utf-8 binaries instead of iolists. New functions + are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2, + io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3. + + Own Id: OTP-19556 + Related Id(s): PR-9772 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- A list of PCRE2 incompatibilities is documented in a user's guide for stdlib. + + Own Id: OTP-19578 + Related Id(s): PR-9705 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Related Id(s): PR-9680 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of stdlib-7.0 +> +> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# syntax_tools-4.0 + +## Fixed Bugs and Malfunctions + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of syntax_tools-4.0 +> +> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0 + +# tftp-1.2.3 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tftp-1.2.3 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.1.2 + +## Fixed Bugs and Malfunctions + +- A crash has been eliminated in tprof:collect/0 when unloading a module while + collecting traces. + + Own Id: OTP-19135 + Related Id(s): GH-8483, PR-8547 + +- Improved the `indent-region` Emacs command, which could indent badly when + inside multiline string. + + Own Id: OTP-19396 + Related Id(s): PR-9186 + +- eprof:start_profiling/3 can now return information about which process it + failed to trace. + + Own Id: OTP-19419 + Related Id(s): PR-9219 + +- Fixed a race condition when processes cause the Cover server to be started at + the same time. + + Own Id: OTP-19517 + Related Id(s): PR-9124 + +- Fix bug in `tprof` where the session name could not be set. + + Own Id: OTP-19580 + Related Id(s): PR-9648 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tools-4.1.2 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.1.3 + +## Fixed Bugs and Malfunctions + +- With this change all public functions in xmerl have specs. + + Own Id: OTP-19534 + Related Id(s): PR-9327 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of xmerl-2.1.3 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea +Leopardi, Ariel Otilibili, Benedikt Reinartz, Benjamin Philip, Brujo Benavides, +Chris Freeze, Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, +Dániel Szoboszlay, dependabotbot, Dmitri Vereshchagin, Dominic Letz, Douglas +Vought, Egor Ignatov, Eksperimental, Frank Hunleth, Freddie Lamble, Fredrik +Frantzen, Frej Drejhammar, Gary Rennie, Hichem Fantar, Ilya Klyuchnikov, iri, +Isabell H, Jan Uhlig, Jean-Louis Huynen, Jean-Sébastien Pédron, João Henrique +Ferreira de Freitas, Johannes Christ, Jonas Bernoulli, Jonatan Kłosko, José +Valim, Juan Barrios, Julian Doherty, Keyhan Jannat Khah ☕, Kirill A. Korinsky, +lucioleKi, Lukasz Samson, Maria Scott, Mario Idival, Mario Uher, Marko Mindek, +Martin Davidsson, Matwey V. Kornilov, Maxim Fedorov, Michael Davis, Michael +Neumann, Nelson Vides, Nicholas Moen, Onno Vos, Paul Guyot, preciz, Richard +Carlsson, Roberto Aloi, Robin Morisset, Roeland van Batenburg, ruslandoga, Ryan +Kirkman, S0AndS0, sabiwara, Sam Weaver, Sergei Shuvatov, siiky, Simon Cornish, +Stavros Aronis, Stefan Grundmann, Steffen Deusch, Tobias Pfeiffer, Tomer, Vadim +Yanitskiy, Vance Shipley, William Fank Thomé, williamthome, William Yang, Wojtek +Mach, yagogarea, Yoshiyuki Kurauchi + diff --git a/release-notes/OTP-28.0.1.README.txt b/release-notes/OTP-28.0.1.README.txt new file mode 100644 index 0000000..7bd2ef0 --- /dev/null +++ b/release-notes/OTP-28.0.1.README.txt @@ -0,0 +1,231 @@ +Patch Package: OTP 28.0.1 +Git Tag: OTP-28.0.1 +Date: 2025-06-16 +Trouble Report Id: OTP-19634, OTP-19635, OTP-19637, OTP-19638, + OTP-19641, OTP-19644, OTP-19645, OTP-19650, + OTP-19653, OTP-19658, OTP-19662, OTP-19665, + OTP-19675, OTP-19676 +Seq num: CVE-2025-4748, ERIERL-1225, ERIERL-1235, + GH-6463, GH-9102, GH-9841, GH-9858, GH-9863, + GH-9872, PR-9103, PR-9691, PR-9838, PR-9846, + PR-9849, PR-9859, PR-9861, PR-9870, PR-9878, + PR-9880, PR-9892, PR-9905, PR-9926, PR-9941 +System: OTP +Release: 28 +Application: asn1-5.4.1, debugger-6.0.1, eldap-1.2.16, + erts-16.0.1, kernel-10.3.1, + public_key-1.18.1, ssh-5.3.1, ssl-11.3.1, + stdlib-7.0.1, xmerl-2.1.5 +Predecessor: OTP 28.0 + +Check out the git tag OTP-28.0.1, and build a full OTP system including +documentation. Apply one or more applications from this build as patches to your +installation using the 'otp_patch_apply' tool. For information on install +requirements, see descriptions for each application version below. + +# asn1-5.4.1 + +The asn1-5.4.1 application can be applied independently of other applications on +a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- The ASN.1 compiler could generate code that would cause Dialyzer with the + `unmatched_returns` option to emit warnings. + + Own Id: OTP-19638 + Related Id(s): GH-9841, PR-9846 + +> #### Full runtime dependencies of asn1-5.4.1 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# debugger-6.0.1 + +The debugger-6.0.1 application can be applied independently of other +applications on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Restore deleted icon so that debugger does not crash on startup. + + Own Id: OTP-19641 + Related Id(s): GH-9858, PR-9861 + +> #### Full runtime dependencies of debugger-6.0.1 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# eldap-1.2.16 + +The eldap-1.2.16 application can be applied independently of other applications +on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- With this change eldap's 'not' function will have specs fixed. + + Own Id: OTP-19658 + Related Id(s): PR-9859 + +> #### Full runtime dependencies of eldap-1.2.16 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erts-16.0.1 + +The erts-16.0.1 application can be applied independently of other applications +on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Fix Erlang to not crash when io:standard_error/0 is a terminal but + io:standard_io/0 is not. This bug has existed since Erlang/OTP 28.0 and only + effects Windows. + + Own Id: OTP-19650 + Related Id(s): GH-9872, PR-9878 + +- In a debug build, the BIFs for the native debugger could cause a lock order + violation diagnostic from the lock checker. + + Own Id: OTP-19665 + Related Id(s): PR-9926 + +- When building ERTS make sure correct `pcre2.h` file is included even if CFLAGS + contains extra include paths. + + Own Id: OTP-19675 + Related Id(s): PR-9892 + +> #### Full runtime dependencies of erts-16.0.1 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# kernel-10.3.1 + +The kernel-10.3.1 application can be applied independently of other applications +on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Fix bug where calling io:setopts/1 in a shell without the `line_history` + option would always disable `line_history`. This bug was introduced in + Erlang/OTP 28.0. + + Own Id: OTP-19645 + Related Id(s): GH-9863, PR-9870 + +> #### Full runtime dependencies of kernel-10.3.1 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# public_key-1.18.1 + +The public_key-1.18.1 application can be applied independently of other +applications on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Add back some ASN-1 macros and definitions that should be included in API. + + Own Id: OTP-19644 + Related Id(s): PR-9880 + +> #### Full runtime dependencies of public_key-1.18.1 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# ssh-5.3.1 + +The ssh-5.3.1 application can be applied independently of other applications on +a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Various channel closing robustness improvements. Avoid crashes when channel + handling process closes channel and immediately exits. Avoid breaking the + protocol by sending duplicated channel-close messages. Cleanup channels which + timeout during closing procedure. + + Own Id: OTP-19634 + Related Id(s): GH-9102, PR-9103 + +- Improved interoperability with clients acting as Paramiko. + + Own Id: OTP-19637 + Related Id(s): GH-6463, PR-9838 + +> #### Full runtime dependencies of ssh-5.3.1 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3.1 + +The ssl-11.3.1 application can be applied independently of other applications on +a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- hs_keylog callback properly handle alert in initial states, where encryption + is not yet used. Also add keylog callback invocation for corner-case where + server alert is encrypted with application secrets as client is already in + connection state. + + Own Id: OTP-19635 + Related Id(s): ERIERL-1235, PR-9849 + +## Improvements and New Features + +- The documentation for SSL option `verify_fun` has been improved. + + Own Id: OTP-19676 + Related Id(s): PR-9691 + +> #### Full runtime dependencies of ssl-11.3.1 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0.1 + +The stdlib-7.0.1 application can be applied independently of other applications +on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- Properly strip the leading `/` and drive letter from filepaths when zipping + and unzipping archives. + + Thanks to Wander Nauta for finding and responsibly disclosing this + vulnerability to the Erlang/OTP project. + + Own Id: OTP-19653 + Related Id(s): PR-9941, CVE-2025-4748 + +> #### Full runtime dependencies of stdlib-7.0.1 +> +> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# xmerl-2.1.5 + +The xmerl-2.1.5 application can be applied independently of other applications +on a full OTP 28 installation. + +## Fixed Bugs and Malfunctions + +- The type specs of xmerl_scan:file/2 and xmerl_scan:string/2 has been + updated to return `dynamic/0`. Due to hook functions they can return any user + defined term. + + Own Id: OTP-19662 + Related Id(s): ERIERL-1225, PR-9905 + +> #### Full runtime dependencies of xmerl-2.1.5 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Dan Janowski, Ilya Averyanov, Mikael Pettersson, Yaroslav Maslennikov
\ No newline at end of file diff --git a/release-notes/OTP-28.0.README.txt b/release-notes/OTP-28.0.README.txt new file mode 100644 index 0000000..9370879 --- /dev/null +++ b/release-notes/OTP-28.0.README.txt @@ -0,0 +1,3730 @@ +Inital Release: OTP 28.0 +Git Tag: OTP-28.0 +Date: 2025-05-21 +Trouble Report Id: OTP-16607, OTP-19096, OTP-19115, OTP-19125, + OTP-19127, OTP-19135, OTP-19141, OTP-19144, + OTP-19155, OTP-19156, OTP-19159, OTP-19161, + OTP-19180, OTP-19184, OTP-19194, OTP-19198, + OTP-19204, OTP-19207, OTP-19224, OTP-19226, + OTP-19228, OTP-19230, OTP-19231, OTP-19233, + OTP-19250, OTP-19259, OTP-19262, OTP-19263, + OTP-19271, OTP-19278, OTP-19279, OTP-19285, + OTP-19287, OTP-19290, OTP-19295, OTP-19296, + OTP-19297, OTP-19303, OTP-19306, OTP-19308, + OTP-19313, OTP-19314, OTP-19315, OTP-19317, + OTP-19323, OTP-19324, OTP-19334, OTP-19337, + OTP-19339, OTP-19343, OTP-19345, OTP-19354, + OTP-19355, OTP-19364, OTP-19367, OTP-19369, + OTP-19371, OTP-19376, OTP-19386, OTP-19393, + OTP-19394, OTP-19396, OTP-19398, OTP-19401, + OTP-19403, OTP-19404, OTP-19406, OTP-19413, + OTP-19414, OTP-19419, OTP-19420, OTP-19421, + OTP-19422, OTP-19425, OTP-19426, OTP-19427, + OTP-19430, OTP-19431, OTP-19432, OTP-19441, + OTP-19450, OTP-19451, OTP-19452, OTP-19453, + OTP-19454, OTP-19456, OTP-19460, OTP-19463, + OTP-19465, OTP-19472, OTP-19473, OTP-19474, + OTP-19476, OTP-19477, OTP-19478, OTP-19479, + OTP-19480, OTP-19481, OTP-19483, OTP-19484, + OTP-19485, OTP-19487, OTP-19488, OTP-19492, + OTP-19500, OTP-19502, OTP-19503, OTP-19505, + OTP-19507, OTP-19508, OTP-19509, OTP-19510, + OTP-19511, OTP-19512, OTP-19513, OTP-19514, + OTP-19515, OTP-19516, OTP-19517, OTP-19518, + OTP-19519, OTP-19520, OTP-19521, OTP-19522, + OTP-19523, OTP-19524, OTP-19526, OTP-19528, + OTP-19531, OTP-19532, OTP-19533, OTP-19534, + OTP-19535, OTP-19536, OTP-19537, OTP-19538, + OTP-19539, OTP-19540, OTP-19541, OTP-19544, + OTP-19551, OTP-19553, OTP-19554, OTP-19555, + OTP-19556, OTP-19566, OTP-19570, OTP-19572, + OTP-19573, OTP-19574, OTP-19575, OTP-19576, + OTP-19578, OTP-19580, OTP-19583, OTP-19584, + OTP-19586, OTP-19588, OTP-19589, OTP-19590, + OTP-19591, OTP-19593, OTP-19594, OTP-19596, + OTP-19597, OTP-19598, OTP-19601, OTP-19603, + OTP-19604, OTP-19607, OTP-19609, OTP-19612, + OTP-19613, OTP-19614, OTP-19615, OTP-19616, + OTP-19617, OTP-19618, OTP-19620, OTP-19621, + OTP-19624, OTP-19627, OTP-19628, OTP-19629, + OTP-19630 +Seq num: GH-7819, GH-8037, GH-8099, GH-8113, GH-8223, + GH-8483, GH-8558, GH-8822, GH-8842, GH-8967, + GH-8985, GH-9092, GH-9113, GH-9173, GH-9255, + GH-9279, GH-9366, GH-9413, GH-9436, GH-9438, + GH-9470, GH-9487, GH-9500, GH-9536, GH-9557, + GH-9565, GH-9668, GH-9722, GH-9754, + OTP-16608, OTP-19482, OTP-19545, OTP-19576, + PR-7830, PR-7970, PR-8078, PR-8100, PR-8207, + PR-8261, PR-8429, PR-8494, PR-8540, PR-8547, + PR-8556, PR-8573, PR-8589, PR-8590, PR-8592, + PR-8600, PR-8625, PR-8642, PR-8651, PR-8660, + PR-8670, PR-8695, PR-8697, PR-8699, PR-8704, + PR-8734, PR-8772, PR-8792, PR-8793, PR-8798, + PR-8805, PR-8812, PR-8820, PR-8862, PR-8885, + PR-8887, PR-8894, PR-8913, PR-8926, PR-8932, + PR-8937, PR-8938, PR-8943, PR-8945, PR-8960, + PR-8962, PR-8966, PR-8968, PR-8973, PR-8975, + PR-8976, PR-8988, PR-9005, PR-9006, PR-9013, + PR-9019, PR-9020, PR-9042, PR-9045, PR-9079, + PR-9082, PR-9083, PR-9094, PR-9095, PR-9101, + PR-9106, PR-9116, PR-9119, PR-9121, PR-9122, + PR-9124, PR-9129, PR-9141, PR-9149, PR-9154, + PR-9171, PR-9186, PR-9192, PR-9207, PR-9214, + PR-9219, PR-9229, PR-9231, PR-9232, PR-9246, + PR-9251, PR-9253, PR-9269, PR-9271, PR-9272, + PR-9275, PR-9276, PR-9277, PR-9280, PR-9287, + PR-9289, PR-9298, PR-9299, PR-9305, PR-9316, + PR-9321, PR-9327, PR-9330, PR-9333, PR-9334, + PR-9342, PR-9344, PR-9363, PR-9376, PR-9388, + PR-9396, PR-9398, PR-9399, PR-9402, PR-9406, + PR-9408, PR-9409, PR-9410, PR-9417, PR-9433, + PR-9441, PR-9445, PR-9446, PR-9448, PR-9468, + PR-9472, PR-9478, PR-9484, PR-9488, PR-9495, + PR-9504, PR-9508, PR-9511, PR-9514, PR-9515, + PR-9516, PR-9517, PR-9518, PR-9519, PR-9537, + PR-9538, PR-9543, PR-9563, PR-9571, PR-9574, + PR-9579, PR-9582, PR-9586, PR-9587, PR-9590, + PR-9594, PR-9595, PR-9604, PR-9608, PR-9610, + PR-9615, PR-9621, PR-9625, PR-9630, PR-9639, + PR-9648, PR-9654, PR-9659, PR-9660, PR-9670, + PR-9671, PR-9677, PR-9678, PR-9680, PR-9705, + PR-9711, PR-9714, PR-9717, PR-9718, PR-9733, + PR-9735, PR-9755, PR-9758, PR-9759, PR-9772, + PR-9774, PR-9775, PR-9786, PR-9787, PR-9791, + PR-9794, PR-9809, PR-9819 +System: OTP +Release: 28 +Application: asn1-5.4, common_test-1.28, compiler-9.0, + crypto-5.6, debugger-6.0, dialyzer-5.4, + diameter-2.5, edoc-1.4, eldap-1.2.15, + erl_interface-5.6, erts-16.0, et-1.7.2, + eunit-2.10, ftp-1.2.4, inets-9.4, + jinterface-1.15, kernel-10.3, megaco-4.8, + mnesia-4.24, observer-2.18, odbc-2.16, + os_mon-2.11, parsetools-2.7, public_key-1.18, + reltool-1.0.2, runtime_tools-2.2, sasl-4.3, + snmp-5.19, ssh-5.3, ssl-11.3, stdlib-7.0, + syntax_tools-4.0, tftp-1.2.3, tools-4.1.2, + wx-2.5, xmerl-2.1.4 +Predecessor: OTP + +Check out the git tag OTP-28.0, and build a full OTP system including +documentation. + +# HIGHLIGHTS + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Application(s): compiler, stdlib + Related Id(s): PR-8699, PR-9094 + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8926 + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Application(s): erts + Related Id(s): PR-9269, PR-9519, PR-9590 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Application(s): erts, stdlib + Related Id(s): GH-8037, PR-8962 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Application(s): compiler, debugger, stdlib, syntax_tools + Related Id(s): PR-8625 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Application(s): stdlib + Related Id(s): GH-8099, PR-8100 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Application(s): dialyzer, diameter, edoc, erts, eunit, kernel, mnesia, + parsetools, runtime_tools, snmp + Related Id(s): PR-9079 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** POTENTIAL INCOMPATIBILITY *** + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Application(s): otp, stdlib + Related Id(s): PR-9106 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Application(s): stdlib + Related Id(s): PR-9316 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Application(s): compiler + Related Id(s): PR-8695 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Application(s): stdlib + Related Id(s): PR-9468 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Application(s): otp + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + +- Added functions that produce utf-8 binaries instead of iolists. New functions + are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2, + io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3. + + Own Id: OTP-19556 + Application(s): stdlib + Related Id(s): PR-9772 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Application(s): compiler, erts, kernel + Related Id(s): PR-8670, PR-9334, PR-9604 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Application(s): asn1, public_key + Related Id(s): PR-9774 + + *** POTENTIAL INCOMPATIBILITY *** + +- Removed the default values for SCTP send (sndbuf) and receive (recbuf) + buffers. + + Own Id: OTP-19627 + Application(s): kernel + Related Id(s): GH-9722, OTP-19576 + +# POTENTIAL INCOMPATIBILITIES + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Application(s): stdlib + Related Id(s): PR-8772 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Application(s): compiler, erts, stdlib + Related Id(s): PR-8913 + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Application(s): asn1 + Related Id(s): PR-8798 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Application(s): compiler, erts, stdlib + Related Id(s): GH-8967, PR-8988 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Application(s): common_test + Related Id(s): PR-9045 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Application(s): ssh + Related Id(s): PR-9277 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Application(s): erts, stdlib + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Application(s): erts + Related Id(s): PR-8670 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Application(s): stdlib + Related Id(s): PR-9680 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Application(s): asn1, public_key + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + +- The socket option names for built-in socket options in the module `socket` has + been cleaned up. + + Now, for known socket options, it is only the canonical protocol names that + are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due + to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the + incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the + same protocol number as `ip`. + + So, to reduce confusion, all enumerated protocol names with the same number, + are not allowed for the known protocol options, only the canonical name. + + Own Id: OTP-19615 + Application(s): erts + Related Id(s): PR-9718 + +# OTP-28.0 + +## Improvements and New Features + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- Fixes the sarif generation in the scan code script + + Own Id: OTP-19492 + Related Id(s): PR-9409 + +- SPDX 2.2 Source Software-Bill-Of-Materials for Erlang/OTP compliant with NTIA + minimum requirements. + + The SBOM contains a root package. Inside the root package there are multiple + SPDX packages. Each SPDX package corresponds to an Erlang/OTP application and + the Erlang runtime system (erts). Inside each package, there may be multiple + packages, such as vendor dependency packages inside the erts SPDX package. + + Own Id: OTP-19553 + Related Id(s): PR-9586, PR-9630, PR-9660, PR-9714 + + *** HIGHLIGHT *** + +- Fixes wrong relationship order for SPDX packages and mistaken inclusion of + erts documentation in the erts test SPDX package. + + Own Id: OTP-19601 + Related Id(s): PR-9717 + +- sbom validates copyrights to be of a specific format, as defined in the + LICENSE-HEADERS.md, which will prevent mistakes in copyrights + + Own Id: OTP-19607 + Related Id(s): PR-9758 + +- SBOM produces package url as per the Erlang Ecosystem Foundation guidelines + + Own Id: OTP-19629 + Related Id(s): PR-9791 + +# asn1-5.4 + +## Fixed Bugs and Malfunctions + +- The `undec_rest` option would be ignored in generated functions for exclusive + decode. The option is now respected, meaning that the return value from such + functions are now three-tuples instead of a two-tuples. + + Own Id: OTP-19290 + Related Id(s): PR-8798 + + *** POTENTIAL INCOMPATIBILITY *** + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of asn1-5.4 +> +> erts-14.0, kernel-9.0, stdlib-5.0 + +# common_test-1.28 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- The overage reports in HTML can be rendered in dark mode if requested by the + user's browser. + + Own Id: OTP-19159 + Related Id(s): PR-7830 + +- The `abort_if_missing_suites` option now defaults to `true`. If you prefer the + old behavior, set `abort_if_missing_suites` to `false` in your test runs. + + Own Id: OTP-19355 + Related Id(s): PR-9045 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of common_test-1.28 +> +> compiler-6.0, crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, +> kernel-8.4, observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, +> stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + +# compiler-9.0 + +## Fixed Bugs and Malfunctions + +- The compiler will now emit warnings when some map patterns cannot possibly + match because a previous clauses matches the same pattern. For example: + + mm_1(#{}) -> a; + mm_1(#{b := B}) -> {b,B}. + + mm_2(#{a := A}) -> {a,A}; + mm_2(#{a := A, b := B}) -> {b,A,B}. + + The second clause of these function can never match and the compiler will now + emit a warning for both of them. + + Note that the compiler is not guaranteed to emit warnings for every possible + map pattern that cannot match. + + Own Id: OTP-19141 + Related Id(s): GH-8558, PR-8600 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The final validation step in the compiler will now reject modules containing + functions with more than 255 arguments. No impact is expected as the emulator + has always refused to load these modules. + + Own Id: OTP-19376 + Related Id(s): GH-9113, PR-9121 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- The EEP-48 doc chunk embedded into `.beam` files by the compiler is now + `compressed` and `deterministic`. + + Own Id: OTP-19096 + Related Id(s): PR-8494 + +- Provided that the map argument for a maps:put/3 call is known to the + compiler to be a map, the compiler will replace such calls with the + corresponding update using the map syntax. + + Own Id: OTP-19115 + Related Id(s): PR-8540 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- Some BIFs with side-effects are optimized in `try`/`catch` in the same way as + guard BIFs in order to gain performance. + + The following BIFs that are optimized in this way: `binary_to_atom/1`, + `binary_to_atom/2`, `binary_to_existing_atom/1`, `list_to_atom/1`, and + `list_to_existing_atom/1`. + + Own Id: OTP-19339 + Related Id(s): PR-9042, PR-9122 + +- The compiler now converts known documentation attribute metadata entries from + unicode:chardata/0 to unicode:unicode_binary/0. + + Own Id: OTP-19394 + Related Id(s): PR-9192 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- The compiler’s alias analysis pass is now both faster and less conservative, + allowing optimizations of records and binary construction to be applied in + more cases. + + Own Id: OTP-19502 + Related Id(s): PR-8695 + + *** HIGHLIGHT *** + +- BEAM files no longer include a `Meta` chunk if there are no features used. + That slightly decreases the size of BEAM files, and it also ensures that + `m(Module)` and `beam_lib:md5(Beam)` will match for preloaded modules. + + Own Id: OTP-19524 + Related Id(s): PR-9517 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of compiler-9.0 +> +> crypto-5.1, erts-13.0, kernel-8.4, stdlib-6.0 + +# crypto-5.6 + +## Fixed Bugs and Malfunctions + +- Fixed minor potential leak of EVP_MAC when `crypto` module is unloaded. + + Own Id: OTP-19500 + Related Id(s): PR-9119 + +- Added copyright and license to crypto_ec_curves.erl + + Own Id: OTP-19554 + +## Improvements and New Features + +- The crypto:start/0, crypto:stop/0, and crypto:enable_fips_mode/1 + functions have been deprecated. + + Own Id: OTP-19155 + Related Id(s): PR-8592 + +- Warnings are now logged if module `crypto` with FIPS-supported OpenSSL is + loaded without application `crypto` being loaded. In this case FIPS will be + disabled even if the user had set application parameter `fips_mode`. + + Own Id: OTP-19156 + Related Id(s): PR-8590 + +- The functionality of crypto:crypto_one_time_aead/6 is now also available in + the new functions crypto:crypto_one_time_aead_init/4 and + crypto:crypto_one_time_aead/4, which makes it possible to reuse + initialization. + + Own Id: OTP-19426 + Related Id(s): PR-9289 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- New key `fips_provider_buildinfo` in map returned by crypto:info/0. If + present, it contains the version of the FIPS provider which may be different + than the version of the rest of OpenSSL. + + Own Id: OTP-19487 + Related Id(s): GH-9366, PR-9410 + +- Exported `crypto` types `sha3()`, `hmac_hash_algorithm()` and + `cmac_cipher_algorithm()`. + + Own Id: OTP-19510 + Related Id(s): PR-9448 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of crypto-5.6 +> +> erts-9.0, kernel-6.0, stdlib-3.9 + +# debugger-6.0 + +## Fixed Bugs and Malfunctions + +- Error handling has been improved when modules fail to load. + + Own Id: OTP-19484 + Related Id(s): GH-7819, PR-9399 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of debugger-6.0 +> +> compiler-8.0, erts-15.0, kernel-10.0, stdlib-7.0, wx-2.0 + +# dialyzer-5.4 + +## Fixed Bugs and Malfunctions + +- The `-Wno_unknown` option will now prevent a warning being printed to standard + output when the command line interface is used. + + Own Id: OTP-19262 + Related Id(s): GH-8822, PR-8885 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of dialyzer-5.4 +> +> compiler-8.0, erts-12.0, kernel-8.0, stdlib-5.0, syntax_tools-2.0 + +# diameter-2.5 + +## Fixed Bugs and Malfunctions + +- With this change diameter will not crash when decoding a DiameterURI without + port number. + + Own Id: OTP-19620 + Related Id(s): PR-9321 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- With this change diameter will not use slave terminology + + Own Id: OTP-19621 + Related Id(s): PR-9786 + +> #### Full runtime dependencies of diameter-2.5 +> +> erts-10.0, kernel-3.2, ssl-9.0, stdlib-5.0 + +# edoc-1.4 + +## Fixed Bugs and Malfunctions + +- Refactor code to not rely on `+nowarn_shadow_vars`. + + Own Id: OTP-19574 + Related Id(s): PR-9678 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of edoc-1.4 +> +> erts-11.0, inets-5.10, kernel-7.0, stdlib-4.0, syntax_tools-2.0, xmerl-1.3.7 + +# eldap-1.2.15 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eldap-1.2.15 +> +> asn1-3.0, erts-6.0, kernel-3.0, ssl-5.3.4, stdlib-3.4 + +# erl_interface-5.6 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5. + + Own Id: OTP-19614 + Related Id(s): PR-9775 + +## Known Bugs and Problems + +- 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. + + Own Id: OTP-16607 + Related Id(s): OTP-16608 + +# erts-16.0 + +## Fixed Bugs and Malfunctions + +- ETS tables with more than 2 billion keys are now supported. + + Own Id: OTP-19144 + Related Id(s): PR-8589 + +- The zlib library included in Erlang/OTP has been updated to version 1.3.1. + + Own Id: OTP-19259 + Related Id(s): PR-8862 + +- `to_erl` no longer clears the screen when attaching to a `run_erl` session. + + Own Id: OTP-19263 + Related Id(s): PR-8943 + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed a bug where `erlc` would crash if its path contained spaces. + + Own Id: OTP-19295 + Related Id(s): PR-8937 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- Fixed erlang:localtime_to_universaltime/2 with `IsDST` set to `true` and a + timezone without daylight saving (for example `UTC`) to assume that the + provided localtime does not have DST. This has always been the behaviour, but + glibc versions after 2.37 changed it so that the behavior in Erlang also + changed. + + Own Id: OTP-19453 + Related Id(s): PR-9207 + +- Support for the `TZ` environment variable has been added on Windows. Before + this change only the time zone configured in the OS was ever used. + + Own Id: OTP-19454 + Related Id(s): PR-9207 + +- Suppressed various warnings when building the emulator with recent versions of + GCC + + Own Id: OTP-19488 + Related Id(s): GH-9413, PR-9417 + +- Fixed a bug in re:run and re:compile where the pattern parameter would be read + incorrectly if it was a sub-binary. + + Own Id: OTP-19507 + Related Id(s): GH-9438, PR-9478 + +- Fixed a broken makefile rule that made it so that `O2` and `-O2` could not be + part of the directory path when building Erlang/OTP. Bug has been present + since R11B released 2006. + + Own Id: OTP-19518 + Related Id(s): GH-9487, PR-9488 + +- Fixed the index types of modules `atomics` and `counters` from `integer()` to + `pos_integer()`, which is more correct. + + Own Id: OTP-19532 + Related Id(s): PR-9538 + +- Fix `erl` flags `+Q`, `+P` and `+t` to not allow values greater + than 4294975487. Before this fix, the runtime would either truncate the value + or crash depending on which value was given. + + Own Id: OTP-19594 + Related Id(s): GH-9668, PR-9671 + +- The socket option names for built-in socket options in the module `socket` has + been cleaned up. + + Now, for known socket options, it is only the canonical protocol names that + are allowed such as `ip` for the socket option `{ip,recvtos}`. Previously, due + to being a protocol alias; `{'IP',recvtos}` was also allowed, as was the + incorrect `{hopopt,recvtos}` because the protocol `hopopt` on Linux has the + same protocol number as `ip`. + + So, to reduce confusion, all enumerated protocol names with the same number, + are not allowed for the known protocol options, only the canonical name. + + Own Id: OTP-19615 + Related Id(s): PR-9718 + + *** POTENTIAL INCOMPATIBILITY *** + +- On windows, socket:sendv could incorrectly return {ok, integer()} on Windows. + + Own Id: OTP-19617 + Related Id(s): OTP-19482 + +## Improvements and New Features + +- Functionality making it possible for processes to enable reception of + priority messages has been introduced in accordance with EEP 76. + + Own Id: OTP-19198 + Related Id(s): PR-9269, PR-9519, PR-9590 + + *** HIGHLIGHT *** + +- The trace:system/3 function has been added. It has a similar interface as + erlang:system_monitor/2 but it also supports trace sessions. + + Own Id: OTP-19271 + Related Id(s): PR-8660 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Two BIFs have been added to the `erlang` module. + + erlang:processes_iterator/0 returns a process iterator that can be used to + iterate through the process table. + + erlang:process_next/1 takes in a process iterator and returns a 2-tuple, + consisting of a process identifier and a new process iterator. When the + process iterator runs out of processes in the process table, `none` will be + returned. + + Using these BIFs to scan the processes scales better than using + erlang:processes/0, at the cost of giving less consistency guarantees. + Process identifiers returned from consecutive calls of erlang:process_next/1 + may not be a consistent snapshot of all elements existing in the table during + any of the calls. A process identifier is only guaranteed to be returned from + a call to erlang:processes_next/1 if it was alive before the call to + erlang:processes_iterator/0 and was still alive when + erlang:processes_next/1 returned `none`. + + Own Id: OTP-19369 + Related Id(s): PR-9129 + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- When booting the runtime system on a 32-bit computer with a single core, the + boot code will try to minimize the peak memory use by disabling parallel + loading of BEAM files. + + Own Id: OTP-19450 + Related Id(s): PR-9342 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- `erlc` will now write compiler warnings and errors to standard error, instead + of standard output, in common with other language compilers. + + Own Id: OTP-19460 + Related Id(s): GH-9255, PR-9363 + +- Fixed the Windows build to always include `.pdb` files for all DLLs and + executables to help with debugging. + + Own Id: OTP-19465 + Related Id(s): PR-9229 + +- Improve the naming of the (internal) esock mutex(es). It is now possible to + configure (as in autoconf) the use of simple names for the esock mutex(es). + + Own Id: OTP-19472 + Related Id(s): PR-9388 + +- An optimization for appending 0 bits to a binary was removed in patch releases + for OTP versions 25, 26, and 27. This optimization has been reintroduced in + Erlang/OTP 28. + + Own Id: OTP-19473 + Related Id(s): PR-8697, PR-9396 + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- When using `enif_select_read` (or `enif_select` with `ERL_NIF_SELECT_READ`) on + systems with kernel polling enabled (that is most Unix systems), file + descriptors that are always re-enabled as soon as they trigger are now part of + a specialized pollset just as `driver_select`. This reduces the CPU usage in + such scenarios as the erts does not have to re-insert the FD everytime it it + triggered. As a result of this optimization `socket` based reading uses a + lot less CPU and achieves a higher throughput. + + Own Id: OTP-19479 + Related Id(s): PR-9275 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- The Windows installer no longer creates the `erl.ini` file, making + installations redistributable. + + Own Id: OTP-19481 + Related Id(s): PR-9330 + +- Added erlang:hibernate/0, which hibernates a process without discarding the + stack. + + Own Id: OTP-19503 + Related Id(s): PR-9406 + +- The asmjit library (used by BeamJIT) has been updated to version + 029075b84bf0161a761beb63e6eda519a29020db. + + Own Id: OTP-19509 + Related Id(s): PR-9495 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- If a process being suspended using `erlang:suspend_process()` currently is + waiting in a `receive ... after` expression, the timer for the timeout will + now also be suspended until the process is resumed. + + Own Id: OTP-19536 + Related Id(s): PR-8670 + + *** POTENTIAL INCOMPATIBILITY *** + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- The `+R` emulator options has been removed. It has had any effect since + Erlang/OTP R9. + + Own Id: OTP-19551 + Related Id(s): PR-9608 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +- Add `+JPperfdirectory <dir>` for specifying which directory Erlang should + place perf symbol information files. + + Own Id: OTP-19589 + Related Id(s): GH-9500, PR-9639 + +- Allow multiple static nifs to be part of the same archive. See the NIF + documentation for details. + + Own Id: OTP-19590 + Related Id(s): PR-9625 + +- Various improvements reducing lock contention on run queues due to task + stealing. + + Own Id: OTP-19591 + Related Id(s): PR-9594 + +- The new implementation has the same behavior as the previous one. The newer + compilers already have native support for FP16, so this implementation is only + relevant for older compilers. For this reason, the new implementation has not + been tested for speed. + + Own Id: OTP-19603 + Related Id(s): PR-9735 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +- Update internal `ryu` implementation to use latest version. The new version is + a little bit faster in some scenarios. `ryu` is used by `float_to_list/1` and + similar functions to convert floats to strings. + + Own Id: OTP-19613 + Related Id(s): PR-9733 + +- Update of MD5 implementation from OpenSSL version 3.1.4 to 3.5. + + Own Id: OTP-19614 + Related Id(s): PR-9775 + +- Small optimization in binary_to_term by not allocating an unnecessary large + native stack frame. + + Own Id: OTP-19618 + Related Id(s): PR-9759, PR-9809 + +> #### Full runtime dependencies of erts-16.0 +> +> kernel-9.0, sasl-3.3, stdlib-4.1 + +# et-1.7.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of et-1.7.2 +> +> erts-9.0, kernel-5.3, runtime_tools-1.10, stdlib-3.4, wx-1.2 + +# eunit-2.10 + +## Fixed Bugs and Malfunctions + +- Fix so that when running tests in parallel and one test is cancelled due to a + failing setup, it is report as cancelled. Before this fix the cancellation was + ignored. + + Own Id: OTP-19630 + Related Id(s): PR-9794 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of eunit-2.10 +> +> erts-9.0, kernel-5.3, stdlib-3.4 + +# ftp-1.2.4 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ftp-1.2.4 +> +> erts-7.0, kernel-6.0, runtime_tools-1.15.1, ssl-10.2, stdlib-3.5 + +# inets-9.4 + +## Fixed Bugs and Malfunctions + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Enhanced http client documentation. + + Own Id: OTP-19520 + Related Id(s): PR-9516 + +- Enhance made to mod_esi documentation + + Own Id: OTP-19521 + Related Id(s): PR-9472 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Inets Makefiles now create and use dependencies files for .erl files + + Own Id: OTP-19624 + Related Id(s): PR-9101 + +> #### Full runtime dependencies of inets-9.4 +> +> erts-14.0, kernel-9.0, mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, +> ssl-9.0, stdlib-5.0, stdlib-6.0 + +# jinterface-1.15 + +## Improvements and New Features + +- The `.class` files of jinterface are now part of the prebuilt archive using + Java 8. + + Own Id: OTP-19308 + Related Id(s): PR-8960 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +# kernel-10.3 + +## Fixed Bugs and Malfunctions + +- Fixed an issue where output to the shell would not print the prompt on a new + line. + + Own Id: OTP-19228 + Related Id(s): PR-8820 + +- When in `shell` is in `-noshell` mode, and in `latin1` encoding mode, io + requests in latin1 encoding will not be translated to unicode and back to + latin1. + + Own Id: OTP-19296 + Related Id(s): PR-9013 + +- Fixed a bug where a composing unicode character would bind to a character not + available to the user and deleting that character would cause a crash. + + Own Id: OTP-19297 + Related Id(s): PR-9005 + +- The `-noshell` mode has been updated to read data lazily from standard + input. Before this fix any data would be read greedily which meant that Erlang + could consume data not meant for it. It also meant that in order for + shell:start_interactive/0 to work on Windows an API that did not support + reading of Unicode characters had to be used. + + Own Id: OTP-19313 + Related Id(s): GH-8113, PR-8962 + +- The Erlang shell no longer crashes when a shell prompt ends with an escape + sequence. + + Own Id: OTP-19414 + Related Id(s): PR-9272 + +- code:get_doc/1 now works for cover-compiled modules. + + Own Id: OTP-19513 + Related Id(s): PR-9433 + +- An infinite loop in CNAME loop detection that can cause Out Of Memory has been + fixed. This affected CNAME lookup with the internal DNS resolver. + + Own Id: OTP-19544 + Related Id(s): PR-9587, OTP-19545 + +- The internal resolver framework has been fixed to wait with the first resolver + lookup until the ERL_INETRC environment variable has been applied. + + Previously, on some platform(s) (Linux) a first lookup when figuring out the + domain name was always placed on the `native` resolver even if ERL_INETRC was + used to disable it. + + Own Id: OTP-19555 + Related Id(s): PR-9543 + +- Fix `logger:add_handler(default, ...)` to correctly replay events generated + during startup when the default logger is set to `undefined` in logger's + configuration parameters. + + Own Id: OTP-19588 + Related Id(s): GH-9436, PR-9595 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +- Removed the default values for SCTP send (sndbuf) and receive (recbuf) + buffers. + + Own Id: OTP-19627 + Related Id(s): GH-9722, OTP-19576 + + *** HIGHLIGHT *** + +## Improvements and New Features + +- application:load/1 slows down as the number of directories in the code path + increases because the call to code:where_is_file/1 for the '.app' file must + scan each directory for the app. + + `code_server` maintains a cache of the contents of directories in the path. + Re-using that cache when searching for '.app' files in application:load/1 + may improve its runtime, especially when loading multiple applications. + + Own Id: OTP-19194 + Related Id(s): PR-8078 + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- Added support for `SIGWINCH`, `SIGCONT`, and `SIGINFO` signals to + os:set_signal/2 where available. + + Own Id: OTP-19278 + Related Id(s): PR-8887, PR-8938 + +- Add net_kernel:allowed/0, it returns a list of nodes that are explicitly + allowed to connect to the node by calling net_kernel:allow/1 + + Own Id: OTP-19287 + Related Id(s): PR-8207 + +- Documentation chunks (EEP-48) has been updated to include the following + reserved metadata fields: `behaviours`, `group`, `source_path`, and + `source_annos`. The compiler has also been updated to emit this metadata. See + the EEP-48 documentation for more details. + + Own Id: OTP-19306 + Related Id(s): PR-8945, PR-8975 + +- The erpc:call/3, erpc:call/5, erpc:multicall/3, and erpc:multicall/5 + functions now also accept an option map as last argument containing the + `timeout` and `always_spawn` options. The `always_spawn` option can be used in + order to ensure that the call operation will use a newly spawned process when + executing the remote call. + + Own Id: OTP-19343 + Related Id(s): PR-8642 + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Improved open debug for gen_tcp_socket (connect and listen) and gen_udp_socket + (open). + + Own Id: OTP-19386 + +- `t:io:standard_error/0` has been updated to write via a NIF API instead of a + port. This allows it to access the dirty-scheduler pool and make sure that + writes have been written to the OSs `stderr` when io:format/3 and equivalent + return. + + Own Id: OTP-19401 + Related Id(s): PR-9116 + +- Added the option `exception_on_failure` to os:cmd/2 to make os:cmd/2 raise + an exception if the command fails to execute. + + Own Id: OTP-19404 + Related Id(s): PR-9082 + +- A `socket` option `{otp,select_read}` has been added that enables keeping a + socket in the VM select/poll set between calls to recv functions. + + This increases throughput by reducing the number of calls to said functions. + + Own Id: OTP-19451 + Related Id(s): PR-9344 + +- Add a configure chapter to the socket usage guide + + Own Id: OTP-19522 + Related Id(s): PR-9508 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Increase the default inet-driver buffer size(s). Also introduce kernel + parameters for UDP and SCTP to change the sizes when creating (those) sockets. + + Own Id: OTP-19576 + +- An **experimental** API for a native debugger has been added. The main + components are the following: + + - A new compiler option `beam_debug_info` for the Erlang compiler. When given, + most optimizations are disabled and debug information suitable for the + native debugger are added to generated BEAM files. + - A new `+D` emulator flag. When given, the VM becomes "debuggable", which + means that when modules that been compiled with the `beam_debug_info` option + are loaded, the code is instrumented so that one can enable and disable + breakpoints on executable lines. + - An experimental `erl_debugger` module with a new debugging API. Essentially, + it allows a single, local, process to be registered as the "debugger" + process for the node. This process is the one that will receive messages + notifying that a process hit a breakpoint. This way, the front-end + implementation of a debugger (such as edb from WhatApp) can be decoupled + from OTP. + - The `erl_debugger` module also exposes new BIFs to inspect `X` and `Y` + registers of a suspended process. Together with new code-information BIFs, + this let's a debugger show the values of variables in scope for a suspended + process. + + Own Id: OTP-19609 + Related Id(s): PR-8670, PR-9334, PR-9604 + + *** HIGHLIGHT *** + +> #### Full runtime dependencies of kernel-10.3 +> +> crypto-5.0, erts-15.2.5, sasl-3.0, stdlib-6.0 + +# megaco-4.8 + +## Fixed Bugs and Malfunctions + +- Add missing spec and doc for exported functions. + + Own Id: OTP-19523 + +## Improvements and New Features + +- Nano seconds are now used for (example) meas result presentation. + + Nanoseconds are now used, for example, in `meas` result presentations. + + Own Id: OTP-19403 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19570 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- Tweaked some of the meas examples in order to make them benchmark compatible. + + Own Id: OTP-19598 + +> #### Full runtime dependencies of megaco-4.8 +> +> asn1-3.0, debugger-4.0, erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, +> stdlib-2.5 + +# mnesia-4.24 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of mnesia-4.24 +> +> erts-9.0, kernel-5.3, stdlib-5.0 + +# observer-2.18 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- With this change etop from observer application will scroll as top from shell + + Own Id: OTP-19528 + Related Id(s): PR-9659 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of observer-2.18 +> +> erts-15.0, et-1.5, kernel-10.0, runtime_tools-2.1, stdlib-5.0, wx-2.3 + +# odbc-2.16 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Updated odbc configure to enable easier use of iodbc driver. + + Own Id: OTP-19456 + Related Id(s): PR-9083 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of odbc-2.16 +> +> erts-6.0, kernel-3.0, stdlib-2.0 + +# os_mon-2.11 + +## Fixed Bugs and Malfunctions + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- `m:disksup` will now recognize HAMMER2 volumes. + + Own Id: OTP-19207 + Related Id(s): PR-8704 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of os_mon-2.11 +> +> erts-14.0, kernel-9.0, sasl-4.2.1, stdlib-5.0 + +# parsetools-2.7 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of parsetools-2.7 +> +> erts-6.0, kernel-3.0, stdlib-3.4 + +# public_key-1.18 + +## Fixed Bugs and Malfunctions + +- Enable public_key to decode legacy certs using md2 hash. + + Own Id: OTP-19616 + Related Id(s): GH-9754, PR-9755 + +## Improvements and New Features + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Ignore instead of crashing unhandled entries when loading CA-certificates. + + Own Id: OTP-19573 + Related Id(s): GH-9565, PR-9677 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- The ancient ASN.1 modules used in `public_key` has been replaced with more + modern versions, but we have strived to keep the documented Erlang API for the + `public_key` application compatible. + + Own Id: OTP-19612 + Related Id(s): PR-9774 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of public_key-1.18 +> +> asn1-5.0, crypto-5.0, erts-13.0, kernel-8.0, stdlib-4.0 + +# reltool-1.0.2 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of reltool-1.0.2 +> +> erts-15.0, kernel-9.0, sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3 + +# runtime_tools-2.2 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- With this change observer will use cheaper iterators to avoid locking when not + necessary. + + Own Id: OTP-19584 + Related Id(s): PR-9711 + +> #### Full runtime dependencies of runtime_tools-2.2 +> +> erts-16.0, kernel-10.0, mnesia-4.12, stdlib-6.0 + +# sasl-4.3 + +## Fixed Bugs and Malfunctions + +- Fixed the documentation for the ExtraFiles option to systools:make_tar/2. + + Own Id: OTP-19279 + Related Id(s): GH-8842, PR-8894 + +## Improvements and New Features + +- `.appup` files are now included in releases in order to make it possible to + create upgrade packages from an installed release. + + Own Id: OTP-19398 + Related Id(s): PR-8973 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of sasl-4.3 +> +> erts-15.0, kernel-6.0, stdlib-4.0, tools-2.6.14 + +# snmp-5.19 + +## Improvements and New Features + +- EEP-69: Nominal Types has been implemented. As a side effect, nominal types + can encode opaque types. We changed all opaque-handling logic and improved + opaque warnings in Dialyzer. + + All existing Erlang type systems are structural: two types are seen as + equivalent if their structures are the same. Type comparisons are based on the + structures of the types, not on how the user explicitly defines them. For + example, in the following example, `meter()` and `foot()` are equivalent. The + two types can be used interchangeably. Neither of them differ from the basic + type `integer()`. + + -type meter() :: integer(). + -type foot() :: integer(). + + Nominal typing is an alternative type system, where two types are equivalent + if and only if they are declared with the same type name. The EEP proposes one + new syntax -nominal for declaring nominal types. Under nominal typing, + `meter()` and `foot()` are no longer compatible. Whenever a function expects + type `meter()`, passing in type `foot()` would result in a Dialyzer error. + + -nominal meter() :: integer(). + -nominal foot() :: integer(). + + More nominal type-checking rules can be found in the EEP. It is worth noting + that most work for adding nominal types and type-checking is in + `erl_types.erl`. The rest are changes that removed the previous opaque + type-checking, and added an improved version of it using nominal type-checking + with reworked warnings. + + Backwards compatibility for opaque type-checking is not preserved by this PR. + Previous opaque warnings can appear with slightly different wordings. A new + kind of opaque warning `opaque_union` is added, together with a Dialyzer + option `no_opaque_union` to turn this kind of warnings off. + + Own Id: OTP-19364 + Related Id(s): PR-9079 + + *** HIGHLIGHT *** + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- Add copyright notice to files that still had none. + + Own Id: OTP-19572 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of snmp-5.19 +> +> crypto-4.6, erts-12.0, kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, +> stdlib-5.0 + +# ssh-5.3 + +## Fixed Bugs and Malfunctions + +- The implementation of the ssh server-side supervision tree has been improved. + + Own Id: OTP-19324 + Related Id(s): GH-8223, PR-8968 + +- SSH daemon accepts fun as tcpip_tunnel_in option. This provides more control + over TCP connection tunnel handle by server. + + Own Id: OTP-19566 + Related Id(s): PR-9571 + +## Improvements and New Features + +- The `Erlang SSH daemon` now uses the same backend to handle multiline + functionality as the Erlang shell. + + Own Id: OTP-19226 + Related Id(s): PR-8805 + +- CBC algorithms are not offered by default. See Configuring algorithms in SSH + if you wish to enable them. + + Own Id: OTP-19420 + Related Id(s): PR-9277 + + *** POTENTIAL INCOMPATIBILITY *** + +- Daemon can be configured (bannerfun option) to send banner message at the + beginning of user authentication. + + Own Id: OTP-19535 + Related Id(s): PR-9149 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- For interoperability reasons, SSH ignore message with no length specified is + treated as message with zero length specified - it will not cause decode + error. + + Own Id: OTP-19586 + Related Id(s): PR-9214 + +- Documentation improvements. + + Own Id: OTP-19596 + Related Id(s): PR-9298 + +> #### Full runtime dependencies of ssh-5.3 +> +> crypto-5.0, erts-14.0, kernel-10.3, public_key-1.6.1, runtime_tools-1.15.1, +> stdlib-5.0, stdlib-6.0 + +# ssl-11.3 + +## Improvements and New Features + +- Refactoring, minor optimizations and improved log printouts. + + Own Id: OTP-19367 + Related Id(s): PR-9019 + +- supervisor:which_child/2 is now used to make start-up code for + TLS-connections simpler and more straight forward, and to increase stability + and maintainability of the ssl application. + + Own Id: OTP-19406 + Related Id(s): PR-9231 + +- The data handling for tls-v1.3 has been optimized. + + Own Id: OTP-19430 + Related Id(s): PR-9305 + +- Added experimental socket support. + + Own Id: OTP-19463 + Related Id(s): PR-9398 + +- Improve code health by removing dead code. + + Own Id: OTP-19531 + Related Id(s): PR-9563 + +- A test module for TLS distribution over `socket` has been implemented. + + Own Id: OTP-19539 + Related Id(s): PR-9511 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of ssl-11.3 +> +> crypto-5.6, erts-16.0, inets-5.10.7, kernel-10.3, public_key-1.16.4, +> runtime_tools-1.15.1, stdlib-7.0 + +# stdlib-7.0 + +## Fixed Bugs and Malfunctions + +- Shell help now orders the commands in alphabetical order. + + Own Id: OTP-19161 + Related Id(s): PR-8573 + +- `proc_lib:stop/1,3` (and in extension gen_server:stop/3, gen_statem:stop/3 + and so on) have been updated to not throw an error if the process to be + stopped exits with the same reason as given to proc_lib:stop/3. + + Own Id: OTP-19233 + Related Id(s): PR-8772 + + *** POTENTIAL INCOMPATIBILITY *** + +- The size of an atom in the Erlang source code was limited to 255 bytes in + previous releases, meaning that an atom containing only emojis could contain + only 63 emojis. + + While atoms are still only allowed to contain 255 characters, the number of + bytes is no longer limited. + + External tools that parse the `AtU8` chunk of a BEAM file directly need to be + updated. Tools that use + `beam_lib:chunks(Beam, [atoms)`](beam_lib:chunks/2) to read the atom table + will continue to work. + + Own Id: OTP-19285 + Related Id(s): PR-8913 + + *** POTENTIAL INCOMPATIBILITY *** + +- argparse:help/1 now accepts unicode:chardata/0. + + Own Id: OTP-19303 + Related Id(s): PR-8932 + +- The literals chunk in BEAM is no longer compressed, resulting in slightly + smaller BEAM files when a BEAM file is stripped using + beam_lib:strip_files/1. + + This is a potential incompatibility for tools that read and interpret the + contents of the literal chunk. One way to update such tools to work with the + new format is to retrieve the chunk using + `beam_lib:chunks(Beam, [literals)`](beam_lib:chunks/2). + + Own Id: OTP-19323 + Related Id(s): GH-8967, PR-8988 + + *** POTENTIAL INCOMPATIBILITY *** + +- The previous digraph_utils:preorder/1 and digraph_utils:postorder/1 did + not start the traversal from root nodes. This fix makes both traversals only + start or restart from a root node in one of the components, or an arbitrary + node if no root node can be visited. + + Own Id: OTP-19393 + Related Id(s): PR-9171 + +- Auto-completion in the shell is now significantly faster for function + parameters that uses complex custom types. + + Own Id: OTP-19413 + Related Id(s): PR-9271 + +- Stringfying a non-latin1 atom will now produce a readable string instead of + encoding each character using `\x{...}` escape sequences. Example: + + -define(S(T), ??T). + + atom() -> + ?S('атом'). + + The `atom/0` function now returns `"'атом'"` instead of + `"'\\x{430}\\x{442}\\x{43E}\\x{43C}'"`. + + Own Id: OTP-19421 + Related Id(s): GH-9173, PR-9276 + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +- `m:dets` could print error messages to standard output when repairing DETS + files. This has been changed to send the messages to `logger`. + + `ets:fun2ms` would print an error message to standard output as well as + returning an error tuple. The printing of the message has been removed. + + Own Id: OTP-19427 + Related Id(s): PR-9232, PR-9446 + +- The functions for converting to and from the RFC1339 date and time format + would not properly handle fractional seconds for negative times. + + Own Id: OTP-19441 + Related Id(s): GH-9279, PR-9280 + +- Replaced calls to deprecated `crypto:start()` with + `application:start(crypto)`. + + Own Id: OTP-19485 + Related Id(s): PR-8592 + +- Fixed a bug when calling shell completion on a reserved word followed by a _(_ + would crash the shell. + + Own Id: OTP-19511 + Related Id(s): GH-9470 + +- Corrected the spec of ets:update_element/4. + + Own Id: OTP-19514 + Related Id(s): PR-9504 + +- Corrected the spec for ets:info/1. + + Own Id: OTP-19515 + Related Id(s): PR-9514 + +- Fixed crash when defining records with a string field in the shell + + Own Id: OTP-19533 + Related Id(s): GH-9557 + +- Details in the hibernation implementation and time-out handling has been + improved for `gen_statem`. In particular to avoid selective receive when + cancelling a time-out. + + Own Id: OTP-19540 + Related Id(s): PR-9579 + +- Fixed a bug when getting help on a module compiled without debug_info. + + Own Id: OTP-19583 + Related Id(s): PR-9654 + +- Fix `zip` extraction to wrap invalid DOS timestamps to their correct value + instead of returning the actual value. Before this fix the timestamp returned + could have a second greater than 59. The bug has been present since Erlang/OTP + 27.1. + + Own Id: OTP-19593 + Related Id(s): GH-9536, PR-9537 + +- Enhance specs of timeout for improving documentation and dialyzer analysis. + + Own Id: OTP-19604 + Related Id(s): PR-9574 + +## Improvements and New Features + +- Singleton type variables in an union type do not make sense from Dialyzer's + point of view. The following example is ill-typed: + + -spec run_test(Opts) -> term() + when Opts :: {join_specs, Bool} | {test, Bool}. + + This used to be reported as a warning. In OTP-28, this is an error + + Own Id: OTP-19125 + Related Id(s): PR-8556 + +- By default, sets created by the `sets` module will now be represented as + maps. + + Own Id: OTP-19127 + Related Id(s): PR-8429 + +- For various error types, the compiler now tries to suggest potential fixes by + adding "did you mean ...?" at the end of error messages. + + When a function is used with wrong arity, the compiler will try to suggest a + defined function with the same name but a different arity. For example, given + the following module: + + -module(typos). + -export([t/0]). + bar(A) -> A. + bar(A,A,A) -> A. + bar(A,A,A,A) -> A. + t() -> bar(0, 0). + + The compiler will emit the following message: + + typo.erl:6:12: function bar/2 undefined, did you mean bar/1,3,4? + % 6| t() -> bar(0, 0). + % | ^ + + For compiler errors that can easily be caused by typos, the compiler will try + to suggest what the correct variable or function name, could be. For example, + given the following module: + + -module(typos). + -export([bar/2]). + + bar(A0, B0) -> + A + B. + + the compiler will emit the following error messages: + + typos.erl:5:5: variable 'A' is unbound, did you mean 'A0'? + % 5| A + B. + % | ^ + + typos.erl:5:9: variable 'B' is unbound, did you mean 'B0'? + % 5| A + B. + % | ^ + + Error types that now suggest correct arities: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `bad_nowarn_bif_clash`, `undefined_function`. + + Error types that now suggest correct names: `bad_inline`, `undefined_nif`, + `bad_nowarn_unused_function`, `undefined_on_load`, `undefined_function`, + `undefined_record`, `undefined_field`, `unbound_var`. + + Using a function with wrong arity has higher precedence than having a typo in + the function name. If the compiler can find a defined function with the same + name but a different arity, it will not suggest a defined function with a + close-enough name, regardless of arity. + + Own Id: OTP-19180 + Related Id(s): PR-8699, PR-9094 + + *** HIGHLIGHT *** + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- Before restarting a child, a supervisor must check if the restart limit is + reached. This adds a penalty to the overall restart time, which should be kept + low. The algorithm has been optimized from 2\*O(n) to O(n) behavior. + + Own Id: OTP-19204 + Related Id(s): PR-8261 + +- Added the possibility to configure shell docs column width through the stdlib + parameter `shell_docs_columns`. + + Own Id: OTP-19224 + Related Id(s): PR-8651 + +- The io:setopts/2 function now accepts the `line_history` option for more + explicit handling of when to save shell history. + + Own Id: OTP-19230 + Related Id(s): PR-8792 + +- The shell now prints a help message explaining how to interrupt a running + command when stuck executing a command for longer than 5 seconds. + + Own Id: OTP-19231 + Related Id(s): PR-8793 + +- Binaries can now be used as input to calendar:rfc3339_to_system_time/2, and + produced as output of calendar:system_time_to_rfc3339/2. + + Own Id: OTP-19250 + Related Id(s): PR-8812 + +- The `erl -noshell` mode has been updated to have two sub modes called `raw` + and `cooked`, where `cooked` is the old default behaviour and `raw` can be + used to bypass the line-editing support of the native terminal. Using `raw` + mode it is possible to read keystrokes as they happen without the user having + to press Enter. Also, the `raw` mode does not echo the typed characters to + stdout. An example of how to create a tic-tac-toe game using this mechanism is + included in the documentation. + + Own Id: OTP-19314 + Related Id(s): GH-8037, PR-8962 + + *** HIGHLIGHT *** + +- Added io:get_password/0 that can read passwords from stdin when in "raw" + `-noshell` mode. + + Own Id: OTP-19315 + Related Id(s): PR-8962, PR-9006 + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- New options for suppressing behaviour warnings have been added: + + - `nowarn_conflicting_behaviours` + - `nowarn_undefined_behaviour_func` + - `nowarn_undefined_behaviour` + - `nowarn_undefined_behaviour_callbacks` + - `nowarn_ill_defined_behaviour_callbacks` + - `nowarn_ill_defined_optional_callbacks` + + Own Id: OTP-19334 + Related Id(s): GH-8985, PR-9020 + +- The `join(Binaries, Separator)` function that joins a list of binaries has + been added to the `binary` module. + + Own Id: OTP-19337 + Related Id(s): GH-8099, PR-8100 + + *** HIGHLIGHT *** + +- The supervisor:which_child/2 function has been added to facilitate getting + the pid of a sibling process; that is a process under same supervisor as the + process that calls to call the new function. + + Own Id: OTP-19345 + Related Id(s): PR-8976 + +- The function erl_anno:set_end_location/2 for setting the end location of a + token has been added. + + Own Id: OTP-19354 + Related Id(s): PR-8966 + +- Added a warning for calling non-exported functions with the remote function + call syntax from the same module, and likewise for the remote fun syntax. + + Own Id: OTP-19371 + Related Id(s): GH-9092, PR-9095 + +- The `warn_deprecated_catch` option enables warnings for use of old-style catch + expressions on the form `catch Expr` instead of the modern + `try ... catch ... end`. To prevent new uses of uses of old catches to be + added, this compiler option can be enabled on the project level and + `-compile(nowarn_deprecated_catch).` added to individual files that still + contain old catches. + + Own Id: OTP-19425 + Related Id(s): PR-9154 + +- Module `re` has been updated to use PCRE2, which is mostly backward + compatible with PCRE. + + The most noticeable incompatibilities are + + - The default character encoding is pure ASCII and not Latin1. Unicode support + is still available with options `unicode` and `ucp`. + - Options `bsr_anycrlf`, `bsr_unicode` and `{newline,_}` are only set when a + regex is compiled and cannot be changed at matching for precompiled regex. + + Own Id: OTP-19431 + Related Id(s): PR-9299, PR-9610 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + +- Defining a fun in terms of an imported function is not allowed. Before this + release, the compiler would not catch this kind of error if the name of the + imported function happened to be a BIF. Consider this example: + + -module(fun_example). + -export([foo/0, bar/0]). + -import(m, [max/2, not_a_bif/0]). + + foo() -> + fun max/2. + + bar() -> + fun not_a_bif/0. + + The compiler in Erlang/OTP 27 would generate the following messages: + + fun_example.erl:9:5: function not_a_bif/0 undefined + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + That is, there would be a (cryptic) error for `fun not_a_bif/0`, but only a + warning for `fun max/2`. + + When compiling with this release, both attempts to create a fun will result in + error messages (as well as a warning): + + fun_example.erl:6:5: creating a fun from imported name max/2 is not allowed + % 6| fun max/2. + % | ^ + + fun_example.erl:9:5: creating a fun from imported name not_a_bif/0 is not allowed + % 9| fun not_a_bif/0. + % | ^ + + fun_example.erl:3:2: Warning: import directive overrides auto-imported BIF max/2 -- + use "-compile({no_auto_import,[max/2]})." to resolve name clash + % 3| -import(m, [max/2, not_a_bif/0]). + % | ^ + + Also, attempting to call a local function having the same name as + auto-imported BIF would result in an error if the BIF was added to Erlang/OTP + before R14, and a warning for newer BIFs. This has been changed to always emit + a warning. For example: + + -module(bif_example). + -export([bar/1]). + + bar(B) -> + is_boolean(B). + + is_boolean(B) -> + B =:= true orelse B =:= false. + + will now result in the following warning instead of an error: + + if_example.erl:5:5: Warning: ambiguous call of overridden auto-imported BIF is_boolean/1 -- + use erlang:is_boolean/1 or "-compile({no_auto_import,[is_boolean/1]})." to resolve name clash + % 5| is_boolean(B). + % | ^ + + Own Id: OTP-19432 + Related Id(s): PR-9246 + +- It is now possible to use any base for floating point numbers as described in + EEP 75: Based Floating Point Literals. + + Computers represent floating point numbers in binary, but such numbers are + typically printed using base ten, for example 0.314159265e1. To maintain exact + bit-level precision when converting numbers to and from text, it is better to + use a base that matches the internally used base, such as 16 for a compact but + still exact representation, or 2 for visualizing or writing down the exact + internal format. One particular case where such exact representations are + useful is in code generating tools. + + Examples: + + > 2#0.111. + 0.875 + > 16#fefe.fefe#e16. + 1.2041849337671418e24 + + Own Id: OTP-19452 + Related Id(s): PR-9106 + + *** HIGHLIGHT *** + +- The callback function `handle_continue/2` in `gen_server` callback modules is + now cached like the others, thanks to code cleanup and optimization of the + internal behaviour loop. + + This should only improve performance, not affect functionality. + + Own Id: OTP-19474 + Related Id(s): PR-9333 + +- Encoding done by the `json` module has been optimized. + + Own Id: OTP-19476 + Related Id(s): PR-9251 + +- There is a new `zstd` module that does Zstandard compression. + + Own Id: OTP-19477 + Related Id(s): PR-9316 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- Functions of a module can now be grouped in the shell code completion by using + the _group_ key in the _-doc_ attribute e.g. ``` -doc(#{group=><<"Public + API">>). fetch()->... + + + Functions, callbacks and types in the module reference documentation of OTP is now grouped using this feature. + + Own Id: OTP-19483 + Related Id(s): [PR-9408] + + +- Added calendar:universal_time_to_system_time/1,2 and + calendar:local_time_to_system_time/1,2 + + Own Id: OTP-19505 + Related Id(s): PR-9445 + +- Improve error messages for json:decode/1. + + Own Id: OTP-19508 + Related Id(s): PR-9484 + +- ETS `heir` can be set without getting an `ETS-TRANSFER` message. Useful when + the heir is a supervisor process that cannot handle custom messages. + + Own Id: OTP-19512 + Related Id(s): PR-7970 + +- Added support for the Unicode 16 standard. + + Own Id: OTP-19516 + Related Id(s): PR-9141, PR-9518 + +- When documenting a function or type that needs to deal with durations, usually + we can document it as "time in milliseconds". Since the `timer` family of + functions (`hms`, `hours`, `seconds`, ...) all return time in milliseconds, it + is useful to be able to use this type in type specifications. + + Own Id: OTP-19526 + Related Id(s): PR-9515 + +- A new event time-out has been implemented in `gen_server`, that behaves more + like the one in `gen_statem`. + + See the type gen_server:action/0 for `{timeout|hibernate,...}`, and also + related functions. + + Own Id: OTP-19537 + Related Id(s): PR-9287, PR-9615, PR-9621 + +- Line numbers used to be reported in the following way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl, line 389) + + Starting from Erlang/OTP 28, line numbers are now reported in the following + way: + + 1> lists:last([]). + ** exception error: no function clause matching lists:last([]) (lists.erl:389) + + Own Id: OTP-19538 + Related Id(s): PR-9468 + + *** HIGHLIGHT *** + +- Upgrade pcre2 to 10.45 + + Own Id: OTP-19541 + Related Id(s): PR-9582 + +- Added functions that produce utf-8 binaries instead of iolists. New functions + are: io_lib:bformat/2, io_lib:bformat/3, io_lib:bfwrite/2, + io_lib:bfwrite/3, io_lib:bwrite/2 and io_lib:bwrite_string/3. + + Own Id: OTP-19556 + Related Id(s): PR-9772 + + *** HIGHLIGHT *** + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +- A list of PCRE2 incompatibilities is documented in a user's guide for stdlib. + + Own Id: OTP-19578 + Related Id(s): PR-9705 + +- Change automatic hibernation of static supervisors so that they will hibernate + after being idle for 1 second instead of only after starting, dynamic + supervisors (simple_one_for_one) will not be hibernated at all. An option to + the supervisor is added to make it configurable for the application. This + option defaults to 1 second for static supervisors and to infinity for the + simple_one_for_one supervisors. + + Own Id: OTP-19597 + Related Id(s): PR-9680 + + *** POTENTIAL INCOMPATIBILITY *** + +> #### Full runtime dependencies of stdlib-7.0 +> +> compiler-5.0, crypto-4.5, erts-16.0, kernel-10.0, sasl-3.0, syntax_tools-3.2.1 + +# syntax_tools-4.0 + +## Fixed Bugs and Malfunctions + +- A few minor issues were corrected in `syntax_tools`, as well in the + `erl_anno` module. + + Own Id: OTP-19422 + Related Id(s): PR-9253 + +## Improvements and New Features + +- Comprehensions have been extended with zip generators according to EEP 73. + + Example: + + 1> [A+B || A <- [1,2,3] && B <- [4,5,6]]. + [5,7,9] + + Own Id: OTP-19184 + Related Id(s): PR-8926 + + *** HIGHLIGHT *** + +- New strict generators have been added for comprehensions. + + The currently existing generators are "relaxed": they ignore terms in the + right-hand side expression that do not match the left-hand side pattern. + + The new strict generators fail with exception `badmatch` if a pattern doesn't + match. + + Examples: + + Using the current relaxed generator operator `<-`, any element not matching + the pattern `{_,_}` will be silently discarded: + + 1> [T || {_,_}=T <- [{ok,1},ok,{error,2}]]. + [{ok,1},{error,2}] + + If the intention is that all lists processed by a list comprehension must only + contain tuples of size two, using the new strict version of the operator + ensures that term not matching will cause a crash: + + 2> [T || {_,_}=T <:- [{ok,1},ok,{error,2}]]. + ** exception error: no match of right hand side value ok + + Using the strict generator operator to mark the intention that all list + elements must match the pattern could help finding mistakes quicker if + something unpexected is added to the list processed by the generator. + + The strict version for bitstring generators is `<:=`. + + Own Id: OTP-19317 + Related Id(s): PR-8625 + + *** HIGHLIGHT *** + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of syntax_tools-4.0 +> +> compiler-9.0, erts-16.0, kernel-10.3, stdlib-7.0 + +# tftp-1.2.3 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tftp-1.2.3 +> +> erts-6.0, kernel-6.0, stdlib-5.0 + +# tools-4.1.2 + +## Fixed Bugs and Malfunctions + +- A crash has been eliminated in tprof:collect/0 when unloading a module while + collecting traces. + + Own Id: OTP-19135 + Related Id(s): GH-8483, PR-8547 + +- Improved the `indent-region` Emacs command, which could indent badly when + inside multiline string. + + Own Id: OTP-19396 + Related Id(s): PR-9186 + +- eprof:start_profiling/3 can now return information about which process it + failed to trace. + + Own Id: OTP-19419 + Related Id(s): PR-9219 + +- Fixed a race condition when processes cause the Cover server to be started at + the same time. + + Own Id: OTP-19517 + Related Id(s): PR-9124 + +- Fix bug in `tprof` where the session name could not be set. + + Own Id: OTP-19580 + Related Id(s): PR-9648 + +- Add `tprof` to the `.app` file. + + Own Id: OTP-19628 + Related Id(s): PR-9787 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of tools-4.1.2 +> +> compiler-8.5, erts-15.0, erts-15.0, kernel-10.0, runtime_tools-2.1, stdlib-6.0 + +# wx-2.5 + +## Improvements and New Features + +- Fixed licenses in files and added ORT curations to the following apps: otp, + eldap, erl_interface, eunit, parsetools, stdlib, syntax_tools, and ERTS. + + Own Id: OTP-19478 + Related Id(s): PR-9376, PR-9402, PR-9819 + +- Added support for compiling Erlang/OTP for Windows on ARM64. + + Own Id: OTP-19480 + Related Id(s): PR-8734 + +- When compiling C/C++ code on Unix systems, the compiler hardening flags + suggested by the Open Source Security Foundation are now enabled by default. + To disable them, pass `--disable-security-hardening-flags` to `configure`. + + Own Id: OTP-19519 + Related Id(s): PR-9441 + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of wx-2.5 +> +> erts-12.0, kernel-8.0, stdlib-5.0 + +# xmerl-2.1.4 + +## Fixed Bugs and Malfunctions + +- With this change all public functions in xmerl have specs. + + Own Id: OTP-19534 + Related Id(s): PR-9327 + +## Improvements and New Features + +- The license and copyright header has changed format to include an + `SPDX-License-Identifier`. At the same time, most files have been updated to + follow a uniform standard for license headers. + + Own Id: OTP-19575 + Related Id(s): PR-9670 + +> #### Full runtime dependencies of xmerl-2.1.4 +> +> erts-6.0, kernel-8.4, stdlib-2.5 + +# Thanks to + +Adam Wight, Aleksander Lisiecki, Alexandre Rodrigues, Anders Ågren Thuné, Andrea +Leopardi, Ariel Otilibili, Benedikt Reinartz, Benjamin Philip, Brujo Benavides, +Chris Freeze, Christophe De Troyer, Cocoa, Dairon Medina Caro, Daniel Gorin, +Daniel Kozmacs, Dániel Szoboszlay, dependabotbot, Dmitri Vereshchagin, Dominic +Letz, Douglas Vought, Egor Ignatov, Eksperimental, Frank Hunleth, Freddie +Lamble, Fredrik Frantzen, Frej Drejhammar, Gary Rennie, Hichem Fantar, Ilya +Klyuchnikov, iri, Isabell H, Jan Uhlig, Jean-Louis Huynen, Jean-Sébastien +Pédron, João Henrique Ferreira de Freitas, Johannes Christ, Jonas Bernoulli, +Jonatan Kłosko, José Valim, Juan Barrios, Julian Doherty, Keyhan Jannat Khah ☕, +Kirill A. Korinsky, lucioleKi, Lukasz Samson, Maria Scott, Mario Idival, Mario +Uher, Marko Mindek, Martin Davidsson, Matwey V. Kornilov, Maxim Fedorov, Michael +Davis, Michael Neumann, Nelson Vides, Nicholas Moen, Onno Vos, Paul Guyot, +Philip Munksgaard, preciz, Richard Carlsson, Roberto Aloi, Robin Morisset, +Roeland van Batenburg, ruslandoga, Ryan Kirkman, S0AndS0, sabiwara, Sam Weaver, +Sergei Shuvatov, siiky, Simon Cornish, Siri Hansen, Stavros Aronis, Stefan +Grundmann, Steffen Deusch, Tobias Pfeiffer, Tomer, Vadim Yanitskiy, Vance +Shipley, William Fank Thomé, williamthome, William Yang, Wojtek Mach, Wojtek +Surowka, yagogarea, Yoshiyuki Kurauchi, Zero King + |