* 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
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=142
* 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.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=141
https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines#Runtime_requirements
gracefully and not cause a crash.
* erts: The Kernel application's User's Guide now contains a
* Standard libraries: ssl: Correct handling of unordered chains so that it
* Tools: Emacs erlang-mode function that lets the user open the documentation
for an Erlang/OTP function in an Emacs buffer has been improved.
Users will be asked if they want the man pages downloaded if they are not present
large records to take a very long time to compile.
provoke since OTP-22.1.
- Drop priv/obj directories: boo#1140404
dropped since the receiving process no longer exists.
encoding.
diameter_dist.
fixed.
retain transport transparency.
source, the documentation was not properly updated.
read_packets are available on the socket.
of the URI is an IPv6 address.
depending on word size.
configuration change comes from set_handler_config/2,3
This fix will amend that flaw.
- Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception.
correctly to the socket for the SNMP Manager.
- Replace references to /var/adm/fillup-templates with new
* erts: Fixed segfault after writing an erl crash dump.
telnet client.
scaling.
passwords.
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=140
* 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
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=139
- 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.
- 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.
OBS-URL: https://build.opensuse.org/request/show/1204536
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=138
* 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,
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=137
- 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
OBS-URL: https://build.opensuse.org/request/show/1167972
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=136
- 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.
OBS-URL: https://build.opensuse.org/request/show/1138050
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=133
- 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:
OBS-URL: https://build.opensuse.org/request/show/1120360
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=132
- 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
OBS-URL: https://build.opensuse.org/request/show/1094953
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=131
- 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.
OBS-URL: https://build.opensuse.org/request/show/1085293
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=130
- 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,
OBS-URL: https://build.opensuse.org/request/show/1074311
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=129
- Changes for 25.2:
* erts: Fix perf/gdb JIT symbols to not contain CodeInfoPrologue
for the JIT internal module erts_beamasm.
* erts: Fixed minor memory leaks.
* erts: Fix bugs in ets:insert and ets:insert_new when called
with a list of tuples to insert while a concurrent process
either deletes or renames the table. The table deletion could
be done with ets:delete/1 or be caused by termination of the
table owning process. Symptoms are either VM crash or strange
incorrect behavior from the insert operation. The risk of
triggering the bugs increases with the length of the list of
tuple to insert. Bugs exist since OTP 23.0.
* erts: Boost execution of scheduled thread progress jobs. This
to prevent memory exhaustion in extremely rapid
allocation/deallocation scenarios, such as repeated ETS table
creations/deletions.
* erts: Fix segv crash during crash dumping an ETS table doing
ets:delete_all_objects.
* erts: Spec for function net:if_names/0 incorrect
* erts: Fix bug in binary_to_term decoding a binary term 2Gbyte
or larger.
* erts: Documentation of erlang:module_loaded/1 has been
adjusted:
* erts: Fix list_to_atom/1 for negative code points. Could either
return with a positive code point or fail with an incorrect
exception.
* erts: Fix rare bug causing VM crash when sending to a pid of a
spawning process returned from erlang:processes/0. Only seen
when provoked by system process literal_area_collector,
triggered by a module purge operation, on a VM started with
OBS-URL: https://build.opensuse.org/request/show/1043584
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=128
- Changes for 25.1.2:
* mnesia: Don't fill the logs if mnesia can't connect to all
nodes, due to partitioned network.
* erts: Add abandon carrier free utilization limit (+Muacful)
option to erts_alloc. This option allows the user to mark
unused segments in a memory carrier as re-useable by the OS if
needed. This functionality was a non-configurable default
before Erlang/OTP 25, but removed due to performance issues.
OBS-URL: https://build.opensuse.org/request/show/1037964
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=127
- Changes for 25.1.1:
* dialyzer: Dialyzer could crash when analyzing Elixir code that
used intricate macros.
* dialyzer: The --input_list_file option has been added.
* ssl: Fixes handling of symlinks in cacertfile option.
* eunit: With this change, eunit exact_execution option works
with application primitive.
* stdlib: peer nodes failed to halt when the process supervising
the control connection crashed. When an alternative control
connection was used, this supervision process also quite
frequently crashed when the peer node was stopped by the node
that started it which caused the peer node to linger without
ever halting.
* asn1: For the per and uper ASN.1 encoding rules, encoding and
decoding the SEQUENCE OF and SET OF constructs with 16384 items
or more is now supported.
* erts: Listen sockets created with the socket module, leaked
(erlang-) monitors.
* erts: Notifications about available distribution data sent to
distribution controller processes could be lost. Distribution
controller processes can be used when implementing an
alternative distribution carrier. The default distribution over
tcp was not effected and the bug was also not present on
x86/x86_64 platforms.
* kernel: Listen sockets created with the socket module, leaked
(erlang-) monitors.
* kernel: peer nodes failed to halt when the process supervising
the control connection crashed. When an alternative control
connection was used, this supervision process also quite
frequently crashed when the peer node was stopped by the node
OBS-URL: https://build.opensuse.org/request/show/1010504
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=126
- Changes for 25.0.4:
* kernel: A call to net_kernel:setopts(new, Opts) at the same
time as a connection was being set up could cause a deadlock
between the net_kernel process and the process setting up the
connection.
* erts: The monitor/3 BIF did not apply options to the created
monitor if the target process or port did not exist. That is,
the corresponding down message would get a `DOWN` tag even if a
custom tag had been set, and the returned reference was not an
alias even if the alias option had been passed.
* erts: The erlang:monotonic_time/1, erlang:system_time/1,
erlang:time_offset/1, and os:system_time/1 BIFs erroneously
failed when passed the argument native.
OBS-URL: https://build.opensuse.org/request/show/999523
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=125
- Changes for 25.0.3:
* erts: Distributed exit signals could be lost under the
following conditions:
* erts: A race could cause process_info(Pid, message_queue_len)
on other processes to return invalid results.
* erts: Fixed reduction counting for handling process system
tasks.
* erts: Priority elevation of terminating processes did not work
which could cause execution of such processes to be delayed.
* erts: An unlink operation made by a process that terminated
before the unlink operation completed, i.e., before it had
received an unlink-ack signal from the linked process, caused
an exit signal to erroneously be sent from the terminating
process to the process being unlinked. This exit signal would
most often be ignored by the receiver, but if the receiver of
the exit signal concurrently set up a new link, it could
receive the exit signal with the actual exit reason of the
terminating process instead of a noproc exit reason. It is
however very hard to detect that this has happened and has no
obvious negative consequences, so it should be considered
harmless. A distributed unlink-ack signal received by a
terminating process was also not properly removed which could
cause a minor memory leak.
* ssl: The link to crypto:engine_load refered the function with
wrong arity.
OBS-URL: https://build.opensuse.org/request/show/993957
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=124
- Changes for 25.0.2:
* ssl: Improved handling of unexpected messages during the
handshake, taking the right action for unexpected messages.
* erts: On computers with the ARM64 (AArch64) architecture (such
as Apple Silicon Macs) a rem expression followed by a div
expression with the same operands could evaluate to the wrong
result if the result of the rem expression was unused.
- Changes for 25.0.1:
* ssl: When a TLS-1.3 enabled client tried to talk to a TLS-1.2
server that coalesces TLS-1.2 handshake message over one TLS
record, the connection could fail due to some message being
handled in the wrong state, this has been fixed.
* ssl: Correctly handles supported protocol version change from
default to something else by sni_fun supplied to
ssl:handshake/[2,3] together with a TCP-socket (so called
upgrade).
* ssl: Also, TLS-1.3 should respond with a protocol version alert
if previous versions, that are supported but not configured,
are attempted.
* kernel: The DNS resolver inet_res has been fixed to ignore
trailing dot difference in the request domain between the sent
request and the received response, when validating a response.
* kernel: A bug in inet_res has been fixed where a missing
internal {ok,_} wrapper caused inet_res:resolve/* to return a
calculated host name instead of an `{ok,Msg} tuple, when
resolving an IP address or a host name that is an IP address
string.
* kernel: The erlang:is_alive() BIF could return true before
configured distribution service was available. This bug was
introduced in OTP 25.0 ERTS version 13.0. The
OBS-URL: https://build.opensuse.org/request/show/986437
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=123
- Fix build for Factory. Currently, any Java version
is fine for Erlang.
- Changes for 24.3.2:
* erl_interface: Fix compile error regarding gethostbyaddr_r on
Android. Error introduced in OTP 24.3.
* kernel: Fix failed accepted connection setup after previous
established connection from same node closed down silently.
* kernel: Fixed a problem where typing Ctrl-R in the shell could
hang if there were some problem with the history log file.
- Changes for 24.3.1:
* dialyzer: There could be spurious warnings for unknown types
when a type was a subtype of an existing type that was a
subtype of an unknown type.
* ssl: Client certification could fail for TLS-1.3 servers that
did not include the certificat_authorties extension in its
certificate request message.
- Changes for 24.3:
* megaco: The compilation time is no longer recorded in BEAM
files. There remained several undocumented functions that
attempted to retrieve compilation times. Those have now been
removed.
* megaco: Update the performance and debug chapters of the megaco
user's guide. Also some updates to the meas tools.
* compiler: The expression <<0/native-float>>=Bin would always
fail to match, while <<0/float-native>>=Bin would match
(provided that Bin contained the binary representation of 0.0)
* compiler: The compiler will now compile huge functions with
straight-line code faster.
* erl_interface: Add --enable-ei-dynamic-lib configure option
OBS-URL: https://build.opensuse.org/request/show/967370
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=121
- Changes for 24.2.1:
* ssl: Improve SNI (server name indication) handling so that
protocol version can be selected with regards to SNI. Also,
make sure that ssl:connection_information/1 returns the correct
SNI value.
* ssl: Fixed cipher suite listing functions so that the listing
of all cipher suites will be complete. Another fix for cipher
suite handling in OTP-24.1 accidentally excludes a few cipher
suites from the listing of all cipher suites.
* ssl: Reenable legacy cipher suite TLS_RSA_WITH_3DES_EDE_CBC_SHA
for explicit configuration in TLS-1.2, not supported by
default.
* ssl: Avoid unnecessary logs by better adjusting the tls_sender
process to the new supervisor structure in OTP-24.2
* erts: Fixed a memory leak in file:read_file_info/2 and
file:read_file/1 on Windows.
* erts: Fix GC emulator crash when spawn_request was used when
message tracing was enabled.
OBS-URL: https://build.opensuse.org/request/show/956544
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=119
- Changes for 24.2:
* compiler: When the compiler is invoked by Dialyzer, it will no
longer apply an optimization of binary patterns that would turn
the pattern <<"bar">> into <<6447474:24>>, which would be very
confusing when printed out by Dialyzer.
* compiler: The compiler would replace known failing calls (such
as atom_to_list(42)) with a call to error(badarg). With the
extended error information introduced in OTP 24 (EEP 54), those
"optimized" calls would not have extended error information. To
ensure that as much extended error information as possible is
available, the compiler now keeps the original call even when
it is known to fail.
* sasl: Make release_handler even more resilient against exiting
processes during upgrade. Same kind of bug fix as OTP-16744
released in sasl-4.0.1 (OTP 23.1).
* ssl: Allow re-connect on DTLS sockets Can happen when a
computer reboots and connects from the same client port without
the server noticing should be allowed according to RFC.
* ssl: Fix tls and non-tls distribution to use
erl_epmd:address_please to figure out if IPv4 or IPv6 addresses
should be used when connecting to the remote node. Before this
fix, a dns lookup of the remote node hostname determined which
IP version was to be used which meant that the hostname had to
resolve to a valid ip address.
* ssl: Use supervisor significant child to manage tls connection
process and tls sender process dependency.
* ssl: Random generation adjustment for TLS1.3
* ssl: Allow any {03,XX} TLS record version in the client hello
for maximum interoperability
* mnesia: Documentation and minor code cleanup.
OBS-URL: https://build.opensuse.org/request/show/953011
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=118
- Changes for 24.1.2:
* kernel: The undocumented DNS encode/decode module inet_dns has
been cleaned up to handle the difference between "symbolic" and
"raw" records in a more consistent manner. PR-5145/OTP-17584
introduced a change that contributed to an already existing
confusion, which this correction should remedy.
* erts: The python scripts that existed in
erts/lib_src/yielding_c_fun/lib/tiny_regex_c/scripts had a
license that was incompatible with Erlang/OTP's license. This
ticket removes these scripts that were not used by us.
* ssl: Before that change, TLS downgrade could occasionally fail
when data intended for downgraded socket were delivered
together with CLOSE_NOTIFY alert to ssl app.
* ssl: Avoid re-encoding of decoded certificates. This could
cause unexpected failures as some subtle encoding errors can be
tolerated when decoding but hence creating another sequence of
bytes if the decoded value is re-encoded.
* ssl: Fix possible process leak when the process doing
ssl:transport_accept dies before initiating the TLS handshake.
* ssl: Fix dtls memory leak, the replay window code was broken.
* public_key: Avoid re-encoding of decoded certificates. This
could cause unexpected failures as some subtle encoding errors
can be tolerated when decoding but hence creating another
sequence of bytes if the decoded value is re-encoded.
* crypto: Fixed minor memory leak at crypto module purge.
* crypto: Fix possible inconsistency in fips mode when linking
with some cryptolibs.
- Changes for 24.1.1:
* kernel: Add more info about the socket 'type' ('socket' or
'port') for the DOWN message when monitoring sockets.
OBS-URL: https://build.opensuse.org/request/show/926548
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=117
- Changes for 24.0.5:
* kernel: For gen_tcp:connect/3,4 it is possible to specify a
specific source port, which should be enough to bind the socket
to an address with that port before connecting. Unfortunately
that feature was lost in OTP-17216 that made it mandatory to
specify the source address to get an address binding, and
ignored a specified source port if no source address was
specified. That bug has now been corrected.
- Changes for 24.0.4:
* stdlib: Fix a bug that could cause a crash when formatting
tuples using the control sequences p or P and limiting the
output with the option chars_limit.
* ssl: Handle cross-signed root certificates when old root
expired as reported in GH-4877.
* ssl: The signature selection algorithm has been changed to also
verify if the client supports signatures using the elliptic
curve of the server's public/private key pair. This change
fixes#4958.
* ssl: Slight optimization of certificate decoding.
* public_key: Handle cross-signed root certificates when old root
expired as reported in GH-4877.
* common_test: An incoming NETCONF notification received before a
call to ct_netconfc:create_subscription/* caused the connection
process to fail with badarg. Unexpected notifications are now
logged in the same way as other unexpected messages.
* common_test: Add 'receiver' option to ct_netconfc To allow a
destination for incoming NETCONF notifications to be specified
at sessions creation. Previously, a caller of
create_subscription/* became the destination, but RFC 5277
create-subscription is no longer the only way in which NETCONF
OBS-URL: https://build.opensuse.org/request/show/910175
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=115
- Fix more directories not owned by the package (boo#1187546)
- Changes for 24.0.3:
* erts: A call to erlang:cancel_timer(_, [{info, false}]) could
cause the calling process to block forever in the call. Note
that only the synchronous version of the call (that is, the
async option is false) in combination with the info option set
to false was effected by this bug.
* erts: Microstate accounting (msacc) and os:perf_counter()
unintentionally used system time instead of monotonic time for
time measurements on a lot of systems. These systems were all
non x86/x86_64 systems or x86/x86_64 systems without a reliable
and constant rdtsc instruction. The lock counting (lcnt) built
runtime system also unintentionally used system time instead of
monotonic time for time measurements on all systems.
* erts: Simultaneous calls to
erlang:system_flag(schedulers_online, _) could cause callers to
end up in a suspended state forever.
* dialyzer: Do not expose line number 0 in messages if there are
other locations to use.
* dialyzer: In rare circumstances, Dialyzer could crash analyzing
code with a list comprehension whose value was ignored. (Thanks
to Ulf Wiger for reporting this bug.)
* ssh: Filter out sensitive data (passwords etc) from progress
reports and supervisor reports.
* inets: Improved user input handling in inets/mod_esi preventing
unnecessary atom creation.
* compiler: A compiler optimization pass could crash when given
odd but legal code using throw/1.
- Changes for 24.0.2:
* kernel: Fix a race condition in Global.
* kernel: After a node restart with init:restart/0,1, the module
socket was not usable because supporting tables had been
cleared and not re-initialized. This has now been fixed.
Handling of the "." domain as a search domain was incorrect and
caused a crash in the DNS resolver inet_res, which has now been
fixed.
* kernel: Handling of combinations of the fd option and binding
to an address has been corrected, especially for the local
address family.
* kernel: Bug fixes and code cleanup for the new socket
implementation, such as: Assertions on the result of
demonitoring has been added in the NIF code, where appropriate.
Internal state handling for socket close in the NIF code has
been reviewed. Looping over close() for EINTR in the NIF code
has been removed, since it is strongly discouraged on Linux and
Posix is not clear about if it is allowed. The inet_backend
temporary socket option for legacy gen_tcp sockets has been
documented. The return value from net:getaddrinfo/2 has been
corrected: the protocol field is now an atom(), instead of,
incorrectly, list(atom()). The documentation has also been
corrected about this return type. Deferred close of a
socket:sendfile/* file was broken and has been corrected. Some
debug code, not enabled by default, in the socket NIF has been
corrected to not accidentally core dump for debug printouts of
more or less innocent events.
* stdlib: Fix a bug that could cause a loop when formatting terms
using the control sequences p or P and limiting the output with
the option chars_limit.
* erts: Not yet handled alias-message signals in the signal queue
at the time when a garbage collection was performed could cause
a memory corruption which in turn could result in a crash of
the runtime system. This bug was introduced in OTP 24.0.
* erts: Fixed bug when using external pids/ports in keys of big
maps (> 32). Could cause runtime crash. Bug exists since OTP
24.0.
* erts: After a node restart with init:restart/0,1, the module
socket was not usable because supporting tables had been
cleared and not re-initialized. This has now been fixed.
Handling of the "." domain as a search domain was incorrect and
caused a crash in the DNS resolver inet_res, which has now been
fixed.
* erts: A call to port_command() could cause a scheduler to end
up in an eternal loop if the port was busy and the calling
process had incoming signals at the time of the call. This bug
was introduced in OTP 23.3.2 (ERTS version 11.2.1), OTP
22.3.4.18 (ERTS version 10.7.2.10), and OTP 21.3.8.23 (ERTS
version 10.3.5.18).
* erts: Bug fixes and code cleanup for the new socket
implementation, such as: Assertions on the result of
demonitoring has been added in the NIF code, where appropriate.
Internal state handling for socket close in the NIF code has
been reviewed. Looping over close() for EINTR in the NIF code
has been removed, since it is strongly discouraged on Linux and
Posix is not clear about if it is allowed. The inet_backend
temporary socket option for legacy gen_tcp sockets has been
documented. The return value from net:getaddrinfo/2 has been
corrected: the protocol field is now an atom(), instead of,
incorrectly, list(atom()). The documentation has also been
corrected about this return type. Deferred close of a
socket:sendfile/* file was broken and has been corrected. Some
debug code, not enabled by default, in the socket NIF has been
corrected to not accidentally core dump for debug printouts of
more or less innocent events.
* erts: Dirty execution of a process in combination with an
unlink signal from a port to the process could cause the signal
queue of the process to enter into an inconsistent state. The
result of the inconsistency typically caused a crash of the
runtime system. This bug was introduced in OTP 23.3 (ERTS
version 11.2).
* erl_docgen: Fix links generated in specs to types in other
applications to point to the correct place. This bug was
introduced in Erlang/OTP 24.0.
* ssl: Fix cache invalidation problem for CA certs provided by
the cacertfile option.
* ssh: Avoid an extra blank line in the ssh known_hosts file
* compiler: Fixed a bug that could cause after blocks to be
ignored when erlang:raise/3 was used in a catch block.
* compiler: Fixed a bug in the validation pass that could cause
it to reject valid code.
* crypto: EC keys are now zero-padded to the expected length if
needed.
OBS-URL: https://build.opensuse.org/request/show/907952
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=114
- Changes for 24.0.1:
* erl_interface: Commit of generated configure script.
* wx: Fix build problems when wxWidgets are built with -enable-
std.
* wx: Commit of generated configure script.
* crypto: Removed a risk for coredump.
* crypto: Fixed and documented the DED_LDFLAGS_CONFTEST
configuration variable in $ERL_TOP/HOWTO/INSTALL.md.
* crypto: Commit of generated configure script.
* common_test: Commit of generated configure script.
* ssh: Add missing known_hosts and authorized_keys file types to
ssh_file:decode/2 and ssh_file:encode/2.
* erts: Commit of generated configure script.
* snmp: Commit of generated configure script.
* megaco: Commit of generated configure script.
* odbc: Commit of generated configure script.
- Version 24.0:
- Highlights compiler:
* The compiler will now inline funs that are used only once
immediately after their definition.
* Compiler warnings and errors now include column numbers in
addition to line numbers.
* Variables bound between the keywords 'try' and 'of' can now
be used in the clauses following the 'of' keyword (that is,
in the success case when no exception was raised).
* Generators in list and binary comprehensions will now raise a
{bad_generator,Generator} exception if the generator has an
incorrect type Similarly, when a filter does not evaluate to
a boolean, a {bad_filter,Filter} exception will be raised.
* Warnings for expressions whose result was ignored that could
be suppressed by using the anonymous variable '_' can now be
suppressed with a variable beginning with '_'.
* Selective receive optimization will now be applied much more
often. The new recv_opt_info compile flag can be used to
print diagnostics relating to this optimization. You can read
more about the selective receive optimization in the
Efficiency Guide.
- erts, kernel, stdlib:
* hex encoding and decoding functions added in the binary module
* The BeamAsm JIT-compiler has been added to Erlang/OTP and
will give a significant performance boost for many
applications. The JIT-compiler is enabled by default on most
x86 64-bit platforms that have a C++ compiler that can
compile C++17. To verify that a JIT enabled emulator is
running you can use erlang:system_info(emu_flavor).
* A compatibility adaptor for gen_tcp to use the new socket API
has been implemented (gen_tcp_socket).
* Extended error information for failing BIF calls as proposed
in EEP 54 has been implemented.
* Process aliases as outlined by EEP 53 has been introduced.
* Implementation of EEP 56 in supervisor. It adds the concept
of significant children as well as the auto_shutdown
supervisor flag. See the supervisor manual page for more
information.
- ftp:
* Add support for FTPES (explicit FTP over TLS).
- ssl:
* Make TLS handshakes in Erlang distribution concurrent.
* TLS connections now support EdDSA certificates.
- wx:
* The application has been completely rewritten in order to use
wxWidgets version 3 as its base.
* Added support for wxWebView.
- edoc:
* EDoc is now capable of emitting EEP-48 doc chunks. This means
that, with some configuration, community projects can now
provide documentation for shell_docs the same way that OTP
libraries did since OTP 23.0.
OBS-URL: https://build.opensuse.org/request/show/894854
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=111
- Use wxWidgets < 3.1 (boo#1180488)
- Changes for 23.2.2:
* crypto: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* odbc: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* snmp: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* erts: The suspend_process() and resume_process() BIFs did not
check their arguments properly which could cause an emulator
crash.
* erts: The runtime system would get into an infinite loop if the
runtime system was started with more than 1023 file descriptors
already open.
* megaco: Fixed usage of AC_CONFIG_AUX_DIRS() macros in configure
script sources.
* erl_interface: Integers outside of the range [-(1 bsl 32) - 1,
(1 bsl 32) -1] were previously intended to be printed in an
internal bignum format by ei_print_term() and
ei_s_print_term(). Unfortunately the implementation has been
buggy since OTP R13B02 and since then produced results with
random content which also could crash the calling program. This
fix replaces the printing of the internal format with printing
in hexadecimal form and extend the range for printing in
decimal form. Currently integers in the range [-(1 bsl 64), (1
bsl 64)] are printed in decimal form and integers outside of
this range in Erlang hexadecimal form.
* erl_interface: The ei API for decoding/encoding terms is not
fully 64-bit compatible since terms that have a representation
OBS-URL: https://build.opensuse.org/request/show/863811
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=109
- Changes for 23.1.3:
* erts: Fixed a crash when exceptions were thrown during call
time tracing.
* ssh: A supervisor sub-tree could be left if the connection
handler process is brutally killed. This will make the
max_sessions checking option to count the existing sessions
erroneously and could finally block further sessions.
- Changes for 23.1.2:
* compiler: Fixed a bug in the boolean optimization pass that
caused the compiler to confuse different clauses.
* erts: Fixed bugs causing issues when enabling the ERTS internal
allocators on a system built with the undocumented and
unsupported SMALL_MEMORY feature.
* erts: The inet driver used to use 16 as maximum elements in an
I/O vector passed to writev() (and WSASend() on Windows). When
the data to send contained lots of elements, this caused a
performance degradation since repeated calls to writev() had to
be made to a much larger extent. The inet driver now looks up
actual maximum amount of elements that can be used on the
system, instead of just assuming 16. On most systems this will
result in a maximum amount of I/O vector elements of 1024. As
of OTP 23.0 the term encoding of signals to send over the
distribution are encoded into I/O vectors of buffers instead of
into a single buffer. Reference counted binaries are referred
to directly from the I/O vector instead of being copied into
the single buffer. That is, Erlang signals containing huge
amounts of reference counted binaries was effected by this
performance degradation.
* erts: In the distributed case, a faulty reply option in a call
to the spawn_request() BIF erroneously caused a badarg
OBS-URL: https://build.opensuse.org/request/show/849306
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=108
- Changes for 23.1.1:
* erts: inet:setopts([{active,once}]) wakes up IO polling thread
unnecessarily, leading to lock contention and visibly higher
CPU utilization.
* erts: Two bugs in the ERTS internal thread wakeup functionality
have been fixed. These bugs mainly hit when all threads in the
system tried to go to sleep. When the bugs were triggered,
certain operations were delayed until a thread woke up due to
some other reason. Most important operations effected were code
loading, persistent term updates, and memory deallocation.
* erts: Fixed bug in ets:select_replace/2 on compressed tables
that could produce faulty results or VM crash. Bug exists since
OTP 20.
* erts: When compiling Erlang/OTP on macOS using Xcode 12, the
performance of the BEAM interpreter would be degraded.
* erts: As of OTP 22, the allocator specific memory carrier pools
were replaced by a node global carrier pool. This unfortunately
caused substantial memory fragmentation in some cases due to
long lived data being spread into carriers used by allocators
mainly handling short lived data. A new command line argument
+M<S>cp has been introduced with which one can enable the old
behavior as well as configuring other behaviors for the carrier
pools. In order to configure the old behavior, with allocator
specific carrier pools for all allocators, pass +Mucp :
(including the colon character) as a command line argument to
erl when starting the Erlang system. The default configuration
for carrier pools will be changed to +Mucp : some time in the
future, but not in this patch.
* os_mon: The configuration parameter
memsup_improved_system_memory_data has been introduced. It can
OBS-URL: https://build.opensuse.org/request/show/839763
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=107
- Changes for 23.0.3:
* erts: Fixed bug in erlang:load_nif/2 that could cause it to
throw badarg exception if a concurrent code change operation
was in progress. Bug existed since OTP 23.0.
* erts: Minor fix of debug compiled VM.
* erts: An unintentional reuse of an already used emulator
internal event object could cause a wakeup signal to a thread
to be lost. In worst case this could cause the runtime system
to hang. This hang was however quite rare.
* erts: NIF threads and driver threads on non-Linux systems
leaked internal resources when terminating. On Windows these
resources were one event per thread. On most other systems one
mutex and one condition variable per thread. On these other
systems that also lacked pthread_cond_timedwait() also a pipe
with its file descriptors was leaked.
* compiler: When calls to is_map_key were repeated, the compiler
could terminate with an internal consistency failure.
* compiler: Fixed a bug in the type inference pass that could
cause the compiler to hang.
OBS-URL: https://build.opensuse.org/request/show/828926
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=106
- Changes for 23.0.2:
* erts: Fixed bug when sending an export fun (eg lists:reverse/1)
on a not yet established connection. It could cause VM crash.
Bug exists since OTP 23.0.
* megaco: The mini parser could not properly decode some IPv6
addresses.
- Changes for 23.0.1:
* erts: The functionality utilized by BIFs for temporary
disabling of garbage collection while yielding could cause
system task queues to become inconsistent on a process
executing such a BIF. Process system tasks are for example
utilized when purging code, garbage collecting literal data,
and when issuing an ordinary garbage collection from another
process. The bug does not trigger frequently. Multiple code
purges in direct sequence makes it more likely that this bug is
triggered. In the cases observed, this has resulted in a
hanging code purge operation.
* erts: SCTP and UDP recv/2,3 hangs indefinitely if socket is
closed while recv is called (socket in passive mode).
* compiler: In rare circumstances, a guard using 'not' could
evaluate to the wrong boolean value.
* compiler: A guard expression that referenced a variable bound
to a boolean expression could evaluate to the wrong value.
- Version 23.0:
- Potential Incompatibilities:
* SSL:Support for SSL 3.0 is completely removed. TLS 1.3 is added
to the list of default supported versions.
* erl_interface: Removed the deprecated parts of erl_interface
(erl_interface.h and essentially all C functions with prefix
OBS-URL: https://build.opensuse.org/request/show/814090
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=105
- Changes for 22.3:
* compiler: A 'receive' with an 'after 0' clause would prevent
the optimization that can avoid scanning the entire receive
queue when matching on a newly created reference.
* compiler: HiPE can again handle modules with catch and try
constructs.
* compiler: Fixed a bug in bit-syntax optimization that could
crash the compiler.
* crypto: Fixed potential memory leaks involving calls to the
crypto ng_api.
* common_test: Document incl_apps cover option
* common_test: The ct_property_test has now a report function for
results of stateful testing.
* common_test: Don't hide error reasons from user
* stdlib: Fix type specification for uri_string:normalize/2 that
may also return error().
* stdlib: Improve error handling in uri_string:normalize/2. This
change fixes a crash when the input URI has faulty percent-
encoding.
* stdlib: Fix minor bugs in the Erlang pretty printer (erl_pp).
* stdlib: Fix the Erlang parser regarding consecutive unary
operators.
* stdlib: Let calendar:rfc3339_to_system_time() crash when the
time offset is missing.
* stdlib: Implement uri_string:resolve/{2,3} that can be used to
resolve a URI reference against a base URI.
* stdlib: In gen_statem it is now possible to change the callback
module for a running server. See gen_statem's documentation for
change_callback_module, push_callback_module, and
pop_callback_module.
* ssl: Correct handling of TLS record limit in TLS-1.3. The max
value differs from previous versions. Also the payload data max
record check was broken, that is record overflow problems could
occur if user sent large amounts of data.
* ssl: Correct close handling for DTLS
* ssl: Fix ssl:getstat/1-2 to also work for DTLS sockets
* ssl: Correct internal handling och socket active mode to avoid
reviving TCP data aimed for a downgraded TLS socket.
* ssl: When using the host name as fallback for SNI (server name
indication) strip a possible trailing dot that is allowed in a
host name but not in the SNI. Also if the server receives a SNI
with a trailing dot send an UNRECOGNIZED_NAME alert.
* ssl: Immediately remove session entries if handshake is
abruptly closed at transport level.
* ssl: Implementation of the key and initialization vector update
feature, and general hardening of TLS 1.3. There are
cryptographic limits on the amount of plaintext which can be
safely encrypted under a given set of keys. This change
enforces those limits by triggering automatic key updates on
TLS 1.3 connections.
* ssl: Add support for TLS 1.3 Session Tickets (stateful and
stateless). This allows session resumption using keying
material from a previous successful handshake.
* ssl: Add support for key exchange with Edward curves and PSS-
RSA padding in signature verification.
* megaco: The documented function
megaco:get_sdp_record_from_PropertGroup/2 was a wrapper for
megaco_sdp:get_sdp_record_from_PropertGroup/2 but did not
actually exist. This has now been fixed.
* megaco: Test suite completely reworked. Add (timestamp) utility
functions for debugging and testing.
* erl_interface: Fix link error "multiple definition of
`ei_default_socket_callbacks'" for gcc version 10 or when built
with gcc option -fno-common. Error exists since OTP-21.3.
* asn1: Fix 'DEFAULT' with 'OCTET STRING' and 'SEQUENCE OF
CHOICE' with extensions.
* erts: gen_udp:recv(S, N, 0) corrupted the internal state for
the socket so after receive with {active, once} it always
returned {error, timeout}, and wasted the received UDP packets.
This bug has now been fixed. Reported and pinpointed by
Alexander Petrovsky.
* erts: The atom esock_atom_user and esock_atom_kernel was never
actually created. This has now been corrected.
* erts: Fixed bug in socket module that could potentially lead to
scheduler deadlocks.
* erts: Fix bug causing VM crash if down or stop callback of a
NIF resource is called after the NIF module has been purged.
The fix will postpone unloading until all such resource objects
have been garbage collected.
* erts: Fixed bug in ets:update_counter/4, when called with an
invalid UpdateOp and a Key that does not exist, causing
ets:info(T,size) to return incorrect values. Bug exists since
OTP-19.0.2.
* erts: Fix potential heap corrupting bugs when a process calls a
BIF that blocks other normal schedulers and then writes to its
own heap without the main process lock. A NIF running on a
dirty scheduler trying to interact with such a process could
corrupt its heap. The fixed BIFs were related to code loading
and tracing.
* erts: Fixed bug in erlang:list_to_ref/1 when called with a
reference created by a remote note. Function list_to_ref/1 is
intended for debugging and not to be used in application
programs. Bug exist since OTP 20.0.
* erts: The prim_net nif (net/kernel) made use of an undefined
atom, notsup. This has now been corrected.
* erts: Corrected the valid range of the erl command line
argument +SDio <NumberOfDirtyIoSchedulers> from 0..1024 to
1..1024. +SDio 0 was erroneously allowed which just caused the
VM to crash on the first dirty I/O job scheduled.
* erts: Fix a crash when attempting to log faults when loading
files during early boot.
* erts: For socket, not all send and receive flags are supported
on all platforms. In order to (at least) simplify testing, the
socket:supports/0,1,2,3 functions has been extended with
send_flags and recv_flags items, which indicates what the
current platform can manage.
* erts: Add a "full featured" version of getifaddrs in the net
module.
* erts: The options busy_limits_port and busy_limits_msgq have
been added to the BIF erlang:open_port/2. The busy_limits_port
option can be used for controlling the busy state of a port
executing the spawn_driver or the fd_driver. The
busy_limits_msgq option can be used for controlling the busy
state of the port message queue.
* erts: A socket "registry" has been added making it possible to
list current open sockets.
* erts: The counters managed by the socket nif has been extended.
Their "size" has been increased from 32 bit to 64. Two max
package size (for read and write) has been added. And four
accept counters has been added.
* erts: Add gcc option -fno-common to detect accidental name
clashes of global variables.
* erts: New dynamic lock checker that verifies locking orders and
detects potential deadlock bugs in drivers and NIFs. Enabled
together with the old static lock checker (for ERTS internal
locks) in emulator started with -emu_type debug or built with
configuration option --enable-lock-checking.
* snmp: A simple supervision of the snmp manager net-if process
has been added. Also, a way to forcibly restart the net-if
process has been added. This could be useful if the net-if
process hangs for some reason.
* snmp: Misc documentation corrections
* mnesia: Fixed a timing issue in uninstall fallback
functionality.
* eunit: Backport of PR-2316: Strip control codes from
eunit_surefire output to avoid generation of invalid xml
* ssh: Unicode problems for ssh_sftp:write fixed.
* ssh: Changes to the internal api of the experimental ssh_dbg
tool.
* ssh: The new functions ssh:set_sock_opts/2 and
ssh:get_sock_opts/2 sets and reads option values for the
underlying TCP stream.
* hipe: HiPE can again handle modules with catch and try
constructs.
* hipe: When the return value for try/catch was ignored, the
native code compiler could crash.
* public_key: Add support for key exchange with Edward curves and
PSS-RSA padding in signature verification.
* diameter: Add the 'first' tuple to type diameter:peer_filter/0.
The filter was added in OTP-17.5.6.8 and OTP-18.3, but neither
release updated the type specification.
* tools: An Emacs warning due to lacking type in defcustom
declaration has been fixed.
* tools: Improve emacs indentation.
* tools: The cover tool could generate instrumented code for a
module that would cause warnings to be issued.
* tools: Fixed generated fprof analysis format to also handle
data in maps.
* sasl: A socket "registry" has been added making it possible to
list current open sockets.
* kernel: The DNS resolver `inet_res` has been fixed to return
the last intermediate error when subsequent requests times out.
* kernel: The prim_net nif (net/kernel) made use of an undefined
atom, notsup. This has now been corrected.
* kernel: Fix a crash when attempting to log faults when loading
files during early boot.
* kernel: Fix crash in logger when logging to a remote node
during boot.
* kernel: Improved net_kernel debug functionality.
- Changes for 22.2.8:
* diameter: The possibility of choosing a handler process for an
incoming Diameter request with a configured MFA was documented
in OTP 20.0, but counters (with {traffic_counters, true}) were
not incremented when this process was on a remote node.
Counters are now incremented on the node that configures the
transport in question. Introduced in OTP 21.3.
* diameter: Transport options differing from those passed to
diameter:add_transport/2 were used in several situations: when
starting a transport process after connect_timer expiry after
an initial connection attempt has failed, when starting a
transport process after a connection has been accepted, when
sending events, when returning options in
diameter:service_info/2, and possibly more. In particular, the
following configuration options to diameter:add_transport/2
were dropped: avp_dictionaries, incoming_maxlen, spawn_opt,
strict_mbit. Moreover, any service options mistakenly passed to
diameter:add_transport/2 were interpreted as such, instead of
being ignored as the documentation states, with the consequence
that outgoing and incoming requests saw different values of
some options, some were always taken from transport options,
and others from service options. diameter:add_transport/2 must
be called in new code for the fix to have effect. Introduced in
OTP 20.1.
OBS-URL: https://build.opensuse.org/request/show/788113
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=104
- Changes for 22.2.7:
* compiler: Fixed a bug that could cause the compiler to reject
valid code that used the is_map_key/2 BIF.
* compiler: Fixed a bug that could cause the compiler to reject
valid code that matched the same map key several times.
* compiler: The compiler could crash when compiling a convoluted
receive statement.
* compiler: The compiler could crash when a fun was created but
never used. The compiler could crash when compiling the
expression true = 0 / X.
- jsc#SLE-10913
OBS-URL: https://build.opensuse.org/request/show/777387
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=102
- Changes for 22.2.5:
* erts: A process could end up in a state where it got
endlessly rescheduled without making any progress. This
occurred when a system task, such as check of process
code (part of a code purge), was scheduled on a high
priority process trying to execute on a dirty
scheduler.
* erts: Improved signal handling for processes executing dirty.
For example, avoid busy wait in dirty signal handler
process when process is doing garbage collection on
dirty scheduler.
* stdlib: A directory traversal vulnerability has been eliminated
in erl_tar. erl_tar will now refuse to extract symlinks
that points outside the targeted extraction directory
and will return {error,{Path,unsafe_symlink}}. (Thanks
to Eric Meadows-Jönsson for the bug report and for
suggesting a fix.)
OBS-URL: https://build.opensuse.org/request/show/771566
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=100
- Changes for 22.2.4:
* ssl: Enhance error handling, all ALERTS shall be handled
gracefully and not cause a crash.
* ssl: Enhance alert logging, in some places the role
indication of the alert origin was missing. So the log
would say undefined instead of client or server.
* ssl: Two different optimizations did not work together and
resulted in the possible breakage of connections using
stream ciphers (that is RC4). Reworked the
implementation to avoid this.
OBS-URL: https://build.opensuse.org/request/show/769520
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=99
- Changes for 22.2.3:
* ssl: Fix the handling of GREASE values sent by web browsers
when establishing TLS 1.3 connections. This change improves
handling of GREASE values in various protocol elements sent in
a TLS 1.3 ClientHello.
* ssl: Correct DTLS listen emulation, could cause problems with
opening a new DTLS listen socket for a port previously used by
a now closed DTLS listen socket.
* compiler: Fixed a bug in the compiler that could cause it to
reject valid code.
OBS-URL: https://build.opensuse.org/request/show/766759
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=98
- Changes for 22.2.2:
* erts: Taking a scheduler offline could cause timers set while
executing on that scheduler to be delayed until the scheduler
was put online again. This bug was introduced in ERTS version
10.0 (OTP 21.0).
* erts: The ets:update_counter/4 core dumped when given an
ordered_set with write_concurrency enabled and an invalid
position. This bug has been fixed.
* erts: A process calling erlang:system_flag(multi_scheduling,
block) could end up blocked waiting for the operation to
complete indefinitely.
* erts: Duplicate entries for [socket:]getopt and [socket:]setopt
in man page.
* stdlib: The ets:update_counter/4 core dumped when given an
ordered_set with write_concurrency enabled and an invalid
position. This bug has been fixed.
* crypto: Constant time comparisons added.
* ssh: Fixed that ssh_connection:send could allocate a large
amount of memory if given an iolist() as input data.
* ssh: Safe atom conversions.
* ssh: Constant time comparisons added.
- Changes for 22.2.1:
* erts: Corrected an issue with the new socket api which could
cause a core dump. A race during socket close could cause a
core dump (an invalid nif environment free).
* erts: Corrected an issue with the new socket api which could
cause a core dump. When multiple accept processes waiting for a
connect a connect could cause a core dump.
* snmp: Its now possible to remove selected varbinds (from the
final message) when sending a notification. This is done by
OBS-URL: https://build.opensuse.org/request/show/765151
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=97
- Changes for 22.2
* http://erlang.org/download/OTP-22.2.README
* Highlights:
* erts: The Kernel application's User's Guide now contains a
Logger Cookbook with common usage patterns.
* erts: Numerous improvements in the new socket and net modules
* Standard libraries: common_test: ct_property_test logging is improved
* Standard libraries: ssl: Correct handling of unordered chains so that it
works as expected
* Tools: Emacs erlang-mode function that lets the user open the documentation
for an Erlang/OTP function in an Emacs buffer has been improved.
Users will be asked if they want the man pages downloaded if they are not present
in the system.
OBS-URL: https://build.opensuse.org/request/show/756006
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=95
- Changes for 22.1.7
* http://erlang.org/download/OTP-22.1.7.README
* compiler: Fixed a performance bug that caused repeated matches of
large records to take a very long time to compile.
* erts: A literal area could prematurely be released before all
uses of it had been removed. This occurred either when
a terminating process had a complex exit reason
referring to a literal that concurrently was removed,
or when a terminating process continued executing a
dirty NIF accessing a literal (via the heap) that
concurrently was removed.
* erts: Fix bug causing VM crash due to memory corruption of
distribution entry. Probability of crash increases if
Erlang distribution is frequently disconnected and
reestablished towards same node names. Bug exists since
OTP-21.0.
* erts: Fixed bug causing crash of VM built with configuration
--enable--sharing-preserving. Provoked when a sent
message contains both a bit string and the heap binary
(< 65 bytes) which the bit string was matched from. Bug
exists since OTP-19.0 but has seen to be easier to
provoke since OTP-22.1.
- Changes for 22.1.6
* http://erlang.org/download/OTP-22.1.6.README
* compiler, erts: The compiler could do an unsafe optimization of
receives, which would cause a receive to only scan part
of the message queue.
* crypto: The AEAD tag was not previously checked on decrypt with
chacha20_poly1305
* erts:Fix bug where the receive marker used by the runtime to
do the receive queue optimization could be incorrectly
set. The symptom of this would be that a message that
should match in a receive never matches.
* snmp: Agent discovery cleanup. If there is no receiver of
INFORM then #state.reqs in snmpa_net_if keeps on
growing for DISCOVERY.
OBS-URL: https://build.opensuse.org/request/show/747347
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=93
- Changes for 22.1.3:
* inets: Add HTTP server error logging vi logger
- Changes for 22.1.2:
* erts: Added the environment variable ERLC_SERVER_ID, which
allows multiple compile servers to run separately under the
same user.
- Changes for 22.1.1:
* erts: A terminating process sending distributed 'EXIT' or
'DOWN' signals while terminating could end up in a state where
no progress at all was made. This was triggered by a
distribution channel that the terminating process was sending
on got busy. This bug has existed since ERTS version 10.4 (OTP
22.0).
* erts: When communicating with a simultaneously exiting port via
the erlang:port_*() BIFs one could sometimes get stray {Ref,
What} messages. Where Ref was a reference and What usually were
the atom badarg.
* snmp: Made it possible to add 'extra socket options' to the
(gen_udp) socket open call (for both manager and agent). A new
option has been added, extra_sock_opts, which makes it possible
for the user to add a list of extra socket options that will be
appended to the other socket options for the open call. See the
snmp application config man page (erl -man 6 snmp) or the
"Configuring the application" chapter of the Users Guide for
more info.
* compiler: Fixed a bug in the bit-syntax optimization pass that
could crash the compiler.
OBS-URL: https://build.opensuse.org/request/show/738664
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=90
- Changes for 22.1:
* kernel: The type specification for gen_sctp:connect/4,5 has
been corrected.
* kernel: Extra -mode flags given to erl are ignored with a
warning.
* kernel: Fix type spec for seq_trace:set_token/2.
* kernel: logger:compare_levels/2 would fail with a badarg
exception if given the values all or none as any of the
parameters. This is now corrected.
* kernel: Fix bug where the log file in logger_std_h would not be
closed when the inode of the file changed. This would in turn
cause a file descriptor leak when tools like logrotate are
used.
* kernel: Fix a race condition in the debugging function
net_kernel:nodes_info/0.
* kernel: Fix race condition when closing a file opened in
compressed or delayed_write mode.
* kernel: The possibility to send ancillary data, in particular
the TOS field, has been added to gen_udp:send/4,5.
* kernel: If the log file was given with relative path, the
standard logger handler (logger_std_h) would store the file
name with relative path. If the current directory of the node
was later changed, a new file would be created relative the new
current directory, potentially failing with an enoent if the
new directory did not exist. This is now corrected and
logger_std_h always stores the log file name as an absolute
path, calculated from the current directory at the time of the
handler startup.
* kernel: Support local sockets with inet:i/0.
* observer: Fix bug after a user followed link on a pid from an
expanded term window.
* observer: Improved dark mode colors on Linux.
* mnesia: mnesia:add_table_copy/3 could cause a deadlock if
called when a new node was starting.
* mnesia: Transactions with sticky locks could with async_asym
transactions be committed in the wrong order, since asym
transaction are spawned on the remote nodes. To fix this bug
the communication protocol between mnesia nodes had to be
updated, thus mnesia will no longer be able to connect to nodes
earlier than mnesia-4.14 , OTP-19.0. *** POTENTIAL
INCOMPATIBILITY ***
* stdlib: re:run() now yields when validating utf8 in a large
subject.
* stdlib: Upgraded the ERTS internal PCRE library from version
8.42 to version 8.43. See
http://pcre.org/original/changelog.txt for information about
changes made to PCRE. This library implements major parts of
the re regular expressions module.
* stdlib: The bug with ID ERL-717 has been fixed. The functions
io:columns() and io:rows() only worked correctly inside
interactive erlang shells before this fix. These functions
returned {error,enotsup} before this fix even if stdout and
stdin were connected to a terminal when they were invoked from
an escript or a program started with e.g., erl -noshell.
* stdlib: Fixed handling of ".." and "@" in wildcards. ".." would
only work when preceded by a literal pattern such as in "a/..",
not when preceded by wildcard characters such as in "*/..". The
combination "@/.." was also broken, and in addition "@" in a
pattern could degrade performance of the wildcard matching.
* stdlib: Make sure ets:fun2ms() can handle ++/2 in the head of
functions when called from the shell.
* stdlib: Debugging of time-outs in gen_statem has been improved.
Starting a time-out is now logged in sys:log and sys:trace.
Running time-outs are visible in server crash logs, and with
sys:get_status. Due to this system events {start_timer, Action,
State} and {insert_timout, Event, State} have been added, which
may surprise tools that rely on the format of these events. New
features: The EventContent of a running time-out can be updated
with {TimeoutType, update, NewEventContent}. Running time-outs
can be cancelled with {TimeoutType, cancel} which is more
readable than using Time = infinity. *** POTENTIAL
INCOMPATIBILITY ***
* stdlib: re:run() now avoids validating utf8 in the subject more
than once in the same call. This validation could previously be
performed multiple times when the global option was passed.
* stdlib: ETS ordered_set tables with write_concurrency enabled
has got a performance issue fixed. There were no limits for the
values of internal statistics counters before this fix. This
could result in that the data structure sometimes reacted
slowly to a change in how many parallel processes were using
it.
* stdlib: The ordsets:union/1 is now faster when passed a long
list of ordsets.
* stdlib: unicode:characters_to_binary() could return very small
binaries as reference counted off heap binaries. This could
cause an unnecessary large memory usage and an unnecessary load
on the binary allocator. Small binaries are now always returned
as heap binaries.
* stdlib: Display a more meaningful error message when a bad I/O
server is used in a script written in Erlang (escript).
* stdlib: New feature ets:info(_, binary) to get information
about all reference counted binaries kept by a table. This is
the same kind of debug information that process_info(_, binary)
returns for a process.
* stdlib: Corrected ETS documentation about the behavior of
compiled match specifications when serialized through external
format.
* tools: cover would fail to start if two processes tried to
start it at the exact same time.
* common_test: If a ct hook is installed in the suite/0 function
in a test suite, then the hook's terminate/1 function would be
called several times without it's init/2 function being called
first. This is now corrected.
* common_test: If init_per_testcase fails, the test itself is
skipped. According to the documentation, it should be possible
to change the result to failed in a hook function. The only
available hook function in this case is post_init_per_testcase,
but changing the return value there did not affect the test
case result. This is now corrected.
* common_test: Add ct_netconfc support for NETCONF 1.1 (RFC
6241). The 1.1 base capability can be sent in hello, and RFC
6242 chunk framing is applied when both client and server
advertise 1.1 support.
* common_test: Correct lib_dir paths in common_tests opaque data
structure that is passed to ct_release_test callback modules in
functions upgrade_init/2, upgrade_upgraded/2 and
upgrade_downgraded/2. The incorrect paths may cause confusion
when debugging although it will not cause any incorrect
behavior on the part of common_test as it is currently not
used.
* erts: If you set {linger,{true,0}} on a gen_tcp listen socket,
accept a connection on that socket, and then close the accepted
socket, now the linger zero setting is transferred to the
accepted socket. Before this correction that information was
lost and the close behaviour on the accepted socket incorrect.
* erts: Sending ancillary data implemented in OTP-15747
accidentally left behind test code that caused all UDP sends to
fail on Windows. This has now been fixed.
* erts: In the socket nif, used invalid flags when if-def'ing for
supported TCP flags: TCP_MAXSEG and TCP_NODELAY (the support
function).
* erts: Fixed memory leaks in experimental socket module.
* erts: re:run() now yields when validating utf8 in a large
subject.
* erts: Fixed bug in seq_trace:set_token(label,Term) which could
cause VM crash if Term was heap allocated (not an atom, small
integer, local pid or port). Bug exists since OTP 21.0 when
terms other than small integers were first allowed as labels.
* erts: Extra -mode flags given to erl are ignored with a
warning.
* erts: Don't loop indefinitely when --enable-pgo is given to
configure, but compiler does not support pgo.
* erts: Fix seq_trace:print/2 not to raise badarg exception if
label is not a small integer. Bug exists since OTP 21.0.
* erts: Fixed hipe_flush_icache_range for non-Linux OS on ARM.
* erts: The fix in OTP-15871 was too conservative and disabled
the offending load-time optimization in some cases where it was
safe.
* erts: Upgraded the ERTS internal PCRE library from version 8.42
to version 8.43. See http://pcre.org/original/changelog.txt for
information about changes made to PCRE. This library implements
major parts of the re regular expressions module.
* erts: Fix race condition when closing a socket while using
{active,N} on Windows.
* erts: Allow more than one -config command line option to erl on
Windows to conform with other OS.
* erts: Fix so that ERL_FLAGS environment variable does not
interfere with command line arguments. Before this fix you
could write: ERL_FLAGS="10" erl +S and erlang would start as if
+S had been given the argument 10.
* erts: The bug with ID ERL-717 has been fixed. The functions
io:columns() and io:rows() only worked correctly inside
interactive erlang shells before this fix. These functions
returned {error,enotsup} before this fix even if stdout and
stdin were connected to a terminal when they were invoked from
an escript or a program started with e.g., erl -noshell.
* erts: Do not use named label in ethread.c inline assemble. This
allows erts to be compiled using gcc 9.1.0 with LTO enabled.
* erts: erlang:fun_to_list/1 will now escape the module and
function name when necessary.
* erts: process_info(P,binary) would neglect to look through heap
fragments, potentially missing a few binaries associated with
the process.
* erts: HiPE is now automatically disabled on systems with non-
glibc implementation (for instance musl). This is because musl
does not provide the API's for guaranteeing that signals are
delivered on the correct native stack.
* erts: Fixed bug triggered if a process is killed during call to
persistent_term:put or persistent_term:erase.
* erts: Add units to all memory slogans in the crash dump
documentation.
* erts: Fix a bug in binary_to_term that would crash the emulator
if a term larger than 16GB was to be decoded.
* erts: Fixed bug related to an exiting process sending EXIT and
DOWN signals to remote linked/monitored processes. Bugs exists
since OTP 22.0.
* erts: erlc can now automatically use a compile server to avoid
starting an Erlang system for each file to be compiled in a
multi-file project. See the documentation for how to enable it.
* erts: The possibility to send ancillary data, in particular the
TOS field, has been added to gen_udp:send/4,5.
* erts: The net module has been split into 'net' (kernel) and
prim_net (preloaded).
* erts: Socket counters now works as expected and can also be
extracted with the (new) info function.
* erts: re:run() now avoids validating utf8 in the subject more
than once in the same call. This validation could previously be
performed multiple times when the global option was passed.
* erts: The un-documented function erlang:dist_get_stat/1 now
returns the real value of what the distribution queue contains
instead of a boolean.
* erts: ETS ordered_set tables with write_concurrency enabled has
got a performance issue fixed. There were no limits for the
values of internal statistics counters before this fix. This
could result in that the data structure sometimes reacted
slowly to a change in how many parallel processes were using
it.
* erts: Optimize the reception of large distribution messages.
* erts: Binary matching and functions like split_binary/2 will
now create heap binaries when the results are small enough,
reducing the chances of small sub-binaries keeping large
binaries alive.
* erts: Fixed rare emulator crash in instrument:allocations/0-1.
* erts: Ports could pass very small binaries as reference counted
off heap binaries to processes. This could cause an unnecessary
large memory usage and an unnecessary load on the binary
allocator. Small binaries are now always passed as heap
binaries to processes.
* erts: unicode:characters_to_binary() could return very small
binaries as reference counted off heap binaries. This could
cause an unnecessary large memory usage and an unnecessary load
on the binary allocator. Small binaries are now always returned
as heap binaries.
* erts: Improved erl_nif documentation regarding on_load and
Erlang stub/fallback functions.
* erts: New feature ets:info(_, binary) to get information about
all reference counted binaries kept by a table. This is the
same kind of debug information that process_info(_, binary)
returns for a process.
* erl_docgen: Update the documentation build support to handle
FOP 2.1 .
* ftp: A possibly infinite loop when receiving messages divided
in parts is removed.
* dialyzer: Allow native compilation when using Dialyzer from
Erlang. The options native (defaults to false) and native_cache
have been added.
* eunit: Handle get_until request with explicit encoding in the
implementation of the I/O protocol.
* snmp: Fix various minor issues related to Dialyzer. Mostly
these are dialyzer warnings, but there was also some minor bugs
detected by Dialyzer.
* snmp: Fixed a dets usage problem detected by dialyzer.
* snmp: The function snmp:print_version_info() prints various
version info. For each module a number of items are printed,
such as app vsn and md5 digest. And an attempt was also made to
print "compile time". This used to be available in the
module_info for each module, but has now been removed.
* snmp: The use of the deprecated random module has been replaced
the with rand module.
* snmp: Removed use of the deprecated function
erlang:get_stacktrace(). Instead make use of the 'catch
Class:Error:Stacktrace' feature.
* syntax_tools: Add missing calls to erl_syntax:unwrap/1. The
nodes concerned represent names and values of maps and map
types.
* wx: Fix a driver bug that could crashes when allocating memory.
* erl_interface: Fix bugs in ei_print_term for binaries and bit
strings causing incorrect output.
* erl_interface: Fixed bug in ei_decode_fun for very old fun
encoding format. Bug exist since OTP 22.0.
* erl_interface: ei_print_term() now supports printing of maps
and funs.
* xmerl: xmerl_sax_parser crashed during charset detection when
the xml declarations attribute values was missing the closing
quotation (' or ").
* ssl: Handling of zero size fragments in TLS could cause an
infinite loop. This has now been corrected.
* ssl: DTLS record check needs to consider that a resent hello
message can have a different version than the negotiated.
* ssl: Basic support for TLS 1.3 Client for experimental use. For
more information see the Standards Compliance chapter of the
User's Guide.
* ssl: Correct solution for retaining tcp flow control OTP-15802
(ERL-934) as to not break ssl:recv as reported in (ERL-938)
* ssl: Enhance dialyzer specs to reflect implementation better
and avoid dialyzer warnings for the user that wants to use TLS
with unix domain sockets.
* ssl: Add support for ECDSA signature algorithms in TLS 1.3.
* ssl: Correct error handling of TLS downgrade, possible return
values form ssl:close/2 when downgrading is {ok, Port} or
{error, Reason}, it could happen that only ok was returned
instead of {error, closed} when downgrade failed due to that
the peer closed the TCP connection.
* os_mon: Fix disk_sup to ignore squashfs on Linux when
determining if a mounted filesystem is full or not.
* os_mon: Fix bug where cpu_sup:util() always returned 100% on
systems not using gnu libc, for example Alpine OS.
* ssh: Fixed wrong type definition for the daemon option
subsystems.
* ssh: Fixed a possible SSH logging crash if there was a problem
in an early stage of session setup.
* ssh: The documentation for the modules ssh_connection, ssh_sftp
and ssh_sftpd are now generated from the -spec:s.
* ssh: Internal cleanup including removal of the internal file
ssh_userauth.hrl.
* ssh: Removed unused definitions in ssh.hrl.
* ssh: Removed unused fields in the internal #connection{}
record.
* ssh: To get information of a connection_ref() from for example
ssh:connect/3, there was previously one function available
namely ssh:connection_info/2. This ticket adds
ssh:connection_info/1 which returns all information. For
daemons (servers) started with for example ssh:daemon/2 the
function ssh:daemon_info/1 returning all information was
available. This ticket adds ssh:daemon_info/2 which returns
only the information specified in the second argument. The info
of connections and of daemons now also includes the item
'options'. Only those options that does not have their default
values are returned. For a connection also the items
'algorithms' and 'channels' are added.
* inets: httpd - Accept singel LF as line terminator
* inets: mod_esi will now always propagate the actual HTTP status
code that it answered with, to later mod-modules, and not in
some cases hardcode 200.
* compiler: Code such as the following would crash the compiler
in OTP 22: [some_atom = fun some_function/1]
* compiler: Compilation could get really slow (in the order of
minutes instead of seconds) when compiling huge functions.
(Thanks to Kostis Sagonas for reporting this bug.)
* compiler: Fixed a bug in the validator that could reject valid
code.
* compiler: In rare circumstances, when two clauses had identical
bodies and guard tests that tested a single boolean variable,
the guard test for the second clause could be discarded,
executing the second clause unconditionally if the first clause
was not executed.
* compiler: Fixed extremely slow compilation for huge functions
doing predominantly pattern matching.
* compiler: The compiler could generate unsafe code (that would
crash the runtime system) for map pattern matching. The code
could be unsafe if the matched key was not present in the map
at runtime.
* compiler: Correct code using try/after could fail to compile
when using the option 'no_type_opt'.
* compiler: The compiler could crash when compiling code that
called 'length/1' on a binary extracted using the binary
syntax.
* compiler: Fixed a bug where the compiler could fail with an
internal consistency failure error when compiling receive
statements.
* compiler: Fixed a problem where the compiler would crash when
compiling binary matching in a function head.
* public_key: Support Password based encryption with AES
* public_key: Change dialyzer spec to avoid confusion
* runtime_tools: Fix dbg:stop_clear/0 to also clear trace events
(send and 'receive').
* megaco: Fix various minor issues related to Dialyzer. Mostly
these are dialyzer warnings, but there was also some minor bugs
detected by Dialyzer.
* crypto: The implementation of crypto_one_time/4 is adjusted to
match the type specification. The spec and the black-box
behaviour of the function are unchanged. Some details: Both the
spec and the implementation were correct seen separately. But
with both of them combined simultaneously with
crypto_one_time/5 which was called by the implementation of
crypto_one_time/4, an (obvious) error was detected by a
Dialyzer with more thorough checking than usual.
* crypto: When using crypto with FIPS mode enabled, the digests
were not correctly handled.
* crypto: A memory leak in error handling code in
ng_crypto_init_nif is fixed.
* crypto: Fixed the broken static build of the crypto nifs
* crypto: The Message Authentication Codes (MAC) CMAC, HMAC and
Poly1305 are unified into common functions in the New Crypto
API. See the manual for CRYPTO.
* sasl: The net module has been split into 'net' (kernel) and
prim_net (preloaded).
* jinterface: Replaced deprecated <tt> with <code> in
documentation.
- Rebased patches:
+ 0001-erts-Do-not-use-named-no_cpuid-label-in-asm.patch dropped (merged upstream)
OBS-URL: https://build.opensuse.org/request/show/732489
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=89
- Add patch 0001-erts-Do-not-use-named-no_cpuid-label-in-asm.patch:
fix boo#1142913
- Changes for 22.0.7:
* compiler: Fixed a compiler crash introduced in 22.0.6
(OTP-15952).
- Changes for 22.0.6:
* compiler: Fixed an unsafe optimization when matching
tuple_size/1 outside of guards, which could crash the emulator
if the argument was not a tuple.
* compiler: Fixed a rare bug that could cause the wrong kind of
exception to be thrown when a BIF failed in a function that
matched bitstrings.
* compiler: Fixed a bug where receive statements inside try/catch
blocks could return incorrect results.
* ssl: Enhance error handling for erroneous alerts from the peer.
* hipe: The HiPE compiler would badly miscompile certain
try/catch expressions, so it will now refuse to compile modules
containing try or catch. As a consequence of this, dialyzer
will no longer compile key modules to native code. ***
POTENTIAL INCOMPATIBILITY ***
* dialyzer: The HiPE compiler would badly miscompile certain
try/catch expressions, so it will now refuse to compile modules
containing try or catch. As a consequence of this, dialyzer
will no longer compile key modules to native code. ***
POTENTIAL INCOMPATIBILITY ***
- Changes for 22.0.5:
* inets: Fix a regression in http client that causes a crash when
request URI has no scheme.
* ssl: Fix handling of certificate decoding problems in TLS 1.3
similarly as in TLS 1.2.
OBS-URL: https://build.opensuse.org/request/show/719512
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=87
- Version 22.0:
- Potential Incompatibilities:
* gen_* behaviours: If logging of the last N messages through
sys:log/2,3 is active for the server, this log is included in
the terminate report.
* reltool: A new element, Opts, can now be included in a rel
tuple in the reltool release specific configuration format:
{rel, Name, Vsn, RelApps, Opts}.
* All external pids/ports/refs created by erlang:list_to_pid and
similar functions now compare equal to any other pid/port/ref
with same number from that node.
* The old legacy erl_interface library is deprecated as of OTP
22, and will be removed in OTP 23. This does not apply to the
ei library.
* VxWorks is deprecated as of OTP 22 and will be removed in OTP
23.
- New Features:
* Support for Erlang Distribution protocol to split the payload
of large messages into several fragments.
* ETS option write_concurrency now also effects and improves
scalability of ordered_set tables.
* The length/1 BIF used to calculate the length of the list in
one go without yielding, even if the list was very long. Now it
yields when called with long lists.
* A new (still experimental) module socket is introduced. It is
implemented as a NIF and the idea is that it shall be as "close
as possible" to the OS level socket interface.
* Added the NIF function enif_term_type, which helps avoid long
sequences of enif_is_xyz by returning the type of the given
term. This is especially helpful for NIFs that serialize terms,
such as JSON encoders, where it can improve both performance
and readability.
* The compiler has been rewritten to internally use an
intermediate representation based on Static Single Assignment
(SSA). The new intermediate representation makes more
optimizations possible.
* All compiler options that can be given in the source file can
now be given in the option list on the command line for erlc.
* In OTP 22, HiPE (the native code compiler) is not fully
functional. The reasons for this are new BEAM instructions for
binary matching that the HiPE native code compiler does not
support. If erlc is invoked with the +native option, and if any
of the new binary matching instructions are used, the compiler
will issue a warning and produce a BEAM file without native
code.
* Cover now uses the counters module instead of ets for updating
counters. The new function cover:local_only/0 allows running
Cover in a restricted but faster local-only mode. The increase
in speed will vary depending on the type of code being
cover-compiled, as an example the compiler test suite runs more
than twice as fast with the new Cover.
* A simple socket API is provided through the socket module. This
is a low level API that does *not* replace gen_[tcp|udp|sctp].
It is intended to *eventually* replace the inet driver. It also
provides a basic API that facilitates the implementation of
other protocols than TCP, UDP and SCTP. Known issues are; No
support for the Windows OS (currently), a small term leakage.
This feature will be classed as experimental in OTP 22.
* SSL: now uses the new logger API, including log levels and
verbose debug logging.
* SSL: Basic support for TLS 1.3 Server for experimental use.
* crypto: The new hash_info/1 and cipher_info/1 functions returns
maps with information about the hash or cipher in the argument.
- The application otp_mibs has been removed from OTP.
OBS-URL: https://build.opensuse.org/request/show/710208
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=84
- Update to 21.3.8.1:
- Changes for 21.3.8.1:
* http://erlang.org/download/OTP-21.3.8.1.README
* erts: Fixed a buffer overflow when binary_to_existing_atom/2
and list_to_existing_atom/2 was used with the latin1
encoding.
* ssl: Correct solution for retaining tcp flow control
OTP-15802 (ERL-934) as to not break ssl:recv as
reported in (ERL-938)
* tools: cover would fail to start if two processes tried to
start it at the exact same time.
- Update to 21.3.8:
- Changes for 21.3.8:
* http://erlang.org/download/OTP-21.3.8.README
* common_test: The test result when a hook function fails is in
general the same as if the function that the hook is
associated with fails. For example, if
post_init_per_testcase fails the result is that the
test case is skipped, as is the case when
init_per_testcase fails.This, however, was earlier not
true for timetrap timeouts or other error situations
where the process running the hook function was killed.
This is now corrected, so the error handling should be
the same no matter how the hook function fails.
Related Id(s): ERIERL-334
* common_test: In some rare cases, when two common_test nodes used the
same log directory, a timing problem could occur which
caused common_test to crash because it's log cache file
was unexpectedly empty. This is now corrected.
Related Id(s): ERIERL-342
* common_test: Two new common_test hook functions are introduced:
post_groups/2, which is called after Suite:groups/0
post_all/3, which is called after Suite:all/0
A new term, {testcase,TestCase,RepeatProperties} is now
also allowed in the return from all/0. This can be used
for repeating a single test case a specific number of
times, or until it fails or succeeds once.
* eldap, public_key, ssl: Back port of bug fix ERL-893 from OTP-22 and document
enhancements that will solve dialyzer warnings for
users of the ssl application.
This change also affects public_key, eldap (and inet doc).
Related Id(s): ERL-893, ERL-929, PR-2215
* erl_interface: erl_interface/ei refused to use node names with an
alive name (the part of the node name preceding the @
sign) longer than 63 characters and a host name longer
than 64 characters. The total amount of characters
allowed in a node name (alivename@hostname) was thus
limited to 128 characters. These limits applied both to
the own node name as well as node names of other nodes.
Ordinary Erlang nodes limit the node name length to 256
characters, which meant that you could not communicate
with certain Erlang nodes due to their node name used.
erl_interface/ei now allow the total amount of
characters in a node name to be up to 256 characters.
These characters may be distributed between alive name
and host name in whatever way needed. That is, the
maximum amount of characters in the alive name may be
254 and the maximum amount of characters in the host
name may be 254, but in total the node name must not
exceed 256 characters.
* erts: Fixed more bugs in process_info(reductions) causing it
to sometimes behave non-monotonic. That is, a
subsequent call toward the same process could return a
lower reduction value.
Related Id(s): ERIERL-337, OTP-15709
* ssl: Missing check of size of user_data_buffer made internal
socket behave as an active socket instead of active N.
This could cause memory problems.
* eldap, public_key, ssl: Back port of bug fix ERL-893 from OTP-22 and document
enhancements that will solve dialyzer warnings for
users of the ssl application.
This change also affects public_key, eldap (and inet doc).
* stdlib: A bug in gen_statem has been fixed where the internal
timeout message could arrive as an info to the callback
module during high load due to incorrect use of
asynchronous timer cancel.
OBS-URL: https://build.opensuse.org/request/show/703430
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=83
- Update to 21.3.5:
- Changes for 21.3.5:
* http://erlang.org/download/OTP-21.3.5.README
* diameter: Fix inadvertently broad monitor that resulted in
gen_server cast messages to hidden nodes from module
diameter_dist.
* erts: Add missing documentation of new external tags NEW_PID,
NEW_PORT and NEWER_REFERENCE introduced in OTP 19.
These new tags are planned to be "activated" in OTP 23
when distribution capability flag DFLAG_BIG_CREATION
becomes mandatory. Older nodes (>= 19) are able to
decode these new tags and send them back to the new
node. Nodes older than OTP 23 will however never encode
their own local pids, ports and references using the
new tags.
* inets: Fix the internal handling of the option
erl_script_timeout in httpd. If explicit
erl_script_timeout value was supplied in seconds it was
not correctly converted to millisecond units for
internal usage.
This change fixes the handling of erl_script_timeout in
all possible configuration scenarios.
OBS-URL: https://build.opensuse.org/request/show/695460
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=80
- Update to 21.3.4:
- Changes for 21.3.4:
* http://erlang.org/download/OTP-21.3.4.README
* crypto: Fixed build link error on Windows. Unresolved symbol
'bcmp'.
* erl_interface: Fix handling of Makefile dependencies so that parallel
make works properly.
* erts: Fix erlang:open_port/2 with the fd option to correctly
cleanup the pollset when the port is closed. Before
this fix there would be error printouts sent to logger
when the same fd was reused in a new port.
* ssh: The callback ssh_channel:init/1 was missing in OTP-21
* ssh: If a client was connected to an server on an already
open socket, the callback fun(PeerName,FingerPrint) in
the accept_callback option passed the local name in the
argument PeerName instead of the remote name.
* common_test: OTP internal test improvements.
OBS-URL: https://build.opensuse.org/request/show/694148
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=79
- Update to 21.3.2:
- Changes for 21.3.2:
* http://erlang.org/download/OTP-21.3.2.README
* erts: If a suspend/resume signal pair was sent to a process
while it was executing dirty, the receiving process
could later end up in a suspended state indefinitely.
This bug was introduced in ERTS version 10.0 (OTP
21.0).
* etrs: Fix a possible deadlock when terminating the ERTS
caused by a dirty scheduler not releasing it's
run-queue lock when terminating.
* xmerl: Handling of character references in attributes are
fixed.
* xmerl: Normalization of whitespace characters in attributes
are fixed so it works when character references are
used.
OBS-URL: https://build.opensuse.org/request/show/688658
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=77
- Update to 21.3.1:
- Changes for 21.3.1:
* http://erlang.org/download/OTP-21.3.1.README
* erl_interface: Fixed two bugs in the erl_call program. A missing
initialization (introduced in erl_interface-3.11) which
either caused a crash or failure to connect to or start
a node, and an incorrectly calculated timeout which
could cause failure to start an erlang node. These bugs
only caused failures on some platforms.
* ssl: The timeout for a passive receive was sometimes not
cancelled and later caused a server crash. This bug has
now been corrected.
* ssl: Add tag for passive message (active N) in cb_info to
retain transport transparency.
OBS-URL: https://build.opensuse.org/request/show/686938
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=76
- Update to 21.3:
- Changes for 21.3:
* http://erlang.org/download/OTP-21.2.7.README
* Erlang/OTP 21.3 is the third service release for the 21st major release
with improvements, as well as a few features
* Highlights
* Kernel: The standard logger handler, logger_std_h, now has a new internal
feature for log rotation. For full information see the documentation.
* SSL:The Reason part of the error return from the functions connect and
handshake has a better and documented format. This is a potential
incompatibility. See the documentation.
Refactoring of state handling has improved the TLS application data
throughput and reduced CPU overhead
Code optimizations has reduced CPU load for encryption/decryption,
especially for Erlang's distribution protocol over TLS
Now supports active N
* Erl_interface: Support for plugin of a user supplied socket implementation has been added.
* OTP:The HTML reference documentation now shows the OTP version where
modules and functions were first introduced. Versions of OTP older than R13B04 is not shown in the reference
documentation
* For a full list of details see:
http://erlang.org/download/otp_src_21.3.readme
- Update to 21.2.7:
- Changes for 21.2.7:
* http://erlang.org/download/OTP-21.2.7.README
* erts, otp: Fixes of install/release phase in build system.
-- The source tree was modified when
installing/releasing and/or applying a patch.
-- Some files were installed with wrong access rights.
-- If applying a patch (using otp_patch_apply) as
another user (except root) than the user that built the
source, the documentation was not properly updated.
* erts, kernel: Setting the recbuf size of an inet socket the buffer is
also automatically increased. Fix a bug where the auto
adjustment of inet buffer size would be triggered even
if an explicit inet buffer size had already been set.
* erts: Reading from UDP using active true or active N mode has
been optimized when more packets than specified by
read_packets are available on the socket.
* erts, kernel: Setting the recbuf size of an inet socket the buffer is
also automatically increased. Fix a bug where the auto
adjustment of inet buffer size would be triggered even
if an explicit inet buffer size had already been set.
OBS-URL: https://build.opensuse.org/request/show/685273
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=75
- update to 21.2.4:
- Changes for 21.2.4:
* http://erlang.org/download/OTP-21.2.4.README
* erts: Fix bug where doing a gen_tcp:send on a socket with
delay_send set to true could cause a segfault if the
other side closes the connection.
Bug was introduced in erts-10.2 (OTP-21.2).
* erts: Fix a race condition when a port program closes that
could result in the next started port to hang during
startup.
Bug was introduced in erts-10.0 (OTP-21.0).
* erts: Fix a bug where polling for external events could be
delayed for a very long time if all active schedulers
were 100% loaded.
Bug was introduced in erts-10.2 (OTP-21.2).
* inets: Make sure ipv6 addresses with brackets in URIs are
converted correctly before passing to lower level
functions like gen_tcp and ssl functions. Could cause
connection to fail.
- update to 21.2.3:
- Changes for 21.2.3:
* http://erlang.org/download/OTP-21.2.3.README
* compiler: An optimization that avoided allocation of a stack
frame for some case expressions was introduced in OTP
21. (ERL-504/OTP-14808) It turns out that in rare
circumstances, this optimization is not safe.
Therefore, this optimization has been disabled.
* erts: Fixed a crash when dangling files were closed after
init:restart/0.
* erts: A bug that could cause dirty schedulers to become
unresponsive has been fixed.
* ssl: Fix encoding of the SRP extension length field in ssl.
The old encoding of the SRP extension length could
cause interoperability problems with third party SSL
implementations when SRP was used.
* ssl: Guarantee active once data delivery, handling TCP
stream properly.
Correct gen_statem returns for some error cases
* xmerl: The charset detection parsing crash in some cases when
the XML directive is not syntactic correct.
OBS-URL: https://build.opensuse.org/request/show/668740
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=71
- update to 21.2.2:
- Changes for 21.2.2:
* http://erlang.org/download/OTP-21.2.2.README
* ssh: Fixed port leakage if a ssh:daemon call failed.
- update to 21.2.1:
- Changes for 21.2.1:
* http://erlang.org/download/OTP-21.2.1.README
* erts: Fixed bug on big endian architectures when changing
file permissions or ownership with file:change_mode,
change_owner, change_group or write_file_info. Bug
exists since OTP-21.0.
* erts: Fixed bug in operator band of two negative operands
causing erroneous result if the absolute value of one
of the operands have the lowest N*W bits as zero and
the other absolute value is not larger than N*W bits. N
is an integer of 1 or larger and W is 32 or 64
depending on word size.
* ssl: Fixed renegotiation bug. Client did not handle server
initiated renegotiation correctly after rewrite to two
connection processes, due to ERL-622 commit
d87ac1c55188f5ba5cdf72384125d94d42118c18. This could
manifest it self as a " bad_record_mac" alert.
Also included are some optimizations
- update to 21.2:
- Changes for 21.2:
* http://erlang.org/download/OTP-21.2.README
* HIGHLIGHTS
* erts, sasl: New counters and atomics modules supplies access to
highly efficient operations on mutable fixed word sized
variables.
* erts: There is a new module persistent_term that implements a
term storage suitable for terms that are frequently
used but never or infrequently updated. Lookups are
done in constant time without copying the terms.
* ssh: Requires OpenSSL 1.1.1 or higher as cryptolib under the
OTP application crypto.
* ssl: *** POTENTIAL INCOMPATIBILITY ***
ssl now uses active n internally to boost performance.
Old active once behavior can be restored by setting
application variable see manual page for ssl
application (man 6).
* erts: Add a new pollset that is made to handle sockets that
use {active, true} or {active, N}. The new pollset will
not be polled by a pollthread, but instead polled by a
normal scheduler.
This change was made because of the overhead associated
with constantly having to re-apply the ONESHOT
mechanism on fds that all input events were
interesting.
The new pollset is only active on platforms that
support concurrent kernel poll updates, i.e. Linux and
BSD.
* POTENTIAL INCOMPATIBILITIES:
kernel: A new function, logger:update_handler_config/3 is
added, and the handler callback changing_config now has
a new argument, SetOrUpdate, which indicates if the
configuration change comes from set_handler_config/2,3
or update_handler_config/2,3.
This allows the handler to consistently merge the new
configuration with the old (if the change comes from
update_handler_config/2,3) or with the default (if the
change comes from set_handler_config/2,3).
The built-in handlers logger_std_h and
logger_disk_log_h are updated accordingly. A bug which
could cause inconsistency between the handlers'
internal state and the stored configuration is also
corrected.
* ssl: ssl now uses active n internally to boost performance.
Old active once behavior can be restored by setting
application variable see manual page for ssl
application (man 6).
* full relase notes here: http://erlang.org/download/OTP-21.2.README
OBS-URL: https://build.opensuse.org/request/show/662223
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=70
Update to 21.1.1
Add the dejavu-fonts dependecy because is needed by fop, else it raises an error for missing font.
Rebuild all the patch files
- update to 21.1.1:
- Changes for 21.1.1:
- http://erlang.org/download/OTP-21.1.1.README
* erts: Fixed a memory leak on errors when reading files.
* ssl: From ssl-9.0.2. CLOSE ALERTS could under some
circumstances be encoded using an incorrect cipher
state. This would cause the peer to regard them as
unknown messages.
* ssl: Correct handling of socket packet option with new TLS
sender process, from ssl-9.0.2. When changing the
socket option {packet, 1|2|3|4} with ssl:setopts/2 the
option must internally be propagated to the sender
process as well as the reader process as this
particular option also affects the data to be sent.
* eldap: A race condition at close could cause the eldap client
to exit with a badarg message as cause.
- Changes for 21.1:
- http://erlang.org/download/OTP-21.1.README
* ssh: The key exchange methods
'curve25519-sha256@libssh.org', 'curve25519-sha256' and
'curve448-sha512' are implemented. The last two are
defined in
https://tools.ietf.org/html/draft-ietf-curdle-ssh-curves
They all depends on that OpenSSL 1.1.1 or higher is
used as cryptolib.
* crypto: The typing in the CRYPTO and PUBLIC_KEY applications
are reworked and a few mistakes are corrected.
The documentation is now generated from the typing and
some clarifications are made.
A new chapter on Algorithm Details such as key sizes
and availability is added to the CRYPTO User's Guide.
* erts: The socket options recvtos, recvttl, recvtclass and
pktoptions have been implemented in the socket modules.
See the documentation for the gen_tcp, gen_udp and inet
modules. Note that support for these in the runtime
system is platform dependent. Especially for pktoptions
which is very Linux specific and obsoleted by the RFCs
that defined it.
* ssh: The cipher 'chacha20-poly1305@openssh.com' is now
supported if OpenSSL 1.1.1 or higher is used as
cryptolib.
- Changes for 21.0.9:
- http://erlang.org/download/OTP-21.0.9.README
* compiler: Fix a regression in OTP-15204 that removed .beam file
metadata that some external build tools relied on.
* erts: As of ERTS version 10.0 (OTP 21.0) the erl_child_setup
program, which creates port programs, ignores TERM
signals. This setting was unintentionally inherited by
port programs. Handling of TERM signals in port
programs has now been restored to the default behavior.
That is, terminate the process.
* erts: The fix made for OTP-15279 in erts-10.07 (OTP-21.0.8)
was not complete. It could cause a new connection
attempt to be incorrectly aborted in certain cases.
This fix will amend that flaw.
- Changes for 21.0.8:
- http://erlang.org/download/OTP-21.0.8.
* erts: A process could get stuck in an infinite rescheduling
loop between normal and dirty schedulers. This bug was
introduced in ERTS version 10.0.
* erts: Garbage collection of a distribution entry could cause
an emulator crash if net_kernel had not brought
previous connection attempts on it down properly.
* kernel: Fixed bug in net_kernel that could cause an emulator
crash if certain connection attempts failed. Bug exists
since kernel-6.0 (OTP-21.0).
- Changes for 21.0.7:
- http://erlang.org/download/OTP-21.0.7.
* erts: A race between termination of a process and resume of
the same process via erlang:resume_process/1 could
cause the VM to crash. This bug was introduced in erts
version 10.0 (OTP 21.0).
* erts: When tracing on running, in trace events could be lost
when a process was rescheduled between a dirty and a
normal scheduler.
- Changes for 21.0.6:
- http://erlang.org/download/OTP-21.0.6.README
* crypto: Update the crypto engine functions to handle multiple
loads of an engine.
* inets: Change status code for no mod found to handle request
to 501
* ssl: Correct cipher suite handling for ECDHE_*, the
incorrect handling could cause an incorrrect suite to
be selected and most likly fail the handshake.
- Changes for 21.0.5:
- http://erlang.org/download/OTP-21.0.5.README
* POTENTIAL INCOMPATIBILITIES erts:
Fixed a bug causing some Erlang references to be
inconsistently ordered. This could for example cause
failure to look up certain elements with references as
keys in search data structures. This bug was introduced
in R13B02.
* compiler: Fixed an issue where files compiled with the
+deterministic option differed if they were compiled in
a different directory but were otherwise identical.
* crypto: Fixed a node crash in crypto:compute_key(ecdh, ...)
when passing a wrongly typed Others argument.
* erts: Fixed a bug which caused an emulator crash when
enif_send() was called by a NIF that executed on a
dirty scheduler. The bug was either triggered when the
NIF called enif_send() without a message environment,
or when the process executing the NIF was send traced.
- Changes for 21.0.4:
- http://erlang.org/download/OTP-21.0.4.README
* erts: Fixed a crash when matching directly against a literal
map using a single key that had been saved on the
stack.
* erts: Fix node crash when passing a bad time option to
file:read_file_info/2.
- Changes for 21.0.3:
- http://erlang.org/download/OTP-21.0.3.README
* otp: Build support for the erlang/corba repository.
* erts: Fixed a scheduler bug that caused normal schedulers to
run dirty code.
* erts: Fixed a bug in erlang:trace_info/2 which caused the
emulator to crash when a bad argument was passed. The
bug was introduced in ERTS version 10.0.
- Changes for 21.0.2:
- http://erlang.org/download/OTP-21.0.2.README
* compiler: In rare cases involving matching of binary literal
strings, the compiler could optimize away code that
should be executed.
* compiler:There could be an internal consistency check failure
when compiling code that called map_get(Key, Map) and
then updated the same map.
* compiler: In rare circumstances, the compiler could crash in
beam_jump when compiling a floating point operation.
* erts: Fixed a rare bug that could cause processes to be
scheduled after they had been freed
* erts: Fixed a race condition in the inet driver that could
cause receive to hang when the emulator was compiled
with gcc 8.
* public_key: Fix some of the keylengths in the newly generated moduli
file in public_key are not universally supported. This
could cause the SSH key exchange
diffie-hellman-group-exchange-sha* to fail.
Those keylengths are now removed.
* stdlib: Fix a bug that could cause a crash when formatting a
list of non-characters using the control sequences p or
P and limiting the output with the option chars_limit.
- Changes for 21.0.1:
- http://erlang.org/download/OTP-21.0.1.
* compiler:The compiler could crash when compiling a
complicated function that used the binary syntax.
- Changes for 21.0:
- http://erlang.org/download/otp_src_21.0.readme
* Erlang/OTP 21 is a new major release with new features, improvements as well as incompatibilities.
* Potential Incompatibilities:
- All Corba applications are now moved from the OTP repository
- A new Corba repository will be created https://github.com/erlang
- New applications ftp and tftp, moved from inets
- ssl no longer supports 3_DES cipher suites or RSA-key exchange cipher suites by default
- Erlang:monitor on a primitive node (erl_interface, jinterface, etc) will no longer fail with badarg exception.
Instead a monitor will be created, but it will only supervise the connection to the node.
* Highlights:
* Erts:
- Enhanced IO scalability
- Support for usage of distribution controller processes for alternative transports, routing etc
- compact instructions on 64bit systems for code below 4GB 20% less memory for loaded code
- Rewrite of the efile-driver with NIFs and "Dirty schedulers" resulting in faster file operations
non-smp VM removed
- link and monitor optimized for scalability
OBS-URL: https://build.opensuse.org/request/show/646128
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=64
- Update to 20.2.2.
- Changes for 20.2.2:
* mnesia: Removed a quadratic behavior in startup. This change
implies that backend plugins (if used) must be set when the
schema is created or via configuration parameters before mnesia
is started.
* mnesia: Bad timing could crash mnesia after a checkpoint was
deactivated and reactivated with the same checkpoint name on
different tables.
- Changes for 20.2.1:
* ssh: Fix problem with OpenSSH 7.2 (and later) clients that has
used sha1 instead of sha2 for rsa-sha-256/512 user's public
keys.
- Highlighted changes for 20.2:
* crypto, ssl: The crypto API is extended to use private/public
keys stored in an Engine for sign/verify or encrypt/decrypt
operations. The ssl application provides an API to use this new
engine concept in TLS.
* ssh: SSH can now fetch the host key from the private keys stored
in an Engine. See the crypto application for details about
Engines.
* ssl: A new command line option -ssl_dist_optfile has been added
to facilitate specifying the many options needed when using SSL
as the distribution protocol.
* stdlib: Improve performance of the new string functionality when
handling ASCII characters.
OBS-URL: https://build.opensuse.org/request/show/571641
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=60
- Update to 20.1.5:
* erts: Fixed a regression in zlib:gunzip/1 that prevented it
from working when the decompressed size was a perfect multiple
of 16384. This regression was introduced in 20.1.1
* erts: Fixed a memory corruption bug in enif_inspect_iovec;
writable binaries stayed writable after entering the iovec.
* erts: Fixed a crash in enif_inspect_iovec on encountering empty
binaries.
* erts: zlib:deflateParams/3 will no longer return buf_error when
called after zlib:deflate/2 with zlib 1.2.11.
* inets: Correct the handling of location headers so that the
status code is not hard coded. This should have been fixed by
commit 2cc5ba70cbbc6b3ace81a2a0324417c3b65265bb but
unfortunately was broken during a code refactoring and
unnoticed due to a faulty placed test case.
- Update to 20.1.4:
* inets: Fix broken handling of POST requests
* inets: Make sure ints:stop/2 of the service httpd is
synchronous
* inets: Honor status code returned by ESI script and modernize
"location" header handling.
- Update to 20.1.3:
* diameter: A fault introduced in diameter 2.1 could cause decode
errors to be ignored in AVPs following the header of aGrouped
AVP.
* erts: Added zlib:set_controlling_process/2 to move a zstream()
between processes.
* erts: Fix so that schedulers are bound correctly when the first
available cpu is not the first detected cpu. e.g. when using
"taskset -c X..Y" when X is not equal to 0.
* snmp: The recbuf configuration option was not propagated
correctly to the socket for the SNMP Manager.
OBS-URL: https://build.opensuse.org/request/show/545828
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=59
- Update to 21.1.2:
* diameter: An inadvertently removed monitor in diameter 2.1
caused the ets table diameter_reg to leak entries, and caused
service restart and more to fail.
* erts: Fixed bug that could cause a VM crash when a corrupt
message is received on distribution channel from other node.
- Update to 20.1.1:
* compiler: The compiler could issue an incorrect internal
consistency failure diagnostic for some complicated bit syntax
maches.
* erts: The new zlib module returned a data_error when inflating
concatenated streams, which was incompatible with the old
module's behavior of returning the uncompressed data up to the
end of the first stream.
* erts: zlib:gunzip/1 will no longer stop at the end of the first
stream when decompressing concatenated gzip files.
* ssh: Fixed broken printout
* ssh: Disable aes_gcm ciphers if peer is OpenSSH 6.2 which is
known to have trouble with them in some cases.
- Update to 20.1:
* crypto, public_key: Extend crypto and public_key functions
sign and verify with: support for RSASSA-PS padding for
signatures and for saltlength setting X9.31 RSA padding. sha,
sha224, sha256, sha384, and sha512 for dss signatures as
mentioned in NIST SP 800-57 Part 1. ripemd160 to be used for
rsa signatures. A new tuple in crypto:supports/0 reports
supported MAC algorithms.
* diameter: Add service option decode_format to allow incoming
messages to be decoded into maps instead of records. Decode
performance has been improved. Add service/transport option
avp_dictionaries to give better support for dictionaries only
defining AVPs.
* erts: Upgraded the ERTS internal PCRE library from version
8.40 to version 8.41.
* erts, kernel, tools: Profiling with lock counting can now be
fully toggled at runtime in the lock counting emulator
(-emu_type lcnt). Everything is enabled by default to match
the old behavior, but specific categories can be toggled at
will with minimal runtime overhead when disabled. Refer to the
documentation on lcnt:rt_mask/1 for details.
* lcnt:collect and lcnt:clear will no longer block all other
threads in the runtime system. This makes it possible to run
the lock counting under heavier load.
* erts: The zlib module has been refactored and all its
operations will now yield appropriately, allowing them to be
used freely in concurrent applications.
* erts, tools: Add erlang:iolist_to_iovec/1, which converts an
iolist() to an erlang:iovec(), which is suitable for use with
enif_inspect_iovec().
* erts: Add new nif API functions for managing an I/O Queue. The
added functions are: enif_ioq_create(), enif_ioq_destroy(),
enif_ioq_enq_binary(), enif_ioq_enqv(), enif_ioq_deq(),
enif_ioq_peek(), enif_inspect_iovec(), enif_free_iovec()
* observer/crashdump_viewer: Reading of crash dumps with many
binaries is optimized. A progress bar is shown when the detail
view for a process is opened. The cdv script now sets
ERL_CRASH_DUMP_SECONDS=0 to avoid generating a new crash dump
from the node running the Crashdump Viewer.
* observer: Add system statistics and limits to frontpage in
observer.
* public_key, ssl**: Improved error propagation and reports
* ssh: A new option modify_algorithms is implemented. It enables
specifying changes on the default algorithms list. See the
reference manual and the SSH User's Guide chapter "Configuring
algorithms in SSH".
* tools/xref: The predefined Xref analysis locals_not_used now
understands the -on_load() attribute and does not report
unused functions.
* tools/fprof: When sampling multiple processes and analyzing
with totals set to true, the output now sums together all
caller and callee entries which concerns the same function.
Previous behaviour was to report each contributing entry
separately.
OBS-URL: https://build.opensuse.org/request/show/535374
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=57
- Only Java 1.6 is supported by Erlang since 18.0 release
- Update to 20.0.5:
* erts: Fixed bug in binary_to_term and binary_to_atom that could
cause VM crash. Typically happens when the last character of an
UTF8 string is in the range 128 to 255, but truncated to only
one byte. Bug exists in binary_to_term since ERTS version
5.10.2 (OTP_R16B01) and binary_to_atom since ERTS version 9.0
(OTP-20.0).
* inets: http_uri aligned to follow RFC 3986 and not convert "+"
to space when decoding URIs.
* inets: Added new option max_client_body_chunk to httpd server
to allow chunked delivery of PUT and POST data to mod_esi
callback. Note, new mod_esi callback implementation is
required. Also correct value provided by server_name
environment variable.
OBS-URL: https://build.opensuse.org/request/show/527005
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=56
- Update to 20.0.4:
* dializer: Fix a bug where merging PLT:s could lose info. The
bug was introduced in Erlang/OTP 20.0.
* erts: A timer internal bit-field used for storing scheduler id
was too small. As a result, VM internal timer data structures
could become inconsistent when using 1024 schedulers on the
system. Note that systems with less than 1024 schedulers are
not effected by this bug. This bug was introduced in ERTS
version 7.0 (OTP 18.0).
* erts: Automatic cleanup of a BIF timer, when the owner process
terminated, could race with the timeout of the timer. This
could cause the VM internal data structures to become
inconsistent which very likely caused a VM crash. This bug was
introduced in ERTS version 9.0 (OTP 20.0).
- Update to 20.0.3:
* asn1: Default values now work in extension for PER, so if you
give the atom asn1_DEFAULT instead of a value it will become
the default value.
* compiler: Fail labels on guard BIFs weren't taken into account
during an optimization pass, and a bug in the validation pass
sometimes prevented this from being noticed when a fault
occurred.
* erts: Binary append operations did not check for overflow,
resulting in nonsensical results when huge binaries were
appended.
* ssh: All unknown options are sent to the transport handler
regardless of type.
OBS-URL: https://build.opensuse.org/request/show/519286
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=55
- Update to 20.0.2:
* asn: Fixed compilation error of generated code caused by a
missing quotation of function names as part of an external call for
encoding.
* erts: Added missing release notes for OTP-14491 ("performance
bug in pre-allocators") which was included in erts-9.0.1 (OTP-20.0.1).
* erts: Fixed a bug that prevented TCP sockets from being
closed properly on send timeouts.
* erts: Fixed bug in operator bxor causing erroneuos result
when one operand is a big *negative* integer with the lowest N*W bits as
zero and the other operand not larger than N*W bits. N is an integer of 1
or larger and W is 32 or 64 depending on word size.
* kernel: The documentation for the 'quiet' option in
disk_log:open/1 had an incorrect default value.
- erlang-gs application has been depricated
OBS-URL: https://build.opensuse.org/request/show/517750
OBS-URL: https://build.opensuse.org/package/show/devel:languages:erlang:Factory/erlang?expand=0&rev=54
otp_src_R15B03.tar.gz has a lot of .beam files (which are compiled .erl), and they has been just repacked into rpms. we don't have any reasons not to trust Erlang/OTP maintainers, but it would be better to do clean and rebuild .beam from the sources.
- add make clean before build. it clears .beam files bundled with
sources. our aim is to build everything from sources. (forwarded request 147242 from matwey)
OBS-URL: https://build.opensuse.org/request/show/147366
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/erlang?expand=0&rev=12
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.