* 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