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
->27.0
12
->14
20.04
->22.04
2019
->2022
Release Notes
erlang/otp (erlang)
v27.0
: OTP 27.0Compare Source
Erlang/OTP 27 Released
All artifacts for the release can be downloaded from the Erlang/OTP Github release and you can view the new documentation at https://erlang.org/doc.
You can also install the latest release using kerl like this:
The new Erlang/OTP 27 release contains new features, improvements as well as a few incompatibilities. Some of the new features are highlighted below.
Many thanks to all contributors!
Documentation
EEP-59 has been implemented. Documentation attributes in source files can now be used to document functions, types, callbacks, and modules.
The entire Erlang/OTP documentation is now using the new documentation system.
New language features
Triple-Quoted Strings has been implemented as per EEP 64 to allow a string to encompass a complete paragraph.
Adjacent string literals without intervening white space is now a syntax error, to avoid possible confusion with triple-quoted strings.
Sigils on string literals (both ordinary and triple-quoted) have been implemented as per EEP 66. For example,
~"Björn"
or~b"Björn"
are now equivalent to<<"Björn"/utf8>>
.Compiler and JIT improvements
The compiler will now merge consecutive updates of the same record.
Safe destructive update of tuples has been implemented in the compiler and runtime system. This allows the VM to update tuples in-place when it is safe to do so, thus improving performance by doing less copying but also by producing less garbage.
The
maybe
expression is now enabled by default, eliminating the need for enabling themaybe_expr
feature.Native coverage support has been implemented in the JIT. It will automatically be used by the
cover
tool to reduce the execution overhead when running cover-compiled code. There are also new APIs to support native coverage without using thecover
tool.The compiler will now raise a warning when updating record/map literals to catch a common mistake. For example, the compiler will now emit a warning for
#r{a=1}#r{b=2}
.The order in which the compiler looks up options has changed.
When there is a conflict in the compiler options given in the
-compile()
attribute and options given to the compiler, the options given in the-compile()
attribute overrides the option given to the compiler, which in turn overrides options given in theERL_COMPILER_OPTIONS
environment variable.Example:
If
some_module.erl
has the following attribute:and the compiler is invoked like so:
no warnings will be issued for functions that do not have any specs.
ERTS
The
erl
command now supports the-S
flag, which is similar to the-run
flag, but with some of the rough edges filed off.By default, escripts will now be compiled instead of interpreted. That means that the
compiler
application must be installed.The existing experimental support for archive files will be changed in a future release. The support for having an archive in an escript will remain, but the support for using archives in a release will either become more limited or completely removed.
As of Erlang/OTP 27, the function
code:lib_dir/2
, the-code_path_choice
flag, and usingerl_prim_loader
for reading members of an archive are deprecated.To remain compatible with future version of Erlang/OTP
escript
scripts that need to retrieve data files from its archive should useescript:extract/2
instead oferl_prim_loader
andcode:lib_dir/2
.The default process limit has been raised to
1048576
processes.The
erlang:system_monitor/2
functionality is now able to monitor long message queues in the system.The obsolete and undocumented support for opening a port to an external resource by passing an atom (or a string) as first argument to
open_port()
, implemented by the vanilla driver, has been removed. This feature has been scheduled for removal in OTP 27 since the release of OTP 26.The
pid
field has been removed fromerlang:fun_info/1,2
.Multiple trace sessions are now supported.
configure
now automatically enables support for year-2038-safe timestamps.By default
configure
scripts used when building OTP will now try to enable support for timestamps that will work after mid-January 2038. This has typically only been an issue on 32-bit platforms. Ifconfigure
cannot figure out how to enable such timestamps, it will abort with an error message. If you want to build the system anyway, knowing that the system will not function properly after mid-January 2038, you can pass the--disable-year2038
option toconfigure
, which will enableconfigure
to continue without support for timestamps after mid-January 2038.'STDLIB
There is a new module json for encoding and decoding JSON.
Both encoding and decoding can be customized. Decoding can be done in a SAX-like fashion and handle multiple documents and streams of data.
The new
json
module is used by thejer
(JSON Encoding Rules) for ASN.1 for encoding and decoding JSON. Thus, there is no longer any need to supply an external JSON library.Several new functions that accept funs have been added to module
timer
.The functions
is_equal/2
,map/2
, andfiltermap/2
have been added to the modulessets
,ordsets
, andgb_sets
.There are new efficient
ets
traversal functions with guaranteed atomicity. For example,ets:next/2
followed byets:lookup/2
can now be replaced withets:next_lookup/1
.The new function
ets:update_element/4
is similar toets:update_element/3
, but takes a default tuple as the fourth argument, which will be inserted if no previous record with that key exists.binary:replace/3,4
now supports using a fun for supplying the replacement binary.The new function
proc_lib:set_label/1
can be used to add a descriptive term to any process that does not have a registered name. The name willbe shown by tools such as
c:i/0
andobserver
, and it will be included in crash reports produced by processes usinggen_server
,gen_statem
,gen_event
, andgen_fsm
.Added functions to retrieve the next higher or lower key/element from
gb_trees
andgb_sets
, as well as returning iterators that start at given keys/elements.common_test
Calls to
ct:capture_start/0
andct:capture_stop/0
are now synchronous to ensure that all output is captured.The default CSS will now include a basic dark mode handling if it is preferred by the browser.
crypto
crypto_dyn_iv_init/3
andcrypto_dyn_iv_update/3
that were marked as deprecated in Erlang/OTP 25 have been removed.dialyzer
--gui
option for Dialyzer has been removed.ssl
ssl
client can negotiate and handle certificate status request (OCSP stapling support on the client side).tools
tprof
, which combines the functionality ofeprof
andcprof
under one interface. It also adds heap profiling.xmerl
xmerl_xml
, a new export modulexmerl_xml_indent
that provides out-of-the box indented output has been added.For more details about new features and potential incompatibilities see the README.
v26.2.5
: OTP 26.2.5Compare Source
v26.2.4
: OTP 26.2.4Compare Source
v26.2.3
Compare Source
v26.2.2
: OTP 26.2.2Compare Source
v26.2.1
: OTP 26.2.1Compare Source
v26.2
: OTP 26.2Compare Source
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 becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate. View repository job log here.