aboutsummaryrefslogtreecommitdiffstats
path: root/release-notes/OTP-18.0.README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release-notes/OTP-18.0.README.txt')
-rw-r--r--release-notes/OTP-18.0.README.txt1640
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,
+ Сергей Прохоров