diff options
Diffstat (limited to 'release-notes/OTP-18.0.README.txt')
-rw-r--r-- | release-notes/OTP-18.0.README.txt | 1640 |
1 files changed, 1640 insertions, 0 deletions
diff --git a/release-notes/OTP-18.0.README.txt b/release-notes/OTP-18.0.README.txt new file mode 100644 index 0000000..6ca39f1 --- /dev/null +++ b/release-notes/OTP-18.0.README.txt @@ -0,0 +1,1640 @@ +Major release : otp_src_18 +Build date : 2015-06-24 + +18 is a major new release of Erlang/OTP. +You can download the full source distribution from + + http://www.erlang.org/download/otp_src_18.0.tar.gz + http://www.erlang.org/download/otp_src_18.0.readme (this file) + +Note: To unpack the TAR archive you need a GNU TAR compatible program. + +For installation instructions please read the README that is part of +the distribution. + +The Windows binary distribution can be downloaded from + + http://www.erlang.org/download/otp_win32_18.0.exe + http://www.erlang.org/download/otp_win64_18.0.exe + + +On-line documentation can be found at http://www.erlang.org/doc/. +You can also download the complete HTML documentation or the Unix manual files + + http://www.erlang.org/download/otp_doc_html_18.0.tar.gz + http://www.erlang.org/download/otp_doc_man_18.0.tar.gz + +We also want to thank those that sent us patches, suggestions and bug reports, + +The OTP Team + +--- HIGHLIGHTS ---------------------------------------------------------- + + OTP-11997 == erts == + + The time functionality of Erlang has been extended. This both + includes a new API for time, as well as time warp modes which + alters the behavior of the system when system time changes. + You are strongly encouraged to use the new API instead of the + old API based on erlang:now/0. erlang:now/0 has been + deprecated since it is and forever will be a scalability + bottleneck. For more information see the Time and Time + Correction chapter of the ERTS User's Guide. + + Besides the API changes and time warp modes a lot of + scalability and performance improvements regarding time + management has been made internally in the runtime system. + Examples of such improvements are scheduler specific timer + wheels, scheduler specific BIF timer management, parallel + retrieval of monotonic time and system time on systems with + primitives that are not buggy. + + OTP-12029 == ssh == + + A new option 'preferred_algorithms' is available for + ssh:daemon and ssh:connect. + + This option defines the algorithms presented to the peer in + the algorithm negotiation phase of the ssh protocol. + + The default list can be obtained from the new function + ssh:default_algorithms/0. + + OTP-12218 == compiler debugger stdlib == + + Support variables as Map keys in expressions and patterns + + Erlang will accept any expression as keys in Map expressions + and it will accept literals or bound variables as keys in Map + patterns. + + OTP-12309 == erts stdlib == + + New function ets:take/2. Works the same as ets:delete/2 but + also returns the deleted object(s). + + OTP-12585 == erts == + + Use persistent hashmaps for large Maps + + Maps will use a persistent hashmap implementation when the + number of pairs in a Map becomes sufficiently large. The + change will occur when a Map reaches 33 pairs in size but + this limit might change in the future. + + The most significant impact for the user by this change is + speed, and to a lesser degree memory consumption and + introspection of Maps. Memory consumption size is probalistic + but lesser than gb_trees or dict for instance. Any other + impacts will be transparent for the user except for the + following changes. + + Semantics of Maps have changed in two incompatible ways + compared to the experimental implementation in OTP 17: + + -- Hashing of maps is done different by erlang:phash2/1,2, + erlang:phash/1 and erlang:hash/2. + + -- Comparing two maps with ==, /=, =<, <, >= and >, is done + different if the keys contain floating point numbers. + + OTP-12650 == erts == + + Optimization of timers internally in the VM. This include + process timers (receive ... after), port timers + (driver_set_timer()) as well as BIF timers + (erlang:send_after()/erlang:start_timer()). + + Each scheduler thread now has its own lock-free timer service + instead of one locked central service. This dramatically + improves performance of timer management on systems with a + large amount of schedulers and timers. + + The timer service internal data structure has also been + optimized to be able to handle more timers than before. That + is, each timer service is by its self able to handle more + timers without dramatic performance loss than the old + centralized timer service. + + The API of BIF timers has also been extended. Timeout values + are for example no longer limited to 32-bit integers. For + more information see the documentation of + erlang:start_timer/4, erlang:send_after/4, + erlang:cancel_timer/2, and erlang:read_timer/2. + + Characteristics impact: Calls to the synchronous versions of + erlang:cancel_timer(), and erlang:read_timer() may take + substantially longer time to complete than before. This occur + when the timer that is accessed is managed by a remote + scheduler. You typically want to use the new asynchronous + option in order to avoid blocking the calling process. + + OTP-12854 == otp == + + Change license text from Erlang Public License to Apache + Public License v2 + +--- POTENTIAL INCOMPATIBILITIES ----------------------------------------- + + OTP-11905 == erts == + + Fix issuing with spaces and quoting in the arguments when + using erlang:open_port spawn_executable on windows. The + behavior now mimics how unix works. This change implies a + backwards incompatibility for how spawn_executable works on + windows. + + OTP-11940 == erts == + + Add md5 and module entries to ?MODULE:module_info/0/1 and + remove obsolete entry 'import'. + + OTP-12099 == erts == + + erlang:function_exported(M, F, A) will now return true if + M:F/A refers to a BIF. + + OTP-12100 == compiler == + + The deprecated 'asm' option has been removed. + + OTP-12240 == erts kernel ssh == + + The internal group to user_drv protocol has been changed to + be synchronous in order to guarantee that output sent to a + process implementing the user_drv protocol is printed before + replying. This protocol is used by the standard_output device + and the ssh application when acting as a client. + + This change changes the previous unlimited buffer when + printing to standard_io and other devices that end up in + user_drv to 1KB. + + OTP-12292 == erts == + + The notice that a crashdump has been written has been moved + to be printed before the crashdump is generated instead of + afterwords. The wording of the notice has also been changed. + + OTP-12585 == erts == + + Use persistent hashmaps for large Maps + + Maps will use a persistent hashmap implementation when the + number of pairs in a Map becomes sufficiently large. The + change will occur when a Map reaches 33 pairs in size but + this limit might change in the future. + + The most significant impact for the user by this change is + speed, and to a lesser degree memory consumption and + introspection of Maps. Memory consumption size is probalistic + but lesser than gb_trees or dict for instance. Any other + impacts will be transparent for the user except for the + following changes. + + Semantics of Maps have changed in two incompatible ways + compared to the experimental implementation in OTP 17: + + -- Hashing of maps is done different by erlang:phash2/1,2, + erlang:phash/1 and erlang:hash/2. + + -- Comparing two maps with ==, /=, =<, <, >= and >, is done + different if the keys contain floating point numbers. + + OTP-12610 == erts == + + Scalability improvement for erlang:make_ref/0, and other + functionality that create references. Each scheduler now + manage its own set of references. By this no communication at + all is needed when creating references. + + Previous implementation generated a strictly monotonically + increasing sequence of references corresponding to creation + time on the runtime system instance. This is not the case + with current implementation. You can only expect reference to + be unique. The Erlang/OTP documentation has never mentioned + anything else but the uniqueness property, so this change is + fully compatible. The only reason we've marked this as a + potential incompatibility is since an early draft for an + Erlang specification mentions strict monotonicity as a + property. + + If you need to create data with a strict monotonicity + property use erlang:unique_integer([monotonic]). Do not use + the deprecated erlang:now(). + +--- otp ----------------------------------------------------------------- + + OTP-11306 The type identifier() is documented in the reference manual, + in section Types and Function Specifications. + + OTP-12854 Change license text from Erlang Public License to Apache + Public License v2 + +--- asn1-4.0 ------------------------------------------------------------ + + OTP-12395 Many bugs have been eliminated in the the ASN.1 compiler so + that it can now successfully compile many more ASN.1 + specifications. Error messages have also been improved. + + OTP-12765 The documentation for asn1ct:test/1,2,3 and asn1ct:value/2 + has been updated with information about the limitations of + the functions. + +--- common_test-1.11 ---------------------------------------------------- + + OTP-10446 Earlier there was no way to add optional parameters like + default-operation to an edit-config request sent with + ct_netconfc:edit_config/3,4, you had to use + ct_netconfc:send_rpc/2,3. For simplicity and completion, a + new optional argument, OptParams, is now added to the + edit_config function. + + OTP-10816 The status of an aborted test due to test suite compilation + error has changed from 'auto_skipped' to 'failed'. This + affects both the textual log file, event handling and CT hook + callbacks. The logging of compilation failures has also been + improved, especially in the case of multiple test suites + failing compilation. + + OTP-11962 When running OTP tests using the ts interface, it is now + possible to specify so called test categories per OTP + application. A test category is represented by a CT test + specification and defines an arbitrary subset of existing + test suites, groups and cases. Examples of test categories + are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call + ts:help() for more info). Also, functions for reading terms + from the current test specification during test, + ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have + been implemented. + + OTP-12421 Obsolete scripts and make file operations have been removed + and the installation chapter in the Common Test User's Guide + has been updated. + + OTP-12678 The 'keep_alive' interval has been reduced to 8 seconds, + which is two seconds shorter than the default 'idle_timeout' + value for ct_telnet:expect/3. This way, the telnet server + receives a NOP message (which might trigger an action) before + the operation times out. Also the TCP option 'nodelay' has + been enabled per default for all telnet connections, in order + to reduce the risk for communication timeouts. + + OTP-12684 When the ct_run program is executed without any flags, "-dir + ." is now used as default start flag. Similarly, the option + {dir,"."} is used by ct:run_test/1 if called with an empty + list. Also, the help text (ct_run -help) has been updated, as + well as the Running Tests chapter in the Common Test User's + Guide. + + OTP-12740 The Test Server source code parser (erl2html2) failed to + handle the macro tuple in the syntax tree returned by + epp_dodger. This error has been corrected. + + OTP-12809 New options to make it possible to specify ssh_port in a + .spec file: [{node_start, [{ssh_port, 9999}]}]. + + And also to specify additional ssh options like paths to + public-key files: [{node_start, [{ssh_opts, [{user_dir, + "/home/shrek/e2/"}]}]}]. + +--- compiler-6.0 -------------------------------------------------------- + + OTP-11978 The cerl and cerl_trees modules in the compiler application + are now documented. + + OTP-12100 The deprecated 'asm' option has been removed. + + OTP-12218 Support variables as Map keys in expressions and patterns + + Erlang will accept any expression as keys in Map expressions + and it will accept literals or bound variables as keys in Map + patterns. + + OTP-12253 Infer Map type information in beam_type compiler optimization + pass. + + OTP-12393 Compiler optimizations have been improved. + + OTP-12453 The compiler optimizes away building of terms that are never + actually used. As a result, the compiler in OTP 18 may + produce more warnings for terms that are built but not used + than the compiler in OTP 17. + + OTP-12497 Five undocumented functions in the module core_lib have been + deprecated and will be removed in the next major release. The + functions are: get_anno/{1,2}, is_literal/1, + is_literal_list/1, and literal_value. Use the appropriate + functions in the cerl module instead. + + OTP-12515 Using a map could incorrectly suppress warnings for unused + variables. + + OTP-12723 The compiler now properly reports unknown parse transforms. + That is, undef exceptions coming from the parse transform + itself is reported differently from the absence of the parse + transform. + + OTP-12758 Allow for 'creation of sub binary delayed' optimization if + maps instructions are in a clause. + + OTP-12774 Change some internal data structures to Maps in order to + speed up compilation time. Measured speed up is around + 10%-15%. + + OTP-12844 Fix beam_bool pass for Maps instruction get_map_elements + + Before beam_split the get_map_elements instruction is still + in blocks and the helper function in beam_jump did not + reflect this. + +--- cosEvent-2.2 -------------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosEventDomain-1.2 -------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosFileTransfer-1.2 ------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosNotification-1.2 ------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosProperty-1.2 ----------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosTime-1.2 --------------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- cosTransactions-1.3 ------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- crypto-3.6 ---------------------------------------------------------- + + OTP-12380 Use the EVP API for AES-CBC crypto to enables the use of + hardware acceleration for AES-CBC crypto on newer Intel CPUs + (AES-NI), among other platforms. + + OTP-12394 Enhance crypto:generate_key to calculate ECC public keys from + private key. + + OTP-12403 Add AES ECB block encryption. + + OTP-12733 Fix bug in crypto:generate_key for ecdh that could cause VM + crash for faulty input. + +--- debugger-4.1 -------------------------------------------------------- + + OTP-12218 Support variables as Map keys in expressions and patterns + + Erlang will accept any expression as keys in Map expressions + and it will accept literals or bound variables as keys in Map + patterns. + +--- dialyzer-2.8 -------------------------------------------------------- + + OTP-10280 The -dialyzer() attribute can be used for suppressing + warnings in a module by specifying functions or warning + options. It can also be used for requesting warnings in a + module. + + OTP-11445 The pre-defined types array(), dict(), digraph(), gb_set(), + gb_tree(), queue(), set(), and tid() have been removed. + + OTP-11851 A few type names that have been used for representing certain + predefined types can now be used for user-defined types. This + affects the types product/_, union/_, and range/2 as well as + tuple/N (N > 0), map/N (N > 0), atom/1, integer/1, binary/2, + record/_, and 'fun'/_. A consequence is that, for example, it + is no longer possible to refer to a record type with + record(r); instead the usual record notation, #r{}, is to be + used. + + OTP-11861 When implementing user-defined behaviours it is now possible + to specify optional callback functions. See OTP Design + Principles User's Guide, Sys and Proc_Lib, User-Defined + Behaviours, for details. + + OTP-12350 The translation of Erlang forms to the type representation + used by Dialyzer has been improved in several ways. The most + important change is that deeply nested records can be + handled. + + OTP-12493 Fix a bug that could cause bogus warnings for opaque types. + + In Erlang/OTP 18 two parameterized types declared in the same + module always result in a contradiction (none()) when + combined outside of the module where they are declared, + unless they have the same number of parameters. + + The behaviour is different from Erlang/OTP 17 where, for + instance, dict:dict() and dict:dict(_, _), which are both + opaque, can be combined outside of the dict module. + + In Erlang/OTP 18, dict:dict() and dict:dict(_, _) can still + be combined outside of the dict module. That has been made + possible by not declaring dict:dict() as opaque. + + OTP-12637 Update the PLT properly when a module is changed. (Thanks to + James Fish for the bug report, and to Stavros Aronis for + fixing the bug.) + + OTP-12682 Add two options to the Dialyzer: no_missing_calls suppresses + warnings about calls to missing or unexported functions; + unknown lets warnings about unknown functions or types affect + the exit status. See also dialyzer(3). + + OTP-12725 An argument of '*'/2 is not constraind if the other operand + can be zero. + + OTP-12750 Mention the option check_plt among the dialyzer:gui() + options. (Thanks to James Fish.) + + OTP-12779 By default, dialyzer will now cache native versions of + dialyzer modules to avoid having to re-compile them each time + dialyzer is started. Caching can be disabled using the option + --no_native_cache. + + OTP-12826 Fix a bug which could cause an infinite loop in Dialyzer. + +--- diameter-1.10 ------------------------------------------------------- + + OTP-12721 Fix decode of Grouped AVPs containing errors. + + RFC 6733 says this of Failed-AVP in 7.5: + + -- + + In the case where the offending AVP is embedded within a + Grouped AVP, the Failed-AVP MAY contain the grouped AVP, + which in turn contains the single offending AVP. The same + method MAY be employed if the grouped AVP itself is embedded + in yet another grouped AVP and so on. In this case, the + Failed-AVP MAY contain the grouped AVP hierarchy up to the + single offending AVP. This enables the recipient to detect + the location of the offending AVP when embedded in a group. + + It says this of DIAMETER_INVALID_AVP_LENGTH in 7.1.5: + + -- + + The request contained an AVP with an invalid length. A + Diameter message indicating this error MUST include the + offending AVPs within a Failed-AVP AVP. In cases where the + erroneous AVP length value exceeds the message length or is + less than the minimum AVP header length, it is sufficient to + include the offending AVP header and a zero filled payload of + the minimum required length for the payloads data type. If + the AVP is a Grouped AVP, the Grouped AVP header with an + empty payload would be sufficient to indicate the offending + AVP. In the case where the offending AVP header cannot be + fully decoded when the AVP length is less than the minimum + AVP header length, it is sufficient to include an offending + AVP header that is formulated by padding the incomplete AVP + header with zero up to the minimum AVP header length. + + The AVPs placed in the errors field of a diameter_packet + record are intended to be appropriate for inclusion in a + Failed-AVP, but neither of the above paragraphs has been + followed in the Grouped case: the entire faulty AVP + (non-faulty components and all) has been included. This made + it difficult to identify the actual faulty AVP in all but + simple cases. + + The decode is now adapted to the RFC, and implements the + suggested single faulty AVP, nested in as many Grouped + containers as required. + + OTP-12768 Fix SCTP problems on Solaris. + + The allocation of association ids in Solaris was in conflict + with an assumption made in diameter_sctp, resulting in + failures when accepting multiple peer connections. + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + + OTP-12851 Fix start order of alternate transports. + + A transport configured with diameter:add_transport/2 can be + passed multiple transport_module/transport_config tuples in + order to specify alternate configuration, modules being + attempted in order until one succeeds. This is primarily for + the connecting case; for example, to allow a transport to be + configured to first attempt connection over SCTP, and then + TCP in case SCTP fails. Multiple module tuples can be paired + with a single config tuple, but in this case the start order + was reversed relative to the order in which the modules were + specifed. + +--- edoc-0.7.17 --------------------------------------------------------- + + OTP-12431 Remove functionality related to packages + +--- eldap-1.2 ----------------------------------------------------------- + + OTP-12282 Support added for LDAP Password Modify Extended Operation + (RFC 3062). Thanks to danielwhite. + +--- erl_docgen-0.4 ------------------------------------------------------ + + OTP-12722 Add possibility to add extra information on documentation + front pages. + +--- erl_interface-3.8 --------------------------------------------------- + + OTP-12801 Do not accept Nan and Infinity values + + Erlang does not accept these values, so we return an error in + the C interface rather than letting them through to the + Erlang VM, which rejects the message with a somewhat cryptic + "bad external term". + +--- erts-7.0 ------------------------------------------------------------ + + OTP-11905 Fix issuing with spaces and quoting in the arguments when + using erlang:open_port spawn_executable on windows. The + behavior now mimics how unix works. This change implies a + backwards incompatibility for how spawn_executable works on + windows. + + OTP-11939 Fix global call trace when hipe compiled code call beam + compiled functions. Tracing of beam functions should now + alway work regardless who the caller is. + + OTP-11940 Add md5 and module entries to ?MODULE:module_info/0/1 and + remove obsolete entry 'import'. + + OTP-11941 Debug function erlang:display/1 shows content of binaries and + bitstrings, not only the length. + + OTP-11974 Correct cache alignment for ETS write_concurrency locks to + improve performance by reduced false sharing. May increase + memory footprint for tables with write_concurrency. + + OTP-11997 The time functionality of Erlang has been extended. This both + includes a new API for time, as well as time warp modes which + alters the behavior of the system when system time changes. + You are strongly encouraged to use the new API instead of the + old API based on erlang:now/0. erlang:now/0 has been + deprecated since it is and forever will be a scalability + bottleneck. For more information see the Time and Time + Correction chapter of the ERTS User's Guide. + + Besides the API changes and time warp modes a lot of + scalability and performance improvements regarding time + management has been made internally in the runtime system. + Examples of such improvements are scheduler specific timer + wheels, scheduler specific BIF timer management, parallel + retrieval of monotonic time and system time on systems with + primitives that are not buggy. + + OTP-12099 erlang:function_exported(M, F, A) will now return true if + M:F/A refers to a BIF. + + OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with + the process dictionary. Note: erlang:get_keys/0 is + auto-imported. + + OTP-12232 Make distributed send of large messages yield to improve + real-time characteristics. + + OTP-12236 Use high accuracy poll timeouts + + Where available, use poll/select API's that can handle time + resolutions less than 1ms. In the cases where such API's are + not available the timeout is rounded up to the nearest ms. + + OTP-12239 All possibly blocking operations in the fd/spawn and terminal + driver have been converted to non-blocking operations. Before + this fix it was possible for the VM to be blocked for a long + time if the entity consuming stdout/stderr did not consume it + fast enough. + + OTP-12240 The internal group to user_drv protocol has been changed to + be synchronous in order to guarantee that output sent to a + process implementing the user_drv protocol is printed before + replying. This protocol is used by the standard_output device + and the ssh application when acting as a client. + + This change changes the previous unlimited buffer when + printing to standard_io and other devices that end up in + user_drv to 1KB. + + OTP-12254 The previously introduced "eager check I/O" feature is now + enabled by default. + + Eager check I/O can be disabled using the erl command line + argument: +secio false + + Characteristics impact compared to previous default: + + -- Lower latency and smoother management of externally + triggered I/O operations. + + -- A slightly reduced priority of externally triggered I/O + operations. + + OTP-12270 Properly support maps in match_specs + + OTP-12292 The notice that a crashdump has been written has been moved + to be printed before the crashdump is generated instead of + afterwords. The wording of the notice has also been changed. + + OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but + also returns the deleted object(s). + + OTP-12366 Tracing with cpu_timestamp option has been enabled on Linux. + + OTP-12376 ets:info/1,2 now contains information about whether + write_concurrency or read_concurrency is enabled. + + OTP-12377 Crashdumps have been expanded to include: + + -- Stack trace of currently running process (including + processes that are being garbage collected) + + -- Data about the state of the erts schedulers + + -- Extended statistics about ets tables of the types; set, + bag or dublicate_bag. + + -- All configurable options for ets tables + + For more detailed information see How to interpret the Erlang + crash dumps in the ERTS User's Guide. + + OTP-12383 Improved usage of gcc's builtins for atomic memory access. + These are used when no other implementation of atomic memory + operations is available. For example, when compiling for ARM + when libatomic_ops is not available. + + The largest improvement will be seen when compiling with a + gcc with support for the __atomic_* builtins (using a gcc of + at least version 4.7), but also when only the legacy __sync_* + builtins are available (using a gcc of at least version 4.1) + an improvement can be seen. + + For more information see the "Atomic Memory Operations and + the VM" section of $ERL_TOP/HOWTO/INSTALL.md. + + OTP-12411 Introduce math:log2/1 function to math module. + + OTP-12492 The documentation of the Abstract Format (in the ERTS User's + Guide) has been updated with types and specification. (Thanks + to Anthony Ramine.) + + The explicit representation of parentheses used in types of + the abstract format has been removed. Instead the new + functions erl_parse:type_inop_prec() and + erl_parse:type_preop_prec() can be used for inserting + parentheses where needed. + + OTP-12508 Remove perfctr support + + Development of perfctr in the linux kernel ceased in 2010. + The perfctr support code in the Erlang VM is thus effectively + dead code and therefor removed. + + OTP-12548 zlib:inflateChunk/2 has been added. It works like + zlib:inflate/2, but decompresses no more data than will fit + in the buffer configured by zlib:setBufSize/2. + + OTP-12554 Add missing overhead for offheap binaries created from + external format. This fix can improve the garbage collection + of large binaries originating from binary_to_term or messages + from remote nodes. + + OTP-12555 Use linear search for small select_val arrays + + OTP-12563 New BIF ets:update_counter/4 with a default object as + argument, which will be inserted in the table if the key was + not found. + + OTP-12584 Export missing types from zlib module + + OTP-12585 Use persistent hashmaps for large Maps + + Maps will use a persistent hashmap implementation when the + number of pairs in a Map becomes sufficiently large. The + change will occur when a Map reaches 33 pairs in size but + this limit might change in the future. + + The most significant impact for the user by this change is + speed, and to a lesser degree memory consumption and + introspection of Maps. Memory consumption size is probalistic + but lesser than gb_trees or dict for instance. Any other + impacts will be transparent for the user except for the + following changes. + + Semantics of Maps have changed in two incompatible ways + compared to the experimental implementation in OTP 17: + + -- Hashing of maps is done different by erlang:phash2/1,2, + erlang:phash/1 and erlang:hash/2. + + -- Comparing two maps with ==, /=, =<, <, >= and >, is done + different if the keys contain floating point numbers. + + OTP-12610 Scalability improvement for erlang:make_ref/0, and other + functionality that create references. Each scheduler now + manage its own set of references. By this no communication at + all is needed when creating references. + + Previous implementation generated a strictly monotonically + increasing sequence of references corresponding to creation + time on the runtime system instance. This is not the case + with current implementation. You can only expect reference to + be unique. The Erlang/OTP documentation has never mentioned + anything else but the uniqueness property, so this change is + fully compatible. The only reason we've marked this as a + potential incompatibility is since an early draft for an + Erlang specification mentions strict monotonicity as a + property. + + If you need to create data with a strict monotonicity + property use erlang:unique_integer([monotonic]). Do not use + the deprecated erlang:now(). + + OTP-12613 Enable different abort signal from heart + + By using environment variable HEART_KILL_SIGNAL, heart can + now use a different signal to kill the old running Erlang. + + By default the signal is SIGKILL but SIGABRT may also be used + by setting environment variable: HEART_KILL_SIGNAL=SIGABRT + + OTP-12641 Ensure hashing of zero is consistent + + Erlang treats positive and negative zero as equal: + + true = 0.0 =:= 0.0/-1 + + However, Erlangs hash functions: hash, phash and phash2 did + not reflect this behaviour. The hash values produced by the + different hash functions would not be identical for positive + and negative zero. + + This change ensures that hash value of positive zero is + always produced regardless of the signedness of the zero + float, i.e., + + true = erlang:phash2(0.0) =:= erlang:phash2(0.0/-1) + + OTP-12646 Update autconf to latest version 2015-03-04 + + OTP-12650 Optimization of timers internally in the VM. This include + process timers (receive ... after), port timers + (driver_set_timer()) as well as BIF timers + (erlang:send_after()/erlang:start_timer()). + + Each scheduler thread now has its own lock-free timer service + instead of one locked central service. This dramatically + improves performance of timer management on systems with a + large amount of schedulers and timers. + + The timer service internal data structure has also been + optimized to be able to handle more timers than before. That + is, each timer service is by its self able to handle more + timers without dramatic performance loss than the old + centralized timer service. + + The API of BIF timers has also been extended. Timeout values + are for example no longer limited to 32-bit integers. For + more information see the documentation of + erlang:start_timer/4, erlang:send_after/4, + erlang:cancel_timer/2, and erlang:read_timer/2. + + Characteristics impact: Calls to the synchronous versions of + erlang:cancel_timer(), and erlang:read_timer() may take + substantially longer time to complete than before. This occur + when the timer that is accessed is managed by a remote + scheduler. You typically want to use the new asynchronous + option in order to avoid blocking the calling process. + + OTP-12655 Ensure NIF term creation disallows illegal floating point + values and too long atoms. Such values will cause a NIF to + throw badarg exception when it returns. + + OTP-12656 Fixed building of Map results from match_specs + + A faulty "box-value" entered into the heap which could cause + a segmentation fault in the garbage collector if it was + written on a heap fragment. + + OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has + been seen to sometimes cause a failed binary matching of a + correct utf8 character, but other symptoms are also possible. + + OTP-12685 Keep dirty schedulers from waking other schedulers. + + OTP-12690 Specialize instructions from common assembler patterns + + Specialize common instructions of rem, band, minus and plus + in the beam loader. This will reduce the number of fetches + and thus lessen the instruction dispatch pressure during + runtime and speed up those operations in some common cases. + + Specialize move patterns from x-registers to the stack with a + new move_window instruction. This change will reduce + instruction dispatch pressure. + + OTP-12693 Fix cross compilation for Android. + + OTP-12706 Fix incorrect use of autoconf macro AC_EGREP_CPP, which could + cause faulty configuration if run from a path containing the + string 'yes'. + + OTP-12715 Minimal Java version is now 1.6 + + OTP-12717 Disable floating point exceptions if the VM is compiled by + clang/llvm. This is a known long-standing problem in + clang/llvm. + + OTP-12720 Fix bug in file:sendfile for FreeBSD causing not the entire + file to be sent. + + OTP-12735 Send format and args on process exit to error_logger + + Previously, the emulator would generate a whole string with + values and call the error_logger passing "~s~n". This changes + it to a format string containing ~p with the respective + values as arguments. + + OTP-12751 Fix the broken Android support in erl_child_setup.c + + OTP-12755 Map error logger warnings to warning messages by default. + + OTP-12761 Configure architecture ppc64le architecture as a ppc64 + + OTP-12766 Faulty statistics reported by the fix_alloc allocator. + + OTP-12770 Add function enif_raise_exception to allow a NIF to raise an + error exception with any type of reason. + + OTP-12771 Fix two erts_snprintf() calls to correct sizes. + + - run_erl.c (ose): Use the size of the signal type, not its + pointer. - erl_node_tables.c: Use the size of the _BUFFER in + erts_snprintf() to make sure we can use the full space. + + OTP-12777 Optimized node table statistics retrieval. + + OTP-12781 Map beam error logger warnings to warning messages by + default. Previously these messages were mapped to the error + channel by default. + + OTP-12797 gen_tcp:shutdown/2 is now asynchronous + + This solves the following problems with the old + implementation: + + It doesn't block when the TCP peer is idle or slow. This is + the expected behaviour when shutdown() is called: the caller + needs to be able to continue reading from the socket, not be + prevented from doing so. + + It doesn't truncate the output. The current version of + gen_tcp:shutdown/2 will truncate any outbound data in the + driver queue after about 10 seconds if the TCP peer is idle + of slow. Worse yet, it doesn't even inform anyone that the + data has been truncated: 'ok' is returned to the caller; and + a FIN rather than an RST is sent to the TCP peer. + + OTP-12802 Introduced delayed node table GC. This in order to avoid + oscillation of entries in and out of the tables. The + oscillation caused unnecessary lock contention on the table + locks. The delay length can be set by passing the +zdntgc + command line argument. + + Characteristics impact: The tables can grow to very large + sizes with unused entries if the node is get huge amounts of + short lived connections from other nodes. This problem can be + alleviated by shortening the length of the delay using the + +zdntgc command line argument. + + OTP-12812 Delayed memory allocations could be delayed an unnecessarily + long time. + + OTP-12817 Make sure that timeouts on a pool of acceptors are released + in the correct order. + + OTP-12820 Fix segmentation fault in module_info for deleted modules + + OTP-12821 Fix garbage collection of literals in code purge + + During code purging and check_process_code, the checking of + the binary reference embedded in the match binary state was + omitted for the tracing tests. This would cause the binary + match state to reference deallocated memory. + + OTP-12840 A bug has been corrected for gen_tcp:close so when + {linger,{true,0}} is in effect it does not wait for data in + the driver queue to transfer out before closing the port. Bug + fix by Rory Byrne. + + OTP-12842 Improved implementation of erlang:statistics(io) in order to + reduce contention between schedulers. + + Characteristics impact: The actual call to + erlang:statistics(io) takes longer time to complete, but the + overall impact on the system is improved. + + OTP-12843 There are many cases where user code needs to be able to + distinguish between a socket that was closed normally and one + that was aborted. Setting the option {show_econnreset, true} + enables the user to receive ECONNRESET errors on both active + and passive sockets. + + OTP-12849 Do not preallocate too large event pool + + A default pool size of 4000 is too excessive for the common + case. This corresponds directly to the number of threads in + the system. Change ERTS_TS_EV_ALLOC_DEFAULT_POOL_SIZE to + 2048. Change ERTS_TS_EV_ALLOC_POOL_SIZE to 32. + + OTP-12855 The documentation of the driver callback start() erroneously + stated that a return value of ERL_DRV_ERROR_ERRNO caused the + error value to be passed via erl_errno when it should have + been errno. + +--- et-1.5.1 ------------------------------------------------------------ + + OTP-12780 The et application must continue to use erlang:now/0 in order + to obtain timestamps that are consistent with timestamps + obtained from tracing. The application has been updated to + suppress the warning for erlang:now/0. + +--- eunit-2.2.10 -------------------------------------------------------- + + OTP-11660 The eunit application is now unicode safe. + +--- gs-1.6 -------------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- hipe-3.12 ----------------------------------------------------------- + + OTP-12666 Fix a minor bug in the handling of opaque types. + + OTP-12667 Fix hipe bug when matching a "writable" binary. The bug has + been seen to sometimes cause a failed binary matching of a + correct utf8 character, but other symptoms are also possible. + + OTP-12794 Allow use of complete interface of cerl_pmatch module + + OTP-12816 Optimizations and code cleanup in hipe code loader. + +--- ic-4.4 -------------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- inets-6.0 ----------------------------------------------------------- + + OTP-11845 Fix race condition in httpc. If the socket is closed by the + peer do not try to close it again. + + OTP-12156 Remove Server Side Include support from inets, as this is an + old technic that has security issues and was not well tested. + + OTP-12362 Avoid process leak by gracefully terminating httpc request + handler process when send operation fails. + + OTP-12674 To enable the HTTP server to run in a virtualized + environment, where there can be more that one server that has + the same ip-address and port, we add a new option profile. + + OTP-12798 Let gen_tcp:controlling_process/2 and inet_sctp:connect/[45] + propagate prim_inet:setopt/3 errors instead of having them + generate badmatch exceptions. + + OTP-12803 httpc: Fix implementation of gracefull shudown to work as + intended for keep alive connections not using pipelining. + + OTP-12822 Correct handling of proxy options when using persistent + connections. + +--- jinterface-1.6 ------------------------------------------------------ + + OTP-12333 Reformat the sources for JInterface uniformly and according + to the standard Java style guidelines. Provide description of + the rules applied in Eclipse format (for other editors one + can check the settings against these). + + In short, the formatting style is: * indentation uses only + spaces; each level is 4 positions * no trailing whitespace * + mostly default Java style formatting (any difference is + minor) * always use {} blocks * use 'final' as much as + possible + + OTP-12686 Add basic transport factory implementation. This makes + possible creating connections between nodes using ssh + channels for example. + + OTP-12691 Add Jinterface generic match and bind methods to provide low + level interface base methods sufficient for variety of higher + level pattern matching/variable binding implementations. + + OTP-12715 Minimal Java version is now 1.6 + + OTP-12746 Remove extra @param in javadoc as this gives an error when + building the docs in java 1.8 + +--- kernel-4.0 ---------------------------------------------------------- + + OTP-12144 Fix error handling in file:read_line/1 for Unicode contents. + + OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with + the process dictionary. Note: erlang:get_keys/0 is + auto-imported. + + OTP-12240 The internal group to user_drv protocol has been changed to + be synchronous in order to guarantee that output sent to a + process implementing the user_drv protocol is printed before + replying. This protocol is used by the standard_output device + and the ssh application when acting as a client. + + This change changes the previous unlimited buffer when + printing to standard_io and other devices that end up in + user_drv to 1KB. + + OTP-12342 Introduce os:getenv/2 which is similar to os:getenv/1 but + returns the passed default value if the required environment + variable is undefined. + + OTP-12564 The inflateInit/2 and deflateInit/6 functions now accepts a + WindowBits argument equal to 8 and -8. + + OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y) + that has been copied in the previous shell session. Also a + bug that caused the JCL mode to crash when pasting text has + been fixed. + + OTP-12755 Map error logger warnings to warning messages by default. + + OTP-12773 Ensure that each segment of an IPv6 address when parsed from + a string has a maximum of 4 hex digits + + OTP-12781 Map beam error logger warnings to warning messages by + default. Previously these messages were mapped to the error + channel by default. + + OTP-12797 gen_tcp:shutdown/2 is now asynchronous + + This solves the following problems with the old + implementation: + + It doesn't block when the TCP peer is idle or slow. This is + the expected behaviour when shutdown() is called: the caller + needs to be able to continue reading from the socket, not be + prevented from doing so. + + It doesn't truncate the output. The current version of + gen_tcp:shutdown/2 will truncate any outbound data in the + driver queue after about 10 seconds if the TCP peer is idle + of slow. Worse yet, it doesn't even inform anyone that the + data has been truncated: 'ok' is returned to the caller; and + a FIN rather than an RST is sent to the TCP peer. + + OTP-12843 There are many cases where user code needs to be able to + distinguish between a socket that was closed normally and one + that was aborted. Setting the option {show_econnreset, true} + enables the user to receive ECONNRESET errors on both active + and passive sockets. + +--- megaco-3.18 --------------------------------------------------------- + + OTP-12762 The runtime dependencies in the application resource file + have been updated. + +--- mnesia-4.13 --------------------------------------------------------- + + OTP-12481 Make Mnesia DCD dump behavior at start up optional, when + turned off mnesia loads large disc_copies tables faster. + + OTP-12714 Mnesia's dirty functions did not always exit with {aborted, + Reason} as documented when an error occurred. + + OTP-12807 Consider file descriptors limits (emfile) as a fatal error + and do not delete log files. Previously the error was seen as + a corrupted disk and the log files deleted which caused data + loss. + +--- observer-2.1 -------------------------------------------------------- + + OTP-12363 Added display of new crashdump information available in + crashdumps from Erlang/OTP 18. + + OTP-12401 Show run queue status in crashdump viewer. + + OTP-12504 Added the possibility to view sasl log entries for processes. + + OTP-12631 Add memory allocator usage and utilization graphs. + + OTP-12819 Don't refresh observer table view if there was no change + +--- odbc-2.11 ----------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- orber-3.8 ----------------------------------------------------------- + + OTP-12687 Remove the usage of erlang:now() from all Corba applications + and use the new rand module instead of random. + +--- os_mon-2.4 ---------------------------------------------------------- + + OTP-12730 cpu_sup should use native sysctl/libkvm calls on BSD + + This avoids forking off with os:cmd every time we just want + to collect the load averages. riak does this every second, + which results in a lot of unnecessary load. + + OTP-12796 Implement native cpu_sup:util/0,1 for FreeBSD + +--- ose-1.1 ------------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- otp_mibs-1.1 -------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- parsetools-2.1 ------------------------------------------------------ + + OTP-12271 The new -dialyzer() attribute is used for suppressing + Dialyzer warnings in generated code. + +--- percept-0.8.11 ------------------------------------------------------ + + OTP-12662 Fix http server configuration + +--- public_key-1.0 ------------------------------------------------------ + + OTP-12110 public_key: Remove legacy switch compact_bit_string + + E.i bitstrings will not be decode as {Unused, Binary}, they + are now Erlang bitstrings. + + Also the compact_bit_string implies the legacy_erlang_types + switch So removing the switch will also make OCTET STRING + values be represented as binaries. + + Undecoded open type will now be wrapped in a asn1_OPENTYPE + tuple. + + This will change some values in records returned by the + public_key API making this change a potentiall + incompatibility. + +--- reltool-0.7 --------------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- runtime_tools-1.9 --------------------------------------------------- + + OTP-12845 Change license text from Erlang Public License to Apache + Public License v2 + +--- sasl-2.5 ------------------------------------------------------------ + + OTP-11540 The undocumented upgrade instruction + <code>{remove_module,PrePurge,PostPurge,DepMods}</code> is + removed. This instruction was added for symmetry reasons in + OTP R7B, but was never documented or tested. + + The existing instruction + <code>{add_module,Mod,DepMods}</code> is now documented, and + the complementing instruction + <code>{delete_module,Mod,DepMods}</code> is added. + + OTP-12778 The sasl_error_logger configuration parameter now supports + the value {file,FileName,Modes} which allows the log file to + be opened in other mode than write (for example, append + mode). + +--- snmp-5.2 ------------------------------------------------------------ + + OTP-12762 The runtime dependencies in the application resource file + have been updated. + +--- ssh-4.0 ------------------------------------------------------------- + + OTP-11697 Better usage of binary matching in ssh_auth.erl and + ssh_message.erl + + OTP-12029 A new option 'preferred_algorithms' is available for + ssh:daemon and ssh:connect. + + This option defines the algorithms presented to the peer in + the algorithm negotiation phase of the ssh protocol. + + The default list can be obtained from the new function + ssh:default_algorithms/0. + + OTP-12240 The internal group to user_drv protocol has been changed to + be synchronous in order to guarantee that output sent to a + process implementing the user_drv protocol is printed before + replying. This protocol is used by the standard_output device + and the ssh application when acting as a client. + + This change changes the previous unlimited buffer when + printing to standard_io and other devices that end up in + user_drv to 1KB. + + OTP-12648 If ssh_connection:subsystem/4 fails we terminates gracefully. + + OTP-12649 Included test of the 'e' and 'f' parameters in diffie-hellman + key exchange as specified in rfc 4253 section 8. + + OTP-12675 To enable the ssh daemon to run in a virtualized environment, + where there can be more that one server that has the same + ip-address and port, we add a new option profile. + + OTP-12676 Upgrade test suite added. + + OTP-12692 Fixes the bug that once the rekey_limit bytes (by default, + 1GB) had been transmitted the connection was rekeyed every + minute, not after the next transferred 'rekey_limit' chunk. + + Thanks to Simon Cornish for the report and the fix! + + OTP-12708 Fixes a bug that causes an SFTP connection to always fail + when {timeout, Timeout} option is used with + ssh_sftp:start_channel. + + Thanks to Simon Cornish + + OTP-12760 Fix various ssh key exchange problems. + + Thanks to Simon Cornish + + OTP-12786 Testcase improvements and corrections: + + * Add testcases for the disconnectfun option on both server + and client sides + + * Timeout testcases adjusted for slow machines where they + sometimes failed + + OTP-12788 The options system_dir and user_dir assumes that the value is + a path to a directory which is readable. This is now checked + early, so ssh:daemon and ssh:connect will fail with an error + message immediately. + + OTP-12789 The option disconnectfun can now be used both on the client + and server side. + + OTP-12790 A daemon now checks that a client doesn't try to authorize + with methods not in the option auth_methods. + + OTP-12811 Disconnectfun now triggers on all disconnects. + + OTP-12813 A new option unknown_msgfun/2 for ssh:connect and ssh:daemon + for handling unknown messages. With the option it is possible + to intercept before an INFO log message is generated. + + One usage is to filter out messages that are not wanted in + the error logger as info reports. An example of such a + message is the 'etimedout' tcp error message that will be + received if a connection has keep_alive and the peer is + restarted. + +--- ssl-7.0 ------------------------------------------------------------- + + OTP-10362 Add new API functions to handle CRL-verification + + OTP-12390 Remove default support for SSL-3.0, due to Poodle vunrability + in protocol specification. + + Add padding check for TLS-1.0 to remove Poodle vunrability + from TLS 1.0, also add the option padding_check. This option + only affects TLS-1.0 connections and if set to false it + disables the block cipher padding check to be able to + interoperate with legacy software. + + Remove default support for RC4 cipher suites, as they are + consider too weak. + + OTP-12580 Add support for TLS ALPN (Application-Layer Protocol + Negotiation) extension. + + OTP-12670 Ignore signature_algorithm (TLS 1.2 extension) sent to TLS + 1.0 or TLS 1.1 server + + OTP-12736 Add SNI (Server Name Indication) support for the server side. + + OTP-12799 Improve error handling in TLS distribution module to avoid + lingering sockets. + + OTP-12815 Add option {client_renegotiation, boolean()} option to the + server-side of the SSL application. + + OTP-12829 Gracefully ignore proprietary hash_sign algorithms + +--- stdlib-2.5 ---------------------------------------------------------- + + OTP-11043 Allow maps for supervisor flags and child specs + + Earlier, supervisor flags and child specs were given as + tuples. While this is kept for backwards compatibility, it is + now also allowed to give these parameters as maps, see + sup_flags and child_spec. + + OTP-11173 A new system message, terminate, is added. This can be sent + with sys:terminate/2,3. If the receiving process handles + system messages properly it will terminate shortly after + receiving this message. + + The new function proc_lib:stop/1,3 utilizes this new system + message and monitors the receiving process in order to + facilitate a synchronous stop mechanism for 'special + processes'. + + proc_lib:stop/1,3 is used by the following functions: + + -- gen_server:stop/1,3 (new) + + -- gen_fsm:stop/1,3 (new) + + -- gen_event:stop/1,3 (modified to be synchronous) + + -- wx_object:stop/1,3 (new) + + OTP-11907 Remove the pg module, which has been deprecated through + OTP-17, is now removed from the STDLIB application. This + module has been marked experimental for more than 15 years, + and has largely been superseded by the pg2 module from the + Kernel application. + + OTP-12151 New BIF: erlang:get_keys/0, lists all keys associated with + the process dictionary. Note: erlang:get_keys/0 is + auto-imported. + + OTP-12158 Fix handling of single dot in filename:join/2 + + The reference manual says that filename:join(A,B) is + equivalent to filename:join([A,B]). In some rare cases this + turns out not to be true. For example: + + filename:join("/a/.","b") -> "/a/./b" vs + filename:join(["/a/.","b"]) -> "/a/b". + + This has been corrected. A single dot is now only kept if it + occurs at the very beginning or the very end of the resulting + path. + + OTP-12167 Add three new functions to io_lib-- scan_format/2, + unscan_format/1, and build_text/1-- which expose the parsed + form of the format control sequences to make it possible to + easily modify or filter the input to io_lib:format/2. This + can e.g. be used in order to replace unbounded-size control + sequences like ~w or ~p with corresponding depth-limited ~W + and ~P before doing the actual formatting. + + OTP-12183 The undocumented option generic_debug for gen_server has been + removed. + + OTP-12186 erl_lint:icrt_export/4 has been rewritten to make the code + really follow the scoping rules of Erlang, and not just in + most situations by accident. + + OTP-12195 Introduce the erl_anno module, an abstraction of the second + element of tokens and tuples in the abstract format. + + OTP-12218 Support variables as Map keys in expressions and patterns + + Erlang will accept any expression as keys in Map expressions + and it will accept literals or bound variables as keys in Map + patterns. + + OTP-12257 The last traces of Mnemosyne Rules have been removed. + + OTP-12270 Properly support maps in match_specs + + OTP-12301 Add 'trim_all' option to binary:split/3 + + This option can be set to remove _ALL_ empty parts of the + result of a call to binary:split/3. + + OTP-12309 New function ets:take/2. Works the same as ets:delete/2 but + also returns the deleted object(s). + + OTP-12376 ets:info/1,2 now contains information about whether + write_concurrency or read_concurrency is enabled. + + OTP-12422 string:tokens/2 is somewhat faster, especially if the list of + separators only contains one separator character. + + OTP-12492 The documentation of the Abstract Format (in the ERTS User's + Guide) has been updated with types and specification. (Thanks + to Anthony Ramine.) + + The explicit representation of parentheses used in types of + the abstract format has been removed. Instead the new + functions erl_parse:type_inop_prec() and + erl_parse:type_preop_prec() can be used for inserting + parentheses where needed. + + OTP-12566 Prevent zip:zip_open/[12] from leaking file descriptors if + parent process dies. + + OTP-12586 Add a new random number generator, see rand module. It have + better characteristics and an improved interface. + + OTP-12651 Correct orddict(3) regarding evaluation order of fold() and + map(). + + OTP-12657 Correct maps module error exceptions + + Bad input to maps module function will now yield the + following exceptions: + + -- {badmap,NotMap} or, + + -- badarg + + OTP-12673 It is now possible to paste text in JCL mode (using Ctrl-Y) + that has been copied in the previous shell session. Also a + bug that caused the JCL mode to crash when pasting text has + been fixed. + + OTP-12716 filename:split/1 when given an empty binary will now return + an empty list, to make it consistent with return value when + given an empty list. + + OTP-12737 Add sync option to ets:tab2file/3. + + OTP-12742 Add functions gb_sets:iterator_from() and + gb_trees:iterator_from(). (Thanks to Kirill Kinduk.) + + OTP-12745 Add maps:filter/2 to maps module. + + OTP-12752 Add uptime() shell command. + + OTP-12754 Cache nowarn_bif_clash functions in erl_lint. + + This patch stores nowarn_bif_clash in the lint record. By + using erlc +'{eprof,lint_module}' when compiling the erlang + parser, we noticed the time spent on nowarn_function/2 + reduced from 30% to 0.01%. + + OTP-12772 Optimize the Erlang Code Linter by using the cached filename + information. + + OTP-12774 Change some internal data structures to Maps in order to + speed up compilation time. Measured speed up is around + 10%-15%. + + OTP-12785 Update orddict to use parameterized types and specs. (Thanks + to UENISHI Kota.) + + OTP-12793 If a child of a simple_one_for_one returns ignore from its + start function no longer store the child for any restart + type. It is not possible to restart or delete the child + because the supervisor is a simple_one_for_one. + + OTP-12808 The assert macros in eunit has been moved out to + stdlib/include/assert.hrl. This files get included by + eunit.hrl. Thus, nothing changes for eunit users, but the + asserts can now also be included separately. + + OTP-12814 Make ets:file2tab preserve enabled read_concurrency and + write_concurrency options for tables. + + OTP-12841 There are many cases where user code needs to be able to + distinguish between a socket that was closed normally and one + that was aborted. Setting the option {show_econnreset, true} + enables the user to receive ECONNRESET errors on both active + and passive sockets. + +--- syntax_tools-1.7 ---------------------------------------------------- + + OTP-12732 Use the new erl_anno module. + + OTP-12769 The merl module has been added to the syntax_tools + application. The Merl library is a simpler way to work with + erl_syntax parse trees. + +--- test_server-3.9 ----------------------------------------------------- + + OTP-10816 The status of an aborted test due to test suite compilation + error has changed from 'auto_skipped' to 'failed'. This + affects both the textual log file, event handling and CT hook + callbacks. The logging of compilation failures has also been + improved, especially in the case of multiple test suites + failing compilation. + + OTP-10923 The Test Server application has been marked as obsolete and + will be removed from OTP in the next major release (OTP + 19.0). + + OTP-11962 When running OTP tests using the ts interface, it is now + possible to specify so called test categories per OTP + application. A test category is represented by a CT test + specification and defines an arbitrary subset of existing + test suites, groups and cases. Examples of test categories + are 'smoke' (smoke tests) and 'bench' (benchmarks). (Call + ts:help() for more info). Also, functions for reading terms + from the current test specification during test, + ct:get_testspec_terms/0 and ct:get_testspec_terms/1, have + been implemented. + + OTP-12740 The Test Server source code parser (erl2html2) failed to + handle the macro tuple in the syntax tree returned by + epp_dodger. This error has been corrected. + +--- tools-2.8 ----------------------------------------------------------- + + OTP-11043 Allow maps for supervisor flags and child specs + + Earlier, supervisor flags and child specs were given as + tuples. While this is kept for backwards compatibility, it is + now also allowed to give these parameters as maps, see + sup_flags and child_spec. + + OTP-12330 In order to improve performance of the cover tool, new + functions are added for cover compilation and analysis on + multiple files. This allows for more parallelisation. + + Some improvements of the data base access is also done in + order to improve the performance when analysing and resetting + cover data. + + Minor incompatibility: An error reason from analyse_to_file + is changed from no_source_code_found to + {no_source_code_found,Module}. + + OTP-12511 Remove Mnemosyne rules support. + + OTP-12681 Add printout of total number of calls and time in eprof + + OTP-12806 Attempting to do a cover analysis when neither source code + nor beam file could be found would hang the cover server. + Corrected to return a proper error. + +--- typer-0.9.9 --------------------------------------------------------- + + OTP-12727 Properly extract annotations from core code. + +--- webtool-0.9 --------------------------------------------------------- + + OTP-10922 The Webtool application has been marked as obsolete and will + be removed from OTP in the next major release (OTP 19.0). + +--- wx-1.4 -------------------------------------------------------------- + + OTP-12183 The undocumented option generic_debug for gen_server has been + removed. + + OTP-12632 Use wxWidgets-3.0, if found, as default backend on windows. + + OTP-12660 Add missing fields in some events records. May require a + recompilation of user applications. + + OTP-12734 Remove raise condition where wx could crash during emulator + stoppage. + +--- xmerl-1.3.8 --------------------------------------------------------- + + OTP-12689 Remove compiler warnings in xmerl. + +--- Open Source Contributors -------------------------------------------- + + Alex Wilson, Andras Horvath, Andreas Amsenius, Andreas Schultz, + András Veres-Szentkirályi, Anthony Ramine, Breno Leitao, Chris Dituri, + Christopher Faulet, Daniel White, David Kubecka, David N. Welton, + Derek Brown, Dmitriy Kargapolov, Dmitry Ivanov, Fred Hebert, + Holger Weiß, James Fish, Jesper Louis Andersen, Johan Oudinet, + Jonas Falkevik, José Valim, Jérôme de Bretagne, Kenji Rikitake, + Kirill Zaborsky, Kirilll Zaborsky, Kostis Sagonas, Larry, Leo Liu, + Loïc Hoguin, Magnus Henoch, Magnus Ottenklinger, Marc Sugiyama, + Martin Hässler, Martin Schürrer, Maxim Mai, Michael Klishin, + Mikael Pettersson, Nate Bartley, Nick Mills, Olivier Girondel, + Peter Lemenkov, Péter Gömöri, Qijiang Fan, Richard Carlsson, + Rory Byrne, Serge Aleynikov, Simon Cornish, Stavros Aronis, + Stefan Grundmann, Steve Vinoski, Tom Briden, Tomas Abrahamsson, + Tuncer Ayaz, UENISHI Kota, Ulf Wiger, Vlad Dumitrescu, Wasif Malik, + Wasif Malik and Johannes Huning, Yoshihiro Tanaka, Yuki Ito, andreaP, + beaver, crownedgrouse, jeffweiss, larry, tmanevik, xsipewe, + Сергей Прохоров |