| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: erlang-debugger-src | Distribution: openSUSE Tumbleweed |
| Version: 28.1.1 | Vendor: openSUSE |
| Release: 1.2 | Build date: Wed Nov 5 08:53:15 2025 |
| Group: Unspecified | Build host: reproducible |
| Size: 418728 | Source RPM: erlang-28.1.1-1.2.src.rpm |
| Packager: https://bugs.opensuse.org | |
| Url: https://www.erlang.org | |
| Summary: Erlang/OTP debugger application sources | |
Erlang sources for the debugger application in the Erlang/OTP system. They are useful for educational purpose and as a base for creating embedded systems.
Apache-2.0
* Wed Nov 05 2025 Simon Lees <sflees@suse.de>
- Add README.md mostly for src.opensuse.org
* Sun Nov 02 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 28.1.1:
* kernel: With this change group.erl will not crash when
receiving unknown message.
* erts: Fixed the erl documentation of the default timewarp mode
used.
* erts: The erlang:suspend_process() BIFs failed to suspend
processes currently executing on dirty schedulers.
* ssl: Fixed so that sending of application data will adhere to
max_fragment_length. This was broken in OTP-27 release by an
optimization.
* ssl: PR-10046 put to hard requirements on key file content.
Make sure same file can be used as keyfile and certfile
* ssl: Assert that hello extensions are unique and send an
illegal parameter alert if they are not.
* ssl: Avoid sending an internal message to the user process in
conjunction with handling a key update.
* xmerl: The XSD validation failed due to not handling the
optional text blocks correctly in an XSD complex type with
attribute mixed=true.
* diameter: Added documentation about 'proxy' and 'resend'
options in diameter:handle_request/3
* Sat Sep 20 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 28.1:
* public_key: NIFs and linked-in drivers are now loadable when
running in an Erlang source tree on Windows.
* public_key: Added missing reference to SignedAttributes so that
it now works with the der_encode and der_decode functions.
* public_key: Added support for quantum crypto signature
algorithm ML-DSA (ssl and public_key) and key exchange
algorithm ML-KEM (ssl).
* os_mon: NIFs and linked-in drivers are now loadable when
running in an Erlang source tree on Windows.
* debugger: Fixed unbound error in interpreted modules
* erl_interface: Fixed C compiler warnings generated by
codechecker.
* erl_interface: 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.
* observer: etop will now fully stop before returning from
etop:stop/0.
* snmp: Using ASN.1 generated code for decode/encode of basic
types, starting with Counter64.
* snmp: Reworked the timer handling of the (SNMP) manager start
notification feature.
* snmp: Added missing specs to already documented functions.
* crypto: NIFs and linked-in drivers are now loadable when
running in an Erlang source tree on Windows.
* crypto: Fixed bug seen to cause beam crash when doing
init:restart() with crypto statically linked to OpenSSL
(--disable-dynamic-ssl-lib). Bug exists since OTP 28.0.
* crypto: Fixed crypto:strong_rand_bytes failing after
init:restart on MacOS with statically linked OpenSSL.
* crypto: Fixed crypto:hash(shake128 | shake256) for OpenSSL 3.4
and newer.
* crypto: Rendering of some tables in the documentation has been
improved.
* crypto: Support for ML-DSA and ML-KEM provided by OpenSSL 3.5.
* crypto: Added support for SHA2 512/224 and SHA2 512/256
truncated hashes.
* edoc: Rendering of some tables in the documentation has been
improved.
* inets: Fixed a RFC 2616 violation, where a http request, made
by httpc, without providing any options, would be sent with an
empty TE header, without also having a TE value in the
connection header. Now the default request doesn't send a TE
header at all.
* syntax_tools: Fixed zip generator crash in annotate_bindings/1
* compiler: Fixed a compiler crash caused by patch order in
destructive update.
* compiler: Fixed a compiler crash in beam_ssa_pre_codegen caused
by wrong handling of multiple phi patches in the destructive
update pass.
* compiler: Fixed a crash when a zip generator contains a map
pattern.
* compiler: In rare circumstances, the compiler could crash when
compiling code using bit syntax construction.
* compiler: A few minor bugs that could affect the
beam_debug_info option were fixed.
* runtime_tools: NIFs and linked-in drivers are now loadable when
running in an Erlang source tree on Windows.
* runtime_tools: The default tracer is now aware that it is
started by a remote shell (-remsh), in which case the traces
will be sent to the remote group_leader to make the traces
visible in the remote shell.
* runtime_tools: A User's Guide to dbg is now available in the
documentation.
* mnesia: Mnesia no longer crashes when the node name is used as
a table name.
* tools: Fixed some deprecations for newer emacs versions.
* common_test: Improved printing of maps. Map keys are now
printed in the same order as maps:iterator(Map, ordered) would
sort them.
* common_test: ct:print will now suppress printing of timestamp
and heading when the heading option is set to the empty string.
* erts: Made sure to not set any terminal settings when they have
not been changed. Doing so can trigger a SIGTTOU signal which
would terminate Erlang when it should not.
* erts: As an optimization, when the
unicode:characters_to_binary/3 was used to convert from latin1
to utf8 or vice versa, it would return the original binary
unchanged if it only contained 7-bit ASCII characters. That
otpimization was broken in Erlang/OTP 27, and has now been
mended.
* erts: Fixed C compiler warnings generated by codechecker.
* erts: Added support in module re for export and import of
compiled regular expression in order to safely move them
between Erlang node instances.
* erts: Added new erl command line flag +Mumadtn <bool> causing
MADV_DONTNEED to be passed to madvise() instead of MADV_FREE.
* kernel: A remote shell can now exit by closing the input
stream, without terminating the remote node.
* kernel: The internal inet_dns_tsig and inet_res modules have
been fixed to TSIG verify the correct timestamp.
* kernel: The rudimentary DNS resolver inet_res has aqcuired 3
new functions inet_res:gethostbyname/4, inet_res;getbyname/4
and inet_res:gethostbyaddr/3, that all take an option list
argument.
* asn1: Decoding a constrained BIT STRING using JER was broken.
* asn1: NIFs and linked-in drivers are now loadable when running
in an Erlang source tree on Windows.
* megaco: Documentation improvements.
* megaco: Rendering of some tables in the documentation has been
improved.
* xmerl: Corrected the bug that comments couldn't be exported.
* stdlib: The save_module/1 command in the shell now saves both
the locally defined records and the imported records using the
rr/1 command.
* stdlib: It's now possible to write lists:map(fun is_atom/1, [])
or lists:map(fun my_func/1, []) in the shell, instead of
lists:map(fun erlang:is_atom/1, []) or lists:map(fun
shell_default:my_func/1, []).
* stdlib: The shell no longer crashes when requesting to auto-
complete map keys containing non-atoms.
* stdlib: A remote shell can now exit by closing the input
stream, without terminating the remote node.
* stdlib: Fixed guard check for is_record/2 in the linter.
* stdlib: Added a flag option shell_hints and function
shell:hints/1. You can now disable the warning in the shell
when a command is taking longer than 5 seconds.
* wx: NIFs and linked-in drivers are now loadable when running in
an Erlang source tree on Windows.
* wx: Now avoiding that wx crashes the VM when running on OTP28+
due to one of the new compiler hardening options.
* wx: wx was missing licenses that come from OpenGL documentation
and wxWidgets documentation.
* ssl: The sender side is now closed if an error occurs on the
socket.
* ssl: The PEM cache process no longer crashes when a configured
file has been deleted before it could be read.
* ssl: Corrected handling of ssl:sockname/1 for DTLS, so that it
now will return the correct result in all situations.
* ssl: Rendering of some tables in the documentation has been
improved.
* ssl: Added support for quantum crypto signature algorithm ML-
DSA (ssl and public_key) and key exchange algorithm ML-KEM
(ssl).
* ssl: Now allowingsend/2 to buffer data when using sockets
backend. Use 'high_watermark' and 'low_watermark' to steer
buffering as gen_tcp does.
* ssl: Now allowing the PSK identity to be the empty string in
TLS-1.2 for compatibility reasons. It is allowed according to
the spec, although providing a proper value makes more sense.
* ssl: TLS server now fails early for supplied PEM file issues,
such as the file not being found.
- Changes for 28.0.4:
* inets: Fixed a bug where a request sent to httpd server which
is using CGI script to generate a response, would pollute
server's environment variable - HTTP_PROXY for that request.
This bug is also known as httpoxy. More information:
CVE-2016-1000107
- Changes for 28.0.3:
* ssh: Option max_handles can be configured for sshd running
SFTP. The positive integer value limits amount of file handles
opened for a connection (by default 4096 is used).
* ssh: Avoid decoding KEX messages providing too many algorithms.
This change does not introduce new limitation but assures it is
enforced earlier in processing chain. Adjustments in error
logging during handshake.
* ssh: A new 'max_path' option is now available in the sshd
configuration, allowing administrators to set the maximum
allowable path length. By default, this value is set to 4096
characters.
* ssh: Reject file handles exceeding size specified in RFCs (256
bytes).
* diameter: With this change message_cb callback will be called
with updated state for processing 'ack' after 'send'.
* erts: Update PCRE2 from 10.45 to 10.46. Fixes potential buffer
read overflow on regular expressions with (*scs:) and (*ACCEPT)
syntax combined.
* erts: Fixed bug that could cause crash in beam started with erl
- emu_type debug +JPperf true with any type of tracing return
from function.
* stdlib: Update PCRE2 from 10.45 to 10.46. Fixes potential
buffer read overflow on regular expressions with (*scs:) and
(*ACCEPT) syntax combined.
* Sat Aug 02 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 28.0.2:
* compiler: Fixed a bug that could cause empty bitstring matches
to always succeed, even when they should not.
* public_key: Adjustments in include file to retain compatibility
with supported ASN-1 standards, although not all record and
macros are explicitly documented.
* public_key: Handle certificates that are signed with RSASSA-PSS
but the PSS params are specified in the 'SignatureAlgorithm' of
the signed cert and not in the signer's 'SubjectPublicKeyInfo'.
* public_key: Add modern ASN-1 specs to be able to retain support
for ExtensionRequest from legacy PKCS-9 spec.
* kernel: socket:sendv/3 with 'nowait' sometimes return
'completion' without 'CompletionInfo' (Windows only).
* kernel: prim_net nif used incorrect encoding for family
resulting in non-functional address selection.
* kernel: socket:accept can return unexpected 'select_sent'.
* kernel: net_kernel could be blocked for a very long time when
selecting distribution module for a connection if the DNS
service was slow. This prevented any new connections to be set
up during that time.
* kernel: Improved documentation of CompletionStatus for
asynchronous (nowait) socket operations.
* wx: Don't include gl.beam in pre-built source tar file, since
it depends on local configure results.
* ssh: Fix file handle id generation.
* ssh: Fixes a badmatch error, when SFTP operation cannot be
processed due to channel closed in parallel.
* stdlib: A set of small bugs in sort stability for
`lists:sort/1` and `lists:keysort/1` has been fixed. The bug
happened for only some, seemingly random, element sequences.
Most sorts were stable.
* stdlib: Fixed bug in io_lib:bformat/2 which crashed if format
string contained unicode characters.
* debugger: Fixed debugger priv dir, which was removed and caused
crashes when the icons could not be found.
* erts: prim_net nif used incorrect encoding for family resulting
in non-functional address selection.
* erts: Fix windows uninstall command.
* erts: With this change erlang will start if it receives short
(ms-dos compatible) path to executable.
* erts: The maximum amount of connections for epmd on Windows
platforms has been increased from 64 to 1024.
* ssl: Improve error message for bad arguments to underlying
connect.
- Changes for 28.0.1:
* eldap: With this change eldap's 'not' function will have specs
fixed.
* xmerl: The type specs of xmerl_scan:file/2 and
xmerl_scan:string/2 has been updated to return t:dynamic/0. Due
to hook functions they can return any user defined term.
* public_key: Add back some ASN-1 macros and definitions that
should be included in API.
* asn1: The ASN.1 compiler could generate code that would cause
Dialyzer with the unmatched_returns option to emit warnings.
* kernel: Fix bug where calling io:setopts/1 in a shell without
the line_history option would always disable line_history. This
bug was introduced in Erlang/OTP 28.0.
* ssh: Various channel closing robustness improvements. Avoid
crashes when channel handling process closes channel and
immediately exits. Avoid breaking the protocol by sending
duplicated channel-close messages. Cleanup channels which
timeout during closing procedure.
* ssh: Improved interoperability with clients acting as Paramiko.
* stdlib: Properly strip the leading / and drive letter from
filepaths when zipping and unzipping archives.
* debugger: Restore deleted icon so that debugger does not crash
on startup.
* erts: Fix Erlang to not crash when t:io:standard_error/0 is a
terminal but t:io:standard_io/0 is not. This bug has existed
since Erlang/OTP 28.0 and only effects Windows.
* erts: In a debug build, the BIFs for the native debugger could
cause a lock order violation diagnostic from the lock checker.
* erts: When building ERTS make sure correct pcre2.h file is
included even if CFLAGS contains extra include paths.
* ssl: hs_keylog callback properly handle alert in initial
states, where encryption is not yet used. Also add keylog
callback invocation for corner-case where server alert is
encrypted with application secrets as client is already in
connection state.
* ssl: The documentation for SSL option verify_fun has been
improved.
* Mon Jun 09 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Version 28.0:
* Functionality making it possible for processes to enable
reception of priority messages has been introduced in accordance with EEP 76.
* Comprehensions have been extended with “zip generators”
allowing multiple generators to be run in parallel.
* Generators in comprehensions can now be strict, meaning that if
the generator pattern does not match, an exception will be raised
instead of silently ignore the value that didn’t match.
* It is now possible to use any base for floating point numbers
as per EEP 75: Based Floating Point Literals.
* For certain types of errors, the compiler can now suggest
corrections. For example, when attempting to use variable A
that is not defined but A0 is, the compiler could emit the
following message: variable 'A' is unbound, did you mean 'A0'?
* The size of an atom in the Erlang source code was limited to
255 bytes in previous releases, meaning that an atom containing
only emojis could contain only 63 emojis. While atoms are still
only allowed to contain 255 characters, the number of bytes is no
longer limited.
* The warn_deprecated_catch option enables warnings for use of
old-style catch expressions on the form catch Expr instead of
the modern try ... catch ... end.
* Provided that the map argument for a maps:put/3 call is known
to the compiler to be a map, the compiler will replace such
calls with the corresponding update using the map syntax.
* Some BIFs with side-effects (such as binary_to_atom/1) are
optimized in try ... catch in the same way as guard BIFs in
order to gain performance.
* The compiler’s alias analysis pass is now both faster and less
conservative, allowing optimizations of records and binary
construction to be applied in more cases.
* The trace:system/3 function has been added. It has a similar
interface as erlang:system_monitor/2 but it also supports trace
sessions.
* os:set_signal/2 now supports setting handlers for the
SIGWINCH, SIGCONT, and SIGINFO signals.
* The two new BIFs erlang:processes_iterator/0 and
erlang:process_next/1 make it possible to iterate over the
process table in a way that scales better than erlang:processes/0.
* The erl -noshell mode has been updated to have two sub modes
called raw and cooked, where cooked is the old default
behaviour and raw can be used to bypass the line-editing support of
the native terminal. Using raw mode it is possible to read
keystrokes as they occur without the user having to press Enter.
Also, the raw mode does not echo the typed characters to stdout.
* The shell now prints a help message explaining how to interrupt
a running command when stuck executing a command for longer
than 5 seconds.
* The join(Binaries, Separator) function that joins a list of
binaries has been added to the binary module.
* By default, sets created by module sets will now be represented
as maps.
* Module re has been updated to use the newer PCRE2
library instead of the PCRE library.
* There is a new zstd module that does Zstandard compression.
* The ancient ASN.1 modules used in public_key has been replaced
with more modern versions, but we have strived to keep the
documented Erlang API for the public_key application compatible.
* EEP 69: Nominal Types has been implemented.
* The data handling for tls-v1.3 has been optimized.
* The indent-region in Emacs command will now handle multiline
strings better.
* Fri Jun 06 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 27.3.4.1:
* ssl: hs_keylog callback properly handle alert in initial
states, where encryption is not yet used. Also add keylog
callback invocation for corner-case where server alert is
encrypted with application secrets as client is already in
connection state.
* ssl: The documentation for SSL option verify_fun has been
improved.
* kernel: A remote shell can now exit by closing the input
stream, without terminating the remote node.
* kernel: Document default buffer sizes
* asn1: The ASN.1 compiler could generate code that would cause
Dialyzer with the unmatched_returns option to emit warnings.
* xmerl: The type specs of xmerl_scan:file/2 and
xmerl_scan:string/2 has been updated to return t:dynamic/0. Due
to hook functions they can return any user defined term.
* eldap: With this change eldap's 'not' function will have specs
fixed.
* ssh: Various channel closing robustness improvements. Avoid
crashes when channel handling process closes channel and
immediately exits. Avoid breaking the protocol by sending
duplicated channel-close messages. Cleanup channels which
timeout during closing procedure.
* ssh: Improved interoperability with clients acting as Paramiko.
* stdlib: The save_module/1 command in the shell now saves both
the locally defined records and the imported records using the
rr/1 command.
* stdlib: It's now possible to write lists:map(fun is_atom/1, [])
or lists:map(fun my_func/1, []), in the shell, instead of
lists:map(fun erlang:is_atom/1, []) or lists:map(fun
shell_default:my_func/1, []).
* stdlib: Properly strip the leading / and drive letter from
filepaths when zipping and unzipping archives.
* stdlib: Shell no longer crashes when requesting to autocomplete
map keys containing non-atoms.
* stdlib: A remote shell can now exit by closing the input
stream, without terminating the remote node.
* Fri May 09 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 27.3.4:
* ssh: Fix KEX strict implementation according to draft-miller-
sshm-strict-kex-01 document.
* kernel: With this change, disk_log will not crash when using
chunk_step/3 after log size was decreased.
* kernel: With this change, disk_log will not run into infinite
loop when using chunk/2,3 after log size was decreased.
* erts: Fixed an emulator crash when setting an error_handler
module that was not yet loaded.
* erts: Fixed a rare bug that could cause an emulator crash after
unloading a module or erasing a persistent_term.
* xmerl: A new option to discard whitespace before the xml tag
when reading from a stream has been added to the Xmerl SAX
parser.
* Sat Apr 19 2025 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 27.3.3:
* kernel: Fixed bug in call_memory tracing that could cause
wildly incorrect reported memory values. Bug exists since OTP
27.1.
* megaco: Corrected type spec for type mid().
* erts: Fixed bug in call_memory tracing that could cause wildly
incorrect reported memory values. Bug exists since OTP 27.1.
* ssh: Reception of wrong Unicode does not cause unnecessary
processing. US-ASCII fields are not decoded as Unicode.
* ssh: SSH daemon disconnects upon receiving connection protocol
message for unauthenticated used.
* ssl: Lower log level for user cancelation as this is not an
error case. Also handle possible undecrypted close alert
during TLS-1.3 handshake.
- Changes for 27.3.2:
* kernel: On Windows, using socket:sendv, a large IOV (size >
MAX), the tail was not sent.
* kernel: gen_tcp connect with a sockaddr with loopback address
failed.
* kernel: Remove debug printouts from gen_tcp_socket
* xmerl: Corrected faulty type specification
* asn1: Negative REAL numbers greater than -1 would be
incorrectly encoded (the minus sign would be lost).
* megaco: Correct type spec for ActionReply
* erts: On Windows, using socket:sendv, a large IOV (size > MAX),
the tail was not sent.
* erts: Uplift pcre 8.44 to pcre 8.45
* snmp: When manager receives an v3 inform (request) it used
engine-id and full address (including port number) to check if
engine was known. This did not work if agent used ephemeral
ports for notifications. Has now been changed to only use
(context) engine-id and address (without port).
* snmp: Fixed snmp_generic (dialyzer) spec for function
table_func.
* compiler: Fix the compiler crash when the inner-most tuple in a
nested tuple with 3 layers is updated.
* ssl: Correct the debug functionality for NSS keylogging for
TLS-1.3 introduced in OTP-27.3.1 so that TLS-1.3 key updates
items always get correct counter value and each item is logged
as one single line.
* Mon Mar 31 2025 matwey.kornilov@gmail.com
- Changes for 27.3.1:
* stdlib: Fixed crash when fetching initial_call when user code
have modified the process_dictionary.
* erts: Behavior for socket:recv/3 has been improved. The
behavior has also been clarified in the documentation.
* erts: Trace messages due to receive tracing could potentially
be delayed a very long time if the traced process waited in a
receive expression without clauses matching on messages (timed
wait), or just did not enter a receive expression for a very
long time.
* erts: Improve the naming of the (internal) esock mutex(es). It
is now possible to configure (as in autoconf) the use of simple
names for the esock mutex(es).
* kernel: Behavior for socket:recv/3 has been improved. The
behavior has also been clarified in the documentation.
* kernel: An infinite loop in CNAME loop detection that can cause
Out Of Memory has been fixed. This affected CNAME lookup with
the internal DNS resolver.
* mnesia: With this change mnesia will merge schema of tables
using external backends.
* ssh: Reception of malicious KEX init message does not result
with ssh daemon excessive memory usage.
* ssh: Call to ssh:daemon_replace_options does not crash when
argument is not a valid daemon ref.
* asn1: The JER backend will now include the SIZE constraint in
the type info for OCTET STRINGs, and a SIZE constraint with a
range will now be included for BIT STRINGs. This does not
change the actual encoding or decoding of JER, but can be
useful for tools.
* asn1: When using the JSON encoding rules, it is now possible to
call the decode/2 function in the following way with data that
has already been decoded by json:decode/1:
* ssl: Correct handling of unassigned signature algorithms to
properly ignore them instead of failing the handshake.
* ssl: Update key mechanism in CRL cache so that CRL DP with same
URI path component becomes distinguishable from each other.
* ssl: Add callback for NSS keylogging so that it can work as
expected for all scenarios.
* Mon Mar 17 2025 matwey.kornilov@gmail.com
- Changes for 27.3:
* ssl: The function for selecting the best server certificate
and key pair has been enhanced when several options are
available to ensure that the fallback will not always be
chosen.
* ssl: Avoided duplicating a few algorithms in default values
caused by an interoperability workaround not needed in this
case.
* ssl: Fixed two alert bugs, which could result in a crash
instead of an alert.
* syntax_tools: Annotation of maybe expressions has been
corrected.
* crypto: crypto will now work when ED25519 and X25519 are
available while ED448 and X448 are not, which is the case in
LibreSSL. This is necessary for supporting TLS1.3 using
LibreSSL.
* compiler: The beam_validator pass in the compiler that
validates generated BEAM now does stronger checks for binary
syntax matching.
* common_test: Reduced the memory usage when testcases prints a
lot to the log.
* common_test: Fixed the built-in hook cth_surefire to not crash
when a group within a skipped group is skipped.
* erts: Fixed failed runtime assert in debug VM when built with
statically linked NIFs.
* erts: Fixed a bug where reading a binary from m:persistent_term
could cause a segmentation fault on Windows. This bug was
introduced in Erlang/OTP 27.0.
* erts: Fixed a crash in erlexec (an executable used by erl
during startup) when a PATH longer than 10240 was set.
* erts: Fixed bug in erlang:halt. Two processes calling
erlang:halt at the same time could lead to one of them crashing
with badarg as if it called erlang:halt(undefined,undefined).
* erts: Fixed BEAM crash when a custom thread sends a large map
(>128 keys) externally encoded with, for example,
erl_drv_send_term().
* kernel: Clarify inet:setopts documentation
* kernel: Fix bug where log printouts would go missing when
application_controller is stopping while log messages are being
sent.
* kernel: Fixes a bug in the socket type spec, which caused
Dialyzer to reject some valid programs.
* asn1: Multiple bugs in decoding of the REAL type has been
eliminated. Also, the documentation for REAL has been updated
to mention the special values 0, PLUS-INFINITY, and MINUS-
INFINITY.
* xmerl: Some old-style catch expressions in the xmerl_sax_parser
when the continuation fun was called caused the stack to grow
until all free memory was exhausted. These parts have been
rewritten so that the parser now runs correctly without growing
the stack. At the same time all old-style catch expressions in
xmerl were replaced with try/catch.
* ssh: Minor documentation improvements.
* ssh: Function specification for ssh_sftp:start_channel/2 is
fixed.
* stdlib: Fixed argparse:help/2 to accept the program name as
part of the command path.
* stdlib: Fixed argparse:format_help/2 crash on 'hidden' command.
* stdlib: Fixed the type specification for timer:sleep/1 by
adding the value infinity to its input type.
* stdlib: Eliminated a crash in zip:unzip/1 while unzipping an
archive where a directory within was read-only. This bug was
introduced in Erlang/OTP 27.1.
* stdlib: Fixed map comprehension result when a key value is
replaced.
* stdlib: Fixed string:jaro_similarity/1 for matching strings of
length 1.
* mnesia: Mnesia could fail to load a table, if one of the copy
holders was moved during startup.
* Sat Mar 01 2025 matwey.kornilov@gmail.com
- Changes for 27.2.4:
* ssh: SFTP packets exceeding max packet size are not processed
and dropped. (bsc#1237467, CVE-2025-26618)
* snmp: SNMP Agent transports type (intAgentTransports) was
incorrectly not documented as a list of transports. Also add a
couple of config file generation examples.
- Changes for 27.2.3:
* inets: Improved robustness of httpd startup procedure.
* ssl: Setting protocol version to a lower value then supported
by default in server API function called after ssl:listen/2
could result in wrong default values being used and connections
failing with insufficient security.
* ssl: Improve error handling of server name indication fun. This
implies that if the sni_fun returns undefined we will attempt
connection with original option values, if it returns
unrecognized we end the connection with UNRECOGNIZED_NAME alert
and if provided options fail option verification we will end
the connection with a HANDSHAKE_FAILURE and an error log.
- Changes for 27.2.2:
* compiler: Eliminated a bug in the alias analysis pass that
could potentially cause unsafe optimizations of binary
construction or record updates.
* erts: Disabled an unsafe runtime optimization in binary
construction that caused silent memory corruption.
* public_key: Consider keyCertSign to compatible with extended
key usage for TLS client/server auth in CAs, adhere to wide
spread implementations
* kernel: Fixed a couple of bugs that could make global's
internal state inconsistent when a connection was reconnected.
* ssl: An initiated handshake should always be closed with an
alert, some corner cases have been fixed so that this should
always be the case.
* ssl: Correct option handling to work properly for paused
handshaking. Could result in unwanted alerts or or error
messages.
* Tue Feb 18 2025 Jan Engelhardt <jengelh@inai.de>
- Enable verbose mode of the Makefiles so as to show commands
being executed.
- During build, use find -exec rather than complicated passing
via xargs.
* Mon Feb 03 2025 matwey.kornilov@gmail.com
- Changes for 27.2.1:
* ssh: With this change, type specs for ssh:connection_info/1,2
functions are fixed so they include {error, term()} return
value.
* ssh: With this change, ssh client accepts a banner sent during
processing keyboard interactive user authentication.
* ssh: With this change, large sftp transfers does not hang.
Redundant window adjustment are not requested.
* tftp: Fix specs in tftp:read_file function.
* common_test: Common test will now not crash when running tests
with otp26 and earlier, while having previous test resuts from
otp27.
* erts: Fixed configure tests for GCC 14
* erts: Fix bug where log printouts would go missing when
application_controller is stopping while log messages are being
sent.
* dialyzer: Fixed a crash caused by the use of opaque types.
* kernel: Fix the default group_leader to reply {error,request}
on invalid I/O requests instead of crashing.
- Changes for 27.2:
* os_mon: Fixed the m:memsup memory alarm to use available_memory
when available, instead of always using free_memory.
* ssh: Documentation is polished after OTP-27 migration to
markdown.
* compiler: Fixed a crash in the common sub-expression
elimination pass.
* compiler: Fixed a bug where bogus code was generated for
consecutive calls to erlang:setelement/2, potentially crashing
the runtime system.
* compiler: When the line_coverage option was used, exceptions
could show the wrong line for where the exception was raised.
* compiler: The line_coverage option would be ignored if given in
a compile() attribute within a module.
* compiler: A segment matching a float in a binary generator will
now skip any invalid float (such as a NaN) and continue
matching the rest of the binary. Before this correction, the
comprehension would stop as soon as an invalid float was
encountered.
* observer: In the Memory tab of crashdump_viewer, the blocks
sizes in Allocator Summary would all be N/A.
* observer: The Kernel application now recognizes the epmd_module
and erl_epmd_listen_port parameters, similar to
- kernel:connect_all.
* stdlib: Made it possible to expand help text displayed by
pressing ^[h by pressing ^[h again.
* stdlib: Defining a fun in the shell using the syntax fun
Name/Arity would fail. This has been corrected so that the
following now works:
* stdlib: Fixed a bug where completion of 'fun(' would cause the
shell to crash.
* stdlib: Fixed a bug causing the shell to crash while trying to
complete an expression starting with a '/' or a variable
followed by '(' or '/'. E.g. Foo/ and Foo(.
* stdlib: zip:extract/2 with keep_old_files now respects the cwd
option.
* stdlib: Fixed an error in uri_string:percent_decode spec
* stdlib: Updated shell docs to display the type spec, that is,
[h(erlang, min, 2)](%60%5Cc:h/2%60) now prints the type spec
and documentation in the shell.
* stdlib: The t:file:io_device/0 type has been updated to clearly
show the difference between a raw and cooked IoDevice.
* stdlib: Added json:format_key_value_list/3 and
json:format_key_value_list_checked/3.
* stdlib: Improved documentation of
[timers](%60e:erts:time_correction.md#timers%60).
* stdlib: Added logging support to t:io:user/0,
t:io:standard_io/0 and t:io:standard_error/0. See io:setopts/2
for more details.
* common_test: Fixed a bug where the sum of testcases' execution
time in HTML logs was sometimes miscalculated, and the table
was not fully printed.
* snmp: Erlang/OTP type specifications has been updated to
eliminate overlapping domains.
* ssl: Enhanced return value spec for active messages from the
TLS connection socket.
* eldap: Corrected dialyzer spec for usage of TLS options. The
incorrect usage for the options in eldap could cause dialyzer
warnings in user code referring to eldap specs.
* erts: gen_sctp:peeloff/2 has been fixed to inherit socket
options to the peeled off socket more like gen_tcp:accept/1,
for example the options tos or tclass.
* erts: Fixed a bug where Erlang would corrupt the terminal
settings if stdin was a TTY but stdout was not.
* erts: Fixed a bug in the non-JIT VM when loading a NIF over a
function that is already traced by more than one session. This
caused a VM crash. This bug has existed since OTP-27.0, where
multiple trace sessions were introduced.
* erts: Fixed a bug where the loading of modules with extremely
large binary construction instructions crashed the emulator on
AArch64.
* erts: [inet:getifaddrs/0,1](%60inet:getifaddrs/1%60) is
improved when using inet_backend = socket.
* erts: win32reg:value/2 will no longer crash the emulator when
the value is an unterminated REG_SZ of size 0.
* erts: Makefile dependency generation on Windows in WSL 2 has
been corrected.
* erts: Fix lock order violation if a NIF monitor down callback
calls enif_whereis_pid. Would cause debug emulator to crash but
could potentially lead to deadlocks in optimized emulator.
* erts: Fixed compilation faults when compiling using --enable-
vm-probes.
* erts: Fixed erl_nif.h on Windows to compile when gcc or clang
is used.
* erts: Fixed a minor issue in the JIT debug information that
confused tools like GDB and perf.
* erts: Improved documentation of
[timers](time_correction.md#timers).
* erts: The label for a process can now be retrieved also using
process_info(Pid, label) in addition to proc_lib:get_label/1.
* mnesia: Mnesia table converted from ext_copies to disc_copies
will now be properly saved to disk.
* mnesia: Mnesia could crash if table was deleted during
checkpoint initialization.
* dialyzer: Fixed type inference for
erlang:system_info(logical_processors).
* dialyzer: Dialyzer would crash when attempting to analyze a
module compiled with the line_coverage option.
* dialyzer: Erlang/OTP type specifications has been updated to
eliminate overlapping domains.
* tools: Fixed some deprecated errors on emacs-29.
* tools: The cover tool could sometimes wrongly report lines as
uncovered.
* tools: Fixed tprof:format(IoDevice, ...) to not demand unicode
encoding supported by IoDevice.
* debugger: Defining a fun in the shell using the syntax fun
Name/Arity would fail. This has been corrected so that the
following now works:
* debugger: Erlang/OTP type specifications has been updated to
eliminate overlapping domains.
* crypto: crypto:strong_rand_bytes/2 fixed to work on Ubuntu pro
with installed FIPS support.
* crypto: Fixed crypto:hash_final/1 for digest types shake128 and
shake256 when using OpenSSL 3.4 or newer.
* kernel: gen_sctp:peeloff/2 has been fixed to inherit socket
options to the peeled off socket more like gen_tcp:accept/1,
for example the options tos or tclass.
* kernel: Made it possible to expand help text displayed by
pressing ^[h by pressing ^[h again.
* kernel: [inet:getifaddrs/0,1](%60inet:getifaddrs/1%60) is
improved when using inet_backend = socket.
* kernel: Fixed t:logger:report/0 to mandate at least one element
in the report. This fixes an issue with overlapping spec
domains in all m:logger functions that use t:logger:report/0.
* kernel: Fixed deadlock on code_server. Multiple calls loading
the same module with an on_load function loading call would
create a deadlock.
* kernel: The Kernel application now recognizes the epmd_module
and erl_epmd_listen_port parameters, similar to
- kernel:connect_all.
* kernel: The inetrc kernel argument will now tolerate atoms
again to improve compatibility with old configurations that
relied on atoms working by accident.
* kernel: The t:file:io_device/0 type has been updated to clearly
show the difference between a raw and cooked IoDevice.
* kernel: Erlang/OTP type specifications has been updated to
eliminate overlapping domains.
* kernel: Added the kernel parameter
[os_cmd_shell](kernel_app.md#os_cmd_shell) that controls which
shell should be used by os:cmd/1.
* kernel: Added logging support to t:io:user/0,
t:io:standard_io/0 and t:io:standard_error/0. See io:setopts/2
for more details.
* megaco: Erlang/OTP type specifications has been updated to
eliminate overlapping domains.
* inets: The HTTP client now correctly takes into account the
full_result option when returning an asynchronous request.
* inets: A synchronous httpc:request now timeouts after the
Timeout specified in HttpOption {timeout, Timeout}.
* inets: Fixed a bug where calling httpc:set_options/2 when one
of keys: ipfamily or unix_socket, was not present, would cause
the other value to get overriden by the default value. The
validation of these options was also improved.
* inets: The variable Env in the mod_esi callback will now have
an additional property {connect_addr, Addr} indicating on which
address the server received a connection.
* public_key: public_key:cacerts_load/1 can now be configured via
the application environment.
* public_key: On MacOS, CA certificates are now also loaded from
the system keychain.
* Tue Dec 10 2024 matwey.kornilov@gmail.com
- Changes for 27.1.3:
* public_key: If both ext-key-usage and key-usage are defined for
a certificate it should be checked that these usages are
consistent with each other. This will have the affect that such
certificates where the ext-key-usages is marked as critical and
the usages is consistent with the key-use it can be considered
valid without mandatory application specific checks for the
ext-key-useage extension.
* public_key: Handle decoding of EDDSA key properly, when
decoding a PEM file that contains only the public EDDSA key.
* erts: gen_udp:send on domain local can leak inet_reply
messages.
* erts: net:getifaddrs does not properly report the running flag
on windows.
* compiler: In rare circumstances, the destructive tuple update
optimization could be applied when it was unsafe.
* compiler: In rare circumstances involving appending to multiple
binaries, the compile could emit unsafe code that would crash
the runtime system.
* ssh: With this change, ssh connection does not crash upon
receiving exit-signal message for an already terminated
channel.
* kernel: On windows the socket:recv could return with success
({ok, Data}) even though not all data had been read.
* kernel: gen_udp:send on domain local can leak inet_reply
messages.
* kernel: Failure to create an UDP IPv6 socket when inet_backend
= socket with certain IPv6 socket options.
* kernel: net:getifaddrs does not properly report the running
flag on windows.
* ssl: Avoid generating an internal alert for case that should
have been an orderly shutdown by the supervisor.
* ssl: If present, extended key-usage TLS (SSL) role check (pk-
clientAuth, pk-serverAuth) should always be performed for peer-
cert. An intermediate CA cert may relax the requirement if
AnyExtendedKeyUsage purpose is present.
* ssl: Back port certificate_authorities option for TLS-1.3
servers to pre TLS-1.3 servers to enable them to disable the
sending of certificate authorities in their certificate
request. This will have same affect as the the TLS-1.3 server
option although it is handled by a different mechanism in these
versions, where the functionality is described to be more of a
guidance, although some pre TLS clients have proven to make it
mandatory as in TLS-1.3 extension handling.
* common_test: With this change, cth_surefire hook module handles
group path reduction for a skipped group. This fixes a bug
manifesting with improper group path for a group executed after
a group which was skipped.
* common_test: With this change, prefix option can be specified
in cth_conn_log option list. Option allows to specify how much
of additional information is added in raw log output.
* Thu Dec 05 2024 Dirk Müller <dmueller@suse.com>
- drop systemd_requires, see
https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines#Runtime_requirements
* Sat Nov 30 2024 matwey.kornilov@gmail.com
- Changes for 27.1.2:
* stdlib: With this change, uri_string:normalize assumes empty
path (do not crash) when no path is provided in the URI map.
* stdlib: Fixed spec for json:format/3.
* kernel: A bug has been fixed where receiving an SCTP message
with gen_sctp could waste the first fragments of a message and
only deliver the last fragment.
* kernel: An boolean option non_block_send for SCTP, has ben
added to be able to achieve the old behaviour to avoid blocking
send operations by passing the OS network stack error message
({error,eagain} through.
* common_test: With this change, jquery and tablesorter licenses
are added to COPYRIGHT file. Also tablesorter is updated to
version 2.32.
* ssl: Refactor trying to also make some optimizations introduced
a bug in signature algorithms checks in OTP-26.2.1. This could
manifest itself in not being able to negotiate connections
using certificates needing to use some TLS-1.2 compatibility
legacy signature schemes.
* ssl: Correct timeout handling for termination code run for own
alerts, so that intended timeout is used instead of falling
back to OS TCP-stack timeout that is unreasonably long on some
platforms.
* ssl: Fix assertion so that works as intended. This could result
in that some TLS-1.2 clients would fail to connect to the the
erlang server. Bug introduced in OTP-27.1.1
* erts: A bug has been fixed where receiving an SCTP message with
gen_sctp could waste the first fragments of a message and only
deliver the last fragment.
* erts: An boolean option non_block_send for SCTP, has ben added
to be able to achieve the old behaviour to avoid blocking send
operations by passing the OS network stack error message
({error,eagain} through.
* erts: The call gen_tcp:send/2 could hang indefinitely despite
having set the send_timeout option for the following
unfortunate combination of circumstances:
* erts: In rare circumstances, in code that matches multiple
tuples, the JIT could generate code that would raise a badmatch
exception even if the given tuples were correct.
* erts: Fixed beam crash that could happen if resetting call_time
or call_memory trace counters of a function while it is called.
Bug exists since OTP R16.
* ssh: With this change, a race condition is removed from ssh
client connection setup procedure.
* ssh: With this change, ssh:connect is not affected by presence
of EXIT message in queue.
* ssh: With this change, ssh appends {active, false} option after
socket options received from user - so that false value is
always used.
- Changes for 27.1.1:
* public_key: Introduction of verify_fun/4 unfortunately
introduced an argument switch for some specific path validation
errors so that verify_fun/3 could under these circumstances be
called with a DER cert instead of a decod cert, also in this
situation the verify_fun/4 would have the certificates in
reverse order.
* public_key: Do not hide crypto badarg reason, this error
handling enhancement facilitates debugging. These kind of
runtime errors are not documented and should never be relied on
for matching, they are intended for catching input errors
early.
* stdlib: Remove whitespace stripping of returned binaries in
json:decode/3.
* stdlib: Fix zip:unzip/2 to not crash when extracting zip files
with garbage in the Zip64 extra header. This bug was introduced
in Erlang 27.1 and has so far only been seen on some archives
creates by MS Excel.
* stdlib: With this change, shutdown procedure handles a race
condition between supervisor executing a shutdown and child
process termination from other reason.
* common_test: With this change, HTML reports include jQuery
version 3.7.1.
* ssl: Starting from TLS-1.3 some server handshake alerts might
arrive after ssl:connection/2,3,4 has returned. If the socket
is in active mode the controlling process will get the alert
message, but passive sockets would only get {error, closed} on
next call to ssl:recv/2,3 or ssl/setopts/2. Passive sockets
calls will now return {error, error_alert()} instead.
* ssl: Servers configured to support only version (pre TLS-1.2)
should ignore hello version extension, as it is an unknown
extension to them, this will result in that new clients that do
not support the old server version will get an insufficient
security alert from the server and not a protocol version
alert, this is consistent with how old servers not able to
support higher protocol versions work.
* erts: On Windows, successive failed socket calls caused socket
to become "uninitialized".
* erts: The socket framework fails to start on a IPv6-only
Windows machine.
* Sun Sep 29 2024 matwey.kornilov@gmail.com
- Changes for 27.1:
* crypto: crypto built with --enable-fips will now accept an
OpenSSL 3 lib without fips provider as long as fips mode is not
enabled.
* crypto: Added a warning in the documentation to avoid calling
crypto:start/0 as it does not work for FIPS mode. Use
application:start(crypto) instead.
* crypto: Deprecation of RSA encryption functions has been
reverted, as there still exists legitimate use cases with other
padding modes than PKCS-1.
* crypto: Compiler warnings for some removed functions have been
corrected to point out the correct replacement functions.
* ssh: The SSh daemon started with a TCP port number argument
will now re-try obtaining a listen socket before returning an
error to the user.
* ssh: Robustness has been improved by monitoring the connection
handler process before casting the socket control notification.
* ssl: A race in the kTLS flavour of SSL distribution has been
fixed so that inet_drv.c doesn't read ahead too much data,
which could cause the kTLS encryption to be activated too late
when some encrypted data had already been read into the
inet_drv.c buffer as unencrypted.
* ssl: All TLS-1.3 terminations are now graceful (previous TLS
version terminations already were).
* ssl: It is now possible to use a verification fun of arity 4,
giving the user fun access to both encoded and decoded versions
of the certificate. This is desirable as a workaround for
encoding errors preventing re-encoding from being reliable.
This also saves some work load if the encoded version is
needed.
* ssl: Compiler warnings for some removed functions have been
corrected to point out the correct replacement functions.
* ssl: Include more information in logging of SNI (Server Name
Indication) mismatch error.
* diameter: Function specs for the main API module has been
updated.
* diameter: Man pages are now available for erl, erlc, dialyzer,
and all other programs that are included in Erlang/OTP.
* diameter: diameter:stop_service/1 has been made more
synchronous.
* wx: Documentation has been improved.
* public_key: For completeness handle rsa_pss implicit default
value, although this will probably not be commonly used as it
provides very weak security.
* public_key: The public_key:cacerts_load() function could in
some error cases return undefined instead of {error, Reason}.
* public_key: Added support for DragonFly.
* public_key: Deprecation of RSA encryption functions has been
reverted, as there still exists legitimate use cases with other
padding modes than PKCS-1.
* public_key: It is now possible to use a verification fun of
arity 4, giving the user fun access to both encoded and decoded
versions of the certificate. This is desirable as a workaround
for encoding errors preventing re-encoding from being reliable.
This also saves some work load if the encoded version is
needed.
* snmp: Man pages are now available for erl, erlc, dialyzer, and
all other programs that are included in Erlang/OTP.
* snmp: Figures in the documentation have been improved.
* tftp: The legacy dependency to m:error_logger has been removed.
m:logger is now used.
* ftp: Eliminated a race condition that sometimes resulted in
ftp:recv_bin/2 returning ok instead of {ok, Data}.
* odbc: Figures in the documentation have been improved.
* compiler: Fixed a crash in an optimization pass relating to
appending binaries.
* compiler: Fixed a bug in the compiler's alias analysis pass
that could make it emit unsafe code.
* common_test: Groups with empty list specifying groups and test
cases no longer crash execution.
* common_test: The Common_Test documentation and type specs have
been polished.
* common_test: Man pages are now available for erl, erlc,
dialyzer, and all other programs that are included in
Erlang/OTP.
* dialyzer: Man pages are now available for erl, erlc, dialyzer,
and all other programs that are included in Erlang/OTP.
* xmerl: Corrected export functions from internal structure to
XML so xmlText items of type cdata are handled correctly. They
were just exported as normal text instead of output in a CDATA
section.
* xmerl: The type spec for xmerl_sax_parser:file/2 has been
corrected to indicate that it can return an {error, _} tuple.
* runtime_tools: Fixed a bug where dbg sessions on remote nodes
were terminated prematurely.
* inets: The documentation for the m:httpd module has been
improved, along with correction of headings and types.
* inets: Userinfo is now properly percent-decoded before usage in
headers.
* stdlib: The help printout for incorrect t:io:format/0 strings
now handles the k modifier correctly.
* stdlib: Fixed a bug that caused the shell completion to crash
when keyword and tuple appeared on the same line.
* stdlib: Due to PR-7419/OTP-18671, the cached internal value of
the callback_mode started leaking out to logger reports, which
could cause logger handlers to crash. This has now been fixed
to show the value that was set, as before caching.
* stdlib: Fixed an emulator crash relating to compressed ETS
tables.
* stdlib: The error description for maps:update/3 will no longer
insist that the third argument is not a map when a key could
not be found
* stdlib: Multiple issues have been corrected in the markdown
parser that creates documentation for the shell.
* stdlib: Fixed category for some codepoint ranges in
unicode_util.
* stdlib: Fixed m:argparse to print sub-commands help when
available.
* stdlib: Class annotation to HTML from fenced blocks have been
added.
* stdlib: Added JSON formatting functions for indented output.
* stdlib: Improved illegal pattern error for accidental map
associations.
* stdlib: Progress reports for a dynamically started supervisor
will now be logged at debug level.
* stdlib: The m:zip module has been updated with support for:
* edoc: Broken links in release notes have been mended.
* tools: m:tprof no longer crashes when using
pause/restart/continue when profiling all modules.
* tools: On systems supporting native coverage, calls to m:cover
could hang or crash if cover-compiled module had been reloaded
from outside cover. This has been corrected so that cover now
recovers from the error and and sends a report to the logger
about the failure to retrieve coverage information.
* tools: Figures in the documentation have been improved.
* erts: The erl -man example has been corrected to not consider
values set in ERL_ZFLAGS and stop parsing arguments when a --
is encountered.
* erts: Compiler warnings for Windows I/O back-end have been
silenced.
* erts: Bugs related to return_to trace have been fixed. It did
not work for more than once trace session and it did sometimes
not trigger for exceptions.
* erts: Potential deadlocks while writing a crash dump have been
eliminated.
* erts: When loading a damaged or too old BEAM file, the runtime
system could crash.
* erts: A scheduler thread could get stuck when deleting a memory
allocator carrier when adjacent carriers were deleted and/or
inserted simultaneously by other schedulers. This in turn could
cause the other schedulers to get stuck as well.
* erts: Statistics for number of carriers in a shared pool after
calling instrument:allocations or instrument:carriers are now
correct. Also, a potential bug in carrier block scanning was
eliminated.
* erts: A race in the kTLS flavour of SSL distribution has been
fixed so that inet_drv.c doesn't read ahead too much data,
which could cause the kTLS encryption to be activated too late
when some encrypted data had already been read into the
inet_drv.c buffer as unencrypted.
* erts: Fixed an emulator crash relating to compressed ETS
tables.
* erts: A function (encode_sockaddr) was called with superfluous
argument, on Windows, in the net nif.
* erts: Fixed a crash that could happen on reallocation failure.
* erts: Man pages are now available for erl, erlc, dialyzer, and
all other programs that are included in Erlang/OTP.
* erts: A previous correction in the Erlang/OTP 27.0.1 emergency
patch had the unfortunate side effect of sometimes causing an
unnecessary fullsweep (major) garbage collection instead of a
generation (minor) garbage collection. This has been corrected.
* erts: Fixed trace matchspec functions trace and enable_trace to
use the session tracer when enabling trace flags on untraced
processes.
* erts: Fixed a typo in the type spec for
t:erlang:garbage_collection_defaults/0.
* erts: Corrected socket:ioctl for genaddr (SIOCGENADDR).
* erts: The support for Transparent Huge Pages has been disabled
on non-amd64 Linux systems.
* erts: Fixed a race condition on Windows when upgrading from
- noshell to a shell that would cause Erlang to crash with the
error:
* erts: Added functions getservbyname and getservbyport to the
net module.
* erts: Introduced enet | esock variants of m:inet functions,
either when called with sockets, with explicit inet_backend
config or with the e inet_backend kernel config option.
* erts: Optimize process and port creation when such tracing is
not enabled by any trace session.
* erts: Compiler warnings for some removed functions have been
corrected to point out the correct replacement functions.
* erts: A boolean option read_ahead has been implemented for
gen_tcp, default true, to facilitate not reading past (caching
data) the end of a packet. In particular, for kTLS, caching
data could read in data that was supposed to be decrypted by
the platform's network stack, before crypto parameters could be
activated.
* erts: The m:zip module has been updated with support for:
* kernel: A faulty assertion was corrected in the prim_tty
module. This assertion could trigger when invalid UTF-8 was
read from stdin just as the mode was changed from unicode to
latin1.
* kernel: Opening a disk_log file and combining head_func with
rotate options did not work.
* kernel: Fixed an error info printout for
erlang:is_process_alive/1 on non-local pids.
* kernel: A race in the kTLS flavour of SSL distribution has been
fixed so that inet_drv.c doesn't read ahead too much data,
which could cause the kTLS encryption to be activated too late
when some encrypted data had already been read into the
inet_drv.c buffer as unencrypted.
* kernel: Fixed a deadlock when an application crashes during
startup and log messages were sent to standard out. Logger
would fail to print the messages to standard out and instead
print them to standard error.
* kernel: The -proto_dist init parameter will no longer be
ignored when specified multiple times. It will now log a
warning and use the first specified value.
* kernel: Corrected socket:ioctl for genaddr (SIOCGENADDR).
* kernel: Added functions getservbyname and getservbyport to the
net module.
* kernel: Introduced enet | esock variants of m:inet functions,
either when called with sockets, with explicit inet_backend
config or with the e inet_backend kernel config option.
* kernel: The function socket:i/0 now uses the m:net module
(instead of the m:inet module) for service translation.
* kernel: A boolean option read_ahead has been implemented for
gen_tcp, default true, to facilitate not reading past (caching
data) the end of a packet. In particular, for kTLS, caching
data could read in data that was supposed to be decrypted by
the platform's network stack, before crypto parameters could be
activated.
* syntax_tools: The documentation for syntax_tools has been
polished after the migration to the new documentation system.
* asn1: Fixed a cosmetic but harmless issue with the ASN.1
compiler passing on the undec_rest option to the Erlang
compiler.
- Changes for 27.0.1:
* ssh: With this change, race condition between connection
closing and automatic window adjustment is fixed.
* ssl: Check for TLS-1.3 support should check minimum
requirements.
* ssl: If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2
negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 hash and
signature pairs for increased interoperability.
* ssl: TLS-1.3 negotiation now uses SNI based options correctly
instead of ignoring them.
* ssl: Make it easier to distinguish between a invalid signature
and unsupported signature.
* ssl: Enhance ALERT logs to help understand what causes the
alert.
* ssl: When the default value for signature_algs is used, default
the signature_algs_cert to the default value + rsa_pkcs1_sha1
to allow this algorithms for certificates but not for the TLS
protocol. This is for better interoperability. If
signature_algs is set explicitly signature_algs_cert must also
be set explicitly if they should be different.
* public_key: Fix bug in dnsName constraint check, could cause
valid cert to be considered bad during path validation.
* compiler: One of the compiler's optimization passes would get
very slow when compiling certain modules. The compiler will now
automatically disable that pass for input that would trigger
the slowdown.
* compiler: Fix +deterministic to work properly with
documentation attributes.
* stdlib: Fix so that missing -doc({file, File}) files only
result in a warning and not an error.
* stdlib: Fixed m:json bugs, json:encode_key_value_list/2 did not
generate arrays and json:decode/3 did not invoke the user
callback for 0.
* edoc: Fix broken makefile dependency when building HTML
documentation.
* erts: In rare circumstances the JIT could do an unsafe in-place
update of a tuple.
* erts: When a port command crashed in the inet driver during
gen_tcp:send/2, a monitor 'DOWN' message could be left
lingering in the caller's mailbox. This has now been fixed.
* erts: 'DOWN' messages originating from a monitored port,
contained the atom process instead of the atom port as the
third element when the exit reason was not an immediate term.
* erts: Fix so that the options to enable Transparent Huge Page
alignment of the Erlang VM executable are only applied to the
Erlang VM and not other native programs such as erlc and
dialyzer. This bug was introduced in Erlang/OTP 27.0.
* erts: When [*no time warp mode*](time_correction.md#no-time-
warp-mode) was enabled, a smaller Erlang monotonic time could
be read than a previously read time, i.e., breaking the
monotonic property. The runtime system will abort when
detecting an issue like this since OTP 24.3.4.17 and OTP 25.0.
* erts: When calling trace:function(Session, _, true, [meta]) the
meta tracer was incorrectly set to be the calling process. Now
it's set to the session tracer as expected.
* kernel: Polish the m:logger documentation.
* Fri Sep 20 2024 Matwey Kornilov <matwey.kornilov@gmail.com>
- Version 27.0:
* 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>>.
* 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 the maybe_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 the
cover 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 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 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 from erlang:fun_info/1,2.
Multiple trace sessions are now supported.
* There is a new module json for encoding and decoding JSON.
* Several new functions that accept funs have been added to module timer.
* The functions is_equal/2, map/2, and filtermap/2 have been
added to the modules sets, ordsets, and gb_sets.
* There are new efficient ets traversal functions with guaranteed
atomicity. For example, ets:next/2 followed by ets:lookup/2 can
now be replaced with ets:next_lookup/1.
* The new function ets:update_element/4 is similar to
ets: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 will be shown by tools such as c:i/0 and
observer, and it will be included in crash reports produced by
processes using gen_server, gen_statem, gen_event, and gen_fsm.
* Added functions to retrieve the next higher or lower
key/element from gb_trees and gb_sets, as well as returning
iterators that start at given keys/elements.
* common_test: Calls to ct:capture_start/0 and ct:capture_stop/0
are now synchronous to ensure that all output is captured.
* common_test: The default CSS will now include a basic dark mode
handling if it is preferred by the browser.
* crypto: The functions crypto_dyn_iv_init/3 and
crypto_dyn_iv_update/3 that were marked as deprecated in
Erlang/OTP 25 have been removed.
* dialyzer: The --gui option for Dialyzer has been removed.
* ssl: The ssl client can negotiate and handle certificate status
request (OCSP stapling support on the client side).
* tools: There is a new tool tprof, which combines the
functionality of eprof and cprof under one interface. It also
adds heap profiling.
* xmerl: As an alternative to xmerl_xml, a new export module
xmerl_xml_indent that provides out-of-the box indented output
has been added.
* Sat Aug 03 2024 matwey.kornilov@gmail.com
- Changes for 26.2.5.2:
* erts: When no time warp mode was enabled, a smaller Erlang
monotonic time could be read than a previously read time, i.e.,
breaking the monotonic property. The runtime system will abort
when detecting an issue like this since OTP 24.3.4.17 and OTP
25.0. Up until OTP 25 no time warp mode is the default. As of
OTP 26 multi time warp mode is the default.
* erts: A scheduler thread could get stuck when deleting a memory
allocator carrier when adjacent carriers were deleted and/or
inserted simultaneously by other schedulers. This in turn could
cause the other schedulers to get stuck as well.
* crypto: Add warning in documentation to avoid crypto:start/0 as
it does not work for FIPS mode. Use application:start(crypto)
instead.
* stdlib: Fixed a bug that caused the shell completion to crash
when keyword and tuple appeared on the same line.
* ssl: When the default value for signature_algs is used, default
the signature_algs_cert to the default value + rsa_pkcs1_sha1
to allow this algorithms for certificates but not for the TLS
protocol. This is for better interoperability. If
signature_algs is set explicitly signature_algs_cert must also
be set explicitly if they should be different.
- Changes for 26.2.5.1:
* erts: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout =
0 on Windows could cause a (case clause) crash if data is
immediately available.
* erts: When a port command crashed in the inet driver during
gen_tcp:send/2, a monitor 'DOWN' message could be left
lingering in the caller's mailbox. This has now been fixed.
* erts: 'DOWN' messages originating from a monitored port,
contained the atom process instead of the atom port as the
third element when the exit reason was not an immediate term.
* public_key: Fix bug in dnsName constraint check, could cause
valid cert to be considered bad during path validation.
* diameter: Pick peer can now also handle request of type
[#]diameter_packet{}.
* kernel: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
= 0 on Windows could cause a (case clause) crash if data is
immediately available.
* kernel: Open a disk_log file and combining head_func with
rotate options did not work.
* ssh: With this change, ssh client will automatically adjust
transfer window size for commands executed remotely over SSH.
* ssh: With this change, race condition between connection
closing and automatic window adjustment is fixed.
* ssl: Check for TLS-1.3 support should check minimum
requirements.
* ssl: If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2
negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 hash and
signature pairs for increased interoperability.
* ssl: TLS-1.3 negotiation now uses SNI based options correctly
instead of ignoring them.
* ssl: Make it easier to distinguish between a invalid signature
and unsupported signature.
* ssl: Enhance ALERT logs to help understand what causes the
alert.
- Changes for 26.2.5:
* erts: gen_sctp:send/3,4 now waits for the send to complete
instead of returning an OS result such as {error, ewouldblock}.
* erts: ETS functions did not properly handle keys containing
maps, sometimes matching too many or too few objects.
* erts: Fix CPU quota determination for cgroups. The bug was
introduced through OTP-18999.
* erts: Added a warning to open_port/2 regarding the BadBatBut
attack affecting Windows.
* dialyzer: Fixed an issue with bitstring type inference on
segments following UTF-8/16/32 segments.
* kernel: Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
* kernel: Fix calls to blocking application APIs to throw an
exception with reason terminating if called when the system is
terminating. This is done in order to avoid deadlocks during
shutdown or restart.
* stdlib: Fix shell expansion of -type a() :: $a. in the erlang
shell.
* stdlib: Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
* ssl: Fix certificate authorities check so that CA closest to
peer is not lost. It could manifest itself in a failed
connection as the client failed to realize it had a valid
certificate chain to send to the server.
* ssl: ssl:signature_algs/2 did not list some legacy algorithm
schemes correctly when listing all algorithms available.
* mnesia: Mnesia could crash during startup if del_table_copy/2
and add_table_copy/3 was invoked when the table was loading.
* Tue Apr 16 2024 Simon Lees <sflees@suse.de>
- Changes for 26.2.4
* asn1: An ASN.1 module that contains named BIT STRING values
would fail to compiled if both the BER and JER
back-ends were enabled.
* Compiler: In rare circumstances, the compiler code generate
unsafe code for a bit syntax match.
* Compiler: In rare circumstances, binary matches that were
supposed to succeed failed.
* Compiler: Fixed a bug where a fun's environment could be
overridden by an argument in some cases.
* Crypto: Fix building with --enable-fips with OpenSSL 3 on
MacOS.
* Debugger: Guards with nested record expression could wrongly
evaluate to false.
* Diameter: Reduce the impact of calling service_info by not
counting the binaries (on the heap) info, This is done
by introducing an option, bins_info, which controls
this.
* erts: Fixed CPU quota determination for cgroup version 2
* erts: Fix faulty reduction counting in exiting process which
could cause it to do unnecessary yielding.
* erts: Fix bug in re:run/3 where if an invalid UTF-8 subject
was given, re:run could get stuck in an infinite loop.
Bug was introduced in Erlang/OTP 22.1.
* erts: On AArch64 (ARM64), Erlang code using bit syntax
construction compiled using Erlang/OTP 24 could crash
the runtime system when run in Erlang/OTP 26.2.3.
* erts: Calling erlang:trace/3 with first argument one of
ports, processes, existing_ports, existing_processes,
existing or all, could cause emulator crash if a dirty
scheduler was executing a simultaneous trace action.
* erts: Fixed an integer overflow when the monotonic time unit
reported by the operating system was greater than 10
and lower than 100 microseconds.
* erts: Fix option reuseaddr for FreeBSD 14
* erts: When a traced process executing on a dirty scheduler
received an exit signal, the dirty scheduler could use
the wrong thread specific data which could lead to a
crash.
* erts: Fixed a more or less harmless bug that caused time
correction of Erlang monotonic time to become slightly
off on Windows platforms when QueryPerformanceCounter()
was used as OS monotonic time source.
erlang:system_info(os_monotonic_time_source) now also
returns information about used resolution which not
always corresponds to the resolution of the OS
monotonic time source.
* erts: When using IPv6, classic gen_udp failed to add (group)
membership (drop was used instead).
* erts: Fix bug on Windows where "Unknown event: 2" would be
printed to the console.
* erts: Checks for monotonicity of monotonic time have been
improved so that Erlang and OS monotonic time are
checked separately.
* erts: For severe errors, when the `socket` module terminates
the Erlang VM, now an erl_crash.dump is produced, to
facilitate post mortem debugging.
* kernel: When using IPv6, classic gen_udp failed to add (group)
membership (drop was used instead).
* kernel: The check in inet_res of the RD bit has been relaxed
slightly.
* ssh: With this change, owner and group file attributes
decoding is fixed and results with value of integer
type.
* ssl: Cleanup and close all connections in DTLS when the
listen socket owner dies.
Improved IPv6 handling in DTLS.
* ssl: Fixed a crash in dtls accept.
* stdlib: Attempting to use the maybe construct in a macro
argument could crash the compiler.
- Changes for 26.2.3
* otp: Quote uninstall path in registry when installing on
windows.
* compiler: In rare circumstances, an unsafe optimization could
cause the compiler to generate incorrect code for list
matching.
* compiler: Fix the compilation server to restart if the
applications in its lib dir changes inbetween erlc
invokations.
* crypto: Fix compile error when OPENSSL_NO_DES is defined.
* crypto: The function crypto:pbkdf2_hmac will no longer block
the main schedulers. If the iteration count or block
size parameters are such that the function is likely to
take a long time to execute, the function will be
scheduled to run on a dirty CPU scheduler.
* erts: Fixed compile warning in erl_nif.c for gcc-13.
* erts: Fix C++ compile error for macros enif_select_read and
friends.
* erts: Fixed a name clash on Solaris that prevented the JIT
from being built.
* erts: Fix termcap detection on solaris.
* erts: Fix heap corruption bug that could cause runaway memory
consumption due to circular offheap list at process
exit. Other symptoms may also be possible. Bug exists
since OTP 25.0.
* erts: Do not clear tracing in old module instance if load
fails with 'not_purged'.
* erts: When exceeding the `max_heap_size` limit in a garbage
collection initiated by some bit syntax operations, the
process would not always terminate immediately.
* erts: The code server could be hanging if a module with
on_load function was loaded at the same time as another
module was purged using erlang:purge_module directly.
* erts: A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That
is, the processes was not woken up to take care of the
signal, so the signal would not be taken care of until
the process was woken by another signal. Only processes
configured with message_queue_data set to off_heap
utilize this optimization.
* erts: Fix segfault when generating crashdump containing a fun
places in persistent_term storage.
* erts: By default the JIT is disabled on Intel Macs, because
of annoying poups on macOS Sonoma. It is now possible
to explicitly enable the JIT on Intel Macs. Here is
how: ./configure --enable-jit
* kernel: Fix performance bug when using io:fread to read from
standard_io. This regression was introduced in OTP
26.0.
* kernel: A bug in the code server could cause it to crash in
some concurrent scenarios. This bug was introduced in
26.1.
* kernel: Fixed gen_udp:open/2 type spec to include already
supported module socket address types.
* kernel: Fix reading of password for ssh client when in
user_interactive mode.
* odbc: Use spec for API doc
* public_key: Hostname prefix with X number of dots should not be
accepted.
* ssh: With this change, acceptor_sup is not started for ssh
client as it is not needed in that role.
* ssh: With this change, more secure algorithms are preferred
by ssh and documentation is updated to reflect that.
* ssh: With this change, KEX strict terminal message is
emitted with debug verbosity.
* ssh: Fix reading of password for ssh client when in
user_interactive mode.
* ssl: ssl:prf/5, will start working instead of hanging in a
TLS-1.3 context if called appropriately. Note that the
implementation has changed and in OTP-27 a more
adequate API will be documented.
* ssl: Server name verification didn't work if a connection
was made with IP-address as a string.
* ssl: The fallback after "dh" ssl option was undefined was to
get "dh" from ssl options again. This is clearly wrong
and now changed to the documented fallback "dhfile" ssl
option.
* ssl: Correct default value selection for DTLS. Will only
affect users linked with really old version of
cryptolib library.
* ssl: Adhere elliptic curves with RFC 8422 pre TLS-1.3, that
is Edwards curves are added to curves that can be used
for key exchange, and documentation and implementation
of eccs/0,1 are aligned.
* ssl: Improve alert reason when ecdhe_rsa key_exchange does
not have any common curves to use
* stdlib: The help texts shown by argparse will now display
sub-command arguments in the correct order.
* stdlib: Clarified the argparse documentation regarding the
user-defined help template.
* stdlib: Fix shell expansion to not crash when expanding invalid
using invalid atoms.
* wx: Add option to silence wx depracation macros.
- Changes for 26.2.2
* common_test: Fix how CT finds Erlang/OTP releases for compatability
testing. This functionality is only used to test
Erlang/OTP.
* erl_interface: Fix bug where the system installed openssl/md5.h would
be confused with the vendored md5.h.
* erts: 32-bit runtime systems on most Unix like platforms
could crash if a BIF timer was set with a huge timeout
of more than 68 years into the future. In order for the
crash to occur, the huge timer (at a later time than
when it was set) had to become the nearest active timer
set on the specific scheduler on which it was set. This
could not happen on a system with only one scheduler
since there would always be shorter timers in the
system.
Setting a timer larger than 49 days on Windows could
under rare circumstances cause the timeout to be
delayed.
* erts: Fix bug where the system installed openssl/md5.h would
be confused with the vendored md5.h.
* erts: The JIT has now been disabled on x86 Macs to prevent
annoying the "verifying shm-xyz" popups introduced in
MacOS Sonoma.
ARM Macs are unaffected.
* erts: Garbage collection of a process on a dirty scheduler
could collide with signal handling for that process
causing a crash of the runtime system. This bug was
introduced in OTP 25.3.2.8 and OTP 26.2.
* kernel: Fix group (that is the shell) to properly handle when
an get_until callback function returned {done, eof, []}
when an eof was detected.
* ssh: With this change, Curve25519 and Curve448 KEX methods
become most preferred (related to RFC8731).
* ssl: Legacy name handling could cause interop problems
between TLS-1.3/1.2 client and TLS-1.2 server.
- Fix for bsc#1222591
* Thu Feb 22 2024 Dominique Leuenberger <dimstar@opensuse.org>
- Use %patch -P N instead of deprecated %patchN.
* Tue Jan 23 2024 Simon Lees <sflees@suse.de>
- Disable rpmlint tests on SLE-15 where they currently fail
* Tue Jan 23 2024 Simon Lees <sflees@suse.de>
- This codestream wasn't affected by bsc#1207113
* Thu Jan 11 2024 Simon Lees <sflees@suse.de>
- Changes for 26.2.1:
* erts: Removed unnecessary PCRE source tar-ball.
* ssh: With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'chacha20-poly1305@openssh.com' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH. (bsc#1218192, CVE-2023-48795)
- Changes for 26.2:
* all: Replaced unintentional Erlang Public License 1.1
headers in some files with the intended Apache License
2.0 header.
* otp: The removal of the deprecated slave module, originally
planned for OTP 27, has been postponed to OTP 29.
* asn1: Fix benign warning from gcc 11 about mismatching call
to free().
* crypto: Enable engine support for OpenSSL versions 3.
* edoc: Emit <code> instead of <tt>.
- Disable test suite for now, it has many false positives and
takes a very long time.
* Wed Oct 25 2023 matwey.kornilov@gmail.com
- Changes for 26.1.2:
* erts: If the external term format encoding of an argument list
part of a distributed spawn operation was faulty, the newly
spawned remote process could misbehave. The misbehavior
included hanging or interpret an incoming message as an
argument list to use. This was very unlikely to happen unless
using an alternate implementation of the distribution protocol
which made a faulty encoding of the argument list. The child
process will now detect this error and terminate before
executing the user specified code.
* erts: Fix bugs where if the body of a matchspec would return a
map with a variable ('$1', '$_' etc) as one of the keys or
values and the variable was not an immidiate, the term would
not be copied to the receiving processes heap. This would later
corrupt the term in the table as the GC could place move
markers in it, which in turn would cause the VM to crash. Bug
has been present for since OTP 17.0.
* xmerl: The xmerl version 1.3.32 was released in OTP 26.0.1, but
the incorrect version number of 1.3.31.1 was used for it. This
incorrect version number continued to appear in OTP 26.0.2, OTP
26.1, and OTP 26.1.1. The actual xmerl code in these OTP
versions however corresponds to xmerl version 1.3.32.
- Changes for 26.1.1:
* wx: The wx application would fail to build on macOS with Xcode
15.
* compiler: The compiler could become extremely slow for modules
containing huge functions.
* stdlib: Garbage collect the shell process when reducing the
amount of saved history and results.
- Changes for 26.1:
* crypto: Fix VM crash caused by crypto being purged and reloaded
(by init:restart for example) on OS with musl libc (such as
Alpine linux).
* crypto: Improved understanding of LibreSSL versions. Support
chacha20 and chacha20_poly1305 for LibreSSL 3.7. Reflect
removal of support for the DSS/DSA algorithm which was done in
LibreSSL 2.6.1.
* crypto: FIPS supported by crypto for OpenSSL 3.0.* and 3.1.*.
* asn1: The ASN.1 compiler would ignore a constraint such as
(SIZE (1..4), ...), causing incorrect behavior of the encoding
and decoding function for the PER and UPER backends. Corrected
to handle the constraint in the same way as (SIZE (1..4, ...)).
* asn1: The JER backend has been internally refactored in a way
that is compatible for applications that use the documented
API. However, for a group of ASN.1 modules that depend on each
other (for example, S1AP-PDU-Descriptions, S1AP-Contents, and
so on), all modules in the group must be recompiled if on of
the group members is recompiled.
* observer: Closing the trace log window via the menu did not
work.
* erts: maps:put with existing key and identical value was not
optimized as a no-op correctly if having the same 32-bit hash
as another key in the map. In practice very rare and harmless.
* erts: Fixed an issue with truncated crash slogans on failed
emulator start.
* erts: Fixed a bug where the emulator was unable to determine
the current cgroup CPU quota.
* erts: A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That is, the
processes was not woken up to take care of the signal, so the
signal would not be taken care of until the process was woken
by another signal. Only processes configured with
message_queue_data set to off_heap utilize this optimization.
* erts: Function socket:close/1 could cause a VM crash on
Windows.
* erts: Fixed a bug in the ARM JIT where it could accidentally
add garbage trailing bits when creating bitstrings whose size
wasn't an even multiple of 8 bits.
* erts: Fix erlang:system_info/1 documentation to show correct
types.
* erts: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* erts: Fix compilation with GNU termcap.
* erts: Delivery time of message signals to a process not
executing any receive expressions could become very long,
potentially infinite. For example, a process checking for
messages using process_info(self(), message_queue_len) or
process_info(self(), messages) and avoiding to execute a
receive expression matching on messages could be very slow in
detecting new messages. Note that you are still discouraged
from using process_info() this way. A process that wants to
check if there are messages available to handle should execute
a receive expression matching on messages.
* erts: On AArch64 (ARM64), when calculating both the quotient
and remainder with a divisor begin a power two, the remainder
could be incorrectly calculated.
* erts: Fix bug causing "magic" references in a compressed ETS
table to not keep the referred object alive. The symptom would
be the referred object being garbage collected prematurely and
the reference appearing stale, not referring to anything.
Examples of such magically referred objects are atomics and NIF
resources.
* erts: Matching out short bitstrings with a fixed size not
divisible by 8 could could lead to the runtime system
terminating with an "Overrun heap and stack" error.
* erts: A constant flow of incoming non-message signals could
prevent a process needing to execute dirty from doing so.
* erts: A BEAM file usually contains a chunk with the tag "Type"
containing type information that can be used by the JIT. The
beam_lib:strip/1 takes care to preserve that chunk, but a
build/release tool that does customized stripping could
accidentally remove the chunk. Loading a BEAM file without the
"Type" chunk could cause incorrect behavior of the loaded code.
* erts: gen_udp:recv/* for Unix Domain Socket in binary mode and
passive mode has been fixed to not crash.
* erts: The cleanup operation of not yet delivered signals to a
terminated process yielded excessively.
* erts: Fixed minor hashing issue with the local option of
term_to_binary()/term_to_iovec().
* erts: Update gen_tcp_socket and gen_udp_socket to handle
'completion' (socket on Windows).
* erts: Add support for Unix Domain Sockets (only for STREAM
sockets) on Windows for 'socket'.
* erts: In Erlang/OTP 27, by default escripts will be compiled
before being executed. That means that the compiler application
must be installed. It is possible to force the escript to be
interpreted by adding the directive -mode(interpret). to the
escript file. In Erlang/OTP 28, support for interpreting an
escript will be removed.
* erts: Add basic support for socket ioctl on Windows.
* erts: Removed erts/etc/darwin/Info.plist, as it is no longer
necessary after macos 10.12
* erts: Add support for (Windows) socket option exclusiveaddruse.
* erts: [socket] Add support for the 'nopush' option.
* erts: Add support for socket option 'BSP STATE'.
* erts: Add tcp socket options 'keepcnt', 'keepidle' and
'keepintvl'.
* erts: Add support for misc (Windows) socket options
('max_msg_size' and 'maxdg').
* compiler: The compiler could run forever when compiling a call
to is_record/3 with a huge positive tuple size. The call
is_record(A, a, 0) would crash the compiler when used in a
function body. When used in a guard the compiler would emit
incorrect code that would accept {a> as a record.
* compiler: Fixed a bug that caused dialyzer to crash when
analyzing bogus code that contained the literal atom undefined
in segment sizes.
* compiler: The compiler would crash when compiling some modules
that contained a call to erlang:load_nif/2.
* compiler: Fixed a bug that caused the compiler to crash on
legal code.
* compiler: The compiler could crash when attempting to compile a
call to is_list/1 in a complex expression.
* compiler: A complex guard expression using the or operator
could succeed when it was supposed to fail.
* compiler: Compiling nested try/catch and catch expression could
result in an internal compiler error.
* compiler: Using the bnot operator in a complex expression could
cause the compiler to terminate with an internal consistency
failure diagnostic.
* compiler: Fixed a bug that caused the compiler to crash in a
binary optimization pass.
* compiler: The compiler could terminate with an internal error
when attempting to compile a binary pattern that could not
possibly match.
* compiler: Fixed various performance issues related to the alias
optimization pass.
* erl_docgen: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* mnesia: Do not delete old backup file if the new backup fails.
* megaco: Make megaco transports handle gen_tcp | gen_udp with
socket backend on Windows (completion).
* common_test: With this change, ct_hooks manual refers to CTH
execution order section in user guide.
* common_test: With this change, Config data from
pre_end_per_testcase hook is delivered to post_end_per_testcase
callback in case of testcase timetrap or linked process crash.
* common_test: With this change, remaining references to not
supported vts tool in ct_run are removed (mainly relates to
docs and ct_run help message).
* common_test: With this change, prompt search functionality in
ct_telnet handles unicode input.
* common_test: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* stdlib: The compiler could run forever when compiling a call to
is_record/3 with a huge positive tuple size. The call
is_record(A, a, 0) would crash the compiler when used in a
function body. When used in a guard the compiler would emit
incorrect code that would accept {a> as a record.
* stdlib: Fix bug in ets:tab2file that could make it fail if
another Erlang process created the same file at the same time.
* stdlib: An {else_clause,Value} exception will now be reported
nicely in the shell.
* stdlib: Correct return value for error case, so that it matches
the documented and intended return value {error,
{already_started, pid()} when local registered names are used.
* stdlib: sys:get_state/1,2 and sys:replace_state/2,3 has been
corrected to handle a state named error as a state name, not as
a failed system callback. For the standard server behaviours
this was an issue only for gen_statem (and gen_fsm) when the
state name was error, and for gen_server if the complete state
was {error,_}.
* stdlib: Multiple problems were fixed in
filelib:safe_relative_path/2. If its second argument was a path
that contained symbolic links, an incorrect result patch could
be returned. Also, paths were sometimes falsely considered
unsafe.
* stdlib: Fix deadlock when erl.exe is used as part of a pipe on
Windows and trying to set the encoding of the standard_io
device.
* stdlib: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* stdlib: Fix h/2,3 to properly render multi-clause
documentation.
* stdlib: Timers created by timer:apply_after/4,
apply_interval/4, and apply_repeatedly/4 would silently fail to
do the apply if it was not possible to spawn a process when the
timer expired. This has now been corrected, and if the spawn
fails, the system will be taken down producing a crash dump.
* stdlib: When an Erlang source file lacked a module definition,
there would be a spurious "module name must not be empty"
diagnostic for each spec in the file.
* stdlib: The argument descriptions for option types in argparse
have been made less ambiguous.
* stdlib: Clarified the documentation of normal shutdown reason
on gen_server:call/2,3
* stdlib: Pattern matching and equivalence (=:=, =/=) comparisons
on 0.0 will now raise a warning, as it will no longer be
considered equivalent to -0.0 in OTP 27. If a match on 0.0
specifically is desired (distinct from -0.0), the warning can
be suppressed by writing +0.0 instead. The arithmetic
comparison operators are unaffected, including arithmetic
equality (==). *** POTENTIAL INCOMPATIBILITY ***
* stdlib: The semantics of the gen_{server,statem,event}
behaviour's synchronous start behaviour introduced in OTP-26.0
with OTP-18471, has been clarified in the documentation.
* stdlib: Added functionality to set a custom multiline prompt.
* stdlib: A warning for (accidental use of) Triple-Quoted Strings
has been implemented as per EEP 64. *** POTENTIAL
INCOMPATIBILITY ***
* stdlib: The keyboard shortcuts for the shell are now
configurable.
* kernel: Fixed an issue with truncated crash slogans on failed
emulator start.
* kernel: Fix shell:start_interactive function specification.
* kernel: Fix code:get_doc/1 to return missing, when it can't
find erts instead of crashing.
* kernel: Function socket:close/1 could cause a VM crash on
Windows.
* kernel: Fix deadlock when erl.exe is used as part of a pipe on
Windows and trying to set the encoding of the standard_io
device.
* kernel: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* kernel: Fix logger's overload protection mechanism to only
fetch memory used by messages when needed.
* kernel: Fixed a number of socket-related issues causing
incompatibilities with gen_tcp and gen_udp respectively.
* kernel: gen_tcp:connect with socket address and socket (inet-)
backend fails because of missing callback function.
* kernel: The DNS RR cache used by `inet_res` has been fixed to
preserve insert order, which is beneficial when the DNS server
returns RRs in some specific order for e.g load balancing
purposes.
* kernel: The options `reuseport`, `reuseport_lb` and
`exclusiveaddruse` were accidentally not allowed for e.g
`gen_udp:open/1,2`, which has now been corrected.
* kernel: gen_udp:recv/* for Unix Domain Socket in binary mode
and passive mode has been fixed to not crash.
* kernel: Fixed issue where cursor would not be placed at the end
of the expression when navigating shell history.
* kernel: Update gen_tcp_socket and gen_udp_socket to handle
'completion' (socket on Windows).
* kernel: Add support for Unix Domain Sockets (only for STREAM
sockets) on Windows for 'socket'.
* kernel: Add basic support for socket ioctl on Windows.
* kernel: The file:location/0 type is now exported.
* kernel: Add support for (Windows) socket option
exclusiveaddruse.
* kernel: [socket] Add support for the 'nopush' option.
* kernel: Add support for socket option 'BSP STATE'.
* kernel: Add tcp socket options 'keepcnt', 'keepidle' and
'keepintvl'.
* kernel: Add support for misc (Windows) socket options
('max_msg_size' and 'maxdg').
* kernel: The keyboard shortcuts for the shell are now
configurable.
* kernel: Optimized code_server to reduce repeated work when
loading the same module concurrently.
* debugger: The call int:no_break(Module) did not remove any
breakpoints.
* debugger: The maybe expression is now supported in the
Debugger.
* debugger: The maybe expression is now supported in the
Debugger.
* debugger: The call int:no_break(Module) did not remove any
breakpoints.
* ssl: Avoid function clause error in ssl:getopts/2 by handling
that inet:getopts may return an empty list during some
circumstances, such as the socket being in a closing state.
* ssl: The API function `ssl:recv/3` has been tightened to
disallow negative length, which has never been documented to
work, but was passed through and caused strange errors.
* ssl: When a client initiated renegotiation was rejected and the
client socket was in active mode the expected error message to
the controlling process was not sent.
* ssl: Add some guidance for signature algorithms configuration
in ssl applications users guide.
* snmp: Make snmp handle gen_udp with socket backend on Windows
(completion).
* public_key: Country name comparison shall be case insensitive
* public_key: Add check to disallow duplicate certs in a path
* inets: With this change, re_write httpd works as expected and
does not return error.
* inets: Fixed a bug so httpd does not crash when stopped at the
wrong time during TLS connection negotiation, or any other
theoretically as slow connection setup.
* inets: Enhance error handling and avoid that the HTTP client
hangs on headers provided on the wrong format.
* inets: With this change, error report generated by httpd during
connection setup contains socket type information.
* inets: Stop and restart of the httpd server in the Inets
application has been refactored to a more synchronous and OTP
supervisor friendly approach. This should increase stability
and for example avoid a supervisor report from
httpd_connection_sup about killed child process(es) in some
cases when stopping or restarting httpd.
* dialyzer: Fixed a bug that caused dialyzer to crash when
analyzing bogus code that contained the literal atom undefined
in segment sizes.
* dialyzer: Dialyzer could crash when attempting to analyze a
module that defined a type called product/.
- Changes for 26.0.2:
* erts: Fix using the IME (Input Method Editor) to enter text in
cmd.exe and powershell.exe on Windows.
* erts: Multiple socket:accept calls issue. When making multiple
accept calls, only the last call is active.
* erts: Fix the shell to ignore terminal delay when the terminal
capabilities report that they should be used.
* erts: Fix "oldshell" to echo characters while typing on
Windows.
* erts: On Windows, a call to the function socket:close, when
there are waiting active calls to read, write or accept
functions, could hang.
* erts: Fix issues when reading or configuring standard_io on
Windows when erl.exe is started using -noshell flag.
* erts: The following functions are now much faster when given a
long list or binary:
* erts: On AArch64 (ARM64), equality and non-equality tests with
literal bitstrings could succeed when they should fail and vice
versa.
* compiler: Fixed a type handling bug that would cause an
internal consistence failure for correct code.
* compiler: Fixed a bug that could cause the stack trace of throw
exceptions to be erroneously optimized out.
* compiler: Complex guard expression using 'or' were not always
fully evaluated, making guards that were supposed to fail
succeed.
* stdlib: Fix bug where when you entered Alt+Enter in the
terminal, the cursor would move to the last line, instead of
moving to the next line.
* stdlib: Fix eof handling when reading from stdin when erlang is
started using -noshell.
* stdlib: Fixed problem where output would disappear if it was
received after a prompt was written in the shell.
* stdlib: The following functions are now much faster when given
a long list or binary:
* kernel: Fix bug where when you entered Alt+Enter in the
terminal, the cursor would move to the last line, instead of
moving to the next line.
* kernel: Fix so that the shell does not crash on startup when
termcap is not available.
* kernel: Multiple socket:accept calls issue. When making
multiple accept calls, only the last call is active.
* kernel: Fix the shell to ignore terminal delay when the
terminal capabilities report that they should be used.
* kernel: Fix "oldshell" to echo characters while typing on
Windows.
* kernel: Fix eof handling when reading from stdin when erlang is
started using -noshell.
* kernel: On Windows, a call to the function socket:close, when
there are waiting active calls to read, write or accept
functions, could hang.
* kernel: Fix issues when reading or configuring standard_io on
Windows when erl.exe is started using -noshell flag.
* kernel: gen_udp:connect with inet_backend = socket fails when
the Address is a hostname (string or atom).
* kernel: Fixed problem which would cause shell to crash if
particular escape sequence was written to stdout.
* kernel: Fixed problem where output would disappear if it was
received after a prompt was written in the shell.
* kernel: Fix a crash where the location of erts could not be
found in rebar3 dev builds.
* kernel: Introduce the KERNEL application parameter
standard_io_encoding that can be used to set the default
encoding for standard_io. This option needs to be set to latin1
if the application wants to treat all input data as bytes
rather than utf-8 encoded characters.
* ssl: Added keylog information to all protocol versions in
ssl:connection_information/2.
* ssl: Add RFC-6083 considerations for DTLS to enable gen_sctp
based callback for the transport.
* ssh: Added multiline editing support to ssh clients connected
through OTP ssh daemon.
* Sat Jun 24 2023 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 26.0.1:
* erts: Build of the socket nif failed on Solaris 11.
* erts: Fixed two reduction-counting bugs relating to binaries.
* erts: Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with a value
not fitting in a 64-bit word could crash the runtime system.
* erts: When a binary construction failed because of bad size for
a segment, the error information was not always correct.
* erts: Fixed a crash when calling a fun that was defined in a
module that had been upgraded.
* kernel: The POSIX error exdev was sometimes incorrectly
described as "cross domain link" in some error messages.
* kernel: Corrected the socket send function description (send
with Timeout = nowait). The send function(s) could not return
{ok, {RestData, SelectInfo}}
* stdlib: The POSIX error exdev was sometimes incorrectly
described as "cross domain link" in some error messages.
* ssl: Make sure that selection of client certificates handle
both TLS-1.3 and TLS-1.2 names correctly. Could cause valid
client certificate to not be selected, and an empty client
certificate message to be sent to server.
* ssl: Improved ssl:format_error/1 to handle more error tuples.
* ssl: Fixed hanging ssl:connect when ssl application is not
started.
* ssl: Correct handling of retransmission timers, current
behavior could cause unwanted delays.
* inets: Do not make the default ssl options by calling
httpc:ssl_verify_host_options(true) if ssl options are supplied
by the user.
* xmerl: New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some XML
security issues. xmerl_scan gets one new option:
xmerl_sax_parser gets the following options: The old option
skip_external_dtd is still valid and the same as
{external_entities, none} and {fail_undeclared_ref, false} but
just affects DTD's and not other external references.
* compiler: Fixed a bug where a failing bsl expression in a guard
threw an exception instead of causing the guard to fail.
* compiler: Fixed a bug that would case the validator to reject
legal code.
* compiler: The compiler could re-order clauses matching binaries
so that the incorrect clause would match. That could only
happen for code that used the option {error_location,line} or
for code without line or column number information (e.g.
generated by a parse transform).
* compiler: Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled so that
the guard would succeed even if a call to a guard BIF failed.
* compiler: With optimizations disabled, a try/catch construct
could return an incorrect value.
* compiler: In rare circumstance, a combination of binary
construction and binary_part/3 would cause the compiler to
generate unsafe code that would crash the runtime system.
* compiler: The compiler could be very slow when compiling guards
with multiple guard tests separated with 'or' or ';'.
* compiler: Complex guard expressions using 'or' and map updates
could succeed even if the map update failed.
* Sat Jun 24 2023 Matwey Kornilov <matwey.kornilov@gmail.com>
- Version 26.0:
* Leex has been extended with optional column number support.
* The family of enumeration functions in module lists has been
extended with enumerate/3 that allows a step value to be
supplied.
* Update Unicode to version 15.0.0.
* proc_lib:start*/* has become synchronous when the started
process fails. This requires that a failing process use a new
function proc_lib:init_fail/2,3, or exits, to indicate failure. All
OTP behaviours have been fixed to do this.
* auto-complete of variables, record names, record fields names,
map keys, function parameter types and filenames.
* Open external editor in the shell to edit the current
expression.
* defining records (with types), functions, specs and types in
the shell.
* 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.
* 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 and maps: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 and K for the format
string in io:format() to support printing map elements ordered.
* 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.
* 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 and enif_get_string_length.
* The BIFs min/2 and max/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.
* 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
and exclusiveaddruse.
* 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.
* 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 the CRC32
checksum from an opened ZIP archive. gen_server optimized by
caching callback functions
* The 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.
* 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 and DSA algorithms are no longer
among the default values.
* Add encoding and decoding of use_srtp hello extension to
facilitate for DTLS users to implement SRTP functionality.
* Fri Jun 23 2023 matwey.kornilov@gmail.com
- Changes for 25.3.2.2:
* compiler: The compiler could be very slow when compiling guards
with multiple guard tests separated with 'or' or ';'.
- Changes for 25.3.2.1:
* xmerl: New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some XML
security issues. xmerl_scan gets one new option:
xmerl_sax_parser gets the following options: The old option
skip_external_dtd is still valid and the same as
{external_entities, none} and {fail_undeclared_ref, false} but
just affects DTD's and not other external references.
* erts: Fixed a crash during tracing on certain platforms that
cannot use the machine stack for Erlang code (mainly OpenBSD
and Linux with musl).
* erts: Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with a value
not fitting in a 64-bit word could crash the runtime system.
* erts: Further robustify implementation of large maps (> 32
keys). Keys that happen to have same internal 32-bit hash
values are now put in collision nodes which are traversed with
linear search. This removes the demand for the internal hash
function when salted to eventually produce different hashes for
all possible pairs of unequal terms.
* stdlib: Static supervisors are very idle processes after they
have started so they will now be hibernated after start to
improve resource management.
* compiler: Fixed a bug where a failing bsl expression in a guard
threw an exception instead of causing the guard to fail.
* compiler: Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled so that
the guard would succeed even if a call to a guard BIF failed.
* Sun May 07 2023 matwey.kornilov@gmail.com
- Changes for 25.3.2:
* compiler: Fixed type handling bugs that could cause an internal
error in the compiler for correct code.
* os_mon: Avoid error report from failing erlang:port_close at
shutdown of cpu_sup and memsup. Bug exists since OTP 25.3
(os_mon-2.8.1).
* erts: If a runtime system which was starting the distribution
already had existing pids, ports, or references referring to a
node with the same nodename/creation pair that the runtime
system was about to use, these already existing pids, ports, or
references would not work as expected in various situations
after the node had gone alive. This could only occur if the
runtime system was communicated such pids, ports, or references
prior to the distribution was started. That is, it was
extremely unlikely to happen unless the distribution was
started dynamically and was even then very unlikely to happen.
The runtime system now checks for already existing pids, ports,
and references with the same nodename/creation pair that it is
about to use. If such are found another creation will be chosen
in order to avoid these issues.
- Changes for 25.3.1:
* snmp: Attempts to minimize the number of the error reports
during a failed agent init.
* compiler: When a map update such as #{}#{key:=value} that
should fail with an exception was unused, the exception would
be lost.
* compiler: Fixed bug in the validator that made it reject valid
code.
* crypto: With this change, random errors are fixed for
crypto:generate_key calls with OpenSSL 3.
* erts: Fixed a bug in the loader that prevented certain modules
compiled with no_ssa_opt from being loaded.
* erts: Implementations of the call() driver callback that
returned a faulty encoded result could cause a memory leak and
could cause invalid data on the heap of the processes calling
erlang:port_call/3.
* erts: Fixed a memory corruption issue when upgrading code. The
bug was introduced in OTP 25.3
* erts: Fixed configure tests for a few ARM-specific
instructions, which prevented the emulator from being built on
some platforms.
* erts: Aliases created in combination with a monitor using the
{alias, explicit_unalias} option stopped working from remote
nodes when a 'DOWN' signal had been received due to the monitor
or if the monitor was removed using the erlang:demonitor() BIF.
This bug was introduced in OTP 24.3.4.10 and OTP 25.3.
* erts: In rare circumstances, bit syntax matching of an invalid
code point for a utf32 would crash the runtime system.
* erts: Building the runtime system failed when native atomic
support was missing. Note that execution on such systems have
only been rudimentary tested.
* erl_interface: Fixed configure tests for a few ARM-specific
instructions, which prevented the emulator from being built on
some platforms.
* eldap: Added a new function eldap:info/1 that returns the
socket and the transport protocol for the eldap connection.
* inets: Correct timing related pipelining/keepalive queue bug,
that could result in unexpected "socket_remotly_closed" errors.
* inets: With this change, upon remote socket closure current
request is added to a retried queue (either pipeline or
keep_alive, but not both).
* ssl: With this change, ssl:connection_information/2 returns
correct keylog data after TLS1.3 key update.
* ssl: Client signature algorithm list input order is now honored
again , it was accidently reversed by a previous fix.
* stdlib: The type specs in the erl_parse module has been updated
to include the maybe construct and the ! operator.
* wx: Improve debug prints from the nifs. Some minor fixes for
wxWidgets-3.2. Fixed OpenGL debug functions.
* Sat Mar 25 2023 matwey.kornilov@gmail.com
- Changes for 25.3:
* reltool: Fixed a bug that would cause analysis to crash.
* stdlib: Fixed a bug that would cause analysis to crash.
* stdlib: Fixed a crash when formatting stack traces for error
reports.
* stdlib: Instead of crashing, the list_to_integer/1 and
list_to_integer/2 BIFs now raise the system_limit exception for
overlong lists that can't be converted to integers. Similarly,
the string:to_integer/1 BIF now returns {error,system_limit}
for overlong lists.
* stdlib: Removal of non-necessary undefined types added to the
state's supervisor record.
* compiler: Fixed a bug that would cause the compiler to hang.
* compiler: Fixed a crash when compiling code that contained
maybe expressions.
* compiler: Constructing a binary with an explicit size of all
for a binary segment would crash the compiler.
* compiler: The compiler would generate incorrect code for the
following type of expression: Pattern = BoundVar1 = . . . =
BoundVarN = Expression An exception should be raised if any of
the bound variables have different values than Expression. The
compiler would generate code that would cause the bound
variables to be bound to the value of Expressionwhether the
value matched or not.
* xmerl: 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.
* megaco: 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.
* debugger: Fixed a bug that would cause analysis to crash.
* erts: Fixed a bug on Windows where file:read_file_info/1 would
fail for files with corrupt metadata.
* erts: Fix process_info(_, binary) to again include "writable
binaries" which were lost in OTP-25.0. Writable binaries are an
optimization used when binaries are appended upon in a loop.
* erts: Fix rare race when receiving fragmented messages on a
terminating connection. Could potentially cause memory leaks as
well as double free crashes. Bug exists since OTP 22.0.
* erts: Fixed bug that could maybe cause problems when a file
descriptor number is closed by a linked in driver and then
opened (reused) and passed to enif_select by a NIF. No actual
symptoms seen, only failed internal assertions in debug build.
* erts: The runtime system could crash when tracing a process
executing on a dirty scheduler.
* erts: In the binary syntax, attempting to match out integers
with size exceeding 2 GiB could crash the runtime system.
* erts: Fixed edge case in floating-point negation where A = 0.0,
B = -A did not produce B = -0.0 on x86_64 JIT.
* erts: Fixed an issue in the JIT that could crash the emulator
on some platforms.
* erts: Added meta data to the windows installer.
* erts: Fixed ETS insertion order into bag and duplicate_bag of
tuples with identical keys when passed in a list to
ets:insert/2. The insert order has been head-to-tail but was
accidentally changed in OTP 23.0. For bag it was reverted
(tail-to-head), while for duplicate_bag it was sometimes
reverted depending on the length of the list and number of
"reductions" left for the calling process. This fix changes the
insert order of ets:insert/2 back to always be head-to-tail of
the list argument.
* erts: With the JIT for AArch64 (AMD64), calling bxor in with
non-integer arguments in a guard would crash the runtime
system.
* erts: Fix bug regarding process flag max_heap_size. Could cause
strange behavior when a process was killed due to exceeding the
limit.
* erts: Fixed binary comprehensions to be similar to other
creation of binary data with respect to its contribution of
triggering garbage collection.
* erts: In rare circumstances, when a process exceeded its
allowed heap size set by option max_heap_size, it would not be
killed as it should be, but instead enter a kind of zombie
state it would never get out of.
* erts: Instead of crashing, the list_to_integer/1 and
list_to_integer/2 BIFs now raise the system_limit exception for
overlong lists that can't be converted to integers. Similarly,
the string:to_integer/1 BIF now returns {error,system_limit}
for overlong lists.
* erts: Active process aliases of a process at its termination
leaked memory.
* erts: Support for fully asynchronous distributed signaling
where send operations never block. This functionality is by
default disabled and can be enabled per process. For more
information see the documentation of process_flag(async_dist,
Bool).
* erts: Added the +JPperf no_fp option to explicitly disable
Erlang frame pointers otherwise added when using the +JPperf
map option.
* erl_interface: Accept connection setup from OTP 23 and 24 nodes
that are not using epmd.
* erl_interface: 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.
* syntax_tools: erl_syntax_lib:annotate_bindings/1,2 will now
properly annotate named functions and their arguments.
* kernel: Fixed a bug on Windows where file:read_file_info/1
would fail for files with corrupt metadata.
* kernel: Accept connection setup from OTP 23 and 24 nodes that
are not using epmd.
* public_key: As different solutions of verifying certificate
revocation exists move the decode of 'CRLDistributionPoints' so
that it will only be decode. When it is actually used in the
verification process. This would enable interoperability with
systems that use certificates with an invalid empty
CRLDistributionPoints extension that they want to ignore and
make verification by other means.
* public_key: public_key:pkix_path_validation validates
certificates expiring after 2050
* public_key: Do not leave exit message in message queue after
calling cacerts_load() on MacOS.
* public_key: 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.
* ssl: Fixed that new dtls connections from the same client ip
port combination works. If there is a process waiting for
accept the new connection will connect to that, otherwise it
will try to re-connect to the old server connection.
* ssl: When shutting down a node that uses SSL distribution
(-proto_dist inet_tls), a confusing error message about an
unexpected process exit was printed. This particular message is
no longer generated.
* ssl: fixes the type spec for ssl:format_error/1
* ssl: 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.
* jinterface: Accept connection setup from OTP 23 and 24 nodes
that are not using epmd.
* os_mon: The port programs used by cpu_sup and memsup are now
gracefully shut down when cpu_sup and memsup are shut down.
* eunit: 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.
* crypto: A user defined runtime library path configured using
- -with-ssl-rpath=<PATHS> could fail to be enabled.
* crypto: Ensure that configure fails if a user defined runtime
library path has been passed by the user, but cannot set.
* mnesia: Improved consistency for dirty writes when a table was
added with add_table_copy/3. Fixed a problem with sticky write,
which could lead to inconsistent data.
* mnesia: 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.
* common_test: Renamed undocumented macro CT_PEER/3 to
CT_PEER_REL/3.
* ssh: With this change, PKCS8 formatted private key file is
properly decoded and SSH daemon with such key can be started.
* ssh: 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.
* inets: With this change, handling of URI to a folder, with
missing trailing / and a query component present is fixed.
* inets: Adds more type information to the inets app, thus
improving the errors that static analysis tools can detect. The
addition of type information to records and the updates to
function heads help static analysis tools to understand that
some values in the records cannot be 'undefined', thus making
static tools to type check correctly more modules in the inets
app
* inets: 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.
* snmp: 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.
* ftp: 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.
* dialyzer: Fixed a bug that would cause analysis to crash.
* dialyzer: 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.
* tftp: 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.
- Changes for 25.2.3:
* erts: Comparisons between small numbers and pids or ports would
in some edge cases say that the number was greater than the pid
or port, violating the term order.
* erts: process_info(Pid, status) when Pid /= self() could return
an erroneous result.
* ssl: Maximize compatibility by ignoring change_cipher_spec
during handshake even if middle_box_mode is not negotiated
(mandated by client)
* ssl: Move assert of middlebox message after an
hello_retry_request to maximize interoperability. Does not
changes semantics of the protocol only allows unexpected
message delay from server.
* ssh: With this change, ssh application does not crash when
formatting some of info reports for unsuccessful connections.
* ssh: With this change, ssh does not log extensively long
messages.
* inets: Ensure graceful shutdown
* inets: Return type of the type specification for function
httpc:cookie_header/{1,2,3} has been fixed from -spec
cookie_header(url()) -> [{ field(), value() }] | {error,
Reason} to -spec cookie_header(url()) -> { field(), value() } |
{error, Reason}
- Changes for 25.2.2:
* ftp: Fixes calls to ftp:nlist/2 returning {error, epath} when
the file / folder exists
- Changes for 25.2.1:
* compiler: Fixed a bug that could cause legal code to fail
validation.
* compiler: Eliminated a rare crash in the beam_types module.
* erts: Fixed a bug in selective receive optimization that could
crash 32-bit emulators.
* erts: A race condition which was very rarely triggered could
cause the signal queue of a process to become inconsistent
causing the runtime system to crash.
* kernel: The tcp connect option 'bind_to_device' could not be
used with inet_backend = 'socket'. 'inet' requires value type
binarry() and 'socket' requires value type 'string()'.
* kernel: Minor issue processing options when calling
gen_tcp:connect with a sockaddr() and inet_backend = socket.
* common_test: Change timeout to infinity for gen_server calls in
cth_log_redirect
* inets: fixes a missing case of the type specification for
httpd:info/2/3/4
* snmp: Single threaded agent crash when vacm table not properly
initiated.
/usr/lib64/erlang/lib/debugger-6.0.3/src /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_debugged.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_icmd.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_idb.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_ieval.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_ieval.hrl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_iload.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_iserver.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_istk.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_break.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_break_win.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_code.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_filedialog_win.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_filedialog_win.hrl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_interpret.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_mon.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_mon_win.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_settings.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_src_view.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_trace.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_trace_win.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_view.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_win.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/dbg_wx_winman.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/debugger.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/i.erl /usr/lib64/erlang/lib/debugger-6.0.3/src/int.erl
Generated by rpm2html 1.8.1
Fabrice Bellet, Sat Mar 28 22:34:06 2026