From 4f4b441446afeadd251025d636902fa2cfa86542 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Tue, 26 Jun 2018 14:30:24 +0200 Subject: Add release notes for OTP-18.0+ The version 18.3.4.3 is missing and seems to have had no announcement or README, I do not know why. --- release-notes/OTP-20.0.README.txt | 3308 +++++++++++++++++++++++++++++++++++++ 1 file changed, 3308 insertions(+) create mode 100644 release-notes/OTP-20.0.README.txt (limited to 'release-notes/OTP-20.0.README.txt') diff --git a/release-notes/OTP-20.0.README.txt b/release-notes/OTP-20.0.README.txt new file mode 100644 index 0000000..282b230 --- /dev/null +++ b/release-notes/OTP-20.0.README.txt @@ -0,0 +1,3308 @@ +Patch Package: OTP 20.0 +Git Tag: OTP-20.0 +Date: 2017-06-21 +Trouble Report Id: OTP-10289, OTP-11695, OTP-12148, OTP-12872, + OTP-13006, OTP-13529, OTP-13684, OTP-13690, + OTP-13692, OTP-13779, OTP-13794, OTP-13801, + OTP-13805, OTP-13806, OTP-13810, OTP-13820, + OTP-13827, OTP-13830, OTP-13831, OTP-13842, + OTP-13844, OTP-13856, OTP-13860, OTP-13862, + OTP-13873, OTP-13879, OTP-13900, OTP-13903, + OTP-13908, OTP-13909, OTP-13921, OTP-13924, + OTP-13961, OTP-13968, OTP-13976, OTP-13983, + OTP-14000, OTP-14001, OTP-14002, OTP-14006, + OTP-14029, OTP-14035, OTP-14037, OTP-14038, + OTP-14039, OTP-14042, OTP-14057, OTP-14058, + OTP-14059, OTP-14066, OTP-14068, OTP-14069, + OTP-14070, OTP-14071, OTP-14072, OTP-14076, + OTP-14077, OTP-14087, OTP-14089, OTP-14092, + OTP-14094, OTP-14102, OTP-14110, OTP-14111, + OTP-14117, OTP-14123, OTP-14125, OTP-14127, + OTP-14137, OTP-14140, OTP-14146, OTP-14149, + OTP-14152, OTP-14168, OTP-14171, OTP-14178, + OTP-14179, OTP-14183, OTP-14186, OTP-14190, + OTP-14193, OTP-14197, OTP-14201, OTP-14205, + OTP-14216, OTP-14218, OTP-14219, OTP-14221, + OTP-14226, OTP-14238, OTP-14243, OTP-14245, + OTP-14247, OTP-14253, OTP-14255, OTP-14258, + OTP-14259, OTP-14261, OTP-14263, OTP-14264, + OTP-14267, OTP-14270, OTP-14272, OTP-14274, + OTP-14276, OTP-14277, OTP-14278, OTP-14284, + OTP-14285, OTP-14287, OTP-14289, OTP-14291, + OTP-14293, OTP-14294, OTP-14295, OTP-14296, + OTP-14302, OTP-14303, OTP-14304, OTP-14305, + OTP-14306, OTP-14307, OTP-14310, OTP-14312, + OTP-14314, OTP-14316, OTP-14317, OTP-14318, + OTP-14319, OTP-14323, OTP-14324, OTP-14328, + OTP-14330, OTP-14331, OTP-14332, OTP-14333, + OTP-14335, OTP-14336, OTP-14337, OTP-14338, + OTP-14339, OTP-14343, OTP-14345, OTP-14347, + OTP-14348, OTP-14352, OTP-14356, OTP-14357, + OTP-14360, OTP-14361, OTP-14362, OTP-14369, + OTP-14371, OTP-14377, OTP-14380, OTP-14381, + OTP-14382, OTP-14384, OTP-14385, OTP-14387, + OTP-14388, OTP-14390, OTP-14393, OTP-14394, + OTP-14399, OTP-14400, OTP-14401, OTP-14404, + OTP-14405, OTP-14407, OTP-14408, OTP-14409, + OTP-14410, OTP-14411, OTP-14415, OTP-14417, + OTP-14419, OTP-14421, OTP-14422, OTP-14423, + OTP-14424, OTP-14425, OTP-14426, OTP-14429, + OTP-14431, OTP-14433, OTP-14434, OTP-14435, + OTP-14436, OTP-14437, OTP-14438, OTP-14441, + OTP-14442, OTP-14443, OTP-14447, OTP-14453, + OTP-14454, OTP-14455, OTP-14531 +Seq num: ERIERL-20, ERIERL-22, ERIERL-29, ERL-165, + ERL-208, ERL-278, ERL-308, ERL-332, ERL-360, + ERL-369, ERL-376, ERL-393, ERL-395, ERL-399, + ERL-401, ERL-417, ERL-429, ERL-430, ERL-82, + seq13299, seq13315 +System: OTP +Release: 20 +Application: asn1-5.0, common_test-1.15, compiler-7.1, + cosProperty-1.2.2, crypto-4.0, + debugger-4.2.2, dialyzer-3.2, diameter-2.0, + edoc-0.9, erl_docgen-0.7, erl_interface-3.10, + erts-9.0, eunit-2.3.3, hipe-3.16, inets-6.4, + jinterface-1.8, kernel-5.3, megaco-3.18.2, + mnesia-4.15, observer-2.4, orber-3.8.3, + parsetools-2.1.5, public_key-1.4.1, + reltool-0.7.4, runtime_tools-1.12, + sasl-3.0.4, snmp-5.2.6, ssh-4.5, ssl-8.2, + stdlib-3.4, syntax_tools-2.1.2, tools-2.10, + wx-1.8.1, xmerl-1.3.15 +Predecessor: OTP + + Check out the git tag OTP-20.0, and build a full OTP system including + documentation. + + --------------------------------------------------------------------- + --- HIGHLIGHTS ------------------------------------------------------ + --------------------------------------------------------------------- + + OTP-10289 Application(s): stdlib + Related Id(s): OTP-10309 + + *** POTENTIAL INCOMPATIBILITY *** + + Improved unicode support for strings. Added + normalization functions in the unicode module. Extended + the string module API with new functions with improved + unicode handling and that works on grapheme clusters. + The new functions operates on the unicode:chardata() + type, thus they also accept UTF-8 binaries as input. + + The old string API have been marked as obsolete. The + return values have been changed for some error cases. + + + OTP-13820 Application(s): ssl + + *** POTENTIAL INCOMPATIBILITY *** + + TLS-1.2 clients will now always send hello messages on + its own format, as opposed to earlier versions that + will send the hello on the lowest supported version, + this is a change supported by the latest RFC. + + This will make interoperability with some newer servers + smoother. Potentially, but unlikely, this could cause a + problem with older servers if they do not adhere to the + RFC and ignore unknown extensions. + + + OTP-13900 Application(s): crypto + + The crypto application now supports OpenSSL 1.1. + + + OTP-13921 Application(s): crypto, ssl + Related Id(s): PR-1180 + + Allow Erlang/OTP to use OpenSSL in FIPS-140 mode, in + order to satisfy specific security requirements (mostly + by different parts of the US federal government). + + See the new crypto users guide "FIPS mode" chapter + about building and using the FIPS support which is + disabled by default. + + (Thanks to dszoboszlay and legoscia) + + + OTP-14059 Application(s): kernel, stdlib + + Functions for detecting changed code has been added. + code:modified_modules/0 returns all currently loaded + modules that have changed on disk. code:module_status/1 + returns the status for a module. In the shell and in c + module, mm/0 is short for code:modified_modules/0, and + lm/0 reloads all currently loaded modules that have + changed on disk. + + + OTP-14094 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + Optimized ETS operations by changing table identifier + type from integer to reference. The reference enables a + more direct mapping to the table with less potential + lock contention and makes especially creation and + deletion of tables scale much better. + + The change of the opaque type for the ETS table + identifiers may cause failure in code that make faulty + assumptions about this opaque type. + + The number of tables stored at one Erlang node *used* + to be limited. This is no longer the case (except by + memory usage). The previous default limit was about + 1400 tables and could be increased by setting the + environment variable ERL_MAX_ETS_TABLES before starting + the Erlang runtime system. This hard limit has been + removed, but it is currently useful to set the + ERL_MAX_ETS_TABLES anyway. It should be set to an + approximate of the maximum amount of tables used. This + since an internal table for named tables is sized using + this value. If large amounts of named tables are used + and ERL_MAX_ETS_TABLES hasn't been increased, the + performance of named table lookup will degrade. + + + OTP-14110 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + Modernization of key exchange algorithms. See + draft-ietf-curdle-ssh-kex-sha2 for a discussion. + + Removed an outdated weak algorithm and added stronger + replacements to keep interoperability with other modern + ssh clients and servers. The default ordering of the + algorithms is also adjusted. + + Retired: The nowadays unsecure key-exchange + diffie-hellman-group1-sha1 is not enabled by default, + but can be enabled with the option + preferred-algorithms. + + Added: The new stronger key-exchange + diffie-hellman-group16-sha512, + diffie-hellman-group18-sha512 and + diffie-hellman-group14-sha256 are added and enabled by + default. + + The questionable [RFC 6194] sha1-based algorithms + diffie-hellman-group-exchange-sha1 and + diffie-hellman-group14-sha1 are however still kept + enabled by default for compatibility with ancient + clients and servers that lack modern key-exchange + alternatives. When the draft-ietf-curdle-ssh-kex-sha2 + becomes an rfc, those sha1-based algorithms and + diffie-hellman-group1-sha1 will be deprecated by IETF. + They might then be removed from the default list in + Erlang/OTP. + + + OTP-14152 Application(s): erts + + *** POTENTIAL INCOMPATIBILITY *** + + Dirty schedulers are now enabled and supported on + Erlang runtime systems with SMP support. + + Besides support for dirty NIFs also support for dirty + BIFs and dirty garbage collection have been introduced. + All garbage collections that potentially will take a + long time to complete are now performed on dirty + schedulers if enabled. + + erlang:statistics/1 with arguments inspecting scheduler + and run queue states have been changed due to the dirty + scheduler support. Code using this functionality may + have to be rewritten taking these incompatibilities + into consideration. Examples of such uses are calls to + erlang:statistics(scheduler_wall_time), + statistics(total_run_queue_lengths), + statistics(total_active_tasks), etc. + + + OTP-14178 Application(s): compiler, erts + + Atoms may now contain arbitrary Unicode characters. + + + OTP-14183 Application(s): stdlib + + gen_fsm is deprecated and is replaced by gen_statem, + however for backwards compatibility reasons gen_fsm may + continue to exist as an undocumented feature for quite + some time. + + + OTP-14193 Application(s): ssh + + The Extension Negotiation Mechanism and the extension + server-sig-algs in draft-ietf-curdle-ssh-ext-info-05 + are implemented. + + The related draft-ietf-curdle-rsa-sha2-05 is + implemented and introduces the signature algorithms + rsa-sha2-256 and rsa-sha2-512. + + + OTP-14197 Application(s): ssl + + TLS client processes will by default call + public_key:pkix_verify_hostname/2 to verify the + hostname of the connection with the server certificates + specified hostname during certificate path validation. + The user may explicitly disables it. Also if the + hostname can not be derived from the first argument to + connect or is not supplied by the server name + indication option, the check will not be performed. + + + OTP-14205 Application(s): erts + + All uses of the magic binary kludge has been replaced + by uses of erlang references. + + A magic binary was presented as an empty binary, but + actually referred other data internally in the Erlang + VM. Since they were presented as empty binaries, + different magic binaries compared as equal, and also + lost their internal data when passed out of an erlang + node. + + The new usage of references has not got any of these + strange semantic issues, and the usage of these + references has been optimized to give the same + performance benefits as well as memory usage benefits + as magic binaries had. + + A couple of examples of previous uses of magic binaries + are match specifications and NIF resources. + + + OTP-14219 Application(s): asn1 + + The new 'maps' option changes the representation of the + types SEQUENCE and SET to be maps (instead of records). + + + OTP-14226 Application(s): stdlib + + erl_tar in previous versions of OTP only supports the + USTAR format. That limited path names to at most 255 + bytes, and did not support Unicode characters in names + in a portable way. + + erl_tar now has support for reading tar archives in the + formats currently in common use, such as v7, STAR, + USTAR, PAX, and GNU tar's extensions to the STAR/USTAR + format. When writing tar archives, erl_tar can now + write them in the PAX format if necessary (for example, + to support very long filenames or filenames with + Unicode characters). If possible, erl_tar will still + write tar archives in the USTAR for maximum + portability. + + + OTP-14291 Application(s): ssl + + Extend connection_information/[1,2] . The values + session_id, master_secret, client_random and + server_random can no be accessed by + connection_information/2. Note only session_id will be + added to connection_information/1. The rational is that + values concerning the connection security should have + to be explicitly requested. + + + OTP-14319 Application(s): stdlib + Related Id(s): PR-1076 + + Add new function ets:select_replace/2 which performs + atomic "compare-and-swap" operations for ETS objects + using match specifications. + + + OTP-14331 Application(s): erts, stdlib + Related Id(s): ERL-208 + + *** POTENTIAL INCOMPATIBILITY *** + + Upgraded the OTP internal PCRE library from version + 8.33 to version 8.40. This library is used for + implementation of the re regular expressions module. + + Besides various bug fixes, the new version allows for + better stack protection. In order to utilize this + feature, the stack size of normal scheduler threads is + now by default set to 128 kilo words on all platforms. + The stack size of normal scheduler threads can be set + upon system start by passing the +sss command line + argument to the erl command. + + See http://pcre.org/original/changelog.txt for + information about changes made to PCRE between the + versions 8.33 and 8.40. + + + OTP-14356 Application(s): erts + + Various improvements of timer management internally in + the VM. These improvements both reduced memory + consumption of timer wheels as well as reduce the + amount of work that has to be performed in order to + handle timers. + + + OTP-14388 Application(s): ssl + + Basic support for DTLS that been tested together with + OpenSSL. + + Test by providing the option {protocol, dtls} to the + ssl API functions connect and listen. + + + OTP-14407 Application(s): erts, otp + + './configure --enable-lock-counter' will enabling + building of an additional emulator that has support for + lock counting. (The option previously existed, but + would turn on lock counting in the default emulator + being built.) To start the lock-counting emulator, use + 'erl -emu_type lcnt'. + + On Windows, erl recognized the undocumented option + -debug for starting a debug-compiled emulator. That + option has been removed. Use 'erl -emu_type debug' + instead. + + + --------------------------------------------------------------------- + --- POTENTIAL INCOMPATIBILITIES ------------------------------------- + --------------------------------------------------------------------- + + OTP-10289 Application(s): stdlib + Related Id(s): OTP-10309 + + *** HIGHLIGHT *** + + Improved unicode support for strings. Added + normalization functions in the unicode module. Extended + the string module API with new functions with improved + unicode handling and that works on grapheme clusters. + The new functions operates on the unicode:chardata() + type, thus they also accept UTF-8 binaries as input. + + The old string API have been marked as obsolete. The + return values have been changed for some error cases. + + + OTP-12872 Application(s): ssh + + The internal handling of SSH options is re-written. + + Previously there were no checks if a client option was + given to a daemon or vice versa. This is corrected now. + If your code has e.g. a client-only option in a call to + start a daemon, the call will fail. + + + OTP-13006 Application(s): kernel + Related Id(s): ERIERL-20, ERL-429 + + Function inet:ntoa/1 has been fixed to return lowercase + letters according to RFC 5935 that has been approved + after this function was written. Previously uppercase + letters were returned so this may be a backwards + incompatible change depending on how the returned + address string is used. + + Function inet:parse_address/1 has been fixed to accept + %-suffixes on scoped addresses. The addresses does not + work yet, but gives no parse errors. + + + OTP-13820 Application(s): ssl + + *** HIGHLIGHT *** + + TLS-1.2 clients will now always send hello messages on + its own format, as opposed to earlier versions that + will send the hello on the lowest supported version, + this is a change supported by the latest RFC. + + This will make interoperability with some newer servers + smoother. Potentially, but unlikely, this could cause a + problem with older servers if they do not adhere to the + RFC and ignore unknown extensions. + + + OTP-13827 Application(s): erts + + Remove deprecated erlang:hash/2. + + + OTP-13844 Application(s): erts + Related Id(s): OTP-13833 + + The previously used purge strategy has been removed. + The optional purge strategy introduced in ERTS version + 8.1 is now the only strategy available. + + The new purge strategy is slightly incompatible with + the old strategy. Previously processes holding funs + that referred to the module being purged either failed + a soft purge, or was killed during a hard purge. The + new strategy completely ignores funs. If funs referring + to the code being purged exist, and are used after a + purge, an exception will be raised upon usage. That is, + the behavior will be exactly the same as the case when + a fun is received by a process after the purge. + + For more information see the documentation of + erlang:check_process_code/3. + + + OTP-13873 Application(s): crypto + + Removed functions deprecated in crypto-3.0 first + released in OTP-R16B01 + + + OTP-13908 Application(s): erts + + The NIF library reload feature is not supported + anymore. It has been marked as deprecated since OTP + R15B. This means that you are only allowed to do one + successful call to erlang:load_nif/2 for each module + instance. A second call to erlang:load_nif/2 will + return {error, {reload, _}} even if the NIF library + implements the reload callback. + + Runtime upgrade of a NIF library is still supported by + using the Erlang module upgrade mechanics with a + current and an old module instance existing at the same + time with their corresponding NIF libraries. + + + OTP-14039 Application(s): mnesia + + Removed the wrapping of select continuations in + extension plugin handling. This might require the user + to rewrite user backend plugin if used. + + + OTP-14094 Application(s): stdlib + + *** HIGHLIGHT *** + + Optimized ETS operations by changing table identifier + type from integer to reference. The reference enables a + more direct mapping to the table with less potential + lock contention and makes especially creation and + deletion of tables scale much better. + + The change of the opaque type for the ETS table + identifiers may cause failure in code that make faulty + assumptions about this opaque type. + + The number of tables stored at one Erlang node *used* + to be limited. This is no longer the case (except by + memory usage). The previous default limit was about + 1400 tables and could be increased by setting the + environment variable ERL_MAX_ETS_TABLES before starting + the Erlang runtime system. This hard limit has been + removed, but it is currently useful to set the + ERL_MAX_ETS_TABLES anyway. It should be set to an + approximate of the maximum amount of tables used. This + since an internal table for named tables is sized using + this value. If large amounts of named tables are used + and ERL_MAX_ETS_TABLES hasn't been increased, the + performance of named table lookup will degrade. + + + OTP-14110 Application(s): ssh + + *** HIGHLIGHT *** + + Modernization of key exchange algorithms. See + draft-ietf-curdle-ssh-kex-sha2 for a discussion. + + Removed an outdated weak algorithm and added stronger + replacements to keep interoperability with other modern + ssh clients and servers. The default ordering of the + algorithms is also adjusted. + + Retired: The nowadays unsecure key-exchange + diffie-hellman-group1-sha1 is not enabled by default, + but can be enabled with the option + preferred-algorithms. + + Added: The new stronger key-exchange + diffie-hellman-group16-sha512, + diffie-hellman-group18-sha512 and + diffie-hellman-group14-sha256 are added and enabled by + default. + + The questionable [RFC 6194] sha1-based algorithms + diffie-hellman-group-exchange-sha1 and + diffie-hellman-group14-sha1 are however still kept + enabled by default for compatibility with ancient + clients and servers that lack modern key-exchange + alternatives. When the draft-ietf-curdle-ssh-kex-sha2 + becomes an rfc, those sha1-based algorithms and + diffie-hellman-group1-sha1 will be deprecated by IETF. + They might then be removed from the default list in + Erlang/OTP. + + + OTP-14146 Application(s): asn1 + + The deprecated module asn1rt has been removed. The + deprecated functions asn1ct:encode/3 and + asn1ct:decode/3 have been removed. The undocumented + function asn1ct:encode/2 has been removed. + + + OTP-14152 Application(s): erts + + *** HIGHLIGHT *** + + Dirty schedulers are now enabled and supported on + Erlang runtime systems with SMP support. + + Besides support for dirty NIFs also support for dirty + BIFs and dirty garbage collection have been introduced. + All garbage collections that potentially will take a + long time to complete are now performed on dirty + schedulers if enabled. + + erlang:statistics/1 with arguments inspecting scheduler + and run queue states have been changed due to the dirty + scheduler support. Code using this functionality may + have to be rewritten taking these incompatibilities + into consideration. Examples of such uses are calls to + erlang:statistics(scheduler_wall_time), + statistics(total_run_queue_lengths), + statistics(total_active_tasks), etc. + + + OTP-14171 Application(s): crypto + + Raised minimum requirement for OpenSSL version to + OpenSSL-0.9.8.c although we recommend a much higher + version, that is a version that is still maintained + officially by the OpenSSL project. Note that using such + an old version may restrict the crypto algorithms + supported. + + + OTP-14263 Application(s): ssh + + Removed the option public_key_alg which was deprecated + in 18.2. Use pref_public_key_algs instead. + + + OTP-14264 Application(s): ssh + + The SSH application is refactored regarding daemon + starting. The resolution of contradicting Host argument + and ip option were not described. There were also + strange corner cases when the 'any' value was used in + Host argument or ip option. This is (hopefully) + resolved now, but it may cause incompatibilities for + code using both Host and the ip option. The value + 'loopback' has been added for a correct way of naming + those addresses. + + + OTP-14272 Application(s): erts, otp + + The non-smp emulators have been deprecated and are + scheduled for removal in OTP-21. + + In preparation for this, the threaded non-smp emulator + is no longer built by default and has to be enabled + using the --enable-plain-emulator to configure. + + + OTP-14331 Application(s): erts, stdlib + Related Id(s): ERL-208 + + *** HIGHLIGHT *** + + Upgraded the OTP internal PCRE library from version + 8.33 to version 8.40. This library is used for + implementation of the re regular expressions module. + + Besides various bug fixes, the new version allows for + better stack protection. In order to utilize this + feature, the stack size of normal scheduler threads is + now by default set to 128 kilo words on all platforms. + The stack size of normal scheduler threads can be set + upon system start by passing the +sss command line + argument to the erl command. + + See http://pcre.org/original/changelog.txt for + information about changes made to PCRE between the + versions 8.33 and 8.40. + + + OTP-14343 Application(s): diameter + + Improve performance of message encode/decode and + related handling. + + Dictionaries using @custom_types or @codecs will need + to adapt the corresponding functions to accept an + additional argument that is now passed through + encode/decode, which was required to remove various + process dictionary-based workarounds that have been + used to solve problems in the past. + + + OTP-14531 Application(s): stdlib + + The state machine engine gen_statem can now handle + generic time-outs (multiple named) as well as absolute + time-out time. See the documentation. + + The gen_statem callback Module:init/1 has become + mandatory to harmonize with other gen_* modules. This + may be an incompatibility for gen_statem callback + modules that use gen_statem:enter_loop/4-6. + + + --------------------------------------------------------------------- + --- asn1-5.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14316 Application(s): asn1, crypto, runtime_tools + Related Id(s): PR-1390 + + Add compile option -compile(no_native) in modules with + on_load directive which is not yet supported by HiPE. + + + --- Improvements and New Features --- + + OTP-13961 Application(s): asn1 + + The error tuple returned from the encode and decode + functions will now include the stack backtrace to make + it easier to understand what went wrong. + + + OTP-14146 Application(s): asn1 + + *** POTENTIAL INCOMPATIBILITY *** + + The deprecated module asn1rt has been removed. The + deprecated functions asn1ct:encode/3 and + asn1ct:decode/3 have been removed. The undocumented + function asn1ct:encode/2 has been removed. + + + OTP-14219 Application(s): asn1 + + *** HIGHLIGHT *** + + The new 'maps' option changes the representation of the + types SEQUENCE and SET to be maps (instead of records). + + + Full runtime dependencies of asn1-5.0: erts-7.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- common_test-1.15 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14332 Application(s): common_test + Related Id(s): seq13299 + + Errors in the documentation for user HTML stylesheets + have been corrected. + + + OTP-14400 Application(s): common_test, snmp, stdlib + + Internal code change: Calls to catch followed by a call + to erlang:get_stacktrace/0 has been rewritten to use + try instead of catch to make the code future-proof. + + + --- Improvements and New Features --- + + OTP-13806 Application(s): common_test + + The ct_slave modules now handle nodenames in the same + way as nodenames passed to -sname. That means + ct_slave:start('b@127.0.0.1'). will now work. + + + OTP-14179 Application(s): common_test + + Added the new option, keep_logs. If setting the value + for this option to an integer, N, common_test will + remove all ct_run.* directories in the current log + directory, except the N newest. + + + OTP-14284 Application(s): common_test + + The existing ct_netconfc:open/1,2 opens an SSH + connection with one SSH channel realizing one Netconf + session. To allow testing of multiple sessions over the + same SSH connection, the following functions are added + to ct_netconfc: + + * connect/1,2 - establish an SSH connection * + disconnect/1 - close the given SSH connection * + session/1,2,3 - open an ssh channel on the given + connection and send 'hello' to start a Netconf session + + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + OTP-14415 Application(s): common_test + Related Id(s): seq13315 + + The function ct_ssh:shell/2,3 is added. + + + Full runtime dependencies of common_test-1.15: compiler-6.0, + crypto-3.6, debugger-4.1, erts-7.0, inets-6.0, kernel-4.0, + observer-2.1, runtime_tools-1.8.16, sasl-2.4.2, snmp-5.1.2, ssh-4.0, + stdlib-2.5, syntax_tools-1.7, tools-2.8, xmerl-1.3.8 + + + --------------------------------------------------------------------- + --- compiler-7.1 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-13690 Application(s): compiler, stdlib + + For many releases, it has been legal to override a BIF + with a local function having the same name. However, + calling a local function with the same name as guard + BIF as filter in a list comprehension was not allowed. + + + OTP-14408 Application(s): compiler + Related Id(s): ERL-417 + + compile:forms/2 would not return the module name as + documented when one of the options 'from_core', + 'from_asm', or 'from_beam' was given. Also, the + compiler would crash if one of those options was + combined with 'native'. + + + --- Improvements and New Features --- + + OTP-12148 Application(s): compiler, erts + + Optimized test for tuples with an atom as first + element. + + + OTP-13794 Application(s): compiler + + Compilation of modules with huge literal binary strings + is now much faster. + + + OTP-13831 Application(s): compiler, erts, hipe, kernel, percept, + stdlib + Related Id(s): OTP-13735 + + Replaced usage of deprecated symbolic time unit + representations. + + + OTP-13856 Application(s): compiler + + The undocumented and unsupported module sys_pre_expand + has been removed. As a partial replacement for the + functionality, there is a new function + erl_internal:add_predefined_functions/1 and + erl_expand_records will now add a module prefix to + calls to BIFs and imported functions. + + + OTP-13924 Application(s): compiler + + The internal compiler passes now start all generated + variables with "@" to avoid any conflicts with + variables in languages such as Elixir or LFE. + + + OTP-14000 Application(s): compiler, erts, stdlib + + The function fmod/2 has been added to the math module. + + + OTP-14042 Application(s): compiler + + Code generation for complicated guards have been + improved. + + + OTP-14058 Application(s): compiler + + The compiler has new warnings for repeated identical + map keys. + + A map expression such as, + + #{'a' => 1, 'b' => 2, 'a' => 3}. + + will produce a warning for the repeated key 'a'. + + + OTP-14071 Application(s): compiler, stdlib + + By default, there will now be a warning when export_all + is used. The warning can be disabled using + nowarn_export_all. + + + OTP-14072 Application(s): compiler + + Optimize maps pattern matching by only examining the + common keys in each clause first instead of all keys. + This will reduce the number of lookups of each key in + maps pattern matching. + + + OTP-14087 Application(s): compiler + + There is a new 'deterministic' option to omit 'source' + and 'options' tuples in the BEAM file. + + + OTP-14125 Application(s): compiler, dialyzer + Related Id(s): ERL-308 + + Analyzing modules with binary construction with huge + strings is now much faster. The compiler also compiles + such modules slightly faster. + + + OTP-14178 Application(s): compiler, erts + + *** HIGHLIGHT *** + + Atoms may now contain arbitrary Unicode characters. + + + OTP-14221 Application(s): compiler + + compile:file/2 now accepts the option extra_chunks to + include extra chunks in the BEAM file. + + + OTP-14369 Application(s): compiler, dialyzer, stdlib + Related Id(s): PR-1367 + + The format of debug information that is stored in BEAM + files (when debug_info is used) has been changed. The + purpose of the change is to better support other + BEAM-based languages such as Elixir or LFE. + + All tools included in OTP (dialyzer, debugger, cover, + and so on) will handle both the new format and the + previous format. Tools that retrieve the debug + information using beam_lib:chunk(Beam, [abstract_code]) + will continue to work with both the new and old format. + Tools that call beam_lib:chunk(Beam, ["Abst"]) will not + work with the new format. + + For more information, see the description of debug_info + in the documentation for beam_lib and the description + of the {debug_info,{Backend,Data}} option in the + documentation for compile. + + + OTP-14401 Application(s): compiler + + In a future release, erlang:get_stacktrace/0 will + probably only work when called from within a 'try' + expression (otherwise it will return []. + + To help prepare for that change, the compiler will now + by default warn if 'get_stacktrace/0' is used in a way + that will not work in the future. Note that the warning + will not be issued if 'get_stacktrace/0' is used in a + function that uses neither 'catch' nor 'try' (because + that could be a legal use if the function is called + from within a 'try'. + + + Full runtime dependencies of compiler-7.1: crypto-3.6, erts-9.0, + hipe-3.12, kernel-4.0, stdlib-2.5 + + + --------------------------------------------------------------------- + --- cosProperty-1.2.2 ----------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14006 Application(s): cosProperty, orber + + Fix dialyzer warnings in Orber and CosProperty. + + + Full runtime dependencies of cosProperty-1.2.2: erts-7.0, kernel-3.0, + mnesia-4.12, orber-3.6.27, stdlib-2.0 + + + --------------------------------------------------------------------- + --- crypto-4.0 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14247 Application(s): crypto + + LibreSSL can now be used by the modernized crypto app. + + + OTP-14316 Application(s): asn1, crypto, runtime_tools + Related Id(s): PR-1390 + + Add compile option -compile(no_native) in modules with + on_load directive which is not yet supported by HiPE. + + + OTP-14435 Application(s): crypto + Related Id(s): OTP-14313, PR-1393, PR-1462 + + Fix a bug in aes cfb128 function introduced by the bug + fix in GitHub pull request #1393. + + + --- Improvements and New Features --- + + OTP-13779 Application(s): crypto + Related Id(s): ERL-82, PR-1138 + + Add basic support for CMAC + + + OTP-13873 Application(s): crypto + + *** POTENTIAL INCOMPATIBILITY *** + + Removed functions deprecated in crypto-3.0 first + released in OTP-R16B01 + + + OTP-13900 Application(s): crypto + + *** HIGHLIGHT *** + + The crypto application now supports OpenSSL 1.1. + + + OTP-13921 Application(s): crypto, ssl + Related Id(s): PR-1180 + + *** HIGHLIGHT *** + + Allow Erlang/OTP to use OpenSSL in FIPS-140 mode, in + order to satisfy specific security requirements (mostly + by different parts of the US federal government). + + See the new crypto users guide "FIPS mode" chapter + about building and using the FIPS support which is + disabled by default. + + (Thanks to dszoboszlay and legoscia) + + + OTP-14092 Application(s): crypto + Related Id(s): PR-1291 + + Crypto chacha20-poly1305 as in RFC 7539 enabled for + OpenSSL >= 1.1. + + Thanks to mururu. + + + OTP-14140 Application(s): crypto + Related Id(s): ERL-165, PR-1299 + + RSA key generation added to crypto:generate_key/2. + Thanks to wiml. + + An interface is also added to + public_key:generate_key/1. + + + OTP-14171 Application(s): crypto + + *** POTENTIAL INCOMPATIBILITY *** + + Raised minimum requirement for OpenSSL version to + OpenSSL-0.9.8.c although we recommend a much higher + version, that is a version that is still maintained + officially by the OpenSSL project. Note that using such + an old version may restrict the crypto algorithms + supported. + + + OTP-14274 Application(s): crypto + + Deprecate crypto:rand_uniform/2 as it is not + cryptographically strong + + + OTP-14317 Application(s): crypto, stdlib + Related Id(s): PR-1372 + + The Crypto application now supports generation of + cryptographically strong random numbers (floats < 1.0 + and integer arbitrary ranges) as a plugin to the 'rand' + module. + + + OTP-14436 Application(s): crypto + Related Id(s): PR-1396 + + This replaces the hard coded test values for AES, CMAC + and GCM ciphers with the full validation set from + NIST's CAVP program. + + + Full runtime dependencies of crypto-4.0: erts-9.0, kernel-5.3, + stdlib-3.4 + + + --------------------------------------------------------------------- + --- debugger-4.2.2 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14296 Application(s): debugger, stdlib + + The Erlang shell, qlc:string_to_handle(), and the + Debugger (the Evaluator area and Edit variable window + of the Bindings area) can parse pids, ports, + references, and external funs, as long as they can be + created in the running system. + + + OTP-14318 Application(s): debugger + + Fix editing of simple binary values in the Bindings + area of the Debugger's Attach Process Window. + + + --- Improvements and New Features --- + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of debugger-4.2.2: compiler-5.0, erts-6.0, + kernel-3.0, stdlib-2.5, wx-1.2 + + + --------------------------------------------------------------------- + --- dialyzer-3.2 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14423 Application(s): dialyzer + Related Id(s): OTP-14323 + + The check of bad type variables in type declarations + was mistakingly removed in Erlang/OTP 18, and is now + re-introduced. + + + --- Improvements and New Features --- + + OTP-14125 Application(s): compiler, dialyzer + Related Id(s): ERL-308 + + Analyzing modules with binary construction with huge + strings is now much faster. The compiler also compiles + such modules slightly faster. + + + OTP-14127 Application(s): dialyzer + + The peak memory consumption is reduced. + + + OTP-14218 Application(s): dialyzer + Related Id(s): OTP-14127 + + Warnings about unknown types are now also generated for + types not used by any function specification. + + + OTP-14336 Application(s): dialyzer, otp + + TypEr has been removed as separate application and is + now a part of the Dialyzer application. Documentation + for TypEr has been added in the Dialyzer application. + + + OTP-14369 Application(s): compiler, dialyzer, stdlib + Related Id(s): PR-1367 + + The format of debug information that is stored in BEAM + files (when debug_info is used) has been changed. The + purpose of the change is to better support other + BEAM-based languages such as Elixir or LFE. + + All tools included in OTP (dialyzer, debugger, cover, + and so on) will handle both the new format and the + previous format. Tools that retrieve the debug + information using beam_lib:chunk(Beam, [abstract_code]) + will continue to work with both the new and old format. + Tools that call beam_lib:chunk(Beam, ["Abst"]) will not + work with the new format. + + For more information, see the description of debug_info + in the documentation for beam_lib and the description + of the {debug_info,{Backend,Data}} option in the + documentation for compile. + + + Full runtime dependencies of dialyzer-3.2: compiler-7.0, erts-8.0, + hipe-3.15.4, kernel-5.0, stdlib-3.0, syntax_tools-2.0, wx-1.2 + + + --------------------------------------------------------------------- + --- diameter-2.0 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14338 Application(s): diameter + + Let candidate peers be passed to diameter:call/4 + + With call option peer, to allow a request to be sent to + a peer that hasn't advertised support for the + application in question. + + RFC 6733 2.4 requires a node to send the application + identifiers of all locally supported applications at + capabilities exchange, but not all nodes respect this + for the common application, and diameter itself will + send D[WP][RA] without the common application having + been explicitly advertised. Regarding the common + application as implicit renders Result-Code 5010 + (DIAMETER_NO_COMMON_APPLICATION) meaningless however, + so allow any request to be sent as long as there is a + configured dictionary to support it. + + + OTP-14343 Application(s): diameter + + *** POTENTIAL INCOMPATIBILITY *** + + Improve performance of message encode/decode and + related handling. + + Dictionaries using @custom_types or @codecs will need + to adapt the corresponding functions to accept an + additional argument that is now passed through + encode/decode, which was required to remove various + process dictionary-based workarounds that have been + used to solve problems in the past. + + + OTP-14455 Application(s): diameter + Related Id(s): ERL-332 + + Add transport options to avoid deadlock and allow for + load regulation. + + Both diameter_tcp and diameter_sctp now accept two new + configuration options: sender and message_cb. The + former causes outgoing sends to take place in a + dedicated process, to avoid the possibility of deadlock + when both the transport process and its peer block in + send. The latter allows a callback to control the + reading of messages on the socket, to allow for + backpressure towards peers when the rate of incoming + traffic is greater than can otherwise be handled. + + Neither of these options are yet documented, but are + unlikely to change unless problems are discovered. The + sender option is not the default since it should + probably always be used in combination with message_cb, + to prevent incoming requests from being read at a + higher rate than a peer allows outgoing answers to be + sent. + + + Full runtime dependencies of diameter-2.0: erts-6.4, kernel-3.2, + ssl-6.0, stdlib-2.4 + + + --------------------------------------------------------------------- + --- edoc-0.9 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14277 Application(s): edoc + + To support stable builds, edoc no longer includes time + stamps in the footer for generated files. + + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of edoc-0.9: erts-6.0, inets-5.10, + kernel-3.0, stdlib-2.5, syntax_tools-1.6.14, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_docgen-0.7 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14333 Application(s): erl_docgen + Related Id(s): ERL-393 + + Sort index of C functions alphabetically in the + sidebar. + + + OTP-14431 Application(s): erl_docgen + + The right side index of functions now handle functions + with same name but different arity. + + + --- Improvements and New Features --- + + OTP-14371 Application(s): erl_docgen + Related Id(s): PR-1215 + + Improvements in the OTP documentation style. + + (Thanks to Mariano Guerra) + + + Full runtime dependencies of erl_docgen-0.7: edoc-0.7.13, erts-6.0, + stdlib-2.5, xmerl-1.3.7 + + + --------------------------------------------------------------------- + --- erl_interface-3.10 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14310 Application(s): erl_interface, kernel + + Fix bug where gethostname would incorrectly fail with + enametoolong on Linux. + + + --- Improvements and New Features --- + + OTP-14337 Application(s): erl_interface, erts, jinterface + + Remove generation of atoms in old latin1 external + format in the distribution between erlang nodes, + erl_interface, and jinterface. The new utf8 format for + atoms was introduced in OTP R16. An OTP 20 node can + therefore not connect to nodes older than R16. + + Atoms that can be encoded using latin1 are still + encoded by term_to_binary() using latin1 encoding. Note + that all atoms will by default be encoded using utf8 in + a future Erlang/OTP release. For more information see + the documentation of erlang:term_to_binary/2. + + + --------------------------------------------------------------------- + --- erts-9.0 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-13968 Application(s): erts + + Fix various bugs regarding loading, upgrade and purge + of HiPE compiled code: + + -- The native code memory for a purged module was never + deallocated. + + -- Wrong functions could in some cases be called after + a module upgrade. + + -- erlang:check_process_code did not check for + recursive calls made from native code. + + + OTP-14238 Application(s): erts, hipe + + Hipe optional LLVM backend does require LLVM version + 3.9 or later as older versions forced strong + dependencies on erts internals structures. + + + OTP-14255 Application(s): erts + Related Id(s): OTP-14400, OTP-14401 + + When an exception such as 'throw(HugeTerm)' was caught, + HugeTerm term would be kept in the process until the + next exception occurred, potentially increasing the + heap size for the process. That has been corrected. + + + OTP-14303 Application(s): erts + + Slogans in crash dumps have been extended to print more + complex terms. + + + OTP-14304 Application(s): erts + + Fixed bug when using enif_inspect_binary in combination + with enif_copy. In some circumstances the inspected + binary could be reallocated by the enif_copy call when + it shouldn't have been. + + + OTP-14305 Application(s): erts + + The address family local (AF_UNIX / AF_LOCAL) now does + not ensure zero termination of Linux Abstract Addresses + so they can use all bytes. + + + OTP-14307 Application(s): erts + Related Id(s): PR-1379 + + Use -fno-PIE for Gentoo Hardened and others that don't + accept linker flag -no-pie. + + + OTP-14314 Application(s): erts + Related Id(s): ERL-369, PR-1394 + + Disable hipe for ppc64le architecture (little endian) + as it is not, and has never been, supported. It was + earlier equated with ppc64 (big endian) which lead to + broken build without --disable-hipe. + + + OTP-14324 Application(s): erts + + Fix 'epmd -kill' to return a failure exit status code + if epmd was not killed because of some error. + + + OTP-14335 Application(s): erts + + Fixed the following dirty scheduler related bugs: + + -- the +SDPcpu command line argument could cause the + amount of dirty CPU schedulers to be set to zero + + -- erlang:system_flag(multi_scheduling, _) failed when + only one normal scheduler was used together with dirty + scheduler support + + + OTP-14352 Application(s): erts + + Fix erlexec to handle mismatch in sysconf and proc fs + when figuring out the cpu topology. This behaviour has + been seen when using docker together with + --cpuset-cpus. + + + OTP-14360 Application(s): erts + Related Id(s): ERL-401, PR-1417 + + Fixed memory segment cache used for multiblock + carriers. Huge (> 2GB) memory segments could cause a VM + crash. Creation of such huge memory segments used for + multiblock carriers is however very uncommon. + + + OTP-14390 Application(s): erts, kernel + + Fix bug causing code:is_module_native to falsely return + true when local call trace is enabled for the module. + + + OTP-14411 Application(s): erts + + Fix emulator crash when receive tracing on a + trace_delivered message. + + + OTP-14424 Application(s): erts + + Fix file:sendfile error handling on SunOS when a + connection is closed during transmission. + + + OTP-14433 Application(s): erts + + escript did not handle paths with spaces correct. + + + OTP-14437 Application(s): erts + Related Id(s): ERL-360 + + Fix erroneous lock check assertion when wx is run on + MacOS X. + + + OTP-14441 Application(s): erts + Related Id(s): ERL-430 + + Active-mode TCP sockets are now cleaned up properly on + send/shutdown errors. + + + OTP-14447 Application(s): erts + + Fix compilation of hipe_mkliterals when the LIBS + configure variable had to be set. + + + --- Improvements and New Features --- + + OTP-11695 Application(s): erts + + Added erlang:garbage_collect/2 that takes an option + list as the last argument that can be used to control + whether a minor or a major garbage collection is to be + done. Doing a minor collection only collects terms that + have recently died, but is cheaper than a major + collection. + + + OTP-12148 Application(s): compiler, erts + + Optimized test for tuples with an atom as first + element. + + + OTP-13529 Application(s): erts + + Erlang literals are no longer copied during process to + process messaging. + + + OTP-13684 Application(s): erts + + Add support in the erl_nif API for asynchronous message + notifications when sockets or other file descriptors + are ready to accept read or write operations. The + following functions have been added: + + -- enif_select + + -- enif_monitor_process + + -- enif_demonitor_process + + -- enif_compare_monitors + + -- enif_open_resource_type_x + + + OTP-13692 Application(s): erts, stdlib + + There are two new guard BIFs 'floor/1' and 'ceil/1'. + They both return integers. In the 'math' module, there + are two new BIFs with the same names that return + floating point values. + + + OTP-13827 Application(s): erts + + *** POTENTIAL INCOMPATIBILITY *** + + Remove deprecated erlang:hash/2. + + + OTP-13831 Application(s): compiler, erts, hipe, kernel, percept, + stdlib + Related Id(s): OTP-13735 + + Replaced usage of deprecated symbolic time unit + representations. + + + OTP-13842 Application(s): erts + + Added support in zlib for extraction of the inflation + dictionary. + + + OTP-13844 Application(s): erts + Related Id(s): OTP-13833 + + *** POTENTIAL INCOMPATIBILITY *** + + The previously used purge strategy has been removed. + The optional purge strategy introduced in ERTS version + 8.1 is now the only strategy available. + + The new purge strategy is slightly incompatible with + the old strategy. Previously processes holding funs + that referred to the module being purged either failed + a soft purge, or was killed during a hard purge. The + new strategy completely ignores funs. If funs referring + to the code being purged exist, and are used after a + purge, an exception will be raised upon usage. That is, + the behavior will be exactly the same as the case when + a fun is received by a process after the purge. + + For more information see the documentation of + erlang:check_process_code/3. + + + OTP-13860 Application(s): erts + + Dirty schedulers are now enabled by default when the + runtime system is built with SMP support. + + + OTP-13903 Application(s): erts + + Improved ETS lookup/insert/delete speed for large set, + bag and duplicate_bag by a significant reduction of the + hash load factor. This speed improvement comes at the + expense of less than one word per table entry. Tables + with less than 256 entries are not affected at all. + + + OTP-13908 Application(s): erts + + *** POTENTIAL INCOMPATIBILITY *** + + The NIF library reload feature is not supported + anymore. It has been marked as deprecated since OTP + R15B. This means that you are only allowed to do one + successful call to erlang:load_nif/2 for each module + instance. A second call to erlang:load_nif/2 will + return {error, {reload, _}} even if the NIF library + implements the reload callback. + + Runtime upgrade of a NIF library is still supported by + using the Erlang module upgrade mechanics with a + current and an old module instance existing at the same + time with their corresponding NIF libraries. + + + OTP-13976 Application(s): erts + + Add erlang:system_info(atom_count) and + erlang:system_info(atom_limit) to provide a way to + retrieve the current and maximum number of atoms. + + + OTP-14000 Application(s): compiler, erts, stdlib + + The function fmod/2 has been added to the math module. + + + OTP-14002 Application(s): erts + + erlang:load_nif/2 returns new error type notsup when + called for a HiPE compiled module, which is not + supported. + + + OTP-14069 Application(s): erts + + Add driver and nif lock instrumentation to lcnt + + + OTP-14149 Application(s): erts + + Reduce memory pressure by converting sub-binaries to + heap-binaries when possible. This is done during + garbage collection. + + + OTP-14152 Application(s): erts + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Dirty schedulers are now enabled and supported on + Erlang runtime systems with SMP support. + + Besides support for dirty NIFs also support for dirty + BIFs and dirty garbage collection have been introduced. + All garbage collections that potentially will take a + long time to complete are now performed on dirty + schedulers if enabled. + + erlang:statistics/1 with arguments inspecting scheduler + and run queue states have been changed due to the dirty + scheduler support. Code using this functionality may + have to be rewritten taking these incompatibilities + into consideration. Examples of such uses are calls to + erlang:statistics(scheduler_wall_time), + statistics(total_run_queue_lengths), + statistics(total_active_tasks), etc. + + + OTP-14178 Application(s): compiler, erts + + *** HIGHLIGHT *** + + Atoms may now contain arbitrary Unicode characters. + + + OTP-14186 Application(s): erts, kernel + + Introduce an event manager in Erlang to handle OS + signals. A subset of OS signals may be subscribed to + and those are described in the Kernel application. + + + OTP-14201 Application(s): erts + Related Id(s): PR-1293 + + The escript program now handles symbolic links to + escripts. + + This is useful for standalone systems with escripts + residing on a bin directory not included in the + execution path (as it may cause their erl program(s) to + override the desired one). Instead the escripts can be + referred to via symbolic links from a bin directory in + the path. + + + OTP-14205 Application(s): erts + + *** HIGHLIGHT *** + + All uses of the magic binary kludge has been replaced + by uses of erlang references. + + A magic binary was presented as an empty binary, but + actually referred other data internally in the Erlang + VM. Since they were presented as empty binaries, + different magic binaries compared as equal, and also + lost their internal data when passed out of an erlang + node. + + The new usage of references has not got any of these + strange semantic issues, and the usage of these + references has been optimized to give the same + performance benefits as well as memory usage benefits + as magic binaries had. + + A couple of examples of previous uses of magic binaries + are match specifications and NIF resources. + + + OTP-14272 Application(s): erts, otp + + *** POTENTIAL INCOMPATIBILITY *** + + The non-smp emulators have been deprecated and are + scheduled for removal in OTP-21. + + In preparation for this, the threaded non-smp emulator + is no longer built by default and has to be enabled + using the --enable-plain-emulator to configure. + + + OTP-14330 Application(s): erts, hipe + Related Id(s): PR-1397 + + Allow HiPE to run on VM built with --enable-m32-build. + + + OTP-14331 Application(s): erts, stdlib + Related Id(s): ERL-208 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Upgraded the OTP internal PCRE library from version + 8.33 to version 8.40. This library is used for + implementation of the re regular expressions module. + + Besides various bug fixes, the new version allows for + better stack protection. In order to utilize this + feature, the stack size of normal scheduler threads is + now by default set to 128 kilo words on all platforms. + The stack size of normal scheduler threads can be set + upon system start by passing the +sss command line + argument to the erl command. + + See http://pcre.org/original/changelog.txt for + information about changes made to PCRE between the + versions 8.33 and 8.40. + + + OTP-14337 Application(s): erl_interface, erts, jinterface + + Remove generation of atoms in old latin1 external + format in the distribution between erlang nodes, + erl_interface, and jinterface. The new utf8 format for + atoms was introduced in OTP R16. An OTP 20 node can + therefore not connect to nodes older than R16. + + Atoms that can be encoded using latin1 are still + encoded by term_to_binary() using latin1 encoding. Note + that all atoms will by default be encoded using utf8 in + a future Erlang/OTP release. For more information see + the documentation of erlang:term_to_binary/2. + + + OTP-14347 Application(s): erts, stdlib + Related Id(s): PR-1412 + + Added function re:version/0 which returns information + about the OTP internal PCRE version used for + implementation of the re module. + + + OTP-14348 Application(s): erts + + Added new debug bif erlang:list_to_port/1. + + + OTP-14356 Application(s): erts + + *** HIGHLIGHT *** + + Various improvements of timer management internally in + the VM. These improvements both reduced memory + consumption of timer wheels as well as reduce the + amount of work that has to be performed in order to + handle timers. + + + OTP-14357 Application(s): erts, kernel, runtime_tools + Related Id(s): PR-1326 + + Sockets can now be bound to device (SO_BINDTODEVICE) on + platforms where it is supported. + + This has been implemented e.g to support VRF-Lite under + Linux; see + + VRF , and GitHub pull request #1326. + + + OTP-14380 Application(s): erts + + Added the following erl command line arguments with + which you can set suggested stack for dirty schedulers: + + -- +sssdcpu -- for dirty CPU schedulers + + -- +sssdio -- for dirty IO schedulers + + The default suggested stack size for dirty schedulers + is 40 kilo words. + + + OTP-14381 Application(s): erts + + Changed erts startup program name, argv 0, to use the + environment variable ESCRIPT_NAME so that erlc, + dialyzer, typer, ct_run, or the escript name can be + seen with external programs, such as ps and htop + (depending on options), on unix. + + + OTP-14384 Application(s): erts + Related Id(s): OTP-14201 + + Improvements of escript documentation. + + + OTP-14385 Application(s): erts + Related Id(s): PR-1413 + + Add function enif_hash for NIFs to calculate hash + values of arbitrary terms. + + + OTP-14407 Application(s): erts, otp + + *** HIGHLIGHT *** + + './configure --enable-lock-counter' will enabling + building of an additional emulator that has support for + lock counting. (The option previously existed, but + would turn on lock counting in the default emulator + being built.) To start the lock-counting emulator, use + 'erl -emu_type lcnt'. + + On Windows, erl recognized the undocumented option + -debug for starting a debug-compiled emulator. That + option has been removed. Use 'erl -emu_type debug' + instead. + + + OTP-14425 Application(s): erts, kernel + + Warnings have been added to the relevant documentation + about not using un-secure distributed nodes in exposed + environments. + + + OTP-14434 Application(s): erts + + Improvement of the documentation of the environment + variable ERL_CRASH_DUMP_SECONDS as well as the default + behavior when it is not set. + + + OTP-14438 Application(s): erts + + Enabled off-heap message queue for some system + processes that might receive large amounts of messages. + + + OTP-14442 Application(s): erts + Related Id(s): ERIERL-22 + + ETS lock indexes have been replaced with the table name + in LCNT results. + + + OTP-14453 Application(s): erts + Related Id(s): PR-1400 + + Introduced the new functions enif_whereis_pid() and + enif_whereis_port(). + + + Full runtime dependencies of erts-9.0: kernel-5.0, sasl-3.0.1, + stdlib-3.0 + + + --------------------------------------------------------------------- + --- eunit-2.3.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14287 Application(s): eunit + + The surefire reports from eunit will no longer have + names with embedded double quotes. + + + Full runtime dependencies of eunit-2.3.3: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --- hipe-3.16 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-13862 Application(s): hipe + Related Id(s): PR-1154 + + Fix hipe compiler flags o0 and o1 that have previously + been ignored by mistake. + + + OTP-13983 Application(s): hipe + + Fix LLVM backend to not convert all remote calls to own + module, like ?MODULE:foo(), into local calls. + + + OTP-14238 Application(s): erts, hipe + + Hipe optional LLVM backend does require LLVM version + 3.9 or later as older versions forced strong + dependencies on erts internals structures. + + + OTP-14302 Application(s): hipe + Related Id(s): ERL-376, PR-1386 + + Fix a bug that has been seen causing failed loading of + hipe compiled modules on NetBSD due to unaligned data + pointers. + + + OTP-14306 Application(s): hipe + Related Id(s): ERL-278, PR-1392 + + Fix miscompilation bug in hipe that could cause wrong + function clause to be called from non-tail calls, where + the return value is unused, if the right function + clause is only reachable from those non-tail calls. + + + --- Improvements and New Features --- + + OTP-13810 Application(s): hipe + Related Id(s): PR-1124 + + Improve hipe compilation time for large functions. + + + OTP-13831 Application(s): compiler, erts, hipe, kernel, percept, + stdlib + Related Id(s): OTP-13735 + + Replaced usage of deprecated symbolic time unit + representations. + + + OTP-13879 Application(s): hipe + + Speed up hipe compile time register allocation for + larger function. + + + OTP-14261 Application(s): hipe + Related Id(s): PR-1360 + + Various code generation improvements. + + + OTP-14293 Application(s): hipe + Related Id(s): PR-1380 + + Improve hipe compiler to generate code with better CPU + register utilization at runtime by the use of 'Live + Range Splitting' techniques. + + + OTP-14330 Application(s): erts, hipe + Related Id(s): PR-1397 + + Allow HiPE to run on VM built with --enable-m32-build. + + + Full runtime dependencies of hipe-3.16: compiler-5.0, erts-9.0, + kernel-3.0, stdlib-2.5, syntax_tools-1.6.14 + + + --------------------------------------------------------------------- + --- inets-6.4 ------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14394 Application(s): inets + + httpd_util:rfc1123_date/1 gracefully handle invalid DST + dates by returning the original time in the expected + rfc1123 format. + + + --- Improvements and New Features --- + + OTP-14404 Application(s): inets + + Add unicode binary support to http_uri functions + + + OTP-14429 Application(s): inets + + httpc - Change timeout handling so the redirects cause + a new timer to be set. This means that a simple + redirected request could return after 2*timeout + milliseconds. + + + Full runtime dependencies of inets-6.4: erts-6.0, kernel-3.0, + mnesia-4.12, runtime_tools-1.8.14, ssl-5.3.4, stdlib-2.0 + + + --------------------------------------------------------------------- + --- jinterface-1.8 -------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14337 Application(s): erl_interface, erts, jinterface + + Remove generation of atoms in old latin1 external + format in the distribution between erlang nodes, + erl_interface, and jinterface. The new utf8 format for + atoms was introduced in OTP R16. An OTP 20 node can + therefore not connect to nodes older than R16. + + Atoms that can be encoded using latin1 are still + encoded by term_to_binary() using latin1 encoding. Note + that all atoms will by default be encoded using utf8 in + a future Erlang/OTP release. For more information see + the documentation of erlang:term_to_binary/2. + + + --------------------------------------------------------------------- + --- kernel-5.3 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-13006 Application(s): kernel + Related Id(s): ERIERL-20, ERL-429 + + *** POTENTIAL INCOMPATIBILITY *** + + Function inet:ntoa/1 has been fixed to return lowercase + letters according to RFC 5935 that has been approved + after this function was written. Previously uppercase + letters were returned so this may be a backwards + incompatible change depending on how the returned + address string is used. + + Function inet:parse_address/1 has been fixed to accept + %-suffixes on scoped addresses. The addresses does not + work yet, but gives no parse errors. + + + OTP-14310 Application(s): erl_interface, kernel + + Fix bug where gethostname would incorrectly fail with + enametoolong on Linux. + + + OTP-14390 Application(s): erts, kernel + + Fix bug causing code:is_module_native to falsely return + true when local call trace is enabled for the module. + + + OTP-14426 Application(s): kernel + + Add early reject of invalid node names from distributed + nodes. + + + --- Improvements and New Features --- + + OTP-13805 Application(s): kernel + + Since Unicode is now allowed in atoms an extra check is + needed for node names, which are restricted to Latin-1. + + + OTP-13831 Application(s): compiler, erts, hipe, kernel, percept, + stdlib + Related Id(s): OTP-13735 + + Replaced usage of deprecated symbolic time unit + representations. + + + OTP-13909 Application(s): kernel + + file:write_file(Name, Data, [raw]) would turn Data into + a single binary before writing. This meant it could not + take advantage of the writev() system call if it was + given a list of binaries and told to write with raw + mode. + + + OTP-14057 Application(s): kernel + Related Id(s): PR-1245 + + The performance of the disk_log has been somewhat + improved in some corner cases (big items), and the + documentation has been clarified. + + + OTP-14059 Application(s): kernel, stdlib + + *** HIGHLIGHT *** + + Functions for detecting changed code has been added. + code:modified_modules/0 returns all currently loaded + modules that have changed on disk. code:module_status/1 + returns the status for a module. In the shell and in c + module, mm/0 is short for code:modified_modules/0, and + lm/0 reloads all currently loaded modules that have + changed on disk. + + + OTP-14186 Application(s): erts, kernel + + Introduce an event manager in Erlang to handle OS + signals. A subset of OS signals may be subscribed to + and those are described in the Kernel application. + + + OTP-14357 Application(s): erts, kernel, runtime_tools + Related Id(s): PR-1326 + + Sockets can now be bound to device (SO_BINDTODEVICE) on + platforms where it is supported. + + This has been implemented e.g to support VRF-Lite under + Linux; see + + VRF , and GitHub pull request #1326. + + + OTP-14409 Application(s): kernel + Related Id(s): PR-1420 + + Added option to store shell_history on disk so that the + history can be reused between sessions. + + + OTP-14417 Application(s): kernel, stdlib + + The size of crash reports created by gen_server, + gen_statem and proc_lib is limited with aid of the + Kernel application variable error_logger_format_depth. + The purpose is to limit the size of the messages sent + to the error_logger process when processes with huge + message queues or states crash. + + The crash report generated by proc_lib includes the new + tag message_queue_len. The neighbour report also + includes the new tag current_stacktrace. Finally, the + neighbour report no longer includes the tags messages + and dictionary. + + The new function error_logger:get_format_depth/0 can be + used to retrieve the value of the Kernel application + variable error_logger_format_depth. + + + OTP-14419 Application(s): kernel + + One of the ETS tables used by the global module is + created with {read_concurrency, true} in order to + reduce contention. + + + OTP-14425 Application(s): erts, kernel + + Warnings have been added to the relevant documentation + about not using un-secure distributed nodes in exposed + environments. + + + Full runtime dependencies of kernel-5.3: erts-9.0, sasl-3.0, + stdlib-3.0 + + + --------------------------------------------------------------------- + --- megaco-3.18.2 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14387 Application(s): megaco + + Typos have been fixed. + + + Full runtime dependencies of megaco-3.18.2: asn1-3.0, debugger-4.0, + erts-7.0, et-1.5, kernel-3.0, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- mnesia-4.15 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14039 Application(s): mnesia + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the wrapping of select continuations in + extension plugin handling. This might require the user + to rewrite user backend plugin if used. + + + Full runtime dependencies of mnesia-4.15: erts-7.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- observer-2.4 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14393 Application(s): observer + + etop had a hardcoded timeout value of 1 second when + waiting for data from a remote node. When this expired, + which could happen for instance if there were very many + processes on the remote node, etop would exit with + reason connection_lost. To overcome this problem, the + timeout is now changed to be the same as the update + interval, which is configurable. + + + --- Improvements and New Features --- + + OTP-14137 Application(s): observer + + Show dirty-scheduler threads in performance monitor + graph and add a column with maximum allocated memory in + the Memory Allocators table. + + + OTP-14270 Application(s): observer + + Keep table and port selection after refresh of tables. + Store settings before shutdown and restore when + starting application. + + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + OTP-14345 Application(s): observer + Related Id(s): ERL-399 + + When observing a node older than OTP-19.0, a pop-up + will be displayed when trying to access port + information. Earlier, observer would crash in this + situation. + + + Full runtime dependencies of observer-2.4: erts-7.0, et-1.5, + inets-5.10, kernel-3.0, runtime_tools-1.8.14, stdlib-2.0, wx-1.2 + + + --------------------------------------------------------------------- + --- orber-3.8.3 ----------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14006 Application(s): cosProperty, orber + + Fix dialyzer warnings in Orber and CosProperty. + + + Full runtime dependencies of orber-3.8.3: erts-7.0, inets-5.10, + kernel-3.0, mnesia-4.12, ssl-5.3.4, stdlib-2.5 + + + --------------------------------------------------------------------- + --- parsetools-2.1.5 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14276 Application(s): parsetools + Related Id(s): PR-1357 + + Minor documentation fixes + + + --- Improvements and New Features --- + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of parsetools-2.1.5: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --- public_key-1.4.1 ------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14258 Application(s): public_key + + Bug for public_key:generate_key({namedCurve,OID}) + fixed. + + + --- Improvements and New Features --- + + OTP-14111 Application(s): public_key + + Modernized internal representation used for crl + validation by use of maps. + + + OTP-14294 Application(s): public_key + + Support EC key in pkix_sign/2 + + + Full runtime dependencies of public_key-1.4.1: asn1-3.0, crypto-3.8, + erts-6.0, kernel-3.0, stdlib-2.0 + + + --------------------------------------------------------------------- + --- reltool-0.7.4 --------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14422 Application(s): reltool + Related Id(s): OTP-13830 + + The User's Guide examples are updated after removal of + support for Dets files created with Erlang/OTP R7 and + earlier. + + + Full runtime dependencies of reltool-0.7.4: erts-7.0, kernel-3.0, + sasl-2.4, stdlib-2.0, tools-2.6.14, wx-1.2 + + + --------------------------------------------------------------------- + --- runtime_tools-1.12 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14316 Application(s): asn1, crypto, runtime_tools + Related Id(s): PR-1390 + + Add compile option -compile(no_native) in modules with + on_load directive which is not yet supported by HiPE. + + + --- Improvements and New Features --- + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + OTP-14357 Application(s): erts, kernel, runtime_tools + Related Id(s): PR-1326 + + Sockets can now be bound to device (SO_BINDTODEVICE) on + platforms where it is supported. + + This has been implemented e.g to support VRF-Lite under + Linux; see + + VRF , and GitHub pull request #1326. + + + Full runtime dependencies of runtime_tools-1.12: erts-8.0, + kernel-5.0, mnesia-4.12, stdlib-3.0 + + + --------------------------------------------------------------------- + --- sasl-3.0.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14029 Application(s): sasl + + Documented default values for the 'mod' and + 'start_phases' fields in .app files were not allowed as + actual values in a .app file. This is now corrected. + + + --- Improvements and New Features --- + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of sasl-3.0.4: erts-8.1, kernel-5.0, + stdlib-3.0, tools-2.6.14 + + + --------------------------------------------------------------------- + --- snmp-5.2.6 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14400 Application(s): common_test, snmp, stdlib + + Internal code change: Calls to catch followed by a call + to erlang:get_stacktrace/0 has been rewritten to use + try instead of catch to make the code future-proof. + + + Full runtime dependencies of snmp-5.2.6: crypto-3.3, erts-6.0, + kernel-3.0, mnesia-4.12, runtime_tools-1.8.14, stdlib-2.5 + + + --------------------------------------------------------------------- + --- ssh-4.5 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-12872 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + The internal handling of SSH options is re-written. + + Previously there were no checks if a client option was + given to a daemon or vice versa. This is corrected now. + If your code has e.g. a client-only option in a call to + start a daemon, the call will fail. + + + OTP-14110 Application(s): ssh + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Modernization of key exchange algorithms. See + draft-ietf-curdle-ssh-kex-sha2 for a discussion. + + Removed an outdated weak algorithm and added stronger + replacements to keep interoperability with other modern + ssh clients and servers. The default ordering of the + algorithms is also adjusted. + + Retired: The nowadays unsecure key-exchange + diffie-hellman-group1-sha1 is not enabled by default, + but can be enabled with the option + preferred-algorithms. + + Added: The new stronger key-exchange + diffie-hellman-group16-sha512, + diffie-hellman-group18-sha512 and + diffie-hellman-group14-sha256 are added and enabled by + default. + + The questionable [RFC 6194] sha1-based algorithms + diffie-hellman-group-exchange-sha1 and + diffie-hellman-group14-sha1 are however still kept + enabled by default for compatibility with ancient + clients and servers that lack modern key-exchange + alternatives. When the draft-ietf-curdle-ssh-kex-sha2 + becomes an rfc, those sha1-based algorithms and + diffie-hellman-group1-sha1 will be deprecated by IETF. + They might then be removed from the default list in + Erlang/OTP. + + + OTP-14117 Application(s): ssh + + Modernized internal representation of sftp by use of + maps. + + + OTP-14193 Application(s): ssh + + *** HIGHLIGHT *** + + The Extension Negotiation Mechanism and the extension + server-sig-algs in draft-ietf-curdle-ssh-ext-info-05 + are implemented. + + The related draft-ietf-curdle-rsa-sha2-05 is + implemented and introduces the signature algorithms + rsa-sha2-256 and rsa-sha2-512. + + + OTP-14216 Application(s): ssh + + The 'timeout' and 'connect_timeout' handling in + ssh_sftp:start_channel documentation is clarified. + + + OTP-14243 Application(s): ssh + + The functions ssh:connect, ssh:shell and + ssh:start_channel now accept an IP-tuple as Host + destination argument. + + + OTP-14259 Application(s): ssh + + The function ssh:daemon_info/1 now returns Host and + Profile as well as the Port info in the property list. + + + OTP-14263 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + Removed the option public_key_alg which was deprecated + in 18.2. Use pref_public_key_algs instead. + + + OTP-14264 Application(s): ssh + + *** POTENTIAL INCOMPATIBILITY *** + + The SSH application is refactored regarding daemon + starting. The resolution of contradicting Host argument + and ip option were not described. There were also + strange corner cases when the 'any' value was used in + Host argument or ip option. This is (hopefully) + resolved now, but it may cause incompatibilities for + code using both Host and the ip option. The value + 'loopback' has been added for a correct way of naming + those addresses. + + + OTP-14267 Application(s): ssh + Related Id(s): OTP-14266 + + The supervisor code is refactored. The naming of + listening IP-Port-Profile triples are slightly changed + to improve consistency in strange corner cases as + resolved by OTP-14264 + + + OTP-14312 Application(s): ssh + + The idle_time option can now be used in daemons. + + + OTP-14361 Application(s): ssh + + Added test cases for IETF-CURDLE Extension Negotiation + (ext-info) + + + OTP-14362 Application(s): ssh + Related Id(s): OTP-14361 + + Testcases for IETF-CURDLE extension server-sig-algs + including rsa-sha2-* + + + OTP-14399 Application(s): ssh + + The option auth_methods can now also be used in clients + to select which authentication options that are used + and in which order. + + + OTP-14410 Application(s): ssh + + Checks that a ECDSA public key (ecdsa-sha2-nistp*) + stored in a file has the correct size. + + + Full runtime dependencies of ssh-4.5: crypto-3.7.3, erts-6.0, + kernel-3.0, public_key-1.4, stdlib-3.3 + + + --------------------------------------------------------------------- + --- ssl-8.2 --------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14421 Application(s): ssl + + ECDH-ECDSA key exchange supported, was accidently + dismissed in earlier versions. + + + OTP-14443 Application(s): ssl + + Correct close semantics for active once connections. + This was a timing dependent bug the resulted in the + close message not always reaching the ssl user process. + + + --- Improvements and New Features --- + + OTP-13820 Application(s): ssl + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + TLS-1.2 clients will now always send hello messages on + its own format, as opposed to earlier versions that + will send the hello on the lowest supported version, + this is a change supported by the latest RFC. + + This will make interoperability with some newer servers + smoother. Potentially, but unlikely, this could cause a + problem with older servers if they do not adhere to the + RFC and ignore unknown extensions. + + + OTP-13921 Application(s): crypto, ssl + Related Id(s): PR-1180 + + *** HIGHLIGHT *** + + Allow Erlang/OTP to use OpenSSL in FIPS-140 mode, in + order to satisfy specific security requirements (mostly + by different parts of the US federal government). + + See the new crypto users guide "FIPS mode" chapter + about building and using the FIPS support which is + disabled by default. + + (Thanks to dszoboszlay and legoscia) + + + OTP-14076 Application(s): ssl + + Implemented DTLS cookie generation, required by spec, + instead of using a hardcoded value. + + + OTP-14077 Application(s): ssl + + Implement sliding window replay protection of DTLS + records. + + + OTP-14197 Application(s): ssl + + *** HIGHLIGHT *** + + TLS client processes will by default call + public_key:pkix_verify_hostname/2 to verify the + hostname of the connection with the server certificates + specified hostname during certificate path validation. + The user may explicitly disables it. Also if the + hostname can not be derived from the first argument to + connect or is not supplied by the server name + indication option, the check will not be performed. + + + OTP-14291 Application(s): ssl + + *** HIGHLIGHT *** + + Extend connection_information/[1,2] . The values + session_id, master_secret, client_random and + server_random can no be accessed by + connection_information/2. Note only session_id will be + added to connection_information/1. The rational is that + values concerning the connection security should have + to be explicitly requested. + + + OTP-14382 Application(s): ssl + + Chacha cipher suites are currently not tested enough to + be most preferred ones + + + OTP-14388 Application(s): ssl + + *** HIGHLIGHT *** + + Basic support for DTLS that been tested together with + OpenSSL. + + Test by providing the option {protocol, dtls} to the + ssl API functions connect and listen. + + + Full runtime dependencies of ssl-8.2: crypto-3.3, erts-7.0, + inets-5.10.7, kernel-3.0, public_key-1.2, stdlib-3.2 + + + --------------------------------------------------------------------- + --- stdlib-3.4 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-13690 Application(s): compiler, stdlib + + For many releases, it has been legal to override a BIF + with a local function having the same name. However, + calling a local function with the same name as guard + BIF as filter in a list comprehension was not allowed. + + + OTP-14295 Application(s): stdlib + Related Id(s): PR-1372 + + A new (default) pseudo-random number generator + algorithm Xoroshiro116+ has been implemented in the + rand module. + + The old algorithm implementations had a number of flaws + so they are all deprecated, but corrected versions of + two of them have been added. See the documentation. + + + OTP-14296 Application(s): debugger, stdlib + + The Erlang shell, qlc:string_to_handle(), and the + Debugger (the Evaluator area and Edit variable window + of the Bindings area) can parse pids, ports, + references, and external funs, as long as they can be + created in the running system. + + + OTP-14400 Application(s): common_test, snmp, stdlib + + Internal code change: Calls to catch followed by a call + to erlang:get_stacktrace/0 has been rewritten to use + try instead of catch to make the code future-proof. + + + OTP-14454 Application(s): stdlib + Related Id(s): ERIERL-29 + + The ms_transform module, used by ets:fun2ms/1 and + dbg:fun2ms/1, evaluates constant arithmetic + expressions. This is necessary since the Erlang + compiler, which normally evaluates constant + expressions, does not recognize the format generated by + ms_transform. + + + OTP-14531 Application(s): stdlib + + *** POTENTIAL INCOMPATIBILITY *** + + The state machine engine gen_statem can now handle + generic time-outs (multiple named) as well as absolute + time-out time. See the documentation. + + The gen_statem callback Module:init/1 has become + mandatory to harmonize with other gen_* modules. This + may be an incompatibility for gen_statem callback + modules that use gen_statem:enter_loop/4-6. + + + --- Improvements and New Features --- + + OTP-10289 Application(s): stdlib + Related Id(s): OTP-10309 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Improved unicode support for strings. Added + normalization functions in the unicode module. Extended + the string module API with new functions with improved + unicode handling and that works on grapheme clusters. + The new functions operates on the unicode:chardata() + type, thus they also accept UTF-8 binaries as input. + + The old string API have been marked as obsolete. The + return values have been changed for some error cases. + + + OTP-13692 Application(s): erts, stdlib + + There are two new guard BIFs 'floor/1' and 'ceil/1'. + They both return integers. In the 'math' module, there + are two new BIFs with the same names that return + floating point values. + + + OTP-13801 Application(s): stdlib + + Making code_change, terminate and handle_info callbacks + optional in the OTP behaviours. + + + OTP-13830 Application(s): stdlib + + The support for Dets files created with Erlang/OTP R7 + and earlier is removed. + + + OTP-13831 Application(s): compiler, erts, hipe, kernel, percept, + stdlib + Related Id(s): OTP-13735 + + Replaced usage of deprecated symbolic time unit + representations. + + + OTP-14000 Application(s): compiler, erts, stdlib + + The function fmod/2 has been added to the math module. + + + OTP-14001 Application(s): stdlib + + The EXIT signals received from processes using proc_lib + now looks like EXIT signals from processes that were + spawned using spawn_link. In particular, that means + that the stack trace is now included in the EXIT signal + so that it can see where the process crashed. + + + OTP-14035 Application(s): stdlib + + sets:add_element/2 is faster when adding an element + that is already present, and sets:del_element/2 is + faster when the element to be deleted is not present. + This optimization can make certain operations, such as + sets:union/2 with many overlapping elements, up to two + orders of magnitude faster. + + + OTP-14037 Application(s): stdlib + Related Id(s): PR-1233 + + Add information in doc about supervisor shutdown reason + when maximum restart frequency is reached. + + + OTP-14038 Application(s): stdlib + Related Id(s): PR-1235 + + Added rand:jump/[0|1] functions. + + + OTP-14059 Application(s): kernel, stdlib + + *** HIGHLIGHT *** + + Functions for detecting changed code has been added. + code:modified_modules/0 returns all currently loaded + modules that have changed on disk. code:module_status/1 + returns the status for a module. In the shell and in c + module, mm/0 is short for code:modified_modules/0, and + lm/0 reloads all currently loaded modules that have + changed on disk. + + + OTP-14066 Application(s): stdlib + + Each assert macro in assert.hrl now has a corresponding + version with an extra argument, for adding comments to + assertions. These can for example be printed as part of + error reports, to clarify the meaning of the check that + failed. + + + OTP-14068 Application(s): stdlib + + error_logger_tty_h and error_logger_file_h now inserts + the node information for nonlocal messages before the + message itself instead of after, both for readability + and so as not to change the line termination property + at the end of the message. + + + OTP-14070 Application(s): stdlib + Related Id(s): PR-1214 + + The Erlang code linter checks for badly formed type + constraints. + + + OTP-14071 Application(s): compiler, stdlib + + By default, there will now be a warning when export_all + is used. The warning can be disabled using + nowarn_export_all. + + + OTP-14089 Application(s): stdlib + + When a gen_server process crashes, the stacktrace for + the client will be printed to facilitate debugging. + + + OTP-14094 Application(s): stdlib + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Optimized ETS operations by changing table identifier + type from integer to reference. The reference enables a + more direct mapping to the table with less potential + lock contention and makes especially creation and + deletion of tables scale much better. + + The change of the opaque type for the ETS table + identifiers may cause failure in code that make faulty + assumptions about this opaque type. + + The number of tables stored at one Erlang node *used* + to be limited. This is no longer the case (except by + memory usage). The previous default limit was about + 1400 tables and could be increased by setting the + environment variable ERL_MAX_ETS_TABLES before starting + the Erlang runtime system. This hard limit has been + removed, but it is currently useful to set the + ERL_MAX_ETS_TABLES anyway. It should be set to an + approximate of the maximum amount of tables used. This + since an internal table for named tables is sized using + this value. If large amounts of named tables are used + and ERL_MAX_ETS_TABLES hasn't been increased, the + performance of named table lookup will degrade. + + + OTP-14102 Application(s): stdlib + + take/2 has been added to dict, orddict, and gb_trees. + take_any/2 has been added to gb_trees. + + + OTP-14123 Application(s): stdlib + + Extend gen_event API to handle options as well. + + + OTP-14168 Application(s): stdlib + Related Id(s): PR-1289 + + Advice on how to tune the supervisor restart frequency + (intensity and period) is added to System Documentation + - Design Principles - Supervisor Behaviour. + + + OTP-14183 Application(s): stdlib + + *** HIGHLIGHT *** + + gen_fsm is deprecated and is replaced by gen_statem, + however for backwards compatibility reasons gen_fsm may + continue to exist as an undocumented feature for quite + some time. + + + OTP-14190 Application(s): stdlib + + The shell functions c/1 and c/2 have been extended so + that if the argument is a module name instead of a file + name, it automatically locates the .beam file and the + corresponding source file, and then recompiles the + module using the same compiler options (plus any + options passed to c/2). If compilation fails, the old + beam file is preserved. Also adds c(Mod, Opts, Filter), + where the Filter argument allows you to remove old + compiler options before the new options are added. + + New utility functions file_find/2/3 and + find_source/1/2/3 have been added to filelib. + + + OTP-14226 Application(s): stdlib + + *** HIGHLIGHT *** + + erl_tar in previous versions of OTP only supports the + USTAR format. That limited path names to at most 255 + bytes, and did not support Unicode characters in names + in a portable way. + + erl_tar now has support for reading tar archives in the + formats currently in common use, such as v7, STAR, + USTAR, PAX, and GNU tar's extensions to the STAR/USTAR + format. When writing tar archives, erl_tar can now + write them in the PAX format if necessary (for example, + to support very long filenames or filenames with + Unicode characters). If possible, erl_tar will still + write tar archives in the USTAR for maximum + portability. + + + OTP-14245 Application(s): stdlib + + base64:mime_decode/1 has been optimized so that it is + now almost as fast asbase64:decode/1; it used be + noticeably slower. + + + OTP-14278 Application(s): stdlib + + erl_tar will now strip any leading '/' from pathnames + when extracting files from a tar archive and write a + message to the error logger. There is also new check + for directory traversal attacks; if a relative path + points above the current working directory the + extraction will be aborted. + + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + OTP-14317 Application(s): crypto, stdlib + Related Id(s): PR-1372 + + The Crypto application now supports generation of + cryptographically strong random numbers (floats < 1.0 + and integer arbitrary ranges) as a plugin to the 'rand' + module. + + + OTP-14319 Application(s): stdlib + Related Id(s): PR-1076 + + *** HIGHLIGHT *** + + Add new function ets:select_replace/2 which performs + atomic "compare-and-swap" operations for ETS objects + using match specifications. + + + OTP-14323 Application(s): stdlib + + The Erlang code linter checks for bad dialyzer + attributes. It also checks for bad type variables in + type declarations. + + + OTP-14328 Application(s): stdlib + Related Id(s): PR-1382 + + Two new functions has been implemented in the rand + module; normal/2 and normal_s/3, that both produce + normal distribution (pseudo) random numbers with mean + value and variance according to arguments. + + + OTP-14331 Application(s): erts, stdlib + Related Id(s): ERL-208 + + *** HIGHLIGHT *** + + *** POTENTIAL INCOMPATIBILITY *** + + Upgraded the OTP internal PCRE library from version + 8.33 to version 8.40. This library is used for + implementation of the re regular expressions module. + + Besides various bug fixes, the new version allows for + better stack protection. In order to utilize this + feature, the stack size of normal scheduler threads is + now by default set to 128 kilo words on all platforms. + The stack size of normal scheduler threads can be set + upon system start by passing the +sss command line + argument to the erl command. + + See http://pcre.org/original/changelog.txt for + information about changes made to PCRE between the + versions 8.33 and 8.40. + + + OTP-14347 Application(s): erts, stdlib + Related Id(s): PR-1412 + + Added function re:version/0 which returns information + about the OTP internal PCRE version used for + implementation of the re module. + + + OTP-14369 Application(s): compiler, dialyzer, stdlib + Related Id(s): PR-1367 + + The format of debug information that is stored in BEAM + files (when debug_info is used) has been changed. The + purpose of the change is to better support other + BEAM-based languages such as Elixir or LFE. + + All tools included in OTP (dialyzer, debugger, cover, + and so on) will handle both the new format and the + previous format. Tools that retrieve the debug + information using beam_lib:chunk(Beam, [abstract_code]) + will continue to work with both the new and old format. + Tools that call beam_lib:chunk(Beam, ["Abst"]) will not + work with the new format. + + For more information, see the description of debug_info + in the documentation for beam_lib and the description + of the {debug_info,{Backend,Data}} option in the + documentation for compile. + + + OTP-14405 Application(s): stdlib + + Add option hibernate_after to gen_server, gen_statem + and gen_event. Also added to the deprecated gen_fsm + behaviour. + + + OTP-14417 Application(s): kernel, stdlib + + The size of crash reports created by gen_server, + gen_statem and proc_lib is limited with aid of the + Kernel application variable error_logger_format_depth. + The purpose is to limit the size of the messages sent + to the error_logger process when processes with huge + message queues or states crash. + + The crash report generated by proc_lib includes the new + tag message_queue_len. The neighbour report also + includes the new tag current_stacktrace. Finally, the + neighbour report no longer includes the tags messages + and dictionary. + + The new function error_logger:get_format_depth/0 can be + used to retrieve the value of the Kernel application + variable error_logger_format_depth. + + + Full runtime dependencies of stdlib-3.4: compiler-5.0, crypto-3.3, + erts-9.0, kernel-5.0, sasl-3.0 + + + --------------------------------------------------------------------- + --- syntax_tools-2.1.2 ---------------------------------------------- + --------------------------------------------------------------------- + + --- Improvements and New Features --- + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of syntax_tools-2.1.2: compiler-7.0, + erts-8.0, kernel-5.0, stdlib-3.0 + + + --------------------------------------------------------------------- + --- tools-2.10 ------------------------------------------------------ + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14339 Application(s): tools + Related Id(s): ERL-395 + + In some situations, make:all() and friends did not + detect changes in include files located in the current + directory. This is now corrected. + + + --- Improvements and New Features --- + + OTP-14253 Application(s): tools + + The make module now accepts the {emake,Emake} option. + + + OTP-14285 Application(s): common_test, debugger, edoc, observer, + parsetools, runtime_tools, sasl, stdlib, syntax_tools, + tools + + Miscellaneous updates due to atoms containing arbitrary + Unicode characters. + + + Full runtime dependencies of tools-2.10: compiler-5.0, erts-7.0, + kernel-3.0, runtime_tools-1.8.14, stdlib-3.1 + + + --------------------------------------------------------------------- + --- wx-1.8.1 -------------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14289 Application(s): wx + + Fix a livelock that could be caused by wx:batch/1. + + + Full runtime dependencies of wx-1.8.1: erts-6.0, kernel-3.0, + stdlib-2.0 + + + --------------------------------------------------------------------- + --- xmerl-1.3.15 ---------------------------------------------------- + --------------------------------------------------------------------- + + --- Fixed Bugs and Malfunctions --- + + OTP-14377 Application(s): xmerl + Related Id(s): PR-1369 + + Improves accumulator fun in xmerl_scan so that only one + #xmlText record is returned for strings which have + character references. + + (Thanks to Jimmy Zöger) + + + Full runtime dependencies of xmerl-1.3.15: erts-6.0, kernel-3.0, + stdlib-2.5 + + + --------------------------------------------------------------------- + --------------------------------------------------------------------- + --------------------------------------------------------------------- + -- cgit v1.2.3