chore(deps): update dependency erlang to v29#343
Merged
Conversation
| datasource | package | from | to | | ----------- | ---------- | ---- | ---- | | github-tags | erlang/otp | 28.5 | 29.0 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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:
28.5→29.0Release Notes
erlang/otp (erlang)
v29.0: OTP 29.0Compare Source
Check out the git tag OTP-29.0, and build a full OTP system including documentation.
HIGHLIGHTS
The JIT now generates better code for matching or creating binaries with multiple little-endian segments.
Own Id: OTP-19747
Application(s): erts
Related Id(s): [PR-10126]
In the documentation for the [
compile] module, a section has been added with recommendations for implementors of languages running on the BEAM. Documentation has also been added for theto_abstr,to_exp, andfrom_abstroptions.The documentation for [erlc] now lists
.abstras one of the supported options.When compiling with the
to_abstroption, the resulting.abstrfile now retains any-docattributes present in the source code.Own Id: OTP-19784
Application(s): compiler, erts
Related Id(s): [PR-10230], [PR-10234]
Native records as described in [EEP-79] has been implemented.
A native record is a data structure similar to the traditional tuple-based records, except that is a true data type.
Native records are considered experimental in Erlang/OTP 29 and possibly also in Erlang/OTP 30, meaning that their behavior may change, potentially requiring updates to applications that use them.
Own Id: OTP-19785
Application(s): compiler, debugger, dialyzer, erts, stdlib
Related Id(s): [PR-10617]
The guard BIF
is_integer/3has been added. It follows the design of the original EEP-16, only changing the name fromis_betweentois_integer. This BIF takes in 3 parameters,Term,LowerBound, andUpperBound.It returns
trueifTerm,LowerBound, andUpperBoundare all integers, andLowerBound =< Term =< UpperBound; otherwise, it returns false.Example:
Own Id: OTP-19809
Application(s): compiler, dialyzer, erts
Related Id(s): [PR-10276]
There are new functions for random permutation of a list:
rand:shuffle/1andrand:shuffle_s/2. They are inspired by a suggestion and discussion on ErlangForums.Own Id: OTP-19826
Application(s): stdlib
Related Id(s): [PR-10281]
In the default code path for the Erlang system, the current working directory (
.) is now in the last position instead of the first.Own Id: OTP-19842
Application(s): erts, kernel
*** POTENTIAL INCOMPATIBILITY ***
Function application is now left associative. That means one can now write:
instead of:
Own Id: OTP-19866
Application(s): compiler
Related Id(s): [PR-9223]
The old-style type tests in guards (
integer,atom, and so on) have been scheduled for removal in Erlang/OTP 30. They have been deprecated for a long time.Own Id: OTP-19887
Application(s): otp
Related Id(s): [PR-10417]
There will now be a warning when exporting variables out of a subexpression. For example:
To avoid the warning, this can be rewritten to:
The warning can be suppressed by giving option
nowarn_export_var_subexprto the compiler.Own Id: OTP-19898
Application(s): compiler, stdlib
Related Id(s): [PR-9134]
There is a new option
warn_obsolete_bool_opthat instruct the compiler to emit warnings for theandandoroperators. It is recommended to instead use the modernandalsoandorelseoperators, or,and;in guards.Own Id: OTP-19918
Application(s): compiler
Related Id(s): [PR-9115]
graphis a new module that is a functional equivalent of the [digraph] and [digraph_utils] modules.Own Id: OTP-19922
Application(s): stdlib
Related Id(s): [PR-10532]
Before Erlang/OTP 29, attempting to bind variables in a comprehension would compile successfully but fail at runtime. Example:
In Erlang/OTP 29, attempting to bind a variable in a comprehension will fail by default:
However, this example will work as expected if the
compr_assignfeature is enabled when starting the runtime system:Here is another example how
compr_assigncan be used:Own Id: OTP-19927
Application(s): compiler, stdlib
Related Id(s): [PR-9153]
*** POTENTIAL INCOMPATIBILITY ***
There will now be a warning when using the
catchoperator, which has been deprecated for a long time.It is recommended to instead use
try...catch...endbut is also possible to disable the warning by using thenowarn_deprecated_catchoption.Own Id: OTP-19938
Application(s): compiler, stdlib
Related Id(s): [PR-10421]
Multi-valued comprehensions according to [EEP 78] has been implemented.
Example:
Own Id: OTP-19942
Application(s): compiler, debugger, stdlib, syntax_tools
Related Id(s): [PR-9374]
There will now be a warning for matches that unify constructors, such as the following:
Such a match can be rewritten to:
The compiler option
nowarn_match_alias_patscan be used to disable the warning.Own Id: OTP-19943
Application(s): compiler, stdlib
Related Id(s): [PR-10433]
There is no longer a 32-bit Erlang/OTP build for Windows.
Own Id: OTP-19960
Application(s): otp
While the iteration order for maps is undefined, it is now guaranteed that all ways of iterating over maps provides the elements in the same order. That is, all of the following ways of iterating will produce the elements in the same order:
maps:keys/1maps:values/1maps:to_list/1maps:to_list(maps:iterator(M))[{K,V} || K := V <- M]Own Id: OTP-19963
Application(s): erts, stdlib
Related Id(s): [PR-10626]
The default key exchange algorithm is now mlkem768x25519-sha256, a hybrid quantum-resistant algorithm combining ML-KEM-768 with X25519. This provides protection against both classical and quantum computer attacks while maintaining backward compatibility through automatic fallback to other algorithms when peers don't support it.
Own Id: OTP-19965
Application(s): ssh
Related Id(s): [PR-10656]
*** POTENTIAL INCOMPATIBILITY ***
The compiler now generates more efficient code for map comprehensions with constant values that don't depend on the generator, such as the following:
Own Id: OTP-19968
Application(s): compiler
Related Id(s): [PR-10646]
The SSH daemon now defaults to disabled for shell and exec services, implementing the "secure by default" principle. This prevents authenticated users from executing arbitrary Erlang code unless explicitly configured.
Applications requiring shell or exec functionality must now explicitly enable:
Own Id: OTP-19969
Application(s): ssh
Related Id(s): ERIERL-1319, [PR-10970], [PR-11080]
*** POTENTIAL INCOMPATIBILITY ***
The
odbcapplication is now deprecated and is planned to be removed in Erlang/OTP 30.The [
ftp] and [ct_ftp] modules are now deprecated and are planned to be removed in Erlang/OTP 30.Own Id: OTP-19980
Application(s): ftp, odbc
Related Id(s): [PR-10804]
The
arraymodule have been extended with several new functions. The internal representation have been changed to allow the new functionality and optimizations. Arrays serialized withterm_to_binary/1in previous releases are not compatible.Own Id: OTP-20004
Application(s): stdlib
Related Id(s): [PR-10578]
*** POTENTIAL INCOMPATIBILITY ***
Added support for socket functions
recvmmsg()andsendmmsg().Own Id: OTP-20015
Application(s): erts, kernel
Related Id(s): [PR-10564]
m:erl_tarwill use less memory when extracting large tar entries to disk. Instead of reading each tar entry into memory, [erl_tar] will now stream data in chunks of 64KB. The chunk size is settable using the new{chunks,ChunkSize}option.The new
{max_size,Size}option will set a limit on the total size of extracted data to protect against filling up the disk.Checking of symlinks has been improved. Some symlinks that were safe (such as
dir/link -> ../file) used to be rejected.Own Id: OTP-20023
Application(s): stdlib
Related Id(s): [PR-10814], [PR-10818], [PR-10821]
Added a new module called
io_ansithat allows the user to emit Virtual Terminal Sequences (a.k.a. ANSI sequences) to the terminal in order to add colors/styling to text or create fully-fledged terminal applications.io_ansiuses the local terminfo database in order to be as cross-platform compatible as possible.It also works across nodes so that if functions on a remote node call
io_ansi:fwrite/1it will use the destination terminal's terminfo database to determine which sequences to emit. In practice, this means that you can call functions in a remote shell session that useio_ansiand it will properly detect the terminal sequences the target terminal can handle and will print using them correctly.Own Id: OTP-20028
Application(s): kernel, stdlib
Related Id(s): [PR-10905], [PR-9940]
The
ignore_xrefattribute has been handled as a post-analysis filter by build tools such as Rebar3. In this release, [xref] itself does the filtering, ensuring that all tooling that callsxreffor any purpose can rely on these declarations to just work.Own Id: OTP-20032
Application(s): tools
Related Id(s): [PR-10592]
New in this release is
ct_doctest, a module that allows the user to test documentation examples in Erlang module docs and documentation files.ct_doctest allows you to:
edoc,asciidoc, and others can also be tested.See the documentation for more details.
Own Id: OTP-20034
Application(s): common_test
Related Id(s): [PR-10824], [PR-9315]
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Application(s): asn1, common_test, compiler, crypto, debugger, dialyzer, diameter, edoc, eunit, inets, kernel, megaco, mnesia, observer, odbc, os_mon, otp, parsetools, public_key, reltool, runtime_tools, sasl, ssh, ssl, stdlib, syntax_tools, tftp, tools, wx, xmerl
Related Id(s): [PR-10839]
The post-quantum hybrid algorithm x25519mlkem768 is now the most preferred key exchange group in the default configuration.
Post-quantum hybrid algorithms secp384r1mlkem1024 and secp256r1mlkem768 are supported but have to be configured. The same goes for the plain post-quantum algorithms mlkem1024, mlkem768, and mlkem512.
The most preferred signature algorithms is now post-quantum algorithms ML-DSA followed by the fastest SLH-DSA (slh_dsa_sha2_256f) algorithm, if such a certificate is available in the configuration. Other SLH-DSA variants are also supported but are added to the end of the preferred list.
All these algorithms were available in OTP-28.4 but none of them were preferred and some of them changed default status.
Own Id: OTP-20070
Application(s): ssl
Related Id(s): [PR-10949]
*** POTENTIAL INCOMPATIBILITY ***
The [
json] module now encodes and decodes quoted strings faster. Improvements of up to 55 percent has been measured when decoding JSON data with long strings.The
string:length/1,string:slice/2, andstring:slice/3functions have been optimized. For some strings, they can be up to twice as fast.Own Id: OTP-20072
Application(s): stdlib
Related Id(s): [PR-10938], [PR-10948]
The SFTP subsystem is no longer enabled by default when starting an SSH daemon. To enable it, add the subsystems option explicitly:
Own Id: OTP-20078
Application(s): ssh
Related Id(s): [PR-10970]
*** POTENTIAL INCOMPATIBILITY ***
The runtime system now supports generating encrypted crash dumps. See the description of
--enable-encrypted-crash-dumpsin [Building and Installing Erlang/OTP].Own Id: OTP-20085
Application(s): crypto, erts, public_key, tools
Related Id(s): [PR-10993]
There is a new Hardening guide giving guidelines on how to strengthen the security for the
sslapplication.Own Id: OTP-20087
Application(s): ssl
Related Id(s): [PR-11019]
There is a new Hardening guide with advice for configuring Inets to be more secure.
Own Id: OTP-20133
Application(s): inets
Related Id(s): [PR-11073]
POTENTIAL INCOMPATIBILITIES
Fixed (
inet) module selection when calling (gen_tcp) listen and connect and (gen_udp) open. Depending on the order of the options, the module option (tcp_moduleorudp_module) was sometimes ignored.Own Id: OTP-19695
Application(s): kernel
Related Id(s): [GH-9822], [PR-10013]
ssh:stop_deamonnow usessupervisor:stopfor shutting down daemons. With this change, the scenario whenssh:stop_daemonis called for a non-existing process results in calling process exiting. Previously an error tuple was returned (which was not documented).Own Id: OTP-19801
Application(s): ssh
Related Id(s): [PR-10253]
The
mnesia_registrymodule has been removed.Own Id: OTP-19807
Application(s): mnesia
Related Id(s): [PR-7315]
In the default code path for the Erlang system, the current working directory (
.) is now in the last position instead of the first.Own Id: OTP-19842
Application(s): erts, kernel
*** HIGHLIGHT ***
Before Erlang/OTP 29, attempting to bind variables in a comprehension would compile successfully but fail at runtime. Example:
In Erlang/OTP 29, attempting to bind a variable in a comprehension will fail by default:
However, this example will work as expected if the
compr_assignfeature is enabled when starting the runtime system:Here is another example how
compr_assigncan be used:Own Id: OTP-19927
Application(s): compiler, stdlib
Related Id(s): [PR-9153]
*** HIGHLIGHT ***
The default key exchange algorithm is now mlkem768x25519-sha256, a hybrid quantum-resistant algorithm combining ML-KEM-768 with X25519. This provides protection against both classical and quantum computer attacks while maintaining backward compatibility through automatic fallback to other algorithms when peers don't support it.
Own Id: OTP-19965
Application(s): ssh
Related Id(s): [PR-10656]
*** HIGHLIGHT ***
The SSH daemon now defaults to disabled for shell and exec services, implementing the "secure by default" principle. This prevents authenticated users from executing arbitrary Erlang code unless explicitly configured.
Applications requiring shell or exec functionality must now explicitly enable:
Own Id: OTP-19969
Application(s): ssh
Related Id(s): ERIERL-1319, [PR-10970], [PR-11080]
*** HIGHLIGHT ***
Changed
ets:update_counter/4andets:update_element/4to always reject default tuples smaller than thekeyposof the table. Such keyless tuples are now rejected even if the key exists in the table and the default tuple would not be used. This is a subtle semantic change but is a nicer behavior for development and testing as it will detect faulty default tuple arguments earlier.Own Id: OTP-19975
Application(s): erts
Related Id(s): [PR-10674]
Added explicit size validation guards for pre-authentication SSH messages to improve defense-in-depth against DoS attacks. Messages now have per-field size limits based on RFC specifications:
This change enhances the existing 256KB global packet size limit with granular per-message validation. Compliant implementations are not affected.
Own Id: OTP-19995
Application(s): ssh
Related Id(s): [PR-10739]
The
arraymodule have been extended with several new functions. The internal representation have been changed to allow the new functionality and optimizations. Arrays serialized withterm_to_binary/1in previous releases are not compatible.Own Id: OTP-20004
Application(s): stdlib
Related Id(s): [PR-10578]
*** HIGHLIGHT ***
The SFTP subsystem
rootoption now properly rejects relative paths at daemon startup. Previously, relative paths would cause unpredictable behavior as file operations resolved relative to the Erlang VM's current working directory. The option now requires an absolute path or empty string.Own Id: OTP-20019
Application(s): ssh
Related Id(s): [PR-10820]
The
gb_sets:from_ordset/1andgb_trees:from_orddict/1functions would trust their inputs. If the input contained duplicates or was not properly sorted, the resulting gb_set or gb_tree would be invalid, and any number of interesting problems could occur.In this release, these functions will raise an exception if their input is not valid. That could mean that incorrect programs that seemed to work could now stop working altogether.
There is also a new
gb_trees:from_list/1function for directly creating a gb_tree from a list.Own Id: OTP-20061
Application(s): stdlib
Related Id(s): [PR-10910]
The post-quantum hybrid algorithm x25519mlkem768 is now the most preferred key exchange group in the default configuration.
Post-quantum hybrid algorithms secp384r1mlkem1024 and secp256r1mlkem768 are supported but have to be configured. The same goes for the plain post-quantum algorithms mlkem1024, mlkem768, and mlkem512.
The most preferred signature algorithms is now post-quantum algorithms ML-DSA followed by the fastest SLH-DSA (slh_dsa_sha2_256f) algorithm, if such a certificate is available in the configuration. Other SLH-DSA variants are also supported but are added to the end of the preferred list.
All these algorithms were available in OTP-28.4 but none of them were preferred and some of them changed default status.
Own Id: OTP-20070
Application(s): ssl
Related Id(s): [PR-10949]
*** HIGHLIGHT ***
The old Tcl-based implementation of
erl_errno_id()has been replaced by our own implementation now supporting moreerrnovalues on modern operating systems. It also returns the string"errno_<ERRNO_INTEGER>"corresponding to the integer given as argument if theerrnointeger is unknown instead of as previously just return the string"unknown".The result of
erl_errno_id()is often converted into an atom and passed as an error from a driver or a NIF.Own Id: OTP-20076
Application(s): erts
Related Id(s): [PR-10958], [PR-10969]
The SFTP subsystem is no longer enabled by default when starting an SSH daemon. To enable it, add the subsystems option explicitly:
Own Id: OTP-20078
Application(s): ssh
Related Id(s): [PR-10970]
*** HIGHLIGHT ***
Secure renegotiation for TLS-1.2 specified in RFC 5746 from 2010 is now always used. The interoperability fallback option
{secure_renegotiate,SecureRenegotiate}is no longer needed.Own Id: OTP-20080
Application(s): ssl
Related Id(s): [PR-10979]
The
erlang:suspend_process/1anderlang:suspend_process/2BIFs now also suspend BIF timers that will send messages to the process if the timer was created using the PID of the process as destination. Timers created using registered names are not affected.Own Id: OTP-20095
Application(s): erts
Related Id(s): [PR-10619], [PR-11004]
The TOS handling on socket has been significantlyupdated and improved. Socket did not properly handle set, get and recv (cmsg) of TOS.
Note that the returned TOS value has been changed. It was previously an atom or an integer. Now it is a map with different interpretations of the TOS octet. See the documentation.
Own Id: OTP-20102
Application(s): erts, kernel
Related Id(s): [GH-10968], [PR-11059]
OTP-29.0
Fixed Bugs and Malfunctions
The
start_erlscript will now work on embedded systems.Own Id: OTP-20111
Related Id(s): [GH-10342], [PR-10346]
Improvements and New Features
Vendor dependencies and OpenVEX statements in the
otprepository is now scanned for vulnerabilities. It is verified that OTP security issues reported at Github exist in the published [OpenVEX] statements, and issues are automatically opened in theotprepository if vendor vulnerabilities are detected.Own Id: OTP-19763
Related Id(s): [PR-10145], [PR-10166], [PR-10168], [PR-10189], [PR-10193], [PR-10195], [PR-10197], [PR-10202], OTP-19652, OTP-19775, OTP-19779
Documentation about how to validate the SBOM using sigstore has been added.
Own Id: OTP-19766
Related Id(s): [GH-10151], [PR-10187]
The old-style type tests in guards (
integer,atom, and so on) have been scheduled for removal in Erlang/OTP 30. They have been deprecated for a long time.Own Id: OTP-19887
Related Id(s): [PR-10417]
*** HIGHLIGHT ***
Removed the undocumented
dyn_erlutility.Own Id: OTP-19933
Related Id(s): [PR-10573]
There is no longer a 32-bit Erlang/OTP build for Windows.
Own Id: OTP-19960
*** HIGHLIGHT ***
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
The [Upcoming Potential Incompatibilities] page has been updated to note that in Erlang/OTP 30,
erlang:fun_info(Fun, pid)will no longer retrieve a pid, but will raise abadargexception.Own Id: OTP-20092
Related Id(s): [PR-10998]
Add security improvements to GitHub Actions workflows based on findings from
zizmor, a GitHub Actions security linter.Own Id: OTP-20103
Related Id(s): [PR-11000]
Improve mermaid diagram rending in documentation.
Own Id: OTP-20132
Related Id(s): [PR-11047]
asn1-5.5
Improvements and New Features
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
common_test-1.31
Fixed Bugs and Malfunctions
Improved support for QuickCheck when writing property tests.
Own Id: OTP-20010
Related Id(s): [PR-10783]
Improvements and New Features
The legacy
andandoroperators have been replaced with other language constructs.Own Id: OTP-19744
Related Id(s): [PR-10114], [PR-10554], [PR-10568], [PR-10579], [PR-10580], [PR-10585], [PR-10598], [PR-10710], [PR-10718], [PR-10730]
'EXIT'messages are now formatted in the same way asbadmatcherrors.Own Id: OTP-19910
Related Id(s): [PR-10277]
Error notifications now contain the name of the source file in which the error occurred.
Own Id: OTP-19925
Related Id(s): [GH-10260], [PR-10269]
New in this release is
ct_doctest, a module that allows the user to test documentation examples in Erlang module docs and documentation files.ct_doctest allows you to:
edoc,asciidoc, and others can also be tested.See the documentation for more details.
Own Id: OTP-20034
Related Id(s): [PR-10824], [PR-9315]
*** HIGHLIGHT ***
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
compiler-10.0
Fixed Bugs and Malfunctions
For a function such as the following:
the compiler would keep all of the calls to
setelement/3and emit extra unnecessaryset_tuple_elementinstructions.This has been corrected so that the compiler will never emit code that uses the
set_tuple_elementinstruction. In a future release, support for theset_tuple_elementwill be removed from the runtime system.Own Id: OTP-19751
Related Id(s): [GH-10125], [PR-10144]
beam_lib:strip/1will now retain the Beam debug information chunk produced by thebeam_debug_infooption. The chunk will also be retained when combing thebeam_debug_infooption with the undocumentedslimoption.The runtime system will no longer crash when attempting to load modules that have been compiled with
beam_debug_infobut lack the actual Beam debug info chunk.Own Id: OTP-19991
Related Id(s): [GH-10557], [PR-10735]
Improvements and New Features
In comprehensions, a generator that builds a list with a single element will now be optimized to avoid building and matching the list. Example:
Own Id: OTP-19672
Related Id(s): [PR-9934]
In the documentation for the [
compile] module, a section has been added with recommendations for implementors of languages running on the BEAM. Documentation has also been added for theto_abstr,to_exp, andfrom_abstroptions.The documentation for [erlc] now lists
.abstras one of the supported options.When compiling with the
to_abstroption, the resulting.abstrfile now retains any-docattributes present in the source code.Own Id: OTP-19784
Related Id(s): [PR-10230], [PR-10234]
*** HIGHLIGHT ***
Native records as described in [EEP-79] has been implemented.
A native record is a data structure similar to the traditional tuple-based records, except that is a true data type.
Native records are considered experimental in Erlang/OTP 29 and possibly also in Erlang/OTP 30, meaning that their behavior may change, potentially requiring updates to applications that use them.
Own Id: OTP-19785
Related Id(s): [PR-10617]
*** HIGHLIGHT ***
The guard BIF
is_integer/3has been added. It follows the design of the original EEP-16, only changing the name fromis_betweentois_integer. This BIF takes in 3 parameters,Term,LowerBound, andUpperBound.It returns
trueifTerm,LowerBound, andUpperBoundare all integers, andLowerBound =< Term =< UpperBound; otherwise, it returns false.Example:
Own Id: OTP-19809
Related Id(s): [PR-10276]
*** HIGHLIGHT ***
Function application is now left associative. That means one can now write:
instead of:
Own Id: OTP-19866
Related Id(s): [PR-9223]
*** HIGHLIGHT ***
There will now be a warning when exporting variables out of a subexpression. For example:
To avoid the warning, this can be rewritten to:
The warning can be suppressed by giving option
nowarn_export_var_subexprto the compiler.Own Id: OTP-19898
Related Id(s): [PR-9134]
*** HIGHLIGHT ***
There is a new option
warn_obsolete_bool_opthat instruct the compiler to emit warnings for theandandoroperators. It is recommended to instead use the modernandalsoandorelseoperators, or,and;in guards.Own Id: OTP-19918
Related Id(s): [PR-9115]
*** HIGHLIGHT ***
Before Erlang/OTP 29, attempting to bind variables in a comprehension would compile successfully but fail at runtime. Example:
In Erlang/OTP 29, attempting to bind a variable in a comprehension will fail by default:
However, this example will work as expected if the
compr_assignfeature is enabled when starting the runtime system:Here is another example how
compr_assigncan be used:Own Id: OTP-19927
Related Id(s): [PR-9153]
*** HIGHLIGHT ***
*** POTENTIAL INCOMPATIBILITY ***
There will now be a warning when using the
catchoperator, which has been deprecated for a long time.It is recommended to instead use
try...catch...endbut is also possible to disable the warning by using thenowarn_deprecated_catchoption.Own Id: OTP-19938
Related Id(s): [PR-10421]
*** HIGHLIGHT ***
Multi-valued comprehensions according to [EEP 78] has been implemented.
Example:
Own Id: OTP-19942
Related Id(s): [PR-9374]
*** HIGHLIGHT ***
There will now be a warning for matches that unify constructors, such as the following:
Such a match can be rewritten to:
The compiler option
nowarn_match_alias_patscan be used to disable the warning.Own Id: OTP-19943
Related Id(s): [PR-10433]
*** HIGHLIGHT ***
The compiler now generates more efficient code for map comprehensions with constant values that don't depend on the generator, such as the following:
Own Id: OTP-19968
Related Id(s): [PR-10646]
*** HIGHLIGHT ***
Compilation times of modules with a huge number of calls to
element/2has been improved.Own Id: OTP-20020
Related Id(s): [GH-10807], [PR-10819]
The format of the debug information stored by the
beam_debug_infooption (used by the [edb debugger]) has been updated to more easily extendible and to contain more information about call targets. (See the linked PR for more details.)Own Id: OTP-20048
Related Id(s): [PR-9814]
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
crypto-5.9
Fixed Bugs and Malfunctions
Fixed
crypto:hash_equals/2and FIPS when crypto is statically linked to the beam (with--enable-static-nifsand--disable-dynamic-ssl-lib).Own Id: OTP-20025
Related Id(s): [PR-10817]
Improvements and New Features
The
rand:bytes/1andrand:bytes_s/2functions have been optimized by implementing a new internal callback function thatcrypto:rand_seed_alg/1andcrypto:alg_seed_alg_s/1have been updated to use.A new algorithm
crypto_prng1, which also takes advantage of this new internal callback, has been added tocrypto:rand_seed_alg/2andcrypto:rand_seed_alg_s/2. It is much faster then the existingcrypto_aes, in particular for generating bytes.Own Id: OTP-19882
Related Id(s): [PR-10453], OTP-19827
In interactive mode, application
cryptois automatically loaded when the [crypto] module is loaded. This will ensure that the correct value of configuration parameterfips_modeis used to initialize OpenSSL if modulecryptois called/loaded before the applicationcryptohas been loaded. In embedded mode, modulecryptowill fail to load if the application has not been loaded.Own Id: OTP-20035
Related Id(s): [PR-10830]
OpenSSL engine support has been removed on Windows.
Own Id: OTP-20036
Related Id(s): [PR-10836]
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
The runtime system now supports generating encrypted crash dumps. See the description of
--enable-encrypted-crash-dumpsin [Building and Installing Erlang/OTP].Own Id: OTP-20085
Related Id(s): [PR-10993]
*** HIGHLIGHT ***
debugger-7.0
Improvements and New Features
Native records as described in [EEP-79] has been implemented.
A native record is a data structure similar to the traditional tuple-based records, except that is a true data type.
Native records are considered experimental in Erlang/OTP 29 and possibly also in Erlang/OTP 30, meaning that their behavior may change, potentially requiring updates to applications that use them.
Own Id: OTP-19785
Related Id(s): [PR-10617]
*** HIGHLIGHT ***
Tools such as the debugger, [
beam_lib], and [xref] no longer support BEAM files created before OTP 13B.Own Id: OTP-19906
Related Id(s): [PR-10519]
Multi-valued comprehensions according to [EEP 78] has been implemented.
Example:
Own Id: OTP-19942
Related Id(s): [PR-9374]
*** HIGHLIGHT ***
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
dialyzer-6.0
Improvements and New Features
Native records as described in [EEP-79] has been implemented.
A native record is a data structure similar to the traditional tuple-based records, except that is a true data type.
Native records are considered experimental in Erlang/OTP 29 and possibly also in Erlang/OTP 30, meaning that their behavior may change, potentially requiring updates to applications that use them.
Own Id: OTP-19785
Related Id(s): [PR-10617]
*** HIGHLIGHT ***
The guard BIF
is_integer/3has been added. It follows the design of the original EEP-16, only changing the name fromis_betweentois_integer. This BIF takes in 3 parameters,Term,LowerBound, andUpperBound.It returns
trueifTerm,LowerBound, andUpperBoundare all integers, andLowerBound =< Term =< UpperBound; otherwise, it returns false.Example:
Own Id: OTP-19809
Related Id(s): [PR-10276]
*** HIGHLIGHT ***
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
diameter-2.7
Improvements and New Features
The legacy
andandoroperators have been replaced with other language constructs.Own Id: OTP-19744
Related Id(s): [PR-10114], [PR-10554], [PR-10568], [PR-10579], [PR-10580], [PR-10585], [PR-10598], [PR-10710], [PR-10718], [PR-10730]
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
edoc-1.5
Improvements and New Features
Changed behavior of EDoc so that when a module defines a private type and a private function spec uses it, that type no longer gets included in the EDoc chunk.
Own Id: OTP-20030
Related Id(s): [PR-10770]
Added support for
-unsafeattributes, which is used to mark functions as unsafe to use.This is similar to but separate from deprecation, and the compiler will by default now generate warnings for calls to functions in Erlang/OTP that are known to be always unsafe.
Furthermore, [
xref] can now be used to find calls to functions in another application that lack a-docattribute (undocumented_function_calls), calls to functions in another application marked-doc false.(private_function_calls), as well as calls to unsafe functions (unsafe_function_calls).Own Id: OTP-20066
Related Id(s): [PR-10839]
*** HIGHLIGHT ***
eldap-1.3
Improvements and New Features
Only minor internal changes.
Own Id: OTP-19964
erl_interface-5.8
Improvements and New Features
Improved name consistency of EPMD protocol messages in documentation and code. Renamed
PORT_PLEASE2_REQtoPORT2_REQand added prefixEPMD_.Own Id: OTP-19734
Related Id(s): [GH-10071], [PR-10078]
Replaced embedded OpenSSL MD5 implementation.
Own Id: OTP-20045
Related Id(s): [PR-10870]
Known Bugs and Problems
The
eiAPI 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.Own Id: OTP-16607
Related Id(s): OTP-16608
erts-17.0
Fixed Bugs and Malfunctions
For a function such as the following:
the compiler would keep all of the calls to
setelement/3and emit extra unnecessaryset_tuple_elementinstructions.This has been corrected so that the compiler will never emit code that uses the
set_tuple_elementinstruction. In a future release, support for theset_tuple_elementwill be removed from the runtime system.Own Id: OTP-19751
Related Id(s): [GH-10125], [PR-10144]
Improved the handling of the logging directory for the start script on Unix-like systems, so that it no longer crashes when
$ROOTDIR/logis not writable.Own Id: OTP-19874
Related Id(s): [GH-10341], [PR-10348]
The
-nocookieoption forerlis now documented.Own Id: OTP-19935
Related Id(s): [PR-10549]
beam_lib:strip/1will now retain the Beam debug information chunk produced by thebeam_debug_infooption. The chunk will also be retained when combing thebeam_debug_infooption with the undocumentedslimoption.The runtime system will no longer crash when attempting to load modules that have been compiled with
beam_debug_infobut lack the actual Beam debug info chunk.Own Id: OTP-19991
Related Id(s): [GH-10557], [PR-10735]
Fixed potential symbol clashing on MacOS by passing
RTLD_LOCALtodlopen. This will make symbols to not be resolvable between subsequently loaded NIF/drivers, which is the default behavior on Linux and BSD.Own Id: OTP-20026
Related Id(s): [PR-10805]
The
configurescript used to callisfinite()with argument0. That could fail on some platforms. This has been changed to callisfinite()with1.0instead.Own Id: OTP-20088
Related Id(s): [PR-10965]
The TOS handling on socket has been significantlyupdated and improved. Socket did not properly handle set, get and recv (cmsg) of TOS.
Note that the returned TOS value has been changed. It was previously an atom or an integer. Now it is a map with different interpretations of the TOS octet. See the documentation.
Own Id: OTP-20102
Related Id(s): [GH-10968], [PR-11059]
*** POTENTIAL INCOMPATIBILITY ***
Fixed
erlang:md5_initto always return the same deterministic context binary. Only an issue in OTP 28.5 when OTP was built with--disable-builtin-opensslor--enable-use-embedded-3pp-alternatives.Own Id: OTP-20123
Added explicit configure test for C++ function
std::to_charsif options--disable-builtin-ryuor--enable-use-embedded-3pp-alternativesis used.Own Id: OTP-20126
Related Id(s): [PR-11067]
Improvements and New Features
The exported name space of the
beamexecutable has been cleaned to only expose symbols of documented interfaces like NIF and driver APIs. This will avoid accidental name clashes with, for example, our statically linked variants of PCRE2 and ZSTD. NIFs and drivers that abuse undocumented internal interfaces will fail to load due to this change.Own Id: OTP-19643
Related Id(s): [PR-9864]
Improved name consistency of EPMD protocol messages in documentation and code. Renamed
PORT_PLEASE2_REQtoPORT2_REQand added prefixEPMD_.Own Id: OTP-19734
Related Id(s): [GH-10071], [PR-10078]
The JIT now generates better code for matching or creating binaries with multiple little-endian segments.
Own Id: OTP-19747
Related Id(s): [PR-10126]
*** HIGHLIGHT ***
In the documentation for the [
compile] module, a section has been added with recommendations for implementors of languages running on the BEAM. Documentation has also been added for theto_abstr,to_exp, andfrom_abstroptions.The documentation for [erlc] now lists
.abstras one of the supported options.When compiling with the
to_abstroption, the resulting.abstrfile now retains any-docattributes present in the source code.Own Id: OTP-19784
Related Id(s): [PR-10230], [PR-10234]
*** HIGHLIGHT ***
Native records as described in [EEP-79] has been implemented.
A native record is a data structure similar to the traditional tuple-based records, except that is a true data type.
Native records are considered experimental in Erlang/OTP 29 and possibly also in Erlang/OTP 30, meaning that their behavior may change, potentially requiring updates to applications that use them.
Own Id: OTP-19785
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.