From 6eb9d5639a8223ce9eed9f59f6a0318115b52ac3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 16 May 2023 11:12:37 +0200 Subject: OTP-26.0 --- release-notes/OTP-26.0.README.txt | 3962 +++++++++++++++++++++++++++++++++++++ 1 file changed, 3962 insertions(+) create mode 100644 release-notes/OTP-26.0.README.txt (limited to 'release-notes/OTP-26.0.README.txt') 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: <> = <> = 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_, dirty CPU schedulers + erts_dcpus_, and dirty IO schedulers + erts_dios_. 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: <> = <> = 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 . Like a 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_, dirty CPU schedulers + erts_dcpus_, and dirty IO schedulers + erts_dios_. 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: <> = <> = 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 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + -- cgit v1.2.3