diff options
Diffstat (limited to 'release-notes/OTP-25.0.README.txt')
-rw-r--r-- | release-notes/OTP-25.0.README.txt | 3182 |
1 files changed, 3182 insertions, 0 deletions
diff --git a/release-notes/OTP-25.0.README.txt b/release-notes/OTP-25.0.README.txt new file mode 100644 index 0000000..3c6bc4d --- /dev/null +++ b/release-notes/OTP-25.0.README.txt @@ -0,0 +1,3182 @@ +Inital Release: OTP 25.0 +Git Tag: OTP-25.0 +Date: 2022-05-18 +Trouble Report Id: OTP-15991, OTP-15993, OTP-16464, OTP-16607, + OTP-16702, OTP-16852, OTP-16982, OTP-17119, + OTP-17151, OTP-17224, OTP-17304, OTP-17318, + OTP-17323, OTP-17351, OTP-17370, OTP-17414, + OTP-17447, OTP-17471, OTP-17479, OTP-17480, + OTP-17481, OTP-17504, OTP-17518, OTP-17523, + OTP-17524, OTP-17544, OTP-17550, OTP-17551, + OTP-17554, OTP-17555, OTP-17556, OTP-17558, + OTP-17561, OTP-17562, OTP-17566, OTP-17569, + OTP-17589, OTP-17592, OTP-17608, OTP-17612, + OTP-17617, OTP-17627, OTP-17630, OTP-17636, + OTP-17644, OTP-17654, OTP-17660, OTP-17661, + OTP-17667, OTP-17669, OTP-17676, OTP-17681, + OTP-17682, OTP-17683, OTP-17684, OTP-17685, + OTP-17705, OTP-17710, OTP-17717, OTP-17720, + OTP-17728, OTP-17729, OTP-17733, OTP-17752, + OTP-17753, OTP-17755, OTP-17758, OTP-17762, + OTP-17772, OTP-17778, OTP-17779, OTP-17784, + OTP-17798, OTP-17802, OTP-17810, OTP-17819, + OTP-17820, OTP-17821, OTP-17824, OTP-17826, + OTP-17832, OTP-17836, OTP-17841, OTP-17842, + OTP-17846, OTP-17855, OTP-17858, OTP-17860, + OTP-17866, OTP-17869, OTP-17870, OTP-17878, + OTP-17881, OTP-17882, OTP-17884, OTP-17885, + OTP-17889, OTP-17890, OTP-17892, OTP-17894, + OTP-17897, OTP-17899, OTP-17901, OTP-17908, + OTP-17909, OTP-17910, OTP-17911, OTP-17915, + OTP-17920, OTP-17921, OTP-17923, OTP-17925, + OTP-17927, OTP-17930, OTP-17935, OTP-17939, + OTP-17945, OTP-17950, OTP-17951, OTP-17953, + OTP-17958, OTP-17961, OTP-17964, OTP-17965, + OTP-17968, OTP-17969, OTP-17974, OTP-17976, + OTP-17977, OTP-17980, OTP-17984, OTP-17985, + OTP-17986, OTP-17988, OTP-17990, OTP-17991, + OTP-17996, OTP-17997, OTP-17999, OTP-18000, + OTP-18001, OTP-18003, OTP-18006, OTP-18008, + OTP-18009, OTP-18011, OTP-18012, OTP-18014, + OTP-18015, OTP-18020, OTP-18033, OTP-18034, + OTP-18035, OTP-18036, OTP-18038, OTP-18045, + OTP-18047, OTP-18063, OTP-18067, OTP-18068, + OTP-18070, OTP-18079, OTP-18083, OTP-18084, + OTP-18085, OTP-18086, OTP-18087, OTP-18088, + OTP-18092 +Seq num: ERIERL-590, ERIERL-663, ERIERL-728, + ERIERL-760, ERIERL-792, ERIERL-798, ERL-1347, + GH-2375, GH-2690, GH-4143, GH-4492, GH-4622, + GH-4673, GH-4759, GH-4784, GH-4819, GH-4853, + GH-4915, GH-4965, GH-4968, GH-4971, GH-5016, + GH-5071, GH-5093, GH-5094, GH-5140, GH-5204, + GH-5214, GH-5276, GH-5297, GH-5368, GH-5376, + GH-5379, GH-5402, GH-5403, GH-5463, GH-5513, + GH-5606, GH-5617, GH-5655, GH-5683, GH-5728, + GH-5760, GH-5767, GH-5780, GH-5782, GH-5801, + GH-5828, GH-5903, GH-5961 +System: OTP +Release: 25 +Application: asn1-5.0.19, common_test-1.23, compiler-8.2, + crypto-5.1, debugger-5.3, dialyzer-5.0, + diameter-2.2.6, edoc-1.2, erl_docgen-1.3, + erl_interface-5.3, erts-13.0, eunit-2.7.1, + inets-8.0, jinterface-1.13, kernel-8.4, + megaco-4.4, mnesia-4.21, observer-2.12, + odbc-2.14, parsetools-2.4, public_key-1.13, + runtime_tools-1.19, sasl-4.2, snmp-5.13, + ssh-4.14, ssl-10.8, stdlib-4.0, + syntax_tools-3.0, tools-3.5.3, wx-2.2, + xmerl-1.3.29 +Predecessor: OTP + + Check out the git tag OTP-25.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-15993 Application(s): ssl + Related Id(s): GH-4143 + + With this change, it is possible to provide several + certificates. Most appropriate will be selected based + on negotiated properties. + + + OTP-16702 Application(s): compiler, erts + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-16982 Application(s): erts + Related Id(s): PR-5020 + + The signal queue of a process with + message_queue_data=off_heap* has been optimized to + allow parallel reception of signals from multiple + processes. + + This is possible to do as Erlang only guarantees that + signals (i.e., message signals and non-message signals) + sent from a single process to another process are + ordered in send order. However, there are no ordering + guarantees for signals sent from different processes to + a particular process. Therefore, several processes can + send signals in parallel to a specific process without + synchronizing with each other. However, such signal + sending was previously always serialized as the senders + had to acquire the lock for the outer signal queue of + the receiving process. This parallel signal sending + optimization yields much better scalability for signal + sending than what was previously possible, see + https://erlang.org/bench/sigq_bench_result.html for + benchmark results. + + * Information about how to enable the + message_queue_data=off_heap setting can be found in the + documentation of the function erlang:process_flag/2. + + + OTP-17119 Application(s): erts + Related Id(s): PR-4869 + + The JIT now works for 64-bit ARM processors. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17351 Application(s): stdlib + Related Id(s): GH-4673, PR-4952 + + The format_status/2 callback for gen_server, gen_statem + and gen_event has been deprecated in favor of the new + format_status/1 callback. + + The new callback adds the possibility to limit and + change many more things than the just the state, such + as the last received message, the reason for + terminating and more events specific to each type of + behavior. See the respective modules documentation for + more details. + + + OTP-17481 Application(s): stdlib + Related Id(s): PR-4811 + + The timer module has been modernized and made more + efficient, which makes the timer server less + susceptible to being overloaded. The timer:sleep/1 + function now accepts an arbitrarily large integer. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17705 Application(s): compiler + Related Id(s): PR-5411 + + The maybe ... end construction proposed in EEP-49 has + been implemented. It can simplify complex code where + otherwise deeply nested cases would have to be used. + + To enable maybe, give the option -enable-feature + maybe_expr to erlc or add -feature(maybe_expr, enable). + inside the module. + + + OTP-17710 Application(s): otp + Related Id(s): PR-5597 + + A new DEVELOPMENT how-to guide has been added that + describes how to build and test Erlang/OTP when fixing + bugs or developing new functionality. + + The makefile system has been extended to make it easier + to run tests at different granulates directly from the + command line. This new functionality is described in + the development how-to. + + Using the extended makefile system, testing has been + added to the Github actions run for each opened PR so + that more bugs are caught earlier when bug fixes and + new features are proposed. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17798 Application(s): public_key + Related Id(s): GH-5760 + + Added functions to retrieve OS provided CA-certs. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** POTENTIAL INCOMPATIBILITY *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17953 Application(s): stdlib + Related Id(s): PR-5621 + + Added filelib:ensure_path/1 that ensures that all + directories for the given path exists (unlike + filelib:ensure_dir/1, which will not create the last + segment of the path). + + + OTP-17969 Application(s): stdlib + Related Id(s): PR-5588 + + The functions groups_from_list/2 and groups_from_list/3 + have been added to the maps module. + + + OTP-17977 Application(s): stdlib + Related Id(s): GH-5606, PR-5766 + + The functions uniq/1 and uniq/2 for removing duplicates + have been added to the lists module. + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + OTP-18011 Application(s): stdlib + + A new PRNG have been added to the rand module: mwc59 + which has been developed in collaboration with + Sebastiano Vigna. It is intended for applications that + need really fast pseudo-random numbers, and it comes + with two output value scramblers, one fast and one + thorough. + + Two internal functions for the exsp generator have also + been exported so they can be used outside the rand + plug-in framework to shave off some overhead. + + The internal splitmix64 generator has also been + exported which can be useful for seeding other kinds of + PRNG:s than its own. + + + OTP-18086 Application(s): crypto + Related Id(s): OTP-16282, OTP-16643, OTP-16644, + OTP-17701, OTP-17702, OTP-17704 + + The cryptolib API deprecated in OpenSSL 3.0 is now no + longer used with a few exceptions listed below. + + Although OpenSSL 3.0.x itself is stable, its usage in + OTP/crypto should still not be considered suitable for + production code. + + The use of ENGINEs is still disabled by default when + using 3.0. + + Deprecated functions are still called in the + otp_test_engine.c (only used in tests), in mac.c + (EVP_PKEY_new_CMAC_key) and five function calls in ec.c + (EVP_PKEY_assign, EC_KEY_get_conv_form, + EVP_PKEY_get1_EC_KEY, EC_KEY_get0_group and + EC_KEY_set_public_key). + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-17544 Application(s): stdlib + Related Id(s): PR-5008 + + Fix gen_server:call with the first argument as self() + to throw an error instead of failing with a timeout. + + The same fix has also been done for gen_statem:call/3, + gen_event:sync_notify/2 and any other functionality + relying on the internal gen:call/3 function. + + A similar fix was also done when using io:format/2 and + the current group_leader was set to the current + process. + + + OTP-17569 Application(s): erts + Related Id(s): PR-4793 + + The growth rate of writable binaries has been adjusted + to only increase by 20% after 16MB in size. Before this + change the size would always double. + + This change may degrade write performance of large + binaries. + + + OTP-17627 Application(s): inets, stdlib + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17644 Application(s): dialyzer + Related Id(s): PR-5223 + + Fixed a bug that could cause the type analyzer to enter + an infinite loop. + + + OTP-17681 Application(s): kernel + Related Id(s): PR-5307 + + The most, or at least the most used, rpc operations now + require erpc support in order to communicate with other + Erlang nodes. erpc was introduced in OTP 23. That is, + rpc operations against Erlang nodes of releases prior + to OTP 23 will fail. + + + OTP-17683 Application(s): erts + Related Id(s): PR-5306 + + Distributed spawn operations now require distributed + spawn_request() support. Distributed spawn_request() + was introduced in OTP 23. That is, distributed spawn + operations against Erlang nodes of releases prior to + OTP 23 will fail. + + + OTP-17821 Application(s): dialyzer + Related Id(s): GH-5016, OTP-17554, PR-5408 + + The default location of the plt has been changed from + $HOME to filename:basedir(user_cache,"erlang"). + + + OTP-17866 Application(s): inets + + This change removes deprecated functions: + http_uri:parse/1, http_uri:parse/2 and + http_uri:scheme_defaults/0. + + This change delays until OTP-26 removal of deprecated + functions: http_uri:encode/1 and http_uri:decode/1. + + This change marks httpd_util:decode_hex/1 and + httpd_util:encode_hex/1 as deprecated. + + + OTP-17889 Application(s): inets + + Fixed typo in Reason term returned from + httpc_handler:handle_http_body. + + After this change, could_not_establish_ssl_tunnel atom + is returned within Reason term. + + + OTP-17894 Application(s): syntax_tools + Related Id(s): PR-5509 + + The erl_syntax_lib:analyze_attribute/1 function would + return {Name, {Name, Value}} instead of {Name, Value} + (which is the documented return value). + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** HIGHLIGHT *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17920 Application(s): ssh + + The representation of Edward curves (ed25519 and ed448) + inside ssh had a temporary representation (ed_pri and + ed_pub). + + That is now changed to the public_key form. See the + manual for more information. + + + OTP-17921 Application(s): public_key + + The deprecated public_key functions ssh_decode/2, + ssh_encode/2, ssh_hostkey_fingerprint/1 and + ssh_hostkey_fingerprint/2 are removed. + + They are replaced by ssh_file:decode/2, + ssh_file:encode/2, ssh:hostkey_fingerprint/1 and + ssh:hostkey_fingerprint/2 respectively. + + Note that the decode/2 and encode/2 are not exact + replacement functions, some minor changes may be + needed. Se the manual for more information. + + + OTP-17925 Application(s): stdlib + Related Id(s): PR-5631 + + The non-local function handler for the erl_eval can now + be called with either two or three arguments. When + called with three arguments, the first argument is the + annotation for the node in the abstract format. + + All errors during evaluation will now be passed through + erlang:raise/3. If the restricted shell is active and + it does not let erlang:raise/3 through, evaluation + errors will be printed in less clear way. See the + documentation for restricted shell in shell. + + + OTP-17950 Application(s): wx + + Added aux1Down and aux2Down fields to the wxMouseState + record. Since one record have been changed a + recompilation of user code might be required. + + + OTP-17965 Application(s): crypto + + The information in error messages are increased. + + Previously the error was signaled with en error class + exception badarg, notsup or error, and also in some + more ways like an other exception or a return value in + a non-standardized format. + + Now it is an error-class exception + {notsup|badarg|error, InfoFromCfile, + Description::string()}. + + The InfoFromCfile is a term with name and line number + of the C-file where the error was found. This is + primarily intended for a crypto maintainer or an + advanced user to find the cause of complicated errors - + maybe in crypto itself. The contents of that term might + be changed in the future. + + The Description is a clear text string that describes + the error. In case of badarg and notsup the intention + is that it should help the user to find the cause ("Bad + key size" as an example). Specially for some error that + are unlikely, the string may not be possible to + understand without deep knowledge of the underlying + cryptolib. Such messages are intended for a crypto + maintainer. + + The first element on call stack (the S in try ... catch + error:E:S .... end) gives more information like the + actual argument list in the call of crypto and the + argument number (if possible) in the call to the NIF + inside crypto. + + The functions in crypto affected by this change are: + + sign/4, sign/5, verify/5, verify/6, + + generate_key/2, generate_key/3, compute_key/4, + + hash/2, hash/4, hash_init/1, hash_update/4, + hash_final/1, + + mac/3,4, mac_init/3, mac_update/2, mac_final/2, + + pbkdf2_hmac/5, + + public_encrypt/4, private_decrypt/4, private_encrypt/4, + public_decrypt/4 + + This schema was introduced earlier in: + + crypto_init/3, crypto_init/4, crypto_update/2, + crypto_final/1, crypto_get_data/1, + + crypto_one_time/4, crypto_one_time/5, + crypto_one_time_aead/6, crypto_one_time_aead/7 + + + OTP-17991 Application(s): stdlib + + The function filename:safe_relative_path/1, which has + been deprecated since OTP 25, has been removed. Use + filelib:safe_relative_path/2 instead. + + + OTP-18009 Application(s): stdlib + Related Id(s): PR-5785 + + Fixed string:next_grapheme/1 to return an empty binary + in the tail for binary input for the last grapheme + cluster. + + + --------------------------------------------------------------------- + --- OTP-25.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17224 Application(s): erts, otp + + A test case has been added to the otp_SUITE that test + that the dependency versions for OTP's applications are + correct. The test case uses xref to check if the used + functions are available in the specified dependency + versions. The test case depends on the Erlang/OTP + team's testing infrastructure and will be skipped if + its dependencies are not met. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17669 Application(s): erl_docgen, otp + Related Id(s): PR-5226 + + Any exported, but private function or module in + Erlang/OTP now generate an EEP-48 style documentation + entry with the content set to hidden. + + Before this change, exported but private functions and + modules did not have any entry at all. + + + OTP-17710 Application(s): otp + Related Id(s): PR-5597 + + *** HIGHLIGHT *** + + A new DEVELOPMENT how-to guide has been added that + describes how to build and test Erlang/OTP when fixing + bugs or developing new functionality. + + The makefile system has been extended to make it easier + to run tests at different granulates directly from the + command line. This new functionality is described in + the development how-to. + + Using the extended makefile system, testing has been + added to the Github actions run for each opened PR so + that more bugs are caught earlier when bug fixes and + new features are proposed. + + + --------------------------------------------------------------------- + --- asn1-5.0.19 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17980 Application(s): asn1 + + The atom maybe has been quoted in the source code. + + + Full runtime dependencies of asn1-5.0.19: erts-11.0, kernel-7.0, + stdlib-3.13 + + + --------------------------------------------------------------------- + --- common_test-1.23 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17881 Application(s): common_test + Related Id(s): PR-5581 + + Fix bug when running parallel test cases and together + with one or more ct hooks that would cause the hook + lock process to crash and produce printouts in the ct + logs. + + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17676 Application(s): common_test + Related Id(s): PR-5021 + + Remove unused and undocumented tracer node + functionality. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17882 Application(s): common_test + Related Id(s): PR-5581 + + The cth_surefire ct hook has been updated to include + the file and line number of the executed test case in + the xml output. + + The performance of the hook has also been improved + greatly for test runs with many test cases. + + + Full runtime dependencies of common_test-1.23: compiler-6.0, + crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4, + observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0, + stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-8.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17810 Application(s): compiler + Related Id(s): GH-5379 + + A subtle bug regarding variable scoping has been + corrected. Consider this example: + + (A=1) + fun() -> A = 2() end + + In the shell, the expression correctly evaluates to 3. + In compiled code, it raised a {badmatch, 2} exception. + + + OTP-17820 Application(s): compiler + + Fixed a rare bug that would crash the compiler during + type optimization. + + + OTP-17860 Application(s): compiler + Related Id(s): GH-5513, OTP-17226 + + Starting in OTP 24, when a fun was created and + immediately used, it would be inlined. An unintended + consequence of the inlining was that what would be a + function_clause exception without the inlining would + now be a rather confusing case_clause exception. This + has been corrected, so that function_clause exceptions + remain function_clause exceptions in inlined code. + + + OTP-18083 Application(s): compiler, stdlib + + If a default record field initialization (_ = Expr) was + used even though all records fields were explicitly + initialized, Expr would not be evaluated. That would + not be a problem, except when Expr would bind a + variable subsequently used, in which case the compiler + would crash. + + As an example, if record #r{} is defined to have only + one field a, the following code would crash the + compiler: + + #r{a=[],_=V=42}, V + + To fix that problem, the compiler will make sure that + Expr is always evaluated at least once. The compiler + will now rewrite the example to essentially: + + V=42, #r{a=[]}, V + + + --- Improvements and New Features --- + + OTP-16702 Application(s): compiler, erts + + *** HIGHLIGHT *** + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + *** HIGHLIGHT *** + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + *** HIGHLIGHT *** + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + *** HIGHLIGHT *** + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17685 Application(s): compiler, erts + + Improved the JIT's support for external tools like perf + and gdb, allowing them to show line numbers and even + the original Erlang source code when that can be found. + + To aid them in finding the source code, the + absolute_path compiler option has been added to embed + the absolute file path of a module. + + + OTP-17705 Application(s): compiler + Related Id(s): PR-5411 + + *** HIGHLIGHT *** + + The maybe ... end construction proposed in EEP-49 has + been implemented. It can simplify complex code where + otherwise deeply nested cases would have to be used. + + To enable maybe, give the option -enable-feature + maybe_expr to erlc or add -feature(maybe_expr, enable). + inside the module. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + *** HIGHLIGHT *** + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17842 Application(s): compiler + + Improved optimization of try/catch expressions. + + + OTP-17885 Application(s): compiler + Related Id(s): GH-5140 + + The beam_trim pass of the compiler could be extremely + slow for huge straight-line functions. It will now + compile such functions much faster (down to seconds + from minutes for some huge functions). + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of compiler-8.2: crypto-5.1, erts-13.0, + kernel-8.4, stdlib-4.0 + + + --------------------------------------------------------------------- + --- crypto-5.1 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17858 Application(s): crypto + Related Id(s): ERIERL-728 + + Fix timing bug in ensure_engine_loaded + + When two ensure_engine_loaded() calls were done in + parallel there was a possibility that a crypto lib + function was called by both instead of just one of them + which resulted in an error. This is solved by moving + the implementation from erlang down into a NIF function + that uses a mutex to protect the sensitive part. + + + OTP-17984 Application(s): crypto + + Remove faulty types run_time_error() and + descriptive_error(). + + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17471 Application(s): crypto + Related Id(s): PR-4750 + + Add crypto:hash_equals/2 + + + OTP-17561 Application(s): crypto + + Add /opt/homebrew/opt/openssl to standard locations to + search for OpenSSL cryptolib. + + + OTP-17870 Application(s): crypto + + crypto_dyn_iv_init/3 and crypto_dyn_iv_update/3 are + deprecated. + + + OTP-17965 Application(s): crypto + + *** POTENTIAL INCOMPATIBILITY *** + + The information in error messages are increased. + + Previously the error was signaled with en error class + exception badarg, notsup or error, and also in some + more ways like an other exception or a return value in + a non-standardized format. + + Now it is an error-class exception + {notsup|badarg|error, InfoFromCfile, + Description::string()}. + + The InfoFromCfile is a term with name and line number + of the C-file where the error was found. This is + primarily intended for a crypto maintainer or an + advanced user to find the cause of complicated errors - + maybe in crypto itself. The contents of that term might + be changed in the future. + + The Description is a clear text string that describes + the error. In case of badarg and notsup the intention + is that it should help the user to find the cause ("Bad + key size" as an example). Specially for some error that + are unlikely, the string may not be possible to + understand without deep knowledge of the underlying + cryptolib. Such messages are intended for a crypto + maintainer. + + The first element on call stack (the S in try ... catch + error:E:S .... end) gives more information like the + actual argument list in the call of crypto and the + argument number (if possible) in the call to the NIF + inside crypto. + + The functions in crypto affected by this change are: + + sign/4, sign/5, verify/5, verify/6, + + generate_key/2, generate_key/3, compute_key/4, + + hash/2, hash/4, hash_init/1, hash_update/4, + hash_final/1, + + mac/3,4, mac_init/3, mac_update/2, mac_final/2, + + pbkdf2_hmac/5, + + public_encrypt/4, private_decrypt/4, private_encrypt/4, + public_decrypt/4 + + This schema was introduced earlier in: + + crypto_init/3, crypto_init/4, crypto_update/2, + crypto_final/1, crypto_get_data/1, + + crypto_one_time/4, crypto_one_time/5, + crypto_one_time_aead/6, crypto_one_time_aead/7 + + + OTP-18067 Application(s): crypto + Related Id(s): PR-5866 + + Add Output Feedback mode (OFB) support for AES + encryption / decryption for key sizes of 128, 192 and + 256 bits. + + + OTP-18086 Application(s): crypto + Related Id(s): OTP-16282, OTP-16643, OTP-16644, + OTP-17701, OTP-17702, OTP-17704 + + *** HIGHLIGHT *** + + The cryptolib API deprecated in OpenSSL 3.0 is now no + longer used with a few exceptions listed below. + + Although OpenSSL 3.0.x itself is stable, its usage in + OTP/crypto should still not be considered suitable for + production code. + + The use of ENGINEs is still disabled by default when + using 3.0. + + Deprecated functions are still called in the + otp_test_engine.c (only used in tests), in mac.c + (EVP_PKEY_new_CMAC_key) and five function calls in ec.c + (EVP_PKEY_assign, EC_KEY_get_conv_form, + EVP_PKEY_get1_EC_KEY, EC_KEY_get0_group and + EC_KEY_set_public_key). + + + Full runtime dependencies of crypto-5.1: erts-9.0, kernel-5.3, + stdlib-3.9 + + + --------------------------------------------------------------------- + --- debugger-5.3 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + Full runtime dependencies of debugger-5.3: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, wx-2.0 + + + --------------------------------------------------------------------- + --- dialyzer-5.0 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17644 Application(s): dialyzer + Related Id(s): PR-5223 + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed a bug that could cause the type analyzer to enter + an infinite loop. + + + --- Improvements and New Features --- + + OTP-17524 Application(s): dialyzer + + Optimize operations in the erl_types module. + Parallelize the Dialyzer pass remote. + + + OTP-17654 Application(s): dialyzer + Related Id(s): GH-5214 + + Added the missing_return and extra_return options to + raise warnings when specifications differ from inferred + types. These are similar to, but not quite as verbose + as overspecs and underspecs. + + + OTP-17819 Application(s): dialyzer + + The race_conditions option has been removed. + + + OTP-17821 Application(s): dialyzer + Related Id(s): GH-5016, OTP-17554, PR-5408 + + *** POTENTIAL INCOMPATIBILITY *** + + The default location of the plt has been changed from + $HOME to filename:basedir(user_cache,"erlang"). + + + OTP-17826 Application(s): dialyzer + Related Id(s): PR-5498 + + dialyzer will now honor dependencies inside type + declarations. That is, if the declaration of an + exported type changes, all modules using said type will + be revisited. + + + OTP-17897 Application(s): dialyzer + Related Id(s): PR-5651 + + Dialyzer now better understands the types for min/2, + max/2, and erlang:raise/3. Because of that, Dialyzer + can potentially generate new warnings. In particular, + functions that use erlang:raise/3 could now need a spec + with a no_return() return type to avoid an unwanted + warning. + + + OTP-17964 Application(s): dialyzer + Related Id(s): PR-5660 + + The typer_core module has been added to provide an + Erlang API for running typer. + + + OTP-18035 Application(s): dialyzer + Related Id(s): PR-5802 + + Added the --annotate-in-place option to typer, which + can be used to annotate the specs that the tool + inferred directly into the source code files. + + + Full runtime dependencies of dialyzer-5.0: compiler-8.0, erts-12.0, + kernel-8.0, stdlib-3.15, syntax_tools-2.0, wx-2.0 + + + --------------------------------------------------------------------- + --- diameter-2.2.6 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17976 Application(s): diameter + Related Id(s): GH-5463 + + Fix decode of non-IP address types; that is, of values + of the derived AVP data format Address whose first two + octets specify an address family other than 1 (IP) or 2 + (IP6). Such values have never been decoded, and were + treated as decode errors. They're now decoded to a + 2-tuple of the integer() address family and binary() + remaining octets, with no family-specific decode. The + 2-tuple distinguishes the decode from the 4-tuple and + 8-tuple IP address decodes. 2-tuples are also now + encoded. + + Note that even currently unassigned address families + are decoded: only the reserved values, 0 and 65535, are + treated as errors. + + + Full runtime dependencies of diameter-2.2.6: erts-10.0, kernel-3.2, + ssl-9.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- edoc-1.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17550 Application(s): edoc + Related Id(s): GH-5094, PR-5106 + + Fix unused types warnings in internal edoc module. + + + --- Improvements and New Features --- + + OTP-17556 Application(s): edoc + Related Id(s): PR-5023 + + Add source file to the warning on skipped tags when + generating EEP-48 style docs. + + + OTP-17733 Application(s): edoc + Related Id(s): PR-5205 + + Fix the doc chunks generators to emit documentation + even if there is not module level documentation. + + Fix the doc chunks generators to respect the @hidden + and @private tags properly for both modules and + functions. + + + Full runtime dependencies of edoc-1.2: erts-6.0, inets-5.10, + kernel-3.0, stdlib-3.15, syntax_tools-2.0, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_docgen-1.3 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18084 Application(s): erl_docgen + Related Id(s): PR-5948 + + Fix types that are not derived from code to display the + correct information in EEP-48 style documentation + chunks. + + + --- Improvements and New Features --- + + OTP-17669 Application(s): erl_docgen, otp + Related Id(s): PR-5226 + + Any exported, but private function or module in + Erlang/OTP now generate an EEP-48 style documentation + entry with the content set to hidden. + + Before this change, exported but private functions and + modules did not have any entry at all. + + + Full runtime dependencies of erl_docgen-1.3: edoc-1.0, erts-11.0, + kernel-8.0, stdlib-3.15, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-5.3 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17846 Application(s): erl_interface + Related Id(s): PR-5558 + + erl_call no longer links against nsl on platforms where + gethostbyname is provided by libc. + + + --- Improvements and New Features --- + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17802 Application(s): erl_interface + Related Id(s): PR-5347 + + Changed creation arguments, of function ei_connect_init + and friends, from type short to unsigned int for full + 32-bit range. + + + --- Known Bugs and Problems --- + + OTP-16607 Application(s): erl_interface + Related Id(s): OTP-16608 + + The ei API for decoding/encoding terms is not fully + 64-bit compatible since terms that have a + representation on the external term format larger than + 2 GB cannot be handled. + + + --------------------------------------------------------------------- + --- erts-13.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17447 Application(s): erts, kernel + Related Id(s): GH-4819 + + The socket option 'reuseaddr' is *no longer* ignored on + Windows. + + + OTP-17569 Application(s): erts + Related Id(s): PR-4793 + + *** POTENTIAL INCOMPATIBILITY *** + + The growth rate of writable binaries has been adjusted + to only increase by 20% after 16MB in size. Before this + change the size would always double. + + This change may degrade write performance of large + binaries. + + + OTP-17661 Application(s): erts, stdlib + Related Id(s): PR-5165 + + Fix reduction counting bug in re:run that caused the + function to yield too frequently when doing global + matches. + + + OTP-17758 Application(s): erts + Related Id(s): PR-5391 + + Fix spelling mistakes in epmd error messages. + + + OTP-17779 Application(s): erts + Related Id(s): GH-5403, PR-5599 + + Fix bug where the "newshell" would trigger a newline at + the column width of the terminal, even if the next + character to be printed was a newline. This would cause + the terminal to render two newlines instead of one. + + + OTP-17832 Application(s): erts, stdlib + Related Id(s): PR-5494 + + Fix the memory value returned from ets:info(Tid,memory) + when the read_concurrency option is used. + + Before this fix the memory used by the scheduler + specific lock cache lines was not counted towards the + total. This caused the returned memory usage to be very + incorrect on systems with many schedulers for tables + with man locks. + + + OTP-17836 Application(s): erts + Related Id(s): PR-5546 + + Fix the undocumented --profile_boot option to work + again. + + + OTP-18020 Application(s): erts, kernel + + [socket] Encode of sockaddr has been improved. + + + OTP-18047 Application(s): erts + Related Id(s): PR-5861 + + Fix erl_child_setup (the program used by + open_port({spawn,...}) and os:cmd/1) to better handle + partial reads from the Erlang VM. + + + OTP-18068 Application(s): erts + Related Id(s): GH-5903 + + The runtime system would crash when attempting to + create more than 33554431 atoms. + + + --- Improvements and New Features --- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + *** HIGHLIGHT *** + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-16464 Application(s): erts, kernel + + The net module now works on Windows. + + + OTP-16702 Application(s): compiler, erts + + *** HIGHLIGHT *** + + To enable more optimizations, BEAM files compiled with + OTP 21 and earlier cannot be loaded in OTP 25. + + + OTP-16852 Application(s): erts + Related Id(s): ERL-1347, PR-5195 + + Optimize minor garbage collection for processes with + large number of binaries, funs and/or external + pids/ports/refs. This is a continuation of the + optimization (OTP-17602) released in OTP-24.1. + + + OTP-16982 Application(s): erts + Related Id(s): PR-5020 + + *** HIGHLIGHT *** + + The signal queue of a process with + message_queue_data=off_heap* has been optimized to + allow parallel reception of signals from multiple + processes. + + This is possible to do as Erlang only guarantees that + signals (i.e., message signals and non-message signals) + sent from a single process to another process are + ordered in send order. However, there are no ordering + guarantees for signals sent from different processes to + a particular process. Therefore, several processes can + send signals in parallel to a specific process without + synchronizing with each other. However, such signal + sending was previously always serialized as the senders + had to acquire the lock for the outer signal queue of + the receiving process. This parallel signal sending + optimization yields much better scalability for signal + sending than what was previously possible, see + https://erlang.org/bench/sigq_bench_result.html for + benchmark results. + + * Information about how to enable the + message_queue_data=off_heap setting can be found in the + documentation of the function erlang:process_flag/2. + + + OTP-17119 Application(s): erts + Related Id(s): PR-4869 + + *** HIGHLIGHT *** + + The JIT now works for 64-bit ARM processors. + + + OTP-17151 Application(s): compiler, erts + Related Id(s): ERIERL-590, PR-5479 + + *** HIGHLIGHT *** + + Added support for the compile attribute -nifs() to + empower compiler and loader with information about + which functions may be overridden as NIFs by + erlang:load_nif/2. It is recommended to use this + attribute in all modules that load NIF libraries. + + + OTP-17224 Application(s): erts, otp + + A test case has been added to the otp_SUITE that test + that the dependency versions for OTP's applications are + correct. The test case uses xref to check if the used + functions are available in the specified dependency + versions. The test case depends on the Erlang/OTP + team's testing infrastructure and will be skipped if + its dependencies are not met. + + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17504 Application(s): compiler, erts + Related Id(s): GH-4971, PR-5281, PR-5752 + + *** HIGHLIGHT *** + + When binary construction using the binary syntax fails, + the error message printed in the shell and by + erl_error:format_exception/3,4 will contain more + detailed information about what went wrong. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17555 Application(s): erts + Related Id(s): PR-5027 + + Make byte_size/1 and binary_part/2/3 callable from + match specs (in ETS and tracing). + + + OTP-17558 Application(s): erts, kernel + Related Id(s): GH-5402, OTP-17538, PR-5111 + + Dynamic node name improvements: erlang:is_alive/0 + changed to return true for pending dynamic node name + and new function net_kernel:get_state/0. + + + OTP-17562 Application(s): erts + Related Id(s): GH-4492 + + A new option called short has been added to the + functions erlang:float_to_list and + erlang:float_to_binary. This option creates the + shortest correctly rounded string representation of the + given float that can be converted back to the same + float again. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17630 Application(s): erts, stdlib + + The signal queue benchmark in parallel_messages_SUITE + and the ETS benchmark in ets_SUITE have benchmark + result visualization HTML pages with "fill-screen" + buttons to make the graphs bigger. This button did not + work as intended before. When pressing the button for a + graph, the last graph got replaced with a bigger + version and not the one over the button. This is now + fixed. + + + OTP-17636 Application(s): erts + + The test case num_bif_SUITE:t_float_to_string + previously failed sometimes as it assumed a certain + rounding of floats printed with sprintf but the + rounding type is platform specific. + + + OTP-17660 Application(s): erts + Related Id(s): PR-5164 + + Optimize interpreter to create heap binaries of small + match contexts if possible. + + This optimization was already done in the JIT. + + + OTP-17667 Application(s): erts + Related Id(s): PR-5237 + + Optimize integer multiplication for x86 JIT + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17683 Application(s): erts + Related Id(s): PR-5306 + + *** POTENTIAL INCOMPATIBILITY *** + + Distributed spawn operations now require distributed + spawn_request() support. Distributed spawn_request() + was introduced in OTP 23. That is, distributed spawn + operations against Erlang nodes of releases prior to + OTP 23 will fail. + + + OTP-17684 Application(s): compiler, erts + Related Id(s): PR-5316, PR-5664 + + *** HIGHLIGHT *** + + The Erlang compiler now includes type information in + BEAM files, and the JIT can now use that type + information to do optimizations such as eliminating or + simplifying type tests. + + + OTP-17685 Application(s): compiler, erts + + Improved the JIT's support for external tools like perf + and gdb, allowing them to show line numbers and even + the original Erlang source code when that can be found. + + To aid them in finding the source code, the + absolute_path compiler option has been added to embed + the absolute file path of a module. + + + OTP-17717 Application(s): erts + Related Id(s): PR-5290 + + Add [32-bit] to the Erlang shell title row for 32-bit + VMs. + + + OTP-17728 Application(s): erts + Related Id(s): PR-5284 + + Instructions for how to build the runtime system for + iOS/iPadOS can now be found in HOWTO/INSTALL.md. + + + OTP-17729 Application(s): erts + Related Id(s): PR-5477 + + Add support for static Elixir NIF modules with + non-alphanumeric characters by using new macro + STATIC_ERLANG_NIF_LIBNAME. + + + OTP-17753 Application(s): erts + Related Id(s): GH-5297, PR-5305 + + Add new function caller_line to for trace match + specifications used by erlang:trace_pattern/3. + + This new option puts the line number of the caller into + the trace message sent to the trace receiver. + + + OTP-17762 Application(s): erts + Related Id(s): GH-5204, PR-5219 + + A new erl command line argument +ssrct has been + introduced which will cause the runtime system to skip + reading CPU topology information. This reduce start up + time especially when the CPU topology is large. Reading + of CPU topology information is now also skipped if a + user defined CPU topology is set using the +sct command + line argument. + + + OTP-17772 Application(s): erts + Related Id(s): GH-4965, PR-5644 + + The default time warp mode will change in Erlang/OTP + 26. Added a warning about this upcoming potential + incompatibility to the documentation. + + + OTP-17824 Application(s): erts + + The emulator will no longer mark unused memory as + discardable (e.g. through madvise(2)), as it caused + more problems than it solved. + + + OTP-17841 Application(s): compiler, erts + Related Id(s): PR-5694 + + *** HIGHLIGHT *** + + When a record matching or record update fails, a + {badrecord,ExpectedRecordTag} exception used to be + raised. In this release, the exception has been changed + to {badrecord,ActualValue}, where ActualValue is the + actual that was found instead of the expected record. + + + OTP-17892 Application(s): erts, tools + Related Id(s): PR-5591 + + Removed the previously undocumented and unsupported + emem tool. + + + OTP-17899 Application(s): erts + Related Id(s): PR-5524 + + Remove version number from the default install path on + Windows. + + + OTP-17927 Application(s): erts + Related Id(s): PR-5283 + + On Windows apply the limit flag + JOB_OBJECT_LIMIT_BREAKAWAY_OK in the Erlang service to + be able to start a OS child process with a different + session number. + + + OTP-17945 Application(s): erts + Related Id(s): GH-4759, PR-5809 + + New erl command line option +IOs. It can be used to + disable scheduler thread poll optimization, which has + been seen to cause degraded event latency in some use + cases. + + + OTP-17951 Application(s): erts, kernel + Related Id(s): PR-5656 + + An API for multihomed SCTP connect has been added in + the guise of gen_sctp:connectx_init/* + + + OTP-17968 Application(s): erts, kernel + Related Id(s): OTP-16464 + + [socket] Add encoding of the field hatype of the type + sockaddr_ll (family 'packet'). + + + OTP-17985 Application(s): erts + Related Id(s): GH-5728 + + A cross compilation issue has been fixed about finding + libdlpi during the configure phase. + + + OTP-17999 Application(s): erts + Related Id(s): PR-5768 + + process_info/2 now also accepts parent as argument. + When passed, the process identifier of the parent + process will be returned. + + + OTP-18006 Application(s): erts + Related Id(s): PR-5932 + + Add function attributes to erl_nif and erl_driver APis + to improve compiler detection of interface misuse. + + + OTP-18033 Application(s): erts + Related Id(s): GH-5376, PR-2926 + + The exported type erlang:send_destination/0 has been + introduced. + + + OTP-18036 Application(s): erts + Related Id(s): PR-5846 + + Building of the C/C++ make dependencies on Windows has + been optimized to be a lot faster. + + + OTP-18038 Application(s): erts + + file:sync/1 will now use the F_BARRIERFSYNC flag when + available on Mac OS. + + + Full runtime dependencies of erts-13.0: kernel-8.3, sasl-3.3, + stdlib-4.0 + + + --------------------------------------------------------------------- + --- eunit-2.7.1 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17884 Application(s): eunit + Related Id(s): GH-5617 + + Minor internal improvements. + + + Full runtime dependencies of eunit-2.7.1: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- inets-8.0 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17627 Application(s): inets, stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17889 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed typo in Reason term returned from + httpc_handler:handle_http_body. + + After this change, could_not_establish_ssl_tunnel atom + is returned within Reason term. + + + OTP-18063 Application(s): inets + Related Id(s): ERIERL-798 + + With this change, inet6fb4 option is documented for + inets/httpc. Option can be used when IP family needs to + be discovered by a connection attempt. + + + --- Improvements and New Features --- + + OTP-17866 Application(s): inets + + *** POTENTIAL INCOMPATIBILITY *** + + This change removes deprecated functions: + http_uri:parse/1, http_uri:parse/2 and + http_uri:scheme_defaults/0. + + This change delays until OTP-26 removal of deprecated + functions: http_uri:encode/1 and http_uri:decode/1. + + This change marks httpd_util:decode_hex/1 and + httpd_util:encode_hex/1 as deprecated. + + + OTP-17997 Application(s): inets + Related Id(s): GH-5782 + + After this change, connect_timeout value is re-used + when upgrading TCP connection to TLS over a proxy. + + + OTP-18088 Application(s): inets + Related Id(s): GH-5276 + + Remove reference to unsupported Apache-like config file + from httpd manual. + + + Full runtime dependencies of inets-8.0: erts-6.0, kernel-6.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-9.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- jinterface-1.13 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17682 Application(s): erl_interface, erts, jinterface + Related Id(s): PR-5347 + + Removed use of node creation value zero as a wildcard. + Also prevent zero from being used as creation by + erl_interface and jinterface nodes. + + + OTP-17961 Application(s): jinterface + Related Id(s): PR-4839 + + Add new abstract class OtpGenericTransportFactory to + allow implementation of any transport protocol without + dependency on epmd. + + + --------------------------------------------------------------------- + --- kernel-8.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17323 Application(s): kernel + + The DNS resolver implementation has been rewritten to + validate replies more thoroughly, and a bit optimized + to create less garbage. + + + OTP-17447 Application(s): erts, kernel + Related Id(s): GH-4819 + + The socket option 'reuseaddr' is *no longer* ignored on + Windows. + + + OTP-17551 Application(s): kernel + Related Id(s): GH-5071, PR-5075 + + Fix bug where using the atoms string or report as the + format when calling logger:log(Level, Format, Args) (or + any other logging function) would cause a crash or + incorrect logging. + + + OTP-17911 Application(s): kernel + Related Id(s): OTP-17843, PR-5611, PR-5687 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + As of OTP 25, global will by default prevent + overlapping partitions due to network issues by + actively disconnecting from nodes that reports that + they have lost connections to other nodes. This will + cause fully connected partitions to form instead of + leaving the network in a state with overlapping + partitions. + + Prevention of overlapping partitions can be disabled + using the prevent_overlapping_partitions kernel(6) + parameter, making global behave like it used to do. + This is, however, problematic for all applications + expecting a fully connected network to be provided, + such as for example mnesia, but also for global itself. + A network of overlapping partitions might cause the + internal state of global to become inconsistent. Such + an inconsistency can remain even after such partitions + have been brought together to form a fully connected + network again. The effect on other applications that + expects that a fully connected network is maintained + may vary, but they might misbehave in very subtle hard + to detect ways during such a partitioning. Since you + might get hard to detect issues without this fix, you + are strongly advised not to disable this fix. Also note + that this fix has to be enabled on all nodes in the + network in order to work properly. + + + OTP-17958 Application(s): kernel + Related Id(s): OTP-17978 + + Starting the helper program for name resolving; + inet_gethost, has been improved to use an absolute file + system path to ensure that the right program is + started. + + If the helper program can not be started - the system + now halts, to avoid running with a silently broken name + resolver. + + + OTP-17986 Application(s): kernel + Related Id(s): PR-5412, PR-5803 + + The type specification for inet_res:getbyname/2,3 has + been corrected to reflect that it can return peculiar + #hostent{} records. + + + OTP-17990 Application(s): kernel + Related Id(s): GH-5801 + + code:module_status/1 would always report BEAM files + loaded from an archive as modified, and + code:modified_modules/0 would always return the name of + all modules loaded from archives. + + + OTP-18001 Application(s): kernel + Related Id(s): GH-5780, PR-5829 + + In logger fix file handler shutdown delay by using + erlang timers instead of the timer module's timers. + + + OTP-18003 Application(s): kernel + Related Id(s): PR-5771 + + Fix the meta data in log events generated by logger on + failure to not contain the original log event's meta + data. + + + OTP-18015 Application(s): kernel + Related Id(s): GH-5828, PR-5845 + + Fix logger file backend to re-create the log folder if + it has been deleted. + + + OTP-18020 Application(s): erts, kernel + + [socket] Encode of sockaddr has been improved. + + + OTP-18070 Application(s): kernel + Related Id(s): PR-5885 + + Fix put_chars requests to the io server with incomplete + unicode data to exit with no_translation error. + + + --- Improvements and New Features --- + + OTP-16464 Application(s): erts, kernel + + The net module now works on Windows. + + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + OTP-17318 Application(s): erl_interface, erts, jinterface, + kernel + Related Id(s): PR-4972 + + The following distribution flags are now mandatory: + DFLAG_BIT_BINARIES, DFLAG_EXPORT_PTR_TAG, + DFLAG_MAP_TAGS, DFLAG_NEW_FLOATS, and DFLAG_FUN_TAGS. + This mainly concerns libraries or application that + implement the distribution protocol themselves. + + + OTP-17479 Application(s): kernel + Related Id(s): PR-4917 + + Fix os:cmd to work on Android OS. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17558 Application(s): erts, kernel + Related Id(s): GH-5402, OTP-17538, PR-5111 + + Dynamic node name improvements: erlang:is_alive/0 + changed to return true for pending dynamic node name + and new function net_kernel:get_state/0. + + + OTP-17589 Application(s): kernel + Related Id(s): PR-4926 + + The types for callback result types in gen_statem has + bee augmented with arity 2 types where it is possible + for a callback module to specify the type of the + callback data, so the callback module can get type + validation of it. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17617 Application(s): kernel + Related Id(s): PR-5069 + + A net_ticker_spawn_options kernel configuration + parameter with which one can set spawn options for the + distribution channel ticker processes has been + introduced. + + + OTP-17681 Application(s): kernel + Related Id(s): PR-5307 + + *** POTENTIAL INCOMPATIBILITY *** + + The most, or at least the most used, rpc operations now + require erpc support in order to communicate with other + Erlang nodes. erpc was introduced in OTP 23. That is, + rpc operations against Erlang nodes of releases prior + to OTP 23 will fail. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + *** HIGHLIGHT *** + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17915 Application(s): kernel, stdlib + Related Id(s): GH-2375, GH-2690, PR-5751 + + Type specifications have been added to the gen_server, + and the documentation has been updated to utilize this. + + This surfaced a few type violations that has been + corrected in global, logger_olp and rpc. + + + OTP-17923 Application(s): kernel + Related Id(s): PR-5646 + + IP address validation functions is_ipv4_address/1, + is_ipv6_address/1 and is_ip_address/1 have been added + to the module inet in Kernel. + + + OTP-17951 Application(s): erts, kernel + Related Id(s): PR-5656 + + An API for multihomed SCTP connect has been added in + the guise of gen_sctp:connectx_init/* + + + OTP-17968 Application(s): erts, kernel + Related Id(s): OTP-16464 + + [socket] Add encoding of the field hatype of the type + sockaddr_ll (family 'packet'). + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of kernel-8.4: crypto-5.0, erts-13.0, + sasl-3.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- megaco-4.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17910 Application(s): megaco + + Megaco test suite(s) use the new peer module for node + starts. + + + Full runtime dependencies of megaco-4.4: asn1-3.0, debugger-4.0, + erts-12.0, et-1.5, kernel-8.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.21 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17930 Application(s): mnesia + + Documentation fixes. + + + Full runtime dependencies of mnesia-4.21: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- observer-2.12 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17996 Application(s): observer + Related Id(s): PR-5795 + + Fixed default handling of Mac specific menus. + + + OTP-18012 Application(s): observer, runtime_tools + Related Id(s): #5798 + + Reading port socket options on macOS and Windows + "skips" invalid options. + + + --- Improvements and New Features --- + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + Full runtime dependencies of observer-2.12: erts-11.0, et-1.5, + kernel-8.1, runtime_tools-1.19, stdlib-3.13, wx-1.2 + + + --------------------------------------------------------------------- + --- odbc-2.14 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + Full runtime dependencies of odbc-2.14: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- parsetools-2.4 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17755 Application(s): parsetools + + In the generated code, yecc will now quote all atoms + coming from terminals in the grammar, in order to avoid + conflicts with future reserved words. + + + Full runtime dependencies of parsetools-2.4: erts-6.0, kernel-3.0, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- public_key-1.13 ------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17798 Application(s): public_key + Related Id(s): GH-5760 + + *** HIGHLIGHT *** + + Added functions to retrieve OS provided CA-certs. + + + OTP-17890 Application(s): public_key, ssl + + Allow key file passwords to be input as a single + binary, that is we change the data type to be the more + for the purpose logical data type iodata() instead of + string(). + + + OTP-17921 Application(s): public_key + + *** POTENTIAL INCOMPATIBILITY *** + + The deprecated public_key functions ssh_decode/2, + ssh_encode/2, ssh_hostkey_fingerprint/1 and + ssh_hostkey_fingerprint/2 are removed. + + They are replaced by ssh_file:decode/2, + ssh_file:encode/2, ssh:hostkey_fingerprint/1 and + ssh:hostkey_fingerprint/2 respectively. + + Note that the decode/2 and encode/2 are not exact + replacement functions, some minor changes may be + needed. Se the manual for more information. + + + Full runtime dependencies of public_key-1.13: asn1-3.0, crypto-4.6, + erts-6.0, kernel-3.0, stdlib-3.5 + + + --------------------------------------------------------------------- + --- runtime_tools-1.19 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18012 Application(s): observer, runtime_tools + Related Id(s): #5798 + + Reading port socket options on macOS and Windows + "skips" invalid options. + + + --- Improvements and New Features --- + + OTP-17909 Application(s): runtime_tools + Related Id(s): ERIERL-760 + + dbg:stop/0 now behaves like dbg:stop_clear/0, clearing + all global trace patterns for all functions. + + + OTP-17939 Application(s): runtime_tools + + erts_alloc_config has been scheduled for removal in OTP + 26. It has not produced good configurations for a very + long time, and unfortunately it cannot be fixed in a + backwards compatible manner. + + + Full runtime dependencies of runtime_tools-1.19: erts-11.0, + kernel-8.1, mnesia-4.12, stdlib-3.13 + + + --------------------------------------------------------------------- + --- sasl-4.2 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17752 Application(s): sasl + Related Id(s): PR-5302 + + Fix systools:make* to recursively search for source + code when doing a src_tests. + + + --- Improvements and New Features --- + + OTP-17304 Application(s): erts, kernel, sasl + + An Erlang installation directory is now relocatable on + the file system given that the paths in the + installation's RELEASES file are paths that are + relative to the installations root directory. The + `release_handler:create_RELEASES/4 function can + generate a RELEASES file with relative paths if its + RootDir parameter is set to the empty string. + + + Full runtime dependencies of sasl-4.2: erts-10.2, kernel-6.0, + stdlib-3.4, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.13 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17612 Application(s): snmp + + Removed deprecated functions slated for removal in + OTP-25. Also removed "dead" code, kept for backward + compatibility reasons. + + + Full runtime dependencies of snmp-5.13: crypto-4.6, erts-12.0, + kernel-8.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.14 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17920 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + The representation of Edward curves (ed25519 and ed448) + inside ssh had a temporary representation (ed_pri and + ed_pub). + + That is now changed to the public_key form. See the + manual for more information. + + + OTP-18079 Application(s): ssh + Related Id(s): GH-5767 + + Former internal function ssh_file:extract_public_key/1 + documented publicly. + + Internally it was previously in ssh_transport. + + + Full runtime dependencies of ssh-4.14: crypto-5.0, erts-11.0, + kernel-6.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-3.15 + + + --------------------------------------------------------------------- + --- ssl-10.8 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-18087 Application(s): ssl + Related Id(s): GH-5961 + + When a TLS-1.3 enabled client tried to talk to a + TLS-1.2 server that coalesces TLS-1.2 handshake message + over one TLS record, the connection could fail due to + some message being handled in the wrong state, this has + been fixed. + + + OTP-18092 Application(s): ssl + Related Id(s): PR-5959 + + Fixed tls-1.3 session ticket lifetime which was + discarded to quickly before. + + + --- Improvements and New Features --- + + OTP-15993 Application(s): ssl + Related Id(s): GH-4143 + + *** HIGHLIGHT *** + + With this change, it is possible to provide several + certificates. Most appropriate will be selected based + on negotiated properties. + + + OTP-17855 Application(s): ssl + Related Id(s): PR-5328 + + Add options for users to be able to set spawn_opts for + TLS processes (sender and receiver) this may be useful + for tuning trade-offs between CPU and Memory usage. + + + OTP-17890 Application(s): public_key, ssl + + Allow key file passwords to be input as a single + binary, that is we change the data type to be the more + for the purpose logical data type iodata() instead of + string(). + + + OTP-18000 Application(s): ssl + Related Id(s): PR-5790 + + Logging enhancement, add location information to the + warning log message. + + + OTP-18014 Application(s): ssl + + Now also accepts the signature_algs_cert option in + TLS-1.2 configuration. + + + OTP-18045 Application(s): ssl + Related Id(s): ERIERL-792, OTP-15993 + + Handle certificate selection correctly for server + fallback and certificate authorities considerations. + + + OTP-18085 Application(s): ssl + + Enhance handling of handshake decoding errors, + especially for certificate authorities extension to + ensure graceful termination. + + + Full runtime dependencies of ssl-10.8: crypto-5.0, erts-10.0, + inets-5.10.7, kernel-8.4, public_key-1.11.3, runtime_tools-1.15.1, + stdlib-3.12 + + + --------------------------------------------------------------------- + --- stdlib-4.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17370 Application(s): stdlib + Related Id(s): GH-4784 + + Improve the Erlang code linter's check of unused types. + + + OTP-17480 Application(s): stdlib + Related Id(s): GH-4853, PR-4872 + + Fix race condition in proc_lib:stop/3 where the process + is not stopped when the timeout given is very short. + + + OTP-17518 Application(s): stdlib + Related Id(s): GH-4915 + + Maps are now fully supported in by ms_transform. + + + OTP-17544 Application(s): stdlib + Related Id(s): PR-5008 + + *** POTENTIAL INCOMPATIBILITY *** + + Fix gen_server:call with the first argument as self() + to throw an error instead of failing with a timeout. + + The same fix has also been done for gen_statem:call/3, + gen_event:sync_notify/2 and any other functionality + relying on the internal gen:call/3 function. + + A similar fix was also done when using io:format/2 and + the current group_leader was set to the current + process. + + + OTP-17566 Application(s): stdlib + Related Id(s): GH-5093, PR-5095 + + erl_pp printed unary - and + operators with a space + between the operator and the operand. This is fixed by + not having any space in between. + + + OTP-17627 Application(s): inets, stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Adjust uri_string:normalize behavior for URIs with + undefined port (URI string with a port colon but no + port value or URI map with port => undefined). + + Remove redundant normalization from http_request + module. + + Before this change, normalize would not remove port + subcomponent in such cases and could for example return + "http://localhost:" URI. + + + OTP-17661 Application(s): erts, stdlib + Related Id(s): PR-5165 + + Fix reduction counting bug in re:run that caused the + function to yield too frequently when doing global + matches. + + + OTP-17832 Application(s): erts, stdlib + Related Id(s): PR-5494 + + Fix the memory value returned from ets:info(Tid,memory) + when the read_concurrency option is used. + + Before this fix the memory used by the scheduler + specific lock cache lines was not counted towards the + total. This caused the returned memory usage to be very + incorrect on systems with many schedulers for tables + with man locks. + + + OTP-17878 Application(s): stdlib + + Avoid confusion by correcting the argument order in the + gen_event crash log printout. + + + OTP-18009 Application(s): stdlib + Related Id(s): PR-5785 + + *** POTENTIAL INCOMPATIBILITY *** + + Fixed string:next_grapheme/1 to return an empty binary + in the tail for binary input for the last grapheme + cluster. + + + OTP-18034 Application(s): stdlib + Related Id(s): GH-4622, PR-4661 + + Fixed type specifications of the supervisor:sup_name/0 + and supervisor:sup_ref/0 types. + + + OTP-18083 Application(s): compiler, stdlib + + If a default record field initialization (_ = Expr) was + used even though all records fields were explicitly + initialized, Expr would not be evaluated. That would + not be a problem, except when Expr would bind a + variable subsequently used, in which case the compiler + would crash. + + As an example, if record #r{} is defined to have only + one field a, the following code would crash the + compiler: + + #r{a=[],_=V=42}, V + + To fix that problem, the compiler will make sure that + Expr is always evaluated at least once. The compiler + will now rewrite the example to essentially: + + V=42, #r{a=[]}, V + + + --- Improvements and New Features --- + + OTP-15991 Application(s): erts, stdlib + Related Id(s): PR-5208 + + *** HIGHLIGHT *** + + Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces + tables to automatically change the number of locks that + are used at run-time depending on how much concurrency + is detected. The {decentralized_counters, true} option + is enabled by default when {write_concurrency, auto} is + active. + + Benchmark results comparing this option with the other + ETS optimization options are available here: + + https://erlang.org/bench/ets_bench_result_lock_config.html + + + OTP-17351 Application(s): stdlib + Related Id(s): GH-4673, PR-4952 + + *** HIGHLIGHT *** + + The format_status/2 callback for gen_server, gen_statem + and gen_event has been deprecated in favor of the new + format_status/1 callback. + + The new callback adds the possibility to limit and + change many more things than the just the state, such + as the last received message, the reason for + terminating and more events specific to each type of + behavior. See the respective modules documentation for + more details. + + + OTP-17481 Application(s): stdlib + Related Id(s): PR-4811 + + *** HIGHLIGHT *** + + The timer module has been modernized and made more + efficient, which makes the timer server less + susceptible to being overloaded. The timer:sleep/1 + function now accepts an arbitrarily large integer. + + + OTP-17523 Application(s): stdlib + Related Id(s): PR-4928 + + Add lists:enumerate/[1,2]. + + + OTP-17554 Application(s): debugger, erts, kernel, observer, + stdlib + Related Id(s): GH-5016, OTP-17821, PR-5408 + + The configuration files .erlang, .erlang.cookie and + .erlang.crypt can now be located in the XDG Config Home + directory. + + See the documentation for each file and + filename:basedir/2 for more details. + + + OTP-17592 Application(s): stdlib + Related Id(s): ERIERL-663, PR-5243 + + Support native time unit in calendar functions + system_time_to_rfc3339/2 and rfc3339_to_system_time. + + + OTP-17608 Application(s): erts, kernel, stdlib + + The tagged tuple tests and fun-calls have been + optimized and are now a little bit cheaper than + previously. + + These optimizations become possible after making sure + that all boxed terms have at least one word allocated + after the arity word. This has been accomplished by + letting all empty tuples refer to the same empty tuple + literal which also reduces memory usage for empty + tuples. + + + OTP-17630 Application(s): erts, stdlib + + The signal queue benchmark in parallel_messages_SUITE + and the ETS benchmark in ets_SUITE have benchmark + result visualization HTML pages with "fill-screen" + buttons to make the graphs bigger. This button did not + work as intended before. When pressing the button for a + graph, the last graph got replaced with a bigger + version and not the one over the button. This is now + fixed. + + + OTP-17720 Application(s): common_test, kernel, stdlib + Related Id(s): PR-5162 + + *** HIGHLIGHT *** + + The new module peer supersedes the slave module. The + slave module is now deprecated and will be removed in + OTP 27. + + peer contains an extended and more robust API for + starting erlang nodes. + + + OTP-17778 Application(s): stdlib + Related Id(s): GH-5368 + + This change introduces quote and unquote functions in + uri_string module - a replacement for deprecated encode + and decode functions from http_uri. + + + OTP-17784 Application(s): kernel, stdlib + Related Id(s): PR-5792 + + *** HIGHLIGHT *** + + In order to make it easier for the user to manage + multiple outstanding asynchronous call requests, new + functionality utilizing request identifier collections + have been introduced in erpc, gen_server, gen_statem, + and gen_event. + + + OTP-17869 Application(s): stdlib + Related Id(s): PR-5595 + + Update to the Unicode 14.0 specification. + + + OTP-17901 Application(s): stdlib + Related Id(s): GH-4968, PR-5649 + + The following ets types have been renamed to a clearer + name: tab/0 to table/0 and comp_match_spec/0 to + compiled_match_spec/0. + + The types table_access/0 and table_type/0 have been + exported. + + + OTP-17908 Application(s): stdlib + Related Id(s): GH-5655, PR-5669 + + Add support for locating .asn1 files to the default + search rules of filelib:find_file/1 and + filelib:find_source/1. + + + OTP-17915 Application(s): kernel, stdlib + Related Id(s): GH-2375, GH-2690, PR-5751 + + Type specifications have been added to the gen_server, + and the documentation has been updated to utilize this. + + This surfaced a few type violations that has been + corrected in global, logger_olp and rpc. + + + OTP-17925 Application(s): stdlib + Related Id(s): PR-5631 + + *** POTENTIAL INCOMPATIBILITY *** + + The non-local function handler for the erl_eval can now + be called with either two or three arguments. When + called with three arguments, the first argument is the + annotation for the node in the abstract format. + + All errors during evaluation will now be passed through + erlang:raise/3. If the restricted shell is active and + it does not let erlang:raise/3 through, evaluation + errors will be printed in less clear way. See the + documentation for restricted shell in shell. + + + OTP-17953 Application(s): stdlib + Related Id(s): PR-5621 + + *** HIGHLIGHT *** + + Added filelib:ensure_path/1 that ensures that all + directories for the given path exists (unlike + filelib:ensure_dir/1, which will not create the last + segment of the path). + + + OTP-17969 Application(s): stdlib + Related Id(s): PR-5588 + + *** HIGHLIGHT *** + + The functions groups_from_list/2 and groups_from_list/3 + have been added to the maps module. + + + OTP-17974 Application(s): stdlib + Related Id(s): GH-5683 + + gen_server has been refactored to throw more readable + exceptions when a callback returns bad values in the + Timeout field (timeout() | 'hibernate' | + {'continue,_}), and also to verify that argument in the + gen_server:enter_loop/3,4,5 API function. + + + OTP-17977 Application(s): stdlib + Related Id(s): GH-5606, PR-5766 + + *** HIGHLIGHT *** + + The functions uniq/1 and uniq/2 for removing duplicates + have been added to the lists module. + + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + OTP-17991 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + The function filename:safe_relative_path/1, which has + been deprecated since OTP 25, has been removed. Use + filelib:safe_relative_path/2 instead. + + + OTP-18011 Application(s): stdlib + + *** HIGHLIGHT *** + + A new PRNG have been added to the rand module: mwc59 + which has been developed in collaboration with + Sebastiano Vigna. It is intended for applications that + need really fast pseudo-random numbers, and it comes + with two output value scramblers, one fast and one + thorough. + + Two internal functions for the exsp generator have also + been exported so they can be used outside the rand + plug-in framework to shave off some overhead. + + The internal splitmix64 generator has also been + exported which can be useful for seeding other kinds of + PRNG:s than its own. + + + Full runtime dependencies of stdlib-4.0: compiler-5.0, crypto-4.5, + erts-12.0, kernel-8.4, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-3.0 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-17894 Application(s): syntax_tools + Related Id(s): PR-5509 + + *** POTENTIAL INCOMPATIBILITY *** + + The erl_syntax_lib:analyze_attribute/1 function would + return {Name, {Name, Value}} instead of {Name, Value} + (which is the documented return value). + + + --- Improvements and New Features --- + + OTP-17988 Application(s): compiler, kernel, stdlib, syntax_tools + + *** HIGHLIGHT *** + + Added support for configurable features as described in + EEP-60. Features can be enabled/disabled during + compilation with options (-enable-feature Feature, + -disable-feature Feature and +{feature, Feature, + enable|disable}) to erlc as well as with directives + (-feature(Feature, enable|disable).) in the file. + Similar options can be used to erl for + enabling/disabling features allowed at runtime. The new + maybe expression (EEP-49) is fully supported as the + feature maybe_expr. The features support is documented + in the reference manual. + + + Full runtime dependencies of syntax_tools-3.0: compiler-7.0, + erts-9.0, kernel-5.0, stdlib-4.0 + + + --------------------------------------------------------------------- + --- tools-3.5.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17892 Application(s): erts, tools + Related Id(s): PR-5591 + + Removed the previously undocumented and unsupported + emem tool. + + + Full runtime dependencies of tools-3.5.3: compiler-5.0, erts-11.0, + erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4 + + + --------------------------------------------------------------------- + --- wx-2.2 ---------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17414 Application(s): common_test, crypto, erl_interface, + erts, megaco, odbc, otp, snmp, wx + Related Id(s): PR-4967 + + Input for configure scripts adapted to autoconf 2.71. + + + OTP-17950 Application(s): wx + + *** POTENTIAL INCOMPATIBILITY *** + + Added aux1Down and aux2Down fields to the wxMouseState + record. Since one record have been changed a + recompilation of user code might be required. + + + OTP-18008 Application(s): wx + Related Id(s): PR-5816 + + Add mac specific menubar functions. + + + Full runtime dependencies of wx-2.2: erts-12.0, kernel-8.0, + stdlib-3.15 + + + --------------------------------------------------------------------- + --- xmerl-1.3.29 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-17935 Application(s): xmerl + Related Id(s): PR-5590 + + Fixed misspellings in both documentation, comments and + code (internal data structures). + + + Full runtime dependencies of xmerl-1.3.29: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + |