aboutsummaryrefslogtreecommitdiffstats
path: root/release-notes/OTP-26.0-rc1.README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'release-notes/OTP-26.0-rc1.README.txt')
-rw-r--r--release-notes/OTP-26.0-rc1.README.txt2475
1 files changed, 2475 insertions, 0 deletions
diff --git a/release-notes/OTP-26.0-rc1.README.txt b/release-notes/OTP-26.0-rc1.README.txt
new file mode 100644
index 0000000..ce28f52
--- /dev/null
+++ b/release-notes/OTP-26.0-rc1.README.txt
@@ -0,0 +1,2475 @@
+Inital Release: OTP 26.0
+Git Tag: OTP-26.0
+Date: 2023-02-15
+Trouble Report Id: OTP-14835, OTP-15597, OTP-15903, OTP-16607,
+ OTP-17771, OTP-17932, OTP-18016, OTP-18029,
+ OTP-18053, OTP-18126, OTP-18131, OTP-18135,
+ OTP-18137, OTP-18140, OTP-18141, OTP-18150,
+ OTP-18159, OTP-18167, OTP-18168, OTP-18176,
+ OTP-18185, OTP-18188, OTP-18204, OTP-18206,
+ OTP-18209, OTP-18210, OTP-18211, OTP-18221,
+ OTP-18225, OTP-18226, OTP-18227, OTP-18228,
+ OTP-18230, OTP-18231, OTP-18235, OTP-18236,
+ OTP-18237, OTP-18238, OTP-18246, OTP-18247,
+ OTP-18248, OTP-18253, OTP-18254, OTP-18259,
+ OTP-18261, OTP-18271, OTP-18272, OTP-18274,
+ OTP-18275, OTP-18276, OTP-18277, OTP-18278,
+ OTP-18279, OTP-18282, OTP-18285, OTP-18286,
+ OTP-18287, OTP-18297, OTP-18300, OTP-18301,
+ OTP-18303, OTP-18305, OTP-18309, OTP-18312,
+ OTP-18318, OTP-18327, OTP-18334, OTP-18335,
+ OTP-18337, OTP-18338, OTP-18340, OTP-18342,
+ OTP-18344, OTP-18350, OTP-18354, OTP-18355,
+ OTP-18360, OTP-18361, OTP-18364, OTP-18367,
+ OTP-18369, OTP-18377, OTP-18385, OTP-18405,
+ OTP-18410, OTP-18413, OTP-18414, OTP-18419,
+ OTP-18423, OTP-18424, OTP-18425, OTP-18430,
+ OTP-18431, OTP-18435, OTP-18438, OTP-18439,
+ OTP-18440, OTP-18441, OTP-18442, OTP-18444,
+ OTP-18445, OTP-18447, OTP-18448, OTP-18451,
+ OTP-18452, OTP-18453, OTP-18456, OTP-18459
+Seq num: GH-3150, GH-3390, GH-4225, GH-4343, GH-4965,
+ GH-5325, GH-5333, GH-5639, GH-5695, GH-5877,
+ GH-5889, GH-6014, GH-6085, GH-6117, GH-6132,
+ GH-6139, GH-6156, GH-6221, GH-6333, GH-6348,
+ GH-6461, GH-6477, GH-6544, GH-6606, GH-6672,
+ GH-6679
+System: OTP
+Release: 26
+Application: asn1-5.1, common_test-1.24, compiler-8.3,
+ crypto-5.2, dialyzer-5.1, diameter-2.3,
+ erl_docgen-1.5, erl_interface-5.4, erts-14.0,
+ inets-8.3, jinterface-1.14, kernel-9.0,
+ mnesia-4.22, observer-2.15, os_mon-2.9,
+ public_key-1.14, reltool-0.10,
+ runtime_tools-1.20, sasl-4.2.1, ssh-5.0,
+ ssl-11.0, stdlib-5.0, syntax_tools-3.1,
+ tools-3.6, wx-2.3
+Predecessor: OTP
+
+ Check out the git tag OTP-26.0, and build a full OTP system including
+ documentation.
+
+ ---------------------------------------------------------------------
+ --- HIGHLIGHTS ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-14835 Application(s): kernel, stdlib
+ Related Id(s): PR-5924
+
+ The Erlang shell has been improved to support the
+ following features:
+
+ -- Auto-complete variables, record names, record field
+ names, map keys, function parameter types and
+ filenames.
+
+ -- Open external editor in the shell (with C-o) to edit
+ the current expression in an editor.
+
+ -- Support defining records (with types), functions and
+ function typespecs, and custom types in the shell.
+
+ -- Do not save pager commands, and input to io:getline
+ in history.
+
+
+ OTP-17932 Application(s): erts, kernel, stdlib
+ Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343,
+ PR-6144
+
+ The TTY/terminal subsystem has been rewritten from by
+ moving more code to Erlang from the old linked-in
+ driver and implementing all the I/O primitives needed
+ in a NIF instead.
+
+ On Unix platforms the user should not notice a lot of
+ difference, besides better handling of unicode
+ characters and fixing of some long standing bugs.
+
+ Windows users will notice that erl.exe has the same
+ functionality as a normal Unix shell and that werl.exe
+ has been removed and replaced with a symlink to
+ erl.exe. This makes the Windows Erlang terminal
+ experience identical to that of Unix.
+
+ The re-write brings with it a number of bug fixes and
+ feature additions:
+
+ -- The TTY is now reset when Erlang exits, fixing zsh
+ to not break when terminating an Erlang session.
+
+ -- standard_error now uses the same unicode mode as
+ standard_io.
+
+ -- Hitting backspace when searching the shell history
+ with an empty search string no longer breaks the shell.
+
+ -- Tab expansion now works on remote nodes started
+ using the JCL interface.
+
+ -- It is now possible to configure the shell slogan and
+ the session slogans (that is the texts that appear when
+ you start an Erlang shell). See the kernel
+ documentation for more details.
+
+ -- Added shell:start_interactive for starting the
+ interactive shell from a non-interactive Erlang session
+ (for example an escript).
+
+ -- On Windows, when starting in detached mode the
+ standard handler are now set to nul devices instead of
+ being unset.
+
+
+ OTP-18135 Application(s): erts
+ Related Id(s): GH-4965, PR-6046
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced when OTP 25 was released, multi time warp
+ mode is now enabled by default. This assumes that all
+ code executing on the system is time warp safe.
+
+ If you have old code in the system that is not time
+ warp safe, you now explicitly need to start the system
+ in no time warp mode (or singe time warp mode if it is
+ partially time warp safe) in order to avoid problems.
+ When starting the system in no time warp mode, the
+ system behaves as it did prior to the introduction of
+ the extended time functionality introduced in OTP 18.
+
+ If you have code that is not time warp safe, you are
+ strongly encouraged to change this so that you can use
+ multi time warp mode. Compared to no time warp mode,
+ multi time warp mode improves scalability and
+ performance as well as accuracy and precision of time
+ measurements.
+
+
+ OTP-18137 Application(s): compiler, erts
+ Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804
+
+ There are several new optimization for binary syntax in
+ the JIT:
+
+ -- Creation and matching of binaries with segments of
+ fixed sizes have been optimized.
+
+ -- Creation and matching of UTF-8 segments have been
+ optimized.
+
+ -- Appending to binaries has been optimized.
+
+
+ OTP-18185 Application(s): compiler, erts
+ Related Id(s): GH-6139
+
+ The compiler and JIT now generate better code for
+ creation of small maps where all keys are literals
+ known at compile time.
+
+
+ OTP-18188 Application(s): dialyzer
+ Related Id(s): PR-5997
+
+ Dialyzer has a new incremental mode that be invoked by
+ giving the --incremental option when running Dialyzer.
+ This new incremental mode is likely to become the
+ default in a future release.
+
+ Incremental mode primarily differs from the previous,
+ "classic", ways of running Dialyzer, in that its model
+ is optimised around the common use case of regularly
+ analysing a single codebase, tweaking the code,
+ analysing it again, and so on, without explicit
+ reference to the building and checking of a PLT.
+
+ In this mode the PLT file acts much more like a true
+ cache, where users provide a codebase and a set of
+ files they care about, and Dialyzer does the legwork in
+ terms of deciding how to most efficiently report all of
+ the relevant warnings given the cached results it may
+ already have in the PLT (and if a PLT doesn't exist,
+ incremental mode will create one).
+
+
+ OTP-18228 Application(s): stdlib
+ Related Id(s): GH-5639
+
+ The performance of the base64 module has been
+ significantly improved. For example, on an x86_64
+ system with the JIT both encode and decode are almost
+ three times faster than in Erlang/OTP 25.
+
+
+ OTP-18235 Application(s): kernel, ssl
+ Related Id(s): PR-5840, PR-6104
+
+ Support for Kernel TLS (kTLS), has been added to the
+ SSL application, for TLS distribution (-proto_dist
+ inet_tls), the SSL option {ktls, true}. Using this for
+ general SSL sockets is uncomfortable, undocumented and
+ not recommended since it requires very platform
+ dependent raw options.
+
+ This, for now, only works for some not too old Linux
+ distributions. Roughly, a kernel 5.2.0 or later with
+ support for UserLand Protocols and the kernel module
+ tls is required.
+
+
+ OTP-18278 Application(s): kernel, stdlib
+ Related Id(s): PR-6260
+
+ The Erlang shell's auto-completion when typing tab has
+ been changed to happen after the editing current line
+ instead of before it.
+
+ This behaviour can be configured using a the
+ shell_expand_location STDLIB configuration parameter.
+
+
+ OTP-18297 Application(s): compiler, stdlib
+ Related Id(s): GH-6348
+
+ A limitation in the binary syntax has been removed. It
+ is now possible to match binary patterns in parallel.
+ Example: <<A:8>> = <<B:4,C:4>> = Bin
+
+
+ OTP-18318 Application(s): stdlib
+ Related Id(s): PR-6347
+
+ In the lists, the zip family of functions now takes
+ options to allow handling lists of different lengths.
+
+
+ OTP-18334 Application(s): erts
+ Related Id(s): PR-6434
+
+ Support for UTF-8 atoms and strings in the NIF
+ interface including new functions enif_make_new_atom,
+ enif_make_new_atom_len and enif_get_string_length.
+
+
+ OTP-18367 Application(s): compiler, erts, stdlib
+ Related Id(s): GH-6544
+
+ The BIFs min/2 and max/2 are now allowed to be used in
+ guards and match specs.
+
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ OTP-18414 Application(s): erts, stdlib
+ Related Id(s): PR-6151
+
+ Some map operations have been optimized by changing the
+ internal sort order of atom keys. This changes the
+ (undocumented) order of how atom keys in small maps are
+ printed and returned by maps:to_list/1 and maps:next/1.
+ The new order is unpredictable and may change between
+ different invocations of the Erlang VM.
+
+ For applications where order is important, there is a
+ new function maps:iterator/2 for creating iterators
+ that return the map elements in a deterministic order.
+ There are also new modifiers k and K for the format
+ string for io:format() to support printing map elements
+ ordered.
+
+
+ OTP-18431 Application(s): compiler, stdlib
+ Related Id(s): PR-6739
+
+ Improved the selective receive optimization, which can
+ now be enabled for references returned from other
+ functions.
+
+ This greatly improves the performance of
+ gen_server:send_request/3, gen_server:wait_response/2,
+ and similar functions.
+
+
+ OTP-18435 Application(s): erts
+ Related Id(s): PR-6827
+
+ The amount of significant bits in node local process
+ identifiers and port identifiers has been extended from
+ 28 bits to 60 bits on 64-bit runtime systems. This
+ makes these identifiers large enough to in practice
+ never having to be reused during the life time of a
+ node.
+
+
+ OTP-18440 Application(s): erts
+ Related Id(s): PR-6351
+
+ New trace feature call_memory. Similar to call_time
+ tracing, but instead of measure accumulated time in
+ traced functions it measures accumulated heap space
+ consumed by traced functions. It can be used to compare
+ how much different functions are contributing to
+ garbage collection being triggered.
+
+
+ OTP-18445 Application(s): erts, stdlib
+
+ It is no longer necessary to enable a feature in the
+ runtime system in order to load modules that are using
+ it. It is sufficient to enable the feature in the
+ compiler when compiling it.
+
+
+ OTP-18459 Application(s): ssl
+
+ Add encoding and decoding of use_srtp hello extension
+ to facilitate for DTLS users to implement SRTP
+ functionality.
+
+
+ ---------------------------------------------------------------------
+ --- POTENTIAL INCOMPATIBILITIES -------------------------------------
+ ---------------------------------------------------------------------
+
+ OTP-17771 Application(s): erts
+ Related Id(s): GH-5325, PR-6370
+
+ The enif_set_option() function has been introduced into
+ the NIF API. It can be used in order to set the
+ ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT
+ options with which one can synchronize halt of the
+ runtime system with flushing enabled and execution of
+ NIFs. Halt of the runtime system without flushing
+ enabled, now terminates the runtime system without
+ execution of atexit/on_exit handlers that may have been
+ installed into the runtime system which might be
+ considered a potential incompatibility.
+
+
+ OTP-18135 Application(s): erts
+ Related Id(s): GH-4965, PR-6046
+
+ *** HIGHLIGHT ***
+
+ As announced when OTP 25 was released, multi time warp
+ mode is now enabled by default. This assumes that all
+ code executing on the system is time warp safe.
+
+ If you have old code in the system that is not time
+ warp safe, you now explicitly need to start the system
+ in no time warp mode (or singe time warp mode if it is
+ partially time warp safe) in order to avoid problems.
+ When starting the system in no time warp mode, the
+ system behaves as it did prior to the introduction of
+ the extended time functionality introduced in OTP 18.
+
+ If you have code that is not time warp safe, you are
+ strongly encouraged to change this so that you can use
+ multi time warp mode. Compared to no time warp mode,
+ multi time warp mode improves scalability and
+ performance as well as accuracy and precision of time
+ measurements.
+
+
+ OTP-18140 Application(s): erl_interface, erts, jinterface,
+ kernel
+ Related Id(s): PR-6072
+
+ As announced since the release of OTP 24, support for:
+
+ -- version 4 node container types in the external term
+ format are now mandatory. That is, references
+ supporting up to 5 32-bit integer identifiers, and
+ process and port identifiers with support for 64-bit
+ data storage. The distribution flag DFLAG_V4_NC is
+ therefor now also mandatory. OTP has since OTP 24
+ supported this.
+
+ -- the new link protocol introduced in OTP 23.3 is now
+ mandatory. The distribution flag DFLAG_UNLINK_ID is
+ therefor now also mandatory.
+
+ Due to the above, OTP 26 nodes will refuse to connect
+ to OTP nodes from releases prior to OTP 24.
+
+
+ OTP-18168 Application(s): ssl
+ Related Id(s): GH-6014, PR-6019
+
+ With this change, stateless tickets generated by server
+ with anti_replay option enabled can be used for
+ creating ClientHello throughout ticket lifetime.
+ Without this change, usability was limited to
+ WindowSize number of seconds configured for anti_replay
+ option.
+
+
+ OTP-18285 Application(s): kernel, ssh, stdlib
+ Related Id(s): PR-6262
+
+ Typing Ctrl+L in a shell now clears the screen and
+ redraws the current line instead of only redrawing the
+ current line. To only redraw the current line, you must
+ now type Alt+L. This brings the behaviour of Ctrl+L
+ closer to how bash and other shells work.
+
+
+ OTP-18344 Application(s): erts, kernel
+ Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522
+
+ The following inet:setopts/2 options have been
+ introduced:
+
+ -- reuseport -- Reuse of local port. Load balancing may
+ or may not be provided depending on underlying OS.
+
+ -- reuseport_lb -- Reuse of local port. Load balancing
+ provided.
+
+ -- exclusiveaddruse -- Exclusive address/port usage on
+ Windows. This socket option is Windows specific and
+ will silently be ignored on other systems.
+
+ The behavior of setting reuseaddr on Windows have
+ changed in a *backwards incompatible* way. The
+ underlying SO_REUSEADDR socket option is now only set
+ if both the reusaddr and the reuseport inet options
+ have been set. This since the underlying SO_REUSEADDR
+ socket option on Windows behaves similar to how BSD
+ behaves if both the underlying socket options
+ SO_REUSEADDR and SO_REUSEPORT have been set. See the
+ documentation of the reuseaddr option for more
+ information.
+
+
+ OTP-18438 Application(s): ssl
+ Related Id(s): GH-6679
+
+ For security reasons remove support for SHA1 and DSA
+ algorithms from default values.
+
+
+ ---------------------------------------------------------------------
+ --- OTP-26.0 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18364 Application(s): otp
+
+ Starting from Erlang/OTP 24, it has been possible to
+ write expressions such as A = catch Expr without
+ parentheses around the catch expression, but it was not
+ mentioned in the documentation. It now is.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18053 Application(s): erts, otp
+ Related Id(s): PR-6101
+
+ Updated configure cache for Windows. This makes
+ configure run faster on windows as many more checks are
+ cached.
+
+
+ OTP-18209 Application(s): otp
+ Related Id(s): PR-5881
+
+ Fix the make target release, release_docs, install and
+ install-docs now work when the target path contains
+ whitespace and/or unicode characters.
+
+
+ ---------------------------------------------------------------------
+ --- asn1-5.1 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18441 Application(s): asn1
+
+ Minor code improvements.
+
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ Full runtime dependencies of asn1-5.1: erts-11.0, kernel-7.0,
+ stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- common_test-1.24 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18377 Application(s): common_test
+ Related Id(s): PR-6437
+
+ This change improves Common Test docs (CT hook example
+ code) and adds Emacs skeleton with hook code.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18259 Application(s): common_test
+ Related Id(s): PR-5924
+
+ Updated common_test with a more robust way to fetch old
+ releases, while ignoring the current release.
+
+
+ OTP-18340 Application(s): common_test
+
+ - re-write the XML ct module documentation into erlang
+ types to make Dialyzer able to catch more precise
+ errors
+
+
+ Full runtime dependencies of common_test-1.24: compiler-6.0,
+ crypto-4.5, debugger-4.1, erts-7.0, ftp-1.0, inets-6.0, kernel-8.4,
+ observer-2.1, runtime_tools-1.8.16, sasl-2.5, snmp-5.1.2, ssh-4.0,
+ stdlib-4.0, syntax_tools-1.7, tools-3.2, xmerl-1.3.8
+
+
+ ---------------------------------------------------------------------
+ --- compiler-8.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18126 Application(s): compiler, erts
+ Related Id(s): PR-6033
+
+ Optimized record updates.
+
+
+ OTP-18137 Application(s): compiler, erts
+ Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804
+
+ *** HIGHLIGHT ***
+
+ There are several new optimization for binary syntax in
+ the JIT:
+
+ -- Creation and matching of binaries with segments of
+ fixed sizes have been optimized.
+
+ -- Creation and matching of UTF-8 segments have been
+ optimized.
+
+ -- Appending to binaries has been optimized.
+
+
+ OTP-18185 Application(s): compiler, erts
+ Related Id(s): GH-6139
+
+ *** HIGHLIGHT ***
+
+ The compiler and JIT now generate better code for
+ creation of small maps where all keys are literals
+ known at compile time.
+
+
+ OTP-18297 Application(s): compiler, stdlib
+ Related Id(s): GH-6348
+
+ *** HIGHLIGHT ***
+
+ A limitation in the binary syntax has been removed. It
+ is now possible to match binary patterns in parallel.
+ Example: <<A:8>> = <<B:4,C:4>> = Bin
+
+
+ OTP-18337 Application(s): compiler, stdlib
+ Related Id(s): GH-6477, PR-6503
+
+ It is documented that $\^X is the ASCII code for
+ Control X, where X is an uppercase or lowercase letter.
+ However, this notation would work for any character X,
+ even then it didn't make sense.
+
+ In Erlang/OTP 26, it is now documented that the
+ following characters are also allowed to follow the \^
+ characters: @, [, \, ], ^, _, and ?. Attempt to use
+ other characters will be rejected with a compiler
+ error.
+
+ The value for $\? is now 127 (instead of 31 as in
+ earlier releases).
+
+
+ OTP-18367 Application(s): compiler, erts, stdlib
+ Related Id(s): GH-6544
+
+ *** HIGHLIGHT ***
+
+ The BIFs min/2 and max/2 are now allowed to be used in
+ guards and match specs.
+
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ *** HIGHLIGHT ***
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ OTP-18431 Application(s): compiler, stdlib
+ Related Id(s): PR-6739
+
+ *** HIGHLIGHT ***
+
+ Improved the selective receive optimization, which can
+ now be enabled for references returned from other
+ functions.
+
+ This greatly improves the performance of
+ gen_server:send_request/3, gen_server:wait_response/2,
+ and similar functions.
+
+
+ Full runtime dependencies of compiler-8.3: crypto-5.1, erts-13.0,
+ kernel-8.4, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- crypto-5.2 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18204 Application(s): crypto
+ Related Id(s): PR-6203
+
+ Add support for SHAKE128 and SHAKE256.
+
+
+ OTP-18206 Application(s): crypto
+ Related Id(s): PR-6167
+
+ Make the -DOPENSSL_API_COMPAT flag work without
+ warnings.
+
+
+ OTP-18405 Application(s): crypto, diameter, kernel, ssl
+ Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768,
+ PR-6769, PR-6812, PR-6814
+
+ Replace size/1 with either tuple_size/1 or byte_size/1
+
+ The size/1 BIF is not optimized by the JIT, and its use
+ can result in worse types for Dialyzer.
+
+ When one knows that the value being tested must be a
+ tuple, tuple_size/1 should always be preferred.
+
+ When one knows that the value being tested must be a
+ binary, byte_size/1 should be preferred. However,
+ byte_size/1 also accepts a bitstring (rounding up size
+ to a whole number of bytes), so one must make sure that
+ the call to byte_size/ is preceded by a call to
+ is_binary/1 to ensure that bitstrings are rejected.
+ Note that the compiler removes redundant calls to
+ is_binary/1, so if one is not sure whether previous
+ code had made sure that the argument is a binary, it
+ does not harm to add an is_binary/1 test immediately
+ before the call to byte_size/1.
+
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ Full runtime dependencies of crypto-5.2: erts-9.0, kernel-5.3,
+ stdlib-3.9
+
+
+ ---------------------------------------------------------------------
+ --- dialyzer-5.1 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18237 Application(s): dialyzer
+ Related Id(s): GH-6221, PR-6243
+
+ When checking behaviors, Dialyzer could generate false
+ warning that a callback function did not have the
+ correct type according to the spec in the behavior
+ definition.
+
+
+ OTP-18276 Application(s): dialyzer
+ Related Id(s): GH-6333
+
+ In a spec, list(none()) used to mean none(). It has now
+ been corrected to mean the empty list.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18188 Application(s): dialyzer
+ Related Id(s): PR-5997
+
+ *** HIGHLIGHT ***
+
+ Dialyzer has a new incremental mode that be invoked by
+ giving the --incremental option when running Dialyzer.
+ This new incremental mode is likely to become the
+ default in a future release.
+
+ Incremental mode primarily differs from the previous,
+ "classic", ways of running Dialyzer, in that its model
+ is optimised around the common use case of regularly
+ analysing a single codebase, tweaking the code,
+ analysing it again, and so on, without explicit
+ reference to the building and checking of a PLT.
+
+ In this mode the PLT file acts much more like a true
+ cache, where users provide a codebase and a set of
+ files they care about, and Dialyzer does the legwork in
+ terms of deciding how to most efficiently report all of
+ the relevant warnings given the cached results it may
+ already have in the PLT (and if a PLT doesn't exist,
+ incremental mode will create one).
+
+
+ OTP-18238 Application(s): dialyzer
+ Related Id(s): PR-6271
+
+ Dialyzer now produces clearer error messages for
+ contract violations.
+
+
+ OTP-18282 Application(s): dialyzer
+ Related Id(s): GH-6132, PR-6335
+
+ The name of a built-in type can now be reused as the
+ name of type locally. That is useful when an OTP
+ release introduces a new built-in type; having the
+ possibility to redefine built-in types locally can make
+ it easier to maintain code that works in multiple OTP
+ releases.
+
+
+ OTP-18342 Application(s): dialyzer
+ Related Id(s): GH-6117, PR-6654
+
+ Dialyzer's overloaded domain warning becomes is
+ disabled by default, and can be enabled with the flag
+ -Woverlapping_contract.
+
+ Dialyzer used to issue a warning for overloaded domains
+ stating "such contracts are currently unsupported and
+ are simply ignored".
+
+ These contracts are not "ignored" but rather, Dialyzer
+ takes the union of the overloaded domains. This means
+ that we lose the dependency from each corresponding
+ input to output type. Because of this, the warning is
+ really about not being able to establish a dependency
+ between the input and output types of each respective
+ overloaded function specification.
+
+
+ OTP-18439 Application(s): dialyzer
+ Related Id(s): GH-5695, PR-6822
+
+ Dialyzer has enabled (by default) warnings about
+ unknown types and functions.
+
+ Prior to this change, Dialyzer had warnings about
+ unknown types and functions disabled (by default).
+
+ This default value has been overwritten; Dialyzer now
+ warns about unknown types and functions (as requested
+ by the community in GH-5695). Thus, the following two
+ examples are equivalent, i.e., passing the -Wunknown
+ function is enabled by default:
+
+ dialyzer moduler.erl -Wunknown -Wmissing_return
+
+ dialyzer moduler.erl -Wmissing_return
+
+ Dialyzer has a new flag, -Wno_unknown. Its purpose is
+ to suppress warnings about unknown functions and types.
+
+ Users who wish to suppress these warnings can invoke
+ Dialyzer using this flag. Example: dialyzer module.erl
+ -Wno_unknown
+
+
+ Full runtime dependencies of dialyzer-5.1: compiler-8.0, erts-12.0,
+ kernel-8.0, stdlib-4.0, syntax_tools-2.0, wx-2.0
+
+
+ ---------------------------------------------------------------------
+ --- diameter-2.3 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18405 Application(s): crypto, diameter, kernel, ssl
+ Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768,
+ PR-6769, PR-6812, PR-6814
+
+ Replace size/1 with either tuple_size/1 or byte_size/1
+
+ The size/1 BIF is not optimized by the JIT, and its use
+ can result in worse types for Dialyzer.
+
+ When one knows that the value being tested must be a
+ tuple, tuple_size/1 should always be preferred.
+
+ When one knows that the value being tested must be a
+ binary, byte_size/1 should be preferred. However,
+ byte_size/1 also accepts a bitstring (rounding up size
+ to a whole number of bytes), so one must make sure that
+ the call to byte_size/ is preceded by a call to
+ is_binary/1 to ensure that bitstrings are rejected.
+ Note that the compiler removes redundant calls to
+ is_binary/1, so if one is not sure whether previous
+ code had made sure that the argument is a binary, it
+ does not harm to add an is_binary/1 test immediately
+ before the call to byte_size/1.
+
+
+ Full runtime dependencies of diameter-2.3: erts-10.0, kernel-3.2,
+ ssl-9.0, stdlib-3.0
+
+
+ ---------------------------------------------------------------------
+ --- erl_docgen-1.5 --------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18338 Application(s): erl_docgen
+ Related Id(s): PR-6408
+
+ New XML tag <change>. Like a <note> box, but with a
+ different (steel blue) color and label. Intended to
+ contain talk about semantic differences between OTP
+ releases.
+
+
+ Full runtime dependencies of erl_docgen-1.5: edoc-1.0, erts-11.0,
+ kernel-8.0, stdlib-3.15, xmerl-1.3.7
+
+
+ ---------------------------------------------------------------------
+ --- erl_interface-5.4 -----------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18140 Application(s): erl_interface, erts, jinterface,
+ kernel
+ Related Id(s): PR-6072
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced since the release of OTP 24, support for:
+
+ -- version 4 node container types in the external term
+ format are now mandatory. That is, references
+ supporting up to 5 32-bit integer identifiers, and
+ process and port identifiers with support for 64-bit
+ data storage. The distribution flag DFLAG_V4_NC is
+ therefor now also mandatory. OTP has since OTP 24
+ supported this.
+
+ -- the new link protocol introduced in OTP 23.3 is now
+ mandatory. The distribution flag DFLAG_UNLINK_ID is
+ therefor now also mandatory.
+
+ Due to the above, OTP 26 nodes will refuse to connect
+ to OTP nodes from releases prior to OTP 24.
+
+
+ --- Known Bugs and Problems ---
+
+ OTP-16607 Application(s): erl_interface
+ Related Id(s): OTP-16608
+
+ The ei API for decoding/encoding terms is not fully
+ 64-bit compatible since terms that have a
+ representation on the external term format larger than
+ 2 GB cannot be handled.
+
+
+ ---------------------------------------------------------------------
+ --- erts-14.0 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18016 Application(s): erts
+
+ If a local fun was called while reloading the *exact
+ same* module that defined said fun, there was a small
+ window in which the call would land in code that was
+ yet to be fully loaded.
+
+
+ OTP-18248 Application(s): erts, kernel
+ Related Id(s): GH-6085, PR-6227
+
+ Fix the TLS distribution to work when starting Erlang
+ in embedded mode and a connection is done before kernel
+ is fully started.
+
+
+ OTP-18271 Application(s): erts, kernel
+ Related Id(s): PR-6279
+
+ erl -remsh has been improved to provide better error
+ reasons and work when using a shell without terminal
+ support (that is an "oldshell").
+
+
+ OTP-18274 Application(s): erts
+ Related Id(s): PR-6048
+
+ Fix so that -fno-omit-frame-pointer is applied to all
+ of the Erlang VM when using the JIT so that tools, such
+ as perf, can crawl the process stacks.
+
+
+ OTP-18277 Application(s): erts
+ Related Id(s): PR-6306
+
+ Compilation server now support unicode paths in
+ compilation server for filesystems that are encoded
+ with unicode.
+
+
+ --- Improvements and New Features ---
+
+ OTP-17771 Application(s): erts
+ Related Id(s): GH-5325, PR-6370
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ The enif_set_option() function has been introduced into
+ the NIF API. It can be used in order to set the
+ ERL_NIF_OPT_DELAY_HALT and/or ERL_NIF_OPT_ON_HALT
+ options with which one can synchronize halt of the
+ runtime system with flushing enabled and execution of
+ NIFs. Halt of the runtime system without flushing
+ enabled, now terminates the runtime system without
+ execution of atexit/on_exit handlers that may have been
+ installed into the runtime system which might be
+ considered a potential incompatibility.
+
+
+ OTP-17932 Application(s): erts, kernel, stdlib
+ Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343,
+ PR-6144
+
+ *** HIGHLIGHT ***
+
+ The TTY/terminal subsystem has been rewritten from by
+ moving more code to Erlang from the old linked-in
+ driver and implementing all the I/O primitives needed
+ in a NIF instead.
+
+ On Unix platforms the user should not notice a lot of
+ difference, besides better handling of unicode
+ characters and fixing of some long standing bugs.
+
+ Windows users will notice that erl.exe has the same
+ functionality as a normal Unix shell and that werl.exe
+ has been removed and replaced with a symlink to
+ erl.exe. This makes the Windows Erlang terminal
+ experience identical to that of Unix.
+
+ The re-write brings with it a number of bug fixes and
+ feature additions:
+
+ -- The TTY is now reset when Erlang exits, fixing zsh
+ to not break when terminating an Erlang session.
+
+ -- standard_error now uses the same unicode mode as
+ standard_io.
+
+ -- Hitting backspace when searching the shell history
+ with an empty search string no longer breaks the shell.
+
+ -- Tab expansion now works on remote nodes started
+ using the JCL interface.
+
+ -- It is now possible to configure the shell slogan and
+ the session slogans (that is the texts that appear when
+ you start an Erlang shell). See the kernel
+ documentation for more details.
+
+ -- Added shell:start_interactive for starting the
+ interactive shell from a non-interactive Erlang session
+ (for example an escript).
+
+ -- On Windows, when starting in detached mode the
+ standard handler are now set to nul devices instead of
+ being unset.
+
+
+ OTP-18029 Application(s): erts, kernel
+
+ Preparation for adding Windows support to 'socket'.
+
+
+ OTP-18053 Application(s): erts, otp
+ Related Id(s): PR-6101
+
+ Updated configure cache for Windows. This makes
+ configure run faster on windows as many more checks are
+ cached.
+
+
+ OTP-18126 Application(s): compiler, erts
+ Related Id(s): PR-6033
+
+ Optimized record updates.
+
+
+ OTP-18131 Application(s): erts
+
+ Optimized internal hash routines.
+
+
+ OTP-18135 Application(s): erts
+ Related Id(s): GH-4965, PR-6046
+
+ *** HIGHLIGHT ***
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced when OTP 25 was released, multi time warp
+ mode is now enabled by default. This assumes that all
+ code executing on the system is time warp safe.
+
+ If you have old code in the system that is not time
+ warp safe, you now explicitly need to start the system
+ in no time warp mode (or singe time warp mode if it is
+ partially time warp safe) in order to avoid problems.
+ When starting the system in no time warp mode, the
+ system behaves as it did prior to the introduction of
+ the extended time functionality introduced in OTP 18.
+
+ If you have code that is not time warp safe, you are
+ strongly encouraged to change this so that you can use
+ multi time warp mode. Compared to no time warp mode,
+ multi time warp mode improves scalability and
+ performance as well as accuracy and precision of time
+ measurements.
+
+
+ OTP-18137 Application(s): compiler, erts
+ Related Id(s): PR-6259, PR-6404, PR-6576, PR-6804
+
+ *** HIGHLIGHT ***
+
+ There are several new optimization for binary syntax in
+ the JIT:
+
+ -- Creation and matching of binaries with segments of
+ fixed sizes have been optimized.
+
+ -- Creation and matching of UTF-8 segments have been
+ optimized.
+
+ -- Appending to binaries has been optimized.
+
+
+ OTP-18140 Application(s): erl_interface, erts, jinterface,
+ kernel
+ Related Id(s): PR-6072
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced since the release of OTP 24, support for:
+
+ -- version 4 node container types in the external term
+ format are now mandatory. That is, references
+ supporting up to 5 32-bit integer identifiers, and
+ process and port identifiers with support for 64-bit
+ data storage. The distribution flag DFLAG_V4_NC is
+ therefor now also mandatory. OTP has since OTP 24
+ supported this.
+
+ -- the new link protocol introduced in OTP 23.3 is now
+ mandatory. The distribution flag DFLAG_UNLINK_ID is
+ therefor now also mandatory.
+
+ Due to the above, OTP 26 nodes will refuse to connect
+ to OTP nodes from releases prior to OTP 24.
+
+
+ OTP-18141 Application(s): erts
+ Related Id(s): OTP-18140, PR-6073
+
+ Optimization of process aliases made possible now that
+ support for version 4 node container types in the
+ external term format is mandatory.
+
+
+ OTP-18185 Application(s): compiler, erts
+ Related Id(s): GH-6139
+
+ *** HIGHLIGHT ***
+
+ The compiler and JIT now generate better code for
+ creation of small maps where all keys are literals
+ known at compile time.
+
+
+ OTP-18227 Application(s): erts
+ Related Id(s): PR-6254
+
+ When erl -eval fails to execute the command is not
+ printed to standard_error.
+
+
+ OTP-18334 Application(s): erts
+ Related Id(s): PR-6434
+
+ *** HIGHLIGHT ***
+
+ Support for UTF-8 atoms and strings in the NIF
+ interface including new functions enif_make_new_atom,
+ enif_make_new_atom_len and enif_get_string_length.
+
+
+ OTP-18344 Application(s): erts, kernel
+ Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ The following inet:setopts/2 options have been
+ introduced:
+
+ -- reuseport -- Reuse of local port. Load balancing may
+ or may not be provided depending on underlying OS.
+
+ -- reuseport_lb -- Reuse of local port. Load balancing
+ provided.
+
+ -- exclusiveaddruse -- Exclusive address/port usage on
+ Windows. This socket option is Windows specific and
+ will silently be ignored on other systems.
+
+ The behavior of setting reuseaddr on Windows have
+ changed in a *backwards incompatible* way. The
+ underlying SO_REUSEADDR socket option is now only set
+ if both the reusaddr and the reuseport inet options
+ have been set. This since the underlying SO_REUSEADDR
+ socket option on Windows behaves similar to how BSD
+ behaves if both the underlying socket options
+ SO_REUSEADDR and SO_REUSEPORT have been set. See the
+ documentation of the reuseaddr option for more
+ information.
+
+
+ OTP-18360 Application(s): erts
+ Related Id(s): PR-6497
+
+ erlang:display/1 will now print large maps in a more
+ readable way (similar to how small maps are printed).
+
+
+ OTP-18367 Application(s): compiler, erts, stdlib
+ Related Id(s): GH-6544
+
+ *** HIGHLIGHT ***
+
+ The BIFs min/2 and max/2 are now allowed to be used in
+ guards and match specs.
+
+
+ OTP-18369 Application(s): erts
+
+ Fail enif_init_resource_type and friends by returning
+ NULL if not called during load/upgrade. Old behavior
+ was undefined.
+
+
+ OTP-18410 Application(s): erts
+ Related Id(s): GH-5889, PR-6345
+
+ New option include_shared_binaries for the
+ max_heap_size process limit. If set to true, large
+ binaries (> 64 bytes), which may be referred by several
+ processes, are included in the memory sum compared
+ against the max_heap_size limit.
+
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ *** HIGHLIGHT ***
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ OTP-18414 Application(s): erts, stdlib
+ Related Id(s): PR-6151
+
+ *** HIGHLIGHT ***
+
+ Some map operations have been optimized by changing the
+ internal sort order of atom keys. This changes the
+ (undocumented) order of how atom keys in small maps are
+ printed and returned by maps:to_list/1 and maps:next/1.
+ The new order is unpredictable and may change between
+ different invocations of the Erlang VM.
+
+ For applications where order is important, there is a
+ new function maps:iterator/2 for creating iterators
+ that return the map elements in a deterministic order.
+ There are also new modifiers k and K for the format
+ string for io:format() to support printing map elements
+ ordered.
+
+
+ OTP-18424 Application(s): erts
+ Related Id(s): PR-6716
+
+ Reduced memory usage of file:read_file_info/1,2
+
+
+ OTP-18425 Application(s): erts
+ Related Id(s): GH-5333, PR-6628
+
+ Add new function current_stacktrace for trace match
+ specifications used by erlang:trace_pattern/3.
+
+ This new option puts the current stacktrace of the
+ caller into the trace message sent to the trace
+ receiver.
+
+
+ OTP-18435 Application(s): erts
+ Related Id(s): PR-6827
+
+ *** HIGHLIGHT ***
+
+ The amount of significant bits in node local process
+ identifiers and port identifiers has been extended from
+ 28 bits to 60 bits on 64-bit runtime systems. This
+ makes these identifiers large enough to in practice
+ never having to be reused during the life time of a
+ node.
+
+
+ OTP-18440 Application(s): erts
+ Related Id(s): PR-6351
+
+ *** HIGHLIGHT ***
+
+ New trace feature call_memory. Similar to call_time
+ tracing, but instead of measure accumulated time in
+ traced functions it measures accumulated heap space
+ consumed by traced functions. It can be used to compare
+ how much different functions are contributing to
+ garbage collection being triggered.
+
+
+ OTP-18445 Application(s): erts, stdlib
+
+ *** HIGHLIGHT ***
+
+ It is no longer necessary to enable a feature in the
+ runtime system in order to load modules that are using
+ it. It is sufficient to enable the feature in the
+ compiler when compiling it.
+
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ Full runtime dependencies of erts-14.0: kernel-9.0, sasl-3.3,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- inets-8.3 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18167 Application(s): inets
+
+ By default ssl connections will use options from
+ ssl_default_options(true)
+
+
+ OTP-18350 Application(s): inets, observer, os_mon, reltool, wx
+
+ Runtime dependencies have been updated.
+
+
+ Full runtime dependencies of inets-8.3: erts-14.0, kernel-9.0,
+ mnesia-4.12, public_key-1.13, runtime_tools-1.8.14, ssl-9.0,
+ stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- jinterface-1.14 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18140 Application(s): erl_interface, erts, jinterface,
+ kernel
+ Related Id(s): PR-6072
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced since the release of OTP 24, support for:
+
+ -- version 4 node container types in the external term
+ format are now mandatory. That is, references
+ supporting up to 5 32-bit integer identifiers, and
+ process and port identifiers with support for 64-bit
+ data storage. The distribution flag DFLAG_V4_NC is
+ therefor now also mandatory. OTP has since OTP 24
+ supported this.
+
+ -- the new link protocol introduced in OTP 23.3 is now
+ mandatory. The distribution flag DFLAG_UNLINK_ID is
+ therefor now also mandatory.
+
+ Due to the above, OTP 26 nodes will refuse to connect
+ to OTP nodes from releases prior to OTP 24.
+
+
+ ---------------------------------------------------------------------
+ --- kernel-9.0 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18210 Application(s): kernel
+ Related Id(s): GH-5877, PR-5878
+
+ Fix bug where duplicate keys were allowed in the .app
+ file of an application. Duplicate keys are now rejected
+ and the application will not start if they exist.
+
+
+ OTP-18225 Application(s): kernel
+ Related Id(s): PR-6036
+
+ Fix inconsistent handling in logger_formatter of the
+ branched values in conditional branches. For example
+ using msg in a conditional branch would not be
+ formatted as it should before this fix.
+
+
+ OTP-18226 Application(s): kernel
+ Related Id(s): PR-6253
+
+ Fix the logger_std_h handler to log to standard_error
+ if logging to standard_io fails for any reason.
+
+
+ OTP-18248 Application(s): erts, kernel
+ Related Id(s): GH-6085, PR-6227
+
+ Fix the TLS distribution to work when starting Erlang
+ in embedded mode and a connection is done before kernel
+ is fully started.
+
+
+ OTP-18271 Application(s): erts, kernel
+ Related Id(s): PR-6279
+
+ erl -remsh has been improved to provide better error
+ reasons and work when using a shell without terminal
+ support (that is an "oldshell").
+
+
+ OTP-18286 Application(s): kernel
+ Related Id(s): PR-5955
+
+ Fix logging of log events generated before kernel is
+ started to not fail if the code for formatting those
+ log messaged have not yet been loaded.
+
+
+ --- Improvements and New Features ---
+
+ OTP-14835 Application(s): kernel, stdlib
+ Related Id(s): PR-5924
+
+ *** HIGHLIGHT ***
+
+ The Erlang shell has been improved to support the
+ following features:
+
+ -- Auto-complete variables, record names, record field
+ names, map keys, function parameter types and
+ filenames.
+
+ -- Open external editor in the shell (with C-o) to edit
+ the current expression in an editor.
+
+ -- Support defining records (with types), functions and
+ function typespecs, and custom types in the shell.
+
+ -- Do not save pager commands, and input to io:getline
+ in history.
+
+
+ OTP-17932 Application(s): erts, kernel, stdlib
+ Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343,
+ PR-6144
+
+ *** HIGHLIGHT ***
+
+ The TTY/terminal subsystem has been rewritten from by
+ moving more code to Erlang from the old linked-in
+ driver and implementing all the I/O primitives needed
+ in a NIF instead.
+
+ On Unix platforms the user should not notice a lot of
+ difference, besides better handling of unicode
+ characters and fixing of some long standing bugs.
+
+ Windows users will notice that erl.exe has the same
+ functionality as a normal Unix shell and that werl.exe
+ has been removed and replaced with a symlink to
+ erl.exe. This makes the Windows Erlang terminal
+ experience identical to that of Unix.
+
+ The re-write brings with it a number of bug fixes and
+ feature additions:
+
+ -- The TTY is now reset when Erlang exits, fixing zsh
+ to not break when terminating an Erlang session.
+
+ -- standard_error now uses the same unicode mode as
+ standard_io.
+
+ -- Hitting backspace when searching the shell history
+ with an empty search string no longer breaks the shell.
+
+ -- Tab expansion now works on remote nodes started
+ using the JCL interface.
+
+ -- It is now possible to configure the shell slogan and
+ the session slogans (that is the texts that appear when
+ you start an Erlang shell). See the kernel
+ documentation for more details.
+
+ -- Added shell:start_interactive for starting the
+ interactive shell from a non-interactive Erlang session
+ (for example an escript).
+
+ -- On Windows, when starting in detached mode the
+ standard handler are now set to nul devices instead of
+ being unset.
+
+
+ OTP-18029 Application(s): erts, kernel
+
+ Preparation for adding Windows support to 'socket'.
+
+
+ OTP-18140 Application(s): erl_interface, erts, jinterface,
+ kernel
+ Related Id(s): PR-6072
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ As announced since the release of OTP 24, support for:
+
+ -- version 4 node container types in the external term
+ format are now mandatory. That is, references
+ supporting up to 5 32-bit integer identifiers, and
+ process and port identifiers with support for 64-bit
+ data storage. The distribution flag DFLAG_V4_NC is
+ therefor now also mandatory. OTP has since OTP 24
+ supported this.
+
+ -- the new link protocol introduced in OTP 23.3 is now
+ mandatory. The distribution flag DFLAG_UNLINK_ID is
+ therefor now also mandatory.
+
+ Due to the above, OTP 26 nodes will refuse to connect
+ to OTP nodes from releases prior to OTP 24.
+
+
+ OTP-18235 Application(s): kernel, ssl
+ Related Id(s): PR-5840, PR-6104
+
+ *** HIGHLIGHT ***
+
+ Support for Kernel TLS (kTLS), has been added to the
+ SSL application, for TLS distribution (-proto_dist
+ inet_tls), the SSL option {ktls, true}. Using this for
+ general SSL sockets is uncomfortable, undocumented and
+ not recommended since it requires very platform
+ dependent raw options.
+
+ This, for now, only works for some not too old Linux
+ distributions. Roughly, a kernel 5.2.0 or later with
+ support for UserLand Protocols and the kernel module
+ tls is required.
+
+
+ OTP-18261 Application(s): kernel
+ Related Id(s): PR-5924
+
+ Add code:get_doc/2 which adds support to fetch
+ documentation skeletons of functions using debug_info
+ chunks instead of eep48 doc chunks.
+
+
+ OTP-18278 Application(s): kernel, stdlib
+ Related Id(s): PR-6260
+
+ *** HIGHLIGHT ***
+
+ The Erlang shell's auto-completion when typing tab has
+ been changed to happen after the editing current line
+ instead of before it.
+
+ This behaviour can be configured using a the
+ shell_expand_location STDLIB configuration parameter.
+
+
+ OTP-18285 Application(s): kernel, ssh, stdlib
+ Related Id(s): PR-6262
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ Typing Ctrl+L in a shell now clears the screen and
+ redraws the current line instead of only redrawing the
+ current line. To only redraw the current line, you must
+ now type Alt+L. This brings the behaviour of Ctrl+L
+ closer to how bash and other shells work.
+
+
+ OTP-18305 Application(s): kernel
+ Related Id(s): PR-5831
+
+ gen_server optimized by caching callback functions
+
+
+ OTP-18327 Application(s): kernel
+ Related Id(s): PR-6433
+
+ Prepare the pg communication protocol for upgrade. The
+ plan is for OTP-28 nodes to be able to use an upgraded
+ pg protocol while still being able to talk with OTP 26
+ nodes.
+
+
+ OTP-18344 Application(s): erts, kernel
+ Related Id(s): GH-6461, OTP-18324, PR-6481, PR-6522
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ The following inet:setopts/2 options have been
+ introduced:
+
+ -- reuseport -- Reuse of local port. Load balancing may
+ or may not be provided depending on underlying OS.
+
+ -- reuseport_lb -- Reuse of local port. Load balancing
+ provided.
+
+ -- exclusiveaddruse -- Exclusive address/port usage on
+ Windows. This socket option is Windows specific and
+ will silently be ignored on other systems.
+
+ The behavior of setting reuseaddr on Windows have
+ changed in a *backwards incompatible* way. The
+ underlying SO_REUSEADDR socket option is now only set
+ if both the reusaddr and the reuseport inet options
+ have been set. This since the underlying SO_REUSEADDR
+ socket option on Windows behaves similar to how BSD
+ behaves if both the underlying socket options
+ SO_REUSEADDR and SO_REUSEPORT have been set. See the
+ documentation of the reuseaddr option for more
+ information.
+
+
+ OTP-18405 Application(s): crypto, diameter, kernel, ssl
+ Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768,
+ PR-6769, PR-6812, PR-6814
+
+ Replace size/1 with either tuple_size/1 or byte_size/1
+
+ The size/1 BIF is not optimized by the JIT, and its use
+ can result in worse types for Dialyzer.
+
+ When one knows that the value being tested must be a
+ tuple, tuple_size/1 should always be preferred.
+
+ When one knows that the value being tested must be a
+ binary, byte_size/1 should be preferred. However,
+ byte_size/1 also accepts a bitstring (rounding up size
+ to a whole number of bytes), so one must make sure that
+ the call to byte_size/ is preceded by a call to
+ is_binary/1 to ensure that bitstrings are rejected.
+ Note that the compiler removes redundant calls to
+ is_binary/1, so if one is not sure whether previous
+ code had made sure that the argument is a binary, it
+ does not harm to add an is_binary/1 test immediately
+ before the call to byte_size/1.
+
+
+ OTP-18419 Application(s): kernel
+
+ The function file:pid2name/1 is deprecated and will be
+ removed in Erlang/OTP 27.
+
+
+ OTP-18442 Application(s): kernel
+ Related Id(s): GH-6606, PR-6786
+
+ The modules Erlang DNS resolver inet_res and helper
+ modules have been updated for RFC6891; to handle OPT RR
+ with DNSSEC OK (DO) bit.
+
+
+ OTP-18444 Application(s): kernel
+ Related Id(s): PR-6035
+
+ Introduced application:get_supervisor/1.
+
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ OTP-18448 Application(s): kernel
+ Related Id(s): PR-6736
+
+ Reduce contention on the code_server by doing the code
+ preparation on the client.
+
+
+ OTP-18451 Application(s): kernel
+ Related Id(s): PR-6737
+
+ Added a mode to ensure_all_loaded, to start children
+ application and their dependencies concurrently.
+
+
+ OTP-18452 Application(s): kernel
+ Related Id(s): PR-6729
+
+ Cache OTP boot code paths, to limit how many folders
+ that are being accessed during a module lookup. Can be
+ disabled with -cache_boot_path false. OTP boot code
+ paths consists of ERL_LIB environment variables. The
+ various otp/*/ebin folders. And the {path, ...} clauses
+ in the init script.
+
+
+ OTP-18456 Application(s): kernel, ssl
+
+ Erlang distribution code in Kernel and SSL has been
+ refactored a bit to facilitate debugging and
+ re-usability, which shouldn't have any noticeable
+ effects on behaviour or performance.
+
+
+ Full runtime dependencies of kernel-9.0: crypto-5.0, erts-14.0,
+ sasl-3.0, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- mnesia-4.22 -----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18309 Application(s): mnesia
+ Related Id(s): PR-6377
+
+ Added debug statistics for active transactions.
+
+
+ Full runtime dependencies of mnesia-4.22: erts-9.0, kernel-5.3,
+ stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- observer-2.15 ---------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18350 Application(s): inets, observer, os_mon, reltool, wx
+
+ Runtime dependencies have been updated.
+
+
+ OTP-18430 Application(s): observer
+ Related Id(s): PR-6397
+
+ Added start/1, start_and_wait functions/1|2 functions.
+
+
+ Full runtime dependencies of observer-2.15: erts-14.0, et-1.5,
+ kernel-9.0, runtime_tools-1.19, stdlib-5.0, wx-2.3
+
+
+ ---------------------------------------------------------------------
+ --- os_mon-2.9 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18246 Application(s): os_mon
+ Related Id(s): GH-6156, PR-6284
+
+ Fix internal os_mon_sysinfo:get_disk_info/1 function to
+ not crash when run on Windows with multiple drives.
+
+
+ --- Improvements and New Features ---
+
+ OTP-18303 Application(s): os_mon
+ Related Id(s): PR-6384
+
+ The disksup:get_disk_info/0 and disksup:get_disk_info/1
+ functions have been introduced. These can be used in
+ order to immediately fetch information about current
+ disk usage.
+
+
+ OTP-18350 Application(s): inets, observer, os_mon, reltool, wx
+
+ Runtime dependencies have been updated.
+
+
+ Full runtime dependencies of os_mon-2.9: erts-14.0, kernel-9.0,
+ sasl-4.2.1, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- public_key-1.14 -------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ Full runtime dependencies of public_key-1.14: asn1-3.0, crypto-4.6,
+ erts-6.0, kernel-3.0, stdlib-3.5
+
+
+ ---------------------------------------------------------------------
+ --- reltool-0.10 ----------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18230 Application(s): reltool
+ Related Id(s): PR-5936
+
+ Add possibility to strip specific chunks from beam
+ files included in a release. Before this change it was
+ only possible to strip all chunks from the beam files.
+
+
+ OTP-18350 Application(s): inets, observer, os_mon, reltool, wx
+
+ Runtime dependencies have been updated.
+
+
+ Full runtime dependencies of reltool-0.10: erts-14.0, kernel-9.0,
+ sasl-4.2.1, stdlib-5.0, tools-2.6.14, wx-2.3
+
+
+ ---------------------------------------------------------------------
+ --- runtime_tools-1.20 ----------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18211 Application(s): runtime_tools
+ Related Id(s): PR-6143
+
+ Add dbg:tracer(file, Filename) as a convenient way to
+ trace to a file in clean text.
+
+
+ OTP-18447 Application(s): asn1, crypto, erts, kernel,
+ public_key, runtime_tools
+
+ Handling of on_load modules during boot has been
+ improved by adding an extra step in the boot order for
+ embedded mode that runs all on_load handlers, instead
+ of relying on explicit invocation of them, later, when
+ the kernel supervision tree starts.
+
+ This is mostly a code improvement and OTP internal
+ simplification to avoid future bugs and to simplify
+ code maintenance.
+
+
+ Full runtime dependencies of runtime_tools-1.20: erts-11.0,
+ kernel-8.1, mnesia-4.12, stdlib-3.13
+
+
+ ---------------------------------------------------------------------
+ --- sasl-4.2.1 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18300 Application(s): sasl
+ Related Id(s): PR-6389
+
+ Improve error message from systools:make_script, when
+ .app parameters contain duplicates. The parameters that
+ will be checked are modules, applications and
+ registered.
+
+
+ Full runtime dependencies of sasl-4.2.1: erts-10.2, kernel-6.0,
+ stdlib-4.0, tools-2.6.14
+
+
+ ---------------------------------------------------------------------
+ --- ssh-5.0 ---------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18231 Application(s): ssh
+ Related Id(s): OTP-17932, PR-6144
+
+ The ssh_cli has been updated to work with the changes
+ introduced in the new Erlang shell implementation.
+
+
+ OTP-18285 Application(s): kernel, ssh, stdlib
+ Related Id(s): PR-6262
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ Typing Ctrl+L in a shell now clears the screen and
+ redraws the current line instead of only redrawing the
+ current line. To only redraw the current line, you must
+ now type Alt+L. This brings the behaviour of Ctrl+L
+ closer to how bash and other shells work.
+
+
+ Full runtime dependencies of ssh-5.0: crypto-5.0, erts-14.0,
+ kernel-9.0, public_key-1.6.1, runtime_tools-1.15.1, stdlib-5.0
+
+
+ ---------------------------------------------------------------------
+ --- ssl-11.0 --------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-15903 Application(s): ssl
+
+ Improved error checking and handling of ssl options.
+
+
+ OTP-18168 Application(s): ssl
+ Related Id(s): GH-6014, PR-6019
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ With this change, stateless tickets generated by server
+ with anti_replay option enabled can be used for
+ creating ClientHello throughout ticket lifetime.
+ Without this change, usability was limited to
+ WindowSize number of seconds configured for anti_replay
+ option.
+
+
+ OTP-18235 Application(s): kernel, ssl
+ Related Id(s): PR-5840, PR-6104
+
+ *** HIGHLIGHT ***
+
+ Support for Kernel TLS (kTLS), has been added to the
+ SSL application, for TLS distribution (-proto_dist
+ inet_tls), the SSL option {ktls, true}. Using this for
+ general SSL sockets is uncomfortable, undocumented and
+ not recommended since it requires very platform
+ dependent raw options.
+
+ This, for now, only works for some not too old Linux
+ distributions. Roughly, a kernel 5.2.0 or later with
+ support for UserLand Protocols and the kernel module
+ tls is required.
+
+
+ OTP-18253 Application(s): ssl
+
+ With this change, TLS 1.3 server can be configured to
+ include client certificate in session ticket.
+
+
+ OTP-18254 Application(s): ssl
+ Related Id(s): PR-5982
+
+ With this change, it is possible to configure
+ encryption seed to be used with TLS1.3 stateless
+ tickets. This enables using tickets on different server
+ instances.
+
+
+ OTP-18312 Application(s): ssl
+
+ Debugging enhancements.
+
+
+ OTP-18335 Application(s): ssl
+
+ With this change, maybe keyword atom is not used as
+ function name in ssl code.
+
+
+ OTP-18405 Application(s): crypto, diameter, kernel, ssl
+ Related Id(s): GH-6672, PR-6700, PR-6702, PR-6768,
+ PR-6769, PR-6812, PR-6814
+
+ Replace size/1 with either tuple_size/1 or byte_size/1
+
+ The size/1 BIF is not optimized by the JIT, and its use
+ can result in worse types for Dialyzer.
+
+ When one knows that the value being tested must be a
+ tuple, tuple_size/1 should always be preferred.
+
+ When one knows that the value being tested must be a
+ binary, byte_size/1 should be preferred. However,
+ byte_size/1 also accepts a bitstring (rounding up size
+ to a whole number of bytes), so one must make sure that
+ the call to byte_size/ is preceded by a call to
+ is_binary/1 to ensure that bitstrings are rejected.
+ Note that the compiler removes redundant calls to
+ is_binary/1, so if one is not sure whether previous
+ code had made sure that the argument is a binary, it
+ does not harm to add an is_binary/1 test immediately
+ before the call to byte_size/1.
+
+
+ OTP-18438 Application(s): ssl
+ Related Id(s): GH-6679
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ For security reasons remove support for SHA1 and DSA
+ algorithms from default values.
+
+
+ OTP-18453 Application(s): ssl
+
+ Mitigate memory usage from large certificate chains by
+ lowering the maximum handshake size. This should not
+ effect the common cases, if needed it can be configured
+ to a higher value.
+
+
+ OTP-18456 Application(s): kernel, ssl
+
+ Erlang distribution code in Kernel and SSL has been
+ refactored a bit to facilitate debugging and
+ re-usability, which shouldn't have any noticeable
+ effects on behaviour or performance.
+
+
+ OTP-18459 Application(s): ssl
+
+ *** HIGHLIGHT ***
+
+ Add encoding and decoding of use_srtp hello extension
+ to facilitate for DTLS users to implement SRTP
+ functionality.
+
+
+ Full runtime dependencies of ssl-11.0: crypto-5.0, erts-14.0,
+ inets-5.10.7, kernel-9.0, public_key-1.11.3, runtime_tools-1.15.1,
+ stdlib-4.1
+
+
+ ---------------------------------------------------------------------
+ --- stdlib-5.0 ------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Fixed Bugs and Malfunctions ---
+
+ OTP-18275 Application(s): stdlib
+ Related Id(s): PR-6045
+
+ All process calls in dets have been updated to use the
+ receive queue optimizations.
+
+
+ --- Improvements and New Features ---
+
+ OTP-14835 Application(s): kernel, stdlib
+ Related Id(s): PR-5924
+
+ *** HIGHLIGHT ***
+
+ The Erlang shell has been improved to support the
+ following features:
+
+ -- Auto-complete variables, record names, record field
+ names, map keys, function parameter types and
+ filenames.
+
+ -- Open external editor in the shell (with C-o) to edit
+ the current expression in an editor.
+
+ -- Support defining records (with types), functions and
+ function typespecs, and custom types in the shell.
+
+ -- Do not save pager commands, and input to io:getline
+ in history.
+
+
+ OTP-15597 Application(s): stdlib
+ Related Id(s): PR-5831
+
+ Gen_server now caches external functions for use in
+ handle_call, handle_cast and handle_info.
+
+
+ OTP-17932 Application(s): erts, kernel, stdlib
+ Related Id(s): GH-3150, GH-3390, GH-4225, GH-4343,
+ PR-6144
+
+ *** HIGHLIGHT ***
+
+ The TTY/terminal subsystem has been rewritten from by
+ moving more code to Erlang from the old linked-in
+ driver and implementing all the I/O primitives needed
+ in a NIF instead.
+
+ On Unix platforms the user should not notice a lot of
+ difference, besides better handling of unicode
+ characters and fixing of some long standing bugs.
+
+ Windows users will notice that erl.exe has the same
+ functionality as a normal Unix shell and that werl.exe
+ has been removed and replaced with a symlink to
+ erl.exe. This makes the Windows Erlang terminal
+ experience identical to that of Unix.
+
+ The re-write brings with it a number of bug fixes and
+ feature additions:
+
+ -- The TTY is now reset when Erlang exits, fixing zsh
+ to not break when terminating an Erlang session.
+
+ -- standard_error now uses the same unicode mode as
+ standard_io.
+
+ -- Hitting backspace when searching the shell history
+ with an empty search string no longer breaks the shell.
+
+ -- Tab expansion now works on remote nodes started
+ using the JCL interface.
+
+ -- It is now possible to configure the shell slogan and
+ the session slogans (that is the texts that appear when
+ you start an Erlang shell). See the kernel
+ documentation for more details.
+
+ -- Added shell:start_interactive for starting the
+ interactive shell from a non-interactive Erlang session
+ (for example an escript).
+
+ -- On Windows, when starting in detached mode the
+ standard handler are now set to nul devices instead of
+ being unset.
+
+
+ OTP-18150 Application(s): stdlib
+
+ Added codepoint category to unicode_util
+
+
+ OTP-18159 Application(s): stdlib
+ Related Id(s): PR-6904
+
+ Added the zip:zip_get_crc32/2 function to retrieve the
+ CRC32 checksum from an opened ZIP archive.
+
+
+ OTP-18176 Application(s): stdlib
+ Related Id(s): PR-6118
+
+ Add the new options post_process_args and detached to
+ peer:start function.
+
+
+ OTP-18221 Application(s): stdlib
+ Related Id(s): PR-6197
+
+ The re:replace/3,4 functions now accept as the
+ replacement argument.
+
+
+ OTP-18228 Application(s): stdlib
+ Related Id(s): GH-5639
+
+ *** HIGHLIGHT ***
+
+ The performance of the base64 module has been
+ significantly improved. For example, on an x86_64
+ system with the JIT both encode and decode are almost
+ three times faster than in Erlang/OTP 25.
+
+
+ OTP-18236 Application(s): stdlib
+ Related Id(s): PR-6256
+
+ Improved implementation of timer:apply_interval/4
+ reducing load on the timer server, and introduction of
+ the new function timer:apply_repeatedly/4.
+ timer:apply_repeatedly/4 is similar to
+ timer:apply_interval/4, but timer:apply_repeatedly/4
+ prevents parallel execution of triggered apply
+ operations which timer:apply_interval/4 does not.
+
+
+ OTP-18247 Application(s): stdlib
+ Related Id(s): PR-6280, PR-6711
+
+ The base64 module now supports encoding and decoding
+ with an alternate URL safe alphabet, and an option for
+ accepting or adding missing = padding characters.
+
+
+ OTP-18272 Application(s): stdlib
+ Related Id(s): PR-6279
+
+ Add shell:whereis/0 which can be used to locate the
+ current shell process.
+
+
+ OTP-18278 Application(s): kernel, stdlib
+ Related Id(s): PR-6260
+
+ *** HIGHLIGHT ***
+
+ The Erlang shell's auto-completion when typing tab has
+ been changed to happen after the editing current line
+ instead of before it.
+
+ This behaviour can be configured using a the
+ shell_expand_location STDLIB configuration parameter.
+
+
+ OTP-18279 Application(s): stdlib
+ Related Id(s): PR-6234
+
+ New function ets:lookup_element/4 with a Default
+ argument returned if the key did not exist in the
+ table. The old ets:lookup_element/3 raises a badarg
+ exception which can be both inconveniente and slower.
+
+
+ OTP-18285 Application(s): kernel, ssh, stdlib
+ Related Id(s): PR-6262
+
+ *** POTENTIAL INCOMPATIBILITY ***
+
+ Typing Ctrl+L in a shell now clears the screen and
+ redraws the current line instead of only redrawing the
+ current line. To only redraw the current line, you must
+ now type Alt+L. This brings the behaviour of Ctrl+L
+ closer to how bash and other shells work.
+
+
+ OTP-18287 Application(s): stdlib
+ Related Id(s): PR-5955
+
+ peer nodes using standard_io connections now include
+ standard error from the node in the io stream from the
+ started node.
+
+
+ OTP-18297 Application(s): compiler, stdlib
+ Related Id(s): GH-6348
+
+ *** HIGHLIGHT ***
+
+ A limitation in the binary syntax has been removed. It
+ is now possible to match binary patterns in parallel.
+ Example: <<A:8>> = <<B:4,C:4>> = Bin
+
+
+ OTP-18301 Application(s): stdlib
+ Related Id(s): PR-6350
+
+ Improve type specification of
+ unicode:characters_to_list().
+
+
+ OTP-18318 Application(s): stdlib
+ Related Id(s): PR-6347
+
+ *** HIGHLIGHT ***
+
+ In the lists, the zip family of functions now takes
+ options to allow handling lists of different lengths.
+
+
+ OTP-18337 Application(s): compiler, stdlib
+ Related Id(s): GH-6477, PR-6503
+
+ It is documented that $\^X is the ASCII code for
+ Control X, where X is an uppercase or lowercase letter.
+ However, this notation would work for any character X,
+ even then it didn't make sense.
+
+ In Erlang/OTP 26, it is now documented that the
+ following characters are also allowed to follow the \^
+ characters: @, [, \, ], ^, _, and ?. Attempt to use
+ other characters will be rejected with a compiler
+ error.
+
+ The value for $\? is now 127 (instead of 31 as in
+ earlier releases).
+
+
+ OTP-18354 Application(s): stdlib
+ Related Id(s): PR-6297
+
+ The binary:encode_hex/2 function has been added to
+ allow the encoded hexadecimal digits to be in either
+ lower or upper case.
+
+
+ OTP-18355 Application(s): stdlib
+ Related Id(s): PR-6507
+
+ Variants of timer:tc() with user specified time unit
+ have been introduced.
+
+
+ OTP-18361 Application(s): stdlib
+ Related Id(s): PR-6536
+
+ New function math:tau/0. Returns 2*math:pi().
+
+
+ OTP-18367 Application(s): compiler, erts, stdlib
+ Related Id(s): GH-6544
+
+ *** HIGHLIGHT ***
+
+ The BIFs min/2 and max/2 are now allowed to be used in
+ guards and match specs.
+
+
+ OTP-18385 Application(s): stdlib
+ Related Id(s): PR-6698
+
+ Optimized gen_server:multi_call().
+
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ *** HIGHLIGHT ***
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ OTP-18414 Application(s): erts, stdlib
+ Related Id(s): PR-6151
+
+ *** HIGHLIGHT ***
+
+ Some map operations have been optimized by changing the
+ internal sort order of atom keys. This changes the
+ (undocumented) order of how atom keys in small maps are
+ printed and returned by maps:to_list/1 and maps:next/1.
+ The new order is unpredictable and may change between
+ different invocations of the Erlang VM.
+
+ For applications where order is important, there is a
+ new function maps:iterator/2 for creating iterators
+ that return the map elements in a deterministic order.
+ There are also new modifiers k and K for the format
+ string for io:format() to support printing map elements
+ ordered.
+
+
+ OTP-18423 Application(s): stdlib
+ Related Id(s): com/erlang/backlog/issues/142,
+ https://github
+
+ Make gen_server fail "silently" with a new return value
+ for init/1.
+
+
+ OTP-18431 Application(s): compiler, stdlib
+ Related Id(s): PR-6739
+
+ *** HIGHLIGHT ***
+
+ Improved the selective receive optimization, which can
+ now be enabled for references returned from other
+ functions.
+
+ This greatly improves the performance of
+ gen_server:send_request/3, gen_server:wait_response/2,
+ and similar functions.
+
+
+ OTP-18445 Application(s): erts, stdlib
+
+ *** HIGHLIGHT ***
+
+ It is no longer necessary to enable a feature in the
+ runtime system in order to load modules that are using
+ it. It is sufficient to enable the feature in the
+ compiler when compiling it.
+
+
+ Full runtime dependencies of stdlib-5.0: compiler-5.0, crypto-4.5,
+ erts-13.1, kernel-9.0, sasl-3.0
+
+
+ ---------------------------------------------------------------------
+ --- syntax_tools-3.1 ------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ *** HIGHLIGHT ***
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ Full runtime dependencies of syntax_tools-3.1: compiler-7.0,
+ erts-9.0, kernel-5.0, stdlib-4.0
+
+
+ ---------------------------------------------------------------------
+ --- tools-3.6 -------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18413 Application(s): compiler, erts, stdlib, syntax_tools,
+ tools
+ Related Id(s): EEP-58, PR-6727
+
+ *** HIGHLIGHT ***
+
+ Map comprehensions as suggested in EEP 58 has now been
+ implemented.
+
+
+ Full runtime dependencies of tools-3.6: compiler-5.0, erts-11.0,
+ erts-9.1, kernel-5.4, runtime_tools-1.8.14, stdlib-3.4
+
+
+ ---------------------------------------------------------------------
+ --- wx-2.3 ----------------------------------------------------------
+ ---------------------------------------------------------------------
+
+ --- Improvements and New Features ---
+
+ OTP-18350 Application(s): inets, observer, os_mon, reltool, wx
+
+ Runtime dependencies have been updated.
+
+
+ Full runtime dependencies of wx-2.3: erts-12.0, kernel-8.0,
+ stdlib-3.15
+
+
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+ ---------------------------------------------------------------------
+