Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
25.3.2
->26.0
Release Notes
erlang/otp
v26.0
: OTP 26.0Compare Source
Erlang/OTP 26.0 is a new major release with new features, improvements as well as a few incompatibilities.
Below are some of the highlights of the release:
There is also a Blogpost about the highlights.
Highlights
Parsetools
Leex
has been extended with optional column number support.Stdlib
lists
has been extended withenumerate/3
that allows a step value to be supplied.proc_lib:start*/*
has become synchronous when the started process fails. This requires that a failing process use a new functionproc_lib:init_fail/2,3
, or exits, to indicate failure. All OTP behaviours have been fixed to do this.The Shell
There are a lot of new features and improvements in the Erlang shell:
New terminal
erl.exe
has the same functionality as a normal Unix shell and thatwerl.exe
is just a symlink toerl.exe
. This makes the Windows Erlang terminal experience identical to that of Unix.Compiler and JIT optimizations:
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.
The compiler and JIT now generate better code for creation of small maps where all keys are literals known at compile time.
Thanks to the optimizations above 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.Maps
Map comprehensions as suggested in EEP 58 has now been implemented.
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
andmaps:next/1
. The new order is unpredictable and may change between different invocations of the Erlang VM.Introducing the new function
maps:iterator/2
for creating an interator that return the map elements in a deterministic order.There are also new modifiers
k
andK
for the format string inio:format()
to support printing map elements ordered.Dialyzer
Added the new built-in type
dynamic()
introduced in EEP 61, PR introducing EEP 61 improving support for gradual type checkers.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.
Misc ERTS, Stdlib, Kernel, Compiler
Multi time warp mode is now enabled by default.
This assumes that all code executing on the system is time warp safe.
Support for UTF-8 atoms and strings in the NIF
interface including new functions
enif_make_new_atom
,enif_make_new_atom_len
andenif_get_string_length
.The BIFs
min/2
andmax/2
are now allowed to be used in guards and match specs.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.New trace feature
call_memory
. Similar tocall_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.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.
inet:setopts/2
has got 3 new options:reuseport
,reuseport_lb
andexclusiveaddruse
.Fix so that
-fno-omit-frame-pointer
is applied to all of the Erlang VM when using the JIT so that tools, such asperf
, can crawl the process stacks.In the
lists
module, the zip family of functions now takes options to allow handling lists of different lengths.Added the
zip:zip_get_crc32/2
function to retrieve theCRC32
checksum from an opened ZIP archive.gen_server
optimized by caching callback functionsThe modules Erlang DNS resolver
inet_res
and helper modules have been updated for RFC6891; to handle OPT RR with DNSSEC OK (DO) bit.Introduced
application:get_supervisor/1
.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
.SSL
Change the client default
verify
option toverify_peer
.Note that this makes it mandatory to also supply trusted CA certificates or explicitly set
verify
toverify_none
. This also applies when using the so called anonymous test cipher suites defined in TLS versions pre TLS-1.3.Support for Kernel TLS (kTLS), has been added to the SSL application, for TLS distribution (
-proto_dist
inet_tls
), the SSL option{ktls, true}
.Improved error checking and handling of ssl options.
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.
For security reasons the
SHA1
andDSA
algorithms are no longer among the default values.Add encoding and decoding of
use_srtp
hello extension to facilitate forDTLS
users to implementSRTP
functionality.For more details about new features and potential incompatibilities see the readme
Many thanks to all contributors!
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.