commit 32bec414bb6e8dba5952a5f84a703788dbedaeabc6f7035e434111b16dbd93b7 Author: Adrian Schröter Date: Mon Jan 13 12:31:59 2025 +0100 Sync from SUSE:SLFO:Main erlang revision b7b566cec66f84e9c3ee40419d96f030 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/OTP-27.1.3.tar.gz b/OTP-27.1.3.tar.gz new file mode 100644 index 0000000..cf6ab2b --- /dev/null +++ b/OTP-27.1.3.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:826e594b94115824960e8cb51116d4ae5410caf6be294e03268c109421d7098a +size 62192562 diff --git a/README.SUSE b/README.SUSE new file mode 100644 index 0000000..647ca50 --- /dev/null +++ b/README.SUSE @@ -0,0 +1,26 @@ +# Erlang in openSUSE +## Erlang Port-mapper Daemon and systemd + +Erlang Port-mapper Daemon in openSUSE uses systemd socket-activation. In order to fulfill security considerations, EPMd listens on loop-back interface by default. This is enough to run rabbitmq-server, ejabberd and user-started beam processes. + +For clustering, please, use ```/etc/systemd/system/epmd.socket.d/``` to configure interfaces to listen on. See man systemd.unit(5) for details. + +### Upgrading from sysvinit +```/etc/sysconfig/erlang``` has no effect now, to configure EPMd use systemd capabilities instead. + +### Example 1: change port +Create ```/etc/systemd/system/epmd.socket.d/port.conf``` with following content: +``` +[Socket] +ListenStream= +ListenStream=127.0.0.1:4444 +``` +The first line is to discard vendor configuration. The second line will change the port number to listen on to 4444. + +### Example 2: enable external interface +To enable accepting external connections to EPMd, create ```/etc/systemd/system/epmd.socket.d/port.conf``` with following content: +``` +[Socket] +ListenStream= +ListenStream=0.0.0.0:4369 +``` diff --git a/_constraints b/_constraints new file mode 100644 index 0000000..4464274 --- /dev/null +++ b/_constraints @@ -0,0 +1,7 @@ + + + + 6000 + + + diff --git a/epmd-user.conf b/epmd-user.conf new file mode 100644 index 0000000..eb94f93 --- /dev/null +++ b/epmd-user.conf @@ -0,0 +1 @@ +u epmd - "Erlang Port Mapper Daemon" /var/lib/epmd /bin/false diff --git a/epmd.service b/epmd.service new file mode 100644 index 0000000..a35ae54 --- /dev/null +++ b/epmd.service @@ -0,0 +1,34 @@ +[Unit] +Description=Erlang Port Mapper Daemon +After=network.target +Requires=epmd.socket + +[Service] +# added automatically, for details please see +# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort +ProtectSystem=full +ProtectHome=true +PrivateDevices=true +ProtectHostname=true +ProtectClock=true +ProtectKernelTunables=true +ProtectKernelModules=true +ProtectKernelLogs=true +ProtectControlGroups=true +RestrictRealtime=true +# end of automatic additions +ExecStart=/usr/bin/epmd -systemd +#ExecStop=/usr/bin/epmd -kill +Type=simple +StandardOutput=journal +StandardError=journal +Restart=always +LimitNPROC=1 +LimitFSIZE=0 +User=epmd +Group=epmd + +[Install] +Also=epmd.socket +WantedBy=multi-user.target + diff --git a/epmd.socket b/epmd.socket new file mode 100644 index 0000000..e60da11 --- /dev/null +++ b/epmd.socket @@ -0,0 +1,10 @@ +[Unit] +Description=Erlang Port Mapper Daemon Activation Socket + +[Socket] +ListenStream=127.0.0.1:4369 +Accept=false + +[Install] +WantedBy=sockets.target + diff --git a/erlang-not-install-misc.patch b/erlang-not-install-misc.patch new file mode 100644 index 0000000..cdaa4f7 --- /dev/null +++ b/erlang-not-install-misc.patch @@ -0,0 +1,39 @@ +From: Peter Lemenkov +Date: Thu, 25 Feb 2010 16:45:28 +0300 +Subject: [PATCH] Do not format man-pages and do not install miscellaneous + utilities for dealing with man-pages. + +Index: otp-OTP-23.0/erts/etc/common/Makefile.in +=================================================================== +--- otp-OTP-23.0.orig/erts/etc/common/Makefile.in ++++ otp-OTP-23.0/erts/etc/common/Makefile.in +@@ -521,10 +521,6 @@ endif + ifneq ($(INSTALL_TOP_BIN),) + $(INSTALL_PROGRAM) $(INSTALL_TOP_BIN) "$(RELEASE_PATH)" + endif +-ifneq ($(INSTALL_MISC),) +- $(INSTALL_DIR) "$(RELEASE_PATH)/misc" +- $(INSTALL_SCRIPT) $(INSTALL_MISC) "$(RELEASE_PATH)/misc" +-endif + ifneq ($(INSTALL_SRC),) + $(INSTALL_DIR) "$(RELEASE_PATH)/erts-$(VSN)/src" + $(INSTALL_DATA) $(INSTALL_SRC) "$(RELEASE_PATH)/erts-$(VSN)/src" +Index: otp-OTP-23.0/erts/etc/unix/Install.src +=================================================================== +--- otp-OTP-23.0.orig/erts/etc/unix/Install.src ++++ otp-OTP-23.0/erts/etc/unix/Install.src +@@ -142,14 +142,5 @@ cp -p ../releases/%I_SYSTEM_VSN%/start_* + cp -p ../releases/%I_SYSTEM_VSN%/no_dot_erlang.boot . + cp -p $Name.boot start.boot + cp -p ../releases/%I_SYSTEM_VSN%/$Name.script start.script +-# +-# Fixing the man pages +-# +- +-if [ -d "$ERL_ROOT/man" ] +-then +- cd "$ERL_ROOT" +- ./misc/format_man_pages "$ERL_ROOT" +-fi + + exit 0 diff --git a/erlang-rpmlintrc b/erlang-rpmlintrc new file mode 100644 index 0000000..fe10481 --- /dev/null +++ b/erlang-rpmlintrc @@ -0,0 +1,8 @@ +import rpm + +addFilter("erlang.* devel-file-in-non-devel-package") + +suse_version = int(rpm.expandMacro("%suse_version")) + +if suse_version > 1550: + addCheck("ErlangCheck") diff --git a/erlang.changes b/erlang.changes new file mode 100644 index 0000000..285132c --- /dev/null +++ b/erlang.changes @@ -0,0 +1,7772 @@ +------------------------------------------------------------------- +Tue Dec 10 12:33:11 UTC 2024 - matwey.kornilov@gmail.com + +- Changes for 27.1.3: + * public_key: If both ext-key-usage and key-usage are defined for + a certificate it should be checked that these usages are + consistent with each other. This will have the affect that such + certificates where the ext-key-usages is marked as critical and + the usages is consistent with the key-use it can be considered + valid without mandatory application specific checks for the + ext-key-useage extension. + * public_key: Handle decoding of EDDSA key properly, when + decoding a PEM file that contains only the public EDDSA key. + * erts: gen_udp:send on domain local can leak inet_reply + messages. + * erts: net:getifaddrs does not properly report the running flag + on windows. + * compiler: In rare circumstances, the destructive tuple update + optimization could be applied when it was unsafe. + * compiler: In rare circumstances involving appending to multiple + binaries, the compile could emit unsafe code that would crash + the runtime system. + * ssh: With this change, ssh connection does not crash upon + receiving exit-signal message for an already terminated + channel. + * kernel: On windows the socket:recv could return with success + ({ok, Data}) even though not all data had been read. + * kernel: gen_udp:send on domain local can leak inet_reply + messages. + * kernel: Failure to create an UDP IPv6 socket when inet_backend + = socket with certain IPv6 socket options. + * kernel: net:getifaddrs does not properly report the running + flag on windows. + * ssl: Avoid generating an internal alert for case that should + have been an orderly shutdown by the supervisor. + * ssl: If present, extended key-usage TLS (SSL) role check (pk- + clientAuth, pk-serverAuth) should always be performed for peer- + cert. An intermediate CA cert may relax the requirement if + AnyExtendedKeyUsage purpose is present. + * ssl: Back port certificate_authorities option for TLS-1.3 + servers to pre TLS-1.3 servers to enable them to disable the + sending of certificate authorities in their certificate + request. This will have same affect as the the TLS-1.3 server + option although it is handled by a different mechanism in these + versions, where the functionality is described to be more of a + guidance, although some pre TLS clients have proven to make it + mandatory as in TLS-1.3 extension handling. + * common_test: With this change, cth_surefire hook module handles + group path reduction for a skipped group. This fixes a bug + manifesting with improper group path for a group executed after + a group which was skipped. + * common_test: With this change, prefix option can be specified + in cth_conn_log option list. Option allows to specify how much + of additional information is added in raw log output. + +------------------------------------------------------------------- +Thu Dec 5 14:37:40 UTC 2024 - Dirk Müller + +- drop systemd_requires, see + https://en.opensuse.org/openSUSE:Systemd_packaging_guidelines#Runtime_requirements + +------------------------------------------------------------------- +Sat Nov 30 10:19:31 UTC 2024 - matwey.kornilov@gmail.com + +- Changes for 27.1.2: + * stdlib: With this change, uri_string:normalize assumes empty + path (do not crash) when no path is provided in the URI map. + * stdlib: Fixed spec for json:format/3. + * kernel: A bug has been fixed where receiving an SCTP message + with gen_sctp could waste the first fragments of a message and + only deliver the last fragment. + * kernel: An boolean option non_block_send for SCTP, has ben + added to be able to achieve the old behaviour to avoid blocking + send operations by passing the OS network stack error message + ({error,eagain} through. + * common_test: With this change, jquery and tablesorter licenses + are added to COPYRIGHT file. Also tablesorter is updated to + version 2.32. + * ssl: Refactor trying to also make some optimizations introduced + a bug in signature algorithms checks in OTP-26.2.1. This could + manifest itself in not being able to negotiate connections + using certificates needing to use some TLS-1.2 compatibility + legacy signature schemes. + * ssl: Correct timeout handling for termination code run for own + alerts, so that intended timeout is used instead of falling + back to OS TCP-stack timeout that is unreasonably long on some + platforms. + * ssl: Fix assertion so that works as intended. This could result + in that some TLS-1.2 clients would fail to connect to the the + erlang server. Bug introduced in OTP-27.1.1 + * erts: A bug has been fixed where receiving an SCTP message with + gen_sctp could waste the first fragments of a message and only + deliver the last fragment. + * erts: An boolean option non_block_send for SCTP, has ben added + to be able to achieve the old behaviour to avoid blocking send + operations by passing the OS network stack error message + ({error,eagain} through. + * erts: The call gen_tcp:send/2 could hang indefinitely despite + having set the send_timeout option for the following + unfortunate combination of circumstances: + * erts: In rare circumstances, in code that matches multiple + tuples, the JIT could generate code that would raise a badmatch + exception even if the given tuples were correct. + * erts: Fixed beam crash that could happen if resetting call_time + or call_memory trace counters of a function while it is called. + Bug exists since OTP R16. + * ssh: With this change, a race condition is removed from ssh + client connection setup procedure. + * ssh: With this change, ssh:connect is not affected by presence + of EXIT message in queue. + * ssh: With this change, ssh appends {active, false} option after + socket options received from user - so that false value is + always used. +- Changes for 27.1.1: + * public_key: Introduction of verify_fun/4 unfortunately + introduced an argument switch for some specific path validation + errors so that verify_fun/3 could under these circumstances be + called with a DER cert instead of a decod cert, also in this + situation the verify_fun/4 would have the certificates in + reverse order. + * public_key: Do not hide crypto badarg reason, this error + handling enhancement facilitates debugging. These kind of + runtime errors are not documented and should never be relied on + for matching, they are intended for catching input errors + early. + * stdlib: Remove whitespace stripping of returned binaries in + json:decode/3. + * stdlib: Fix zip:unzip/2 to not crash when extracting zip files + with garbage in the Zip64 extra header. This bug was introduced + in Erlang 27.1 and has so far only been seen on some archives + creates by MS Excel. + * stdlib: With this change, shutdown procedure handles a race + condition between supervisor executing a shutdown and child + process termination from other reason. + * common_test: With this change, HTML reports include jQuery + version 3.7.1. + * ssl: Starting from TLS-1.3 some server handshake alerts might + arrive after ssl:connection/2,3,4 has returned. If the socket + is in active mode the controlling process will get the alert + message, but passive sockets would only get {error, closed} on + next call to ssl:recv/2,3 or ssl/setopts/2. Passive sockets + calls will now return {error, error_alert()} instead. + * ssl: Servers configured to support only version (pre TLS-1.2) + should ignore hello version extension, as it is an unknown + extension to them, this will result in that new clients that do + not support the old server version will get an insufficient + security alert from the server and not a protocol version + alert, this is consistent with how old servers not able to + support higher protocol versions work. + * erts: On Windows, successive failed socket calls caused socket + to become "uninitialized". + * erts: The socket framework fails to start on a IPv6-only + Windows machine. + +------------------------------------------------------------------- +Sun Sep 29 15:03:44 UTC 2024 - matwey.kornilov@gmail.com + +- Changes for 27.1: + * crypto: crypto built with --enable-fips will now accept an + OpenSSL 3 lib without fips provider as long as fips mode is not + enabled. + * crypto: Added a warning in the documentation to avoid calling + crypto:start/0 as it does not work for FIPS mode. Use + application:start(crypto) instead. + * crypto: Deprecation of RSA encryption functions has been + reverted, as there still exists legitimate use cases with other + padding modes than PKCS-1. + * crypto: Compiler warnings for some removed functions have been + corrected to point out the correct replacement functions. + * ssh: The SSh daemon started with a TCP port number argument + will now re-try obtaining a listen socket before returning an + error to the user. + * ssh: Robustness has been improved by monitoring the connection + handler process before casting the socket control notification. + * ssl: A race in the kTLS flavour of SSL distribution has been + fixed so that inet_drv.c doesn't read ahead too much data, + which could cause the kTLS encryption to be activated too late + when some encrypted data had already been read into the + inet_drv.c buffer as unencrypted. + * ssl: All TLS-1.3 terminations are now graceful (previous TLS + version terminations already were). + * ssl: It is now possible to use a verification fun of arity 4, + giving the user fun access to both encoded and decoded versions + of the certificate. This is desirable as a workaround for + encoding errors preventing re-encoding from being reliable. + This also saves some work load if the encoded version is + needed. + * ssl: Compiler warnings for some removed functions have been + corrected to point out the correct replacement functions. + * ssl: Include more information in logging of SNI (Server Name + Indication) mismatch error. + * diameter: Function specs for the main API module has been + updated. + * diameter: Man pages are now available for erl, erlc, dialyzer, + and all other programs that are included in Erlang/OTP. + * diameter: diameter:stop_service/1 has been made more + synchronous. + * wx: Documentation has been improved. + * public_key: For completeness handle rsa_pss implicit default + value, although this will probably not be commonly used as it + provides very weak security. + * public_key: The public_key:cacerts_load() function could in + some error cases return undefined instead of {error, Reason}. + * public_key: Added support for DragonFly. + * public_key: Deprecation of RSA encryption functions has been + reverted, as there still exists legitimate use cases with other + padding modes than PKCS-1. + * public_key: It is now possible to use a verification fun of + arity 4, giving the user fun access to both encoded and decoded + versions of the certificate. This is desirable as a workaround + for encoding errors preventing re-encoding from being reliable. + This also saves some work load if the encoded version is + needed. + * snmp: Man pages are now available for erl, erlc, dialyzer, and + all other programs that are included in Erlang/OTP. + * snmp: Figures in the documentation have been improved. + * tftp: The legacy dependency to m:error_logger has been removed. + m:logger is now used. + * ftp: Eliminated a race condition that sometimes resulted in + ftp:recv_bin/2 returning ok instead of {ok, Data}. + * odbc: Figures in the documentation have been improved. + * compiler: Fixed a crash in an optimization pass relating to + appending binaries. + * compiler: Fixed a bug in the compiler's alias analysis pass + that could make it emit unsafe code. + * common_test: Groups with empty list specifying groups and test + cases no longer crash execution. + * common_test: The Common_Test documentation and type specs have + been polished. + * common_test: Man pages are now available for erl, erlc, + dialyzer, and all other programs that are included in + Erlang/OTP. + * dialyzer: Man pages are now available for erl, erlc, dialyzer, + and all other programs that are included in Erlang/OTP. + * xmerl: Corrected export functions from internal structure to + XML so xmlText items of type cdata are handled correctly. They + were just exported as normal text instead of output in a CDATA + section. + * xmerl: The type spec for xmerl_sax_parser:file/2 has been + corrected to indicate that it can return an {error, _} tuple. + * runtime_tools: Fixed a bug where dbg sessions on remote nodes + were terminated prematurely. + * inets: The documentation for the m:httpd module has been + improved, along with correction of headings and types. + * inets: Userinfo is now properly percent-decoded before usage in + headers. + * stdlib: The help printout for incorrect t:io:format/0 strings + now handles the k modifier correctly. + * stdlib: Fixed a bug that caused the shell completion to crash + when keyword and tuple appeared on the same line. + * stdlib: Due to PR-7419/OTP-18671, the cached internal value of + the callback_mode started leaking out to logger reports, which + could cause logger handlers to crash. This has now been fixed + to show the value that was set, as before caching. + * stdlib: Fixed an emulator crash relating to compressed ETS + tables. + * stdlib: The error description for maps:update/3 will no longer + insist that the third argument is not a map when a key could + not be found + * stdlib: Multiple issues have been corrected in the markdown + parser that creates documentation for the shell. + * stdlib: Fixed category for some codepoint ranges in + unicode_util. + * stdlib: Fixed m:argparse to print sub-commands help when + available. + * stdlib: Class annotation to HTML from fenced blocks have been + added. + * stdlib: Added JSON formatting functions for indented output. + * stdlib: Improved illegal pattern error for accidental map + associations. + * stdlib: Progress reports for a dynamically started supervisor + will now be logged at debug level. + * stdlib: The m:zip module has been updated with support for: + * edoc: Broken links in release notes have been mended. + * tools: m:tprof no longer crashes when using + pause/restart/continue when profiling all modules. + * tools: On systems supporting native coverage, calls to m:cover + could hang or crash if cover-compiled module had been reloaded + from outside cover. This has been corrected so that cover now + recovers from the error and and sends a report to the logger + about the failure to retrieve coverage information. + * tools: Figures in the documentation have been improved. + * erts: The erl -man example has been corrected to not consider + values set in ERL_ZFLAGS and stop parsing arguments when a -- + is encountered. + * erts: Compiler warnings for Windows I/O back-end have been + silenced. + * erts: Bugs related to return_to trace have been fixed. It did + not work for more than once trace session and it did sometimes + not trigger for exceptions. + * erts: Potential deadlocks while writing a crash dump have been + eliminated. + * erts: When loading a damaged or too old BEAM file, the runtime + system could crash. + * erts: A scheduler thread could get stuck when deleting a memory + allocator carrier when adjacent carriers were deleted and/or + inserted simultaneously by other schedulers. This in turn could + cause the other schedulers to get stuck as well. + * erts: Statistics for number of carriers in a shared pool after + calling instrument:allocations or instrument:carriers are now + correct. Also, a potential bug in carrier block scanning was + eliminated. + * erts: A race in the kTLS flavour of SSL distribution has been + fixed so that inet_drv.c doesn't read ahead too much data, + which could cause the kTLS encryption to be activated too late + when some encrypted data had already been read into the + inet_drv.c buffer as unencrypted. + * erts: Fixed an emulator crash relating to compressed ETS + tables. + * erts: A function (encode_sockaddr) was called with superfluous + argument, on Windows, in the net nif. + * erts: Fixed a crash that could happen on reallocation failure. + * erts: Man pages are now available for erl, erlc, dialyzer, and + all other programs that are included in Erlang/OTP. + * erts: A previous correction in the Erlang/OTP 27.0.1 emergency + patch had the unfortunate side effect of sometimes causing an + unnecessary fullsweep (major) garbage collection instead of a + generation (minor) garbage collection. This has been corrected. + * erts: Fixed trace matchspec functions trace and enable_trace to + use the session tracer when enabling trace flags on untraced + processes. + * erts: Fixed a typo in the type spec for + t:erlang:garbage_collection_defaults/0. + * erts: Corrected socket:ioctl for genaddr (SIOCGENADDR). + * erts: The support for Transparent Huge Pages has been disabled + on non-amd64 Linux systems. + * erts: Fixed a race condition on Windows when upgrading from + -noshell to a shell that would cause Erlang to crash with the + error: + * erts: Added functions getservbyname and getservbyport to the + net module. + * erts: Introduced enet | esock variants of m:inet functions, + either when called with sockets, with explicit inet_backend + config or with the e inet_backend kernel config option. + * erts: Optimize process and port creation when such tracing is + not enabled by any trace session. + * erts: Compiler warnings for some removed functions have been + corrected to point out the correct replacement functions. + * erts: A boolean option read_ahead has been implemented for + gen_tcp, default true, to facilitate not reading past (caching + data) the end of a packet. In particular, for kTLS, caching + data could read in data that was supposed to be decrypted by + the platform's network stack, before crypto parameters could be + activated. + * erts: The m:zip module has been updated with support for: + * kernel: A faulty assertion was corrected in the prim_tty + module. This assertion could trigger when invalid UTF-8 was + read from stdin just as the mode was changed from unicode to + latin1. + * kernel: Opening a disk_log file and combining head_func with + rotate options did not work. + * kernel: Fixed an error info printout for + erlang:is_process_alive/1 on non-local pids. + * kernel: A race in the kTLS flavour of SSL distribution has been + fixed so that inet_drv.c doesn't read ahead too much data, + which could cause the kTLS encryption to be activated too late + when some encrypted data had already been read into the + inet_drv.c buffer as unencrypted. + * kernel: Fixed a deadlock when an application crashes during + startup and log messages were sent to standard out. Logger + would fail to print the messages to standard out and instead + print them to standard error. + * kernel: The -proto_dist init parameter will no longer be + ignored when specified multiple times. It will now log a + warning and use the first specified value. + * kernel: Corrected socket:ioctl for genaddr (SIOCGENADDR). + * kernel: Added functions getservbyname and getservbyport to the + net module. + * kernel: Introduced enet | esock variants of m:inet functions, + either when called with sockets, with explicit inet_backend + config or with the e inet_backend kernel config option. + * kernel: The function socket:i/0 now uses the m:net module + (instead of the m:inet module) for service translation. + * kernel: A boolean option read_ahead has been implemented for + gen_tcp, default true, to facilitate not reading past (caching + data) the end of a packet. In particular, for kTLS, caching + data could read in data that was supposed to be decrypted by + the platform's network stack, before crypto parameters could be + activated. + * syntax_tools: The documentation for syntax_tools has been + polished after the migration to the new documentation system. + * asn1: Fixed a cosmetic but harmless issue with the ASN.1 + compiler passing on the undec_rest option to the Erlang + compiler. +- Changes for 27.0.1: + * ssh: With this change, race condition between connection + closing and automatic window adjustment is fixed. + * ssl: Check for TLS-1.3 support should check minimum + requirements. + * ssl: If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2 + negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 hash and + signature pairs for increased interoperability. + * ssl: TLS-1.3 negotiation now uses SNI based options correctly + instead of ignoring them. + * ssl: Make it easier to distinguish between a invalid signature + and unsupported signature. + * ssl: Enhance ALERT logs to help understand what causes the + alert. + * ssl: When the default value for signature_algs is used, default + the signature_algs_cert to the default value + rsa_pkcs1_sha1 + to allow this algorithms for certificates but not for the TLS + protocol. This is for better interoperability. If + signature_algs is set explicitly signature_algs_cert must also + be set explicitly if they should be different. + * public_key: Fix bug in dnsName constraint check, could cause + valid cert to be considered bad during path validation. + * compiler: One of the compiler's optimization passes would get + very slow when compiling certain modules. The compiler will now + automatically disable that pass for input that would trigger + the slowdown. + * compiler: Fix +deterministic to work properly with + documentation attributes. + * stdlib: Fix so that missing -doc({file, File}) files only + result in a warning and not an error. + * stdlib: Fixed m:json bugs, json:encode_key_value_list/2 did not + generate arrays and json:decode/3 did not invoke the user + callback for 0. + * edoc: Fix broken makefile dependency when building HTML + documentation. + * erts: In rare circumstances the JIT could do an unsafe in-place + update of a tuple. + * erts: When a port command crashed in the inet driver during + gen_tcp:send/2, a monitor 'DOWN' message could be left + lingering in the caller's mailbox. This has now been fixed. + * erts: 'DOWN' messages originating from a monitored port, + contained the atom process instead of the atom port as the + third element when the exit reason was not an immediate term. + * erts: Fix so that the options to enable Transparent Huge Page + alignment of the Erlang VM executable are only applied to the + Erlang VM and not other native programs such as erlc and + dialyzer. This bug was introduced in Erlang/OTP 27.0. + * erts: When [*no time warp mode*](time_correction.md#no-time- + warp-mode) was enabled, a smaller Erlang monotonic time could + be read than a previously read time, i.e., breaking the + monotonic property. The runtime system will abort when + detecting an issue like this since OTP 24.3.4.17 and OTP 25.0. + * erts: When calling trace:function(Session, _, true, [meta]) the + meta tracer was incorrectly set to be the calling process. Now + it's set to the session tracer as expected. + * kernel: Polish the m:logger documentation. + +------------------------------------------------------------------- +Fri Sep 20 15:42:43 UTC 2024 - Matwey Kornilov + +- Version 27.0: + * Triple-Quoted Strings has been implemented as per EEP 64 to + allow a string to encompass a complete paragraph. + * Adjacent string literals without intervening white space is now + a syntax error, to avoid possible confusion with triple-quoted + strings. + * Sigils on string literals (both ordinary and triple-quoted) + have been implemented as per EEP 66. For example, ~"Björn" or + ~b"Björn" are now equivalent to <<"Björn"/utf8>>. + * The compiler will now merge consecutive updates of the same + record. + * Safe destructive update of tuples has been implemented in the + compiler and runtime system. This allows the VM to update + tuples in-place when it is safe to do so, thus improving + performance by doing less copying but also by producing less + garbage. + * The maybe expression is now enabled by default, eliminating the + need for enabling the maybe_expr feature. + * Native coverage support has been implemented in the JIT. It + will automatically be used by the cover tool to reduce the + execution overhead when running cover-compiled code. There are + also new APIs to support native coverage without using the + cover tool. + * The compiler will now raise a warning when updating record/map + literals to catch a common mistake. For example, the compiler + will now emit a warning for #r{a=1}#r{b=2}. + * The erl command now supports the -S flag, which is similar to + the -run flag, but with some of the rough edges filed off. + * By default, escripts will now be compiled instead of + interpreted. That means that the compiler application must be + installed. + * The default process limit has been raised to 1048576 processes. + * The erlang:system_monitor/2 functionality is now able to + monitor long message queues in the system. + * The obsolete and undocumented support for opening a port to an + external resource by passing an atom (or a string) as first + argument to open_port(), implemented by the vanilla driver, has + been removed. This feature has been scheduled for removal in + OTP 27 since the release of OTP 26. + * The pid field has been removed from erlang:fun_info/1,2. + Multiple trace sessions are now supported. + * There is a new module json for encoding and decoding JSON. + * Several new functions that accept funs have been added to module timer. + * The functions is_equal/2, map/2, and filtermap/2 have been + added to the modules sets, ordsets, and gb_sets. + * There are new efficient ets traversal functions with guaranteed + atomicity. For example, ets:next/2 followed by ets:lookup/2 can + now be replaced with ets:next_lookup/1. + * The new function ets:update_element/4 is similar to + ets:update_element/3, but takes a default tuple as the fourth + argument, which will be inserted if no previous record with + that key exists. + * binary:replace/3,4 now supports using a fun for supplying the + replacement binary. + * The new function proc_lib:set_label/1 can be used to add a + descriptive term to any process that does not have a registered + name. The name will be shown by tools such as c:i/0 and + observer, and it will be included in crash reports produced by + processes using gen_server, gen_statem, gen_event, and gen_fsm. + * Added functions to retrieve the next higher or lower + key/element from gb_trees and gb_sets, as well as returning + iterators that start at given keys/elements. + * common_test: Calls to ct:capture_start/0 and ct:capture_stop/0 + are now synchronous to ensure that all output is captured. + * common_test: The default CSS will now include a basic dark mode + handling if it is preferred by the browser. + * crypto: The functions crypto_dyn_iv_init/3 and + crypto_dyn_iv_update/3 that were marked as deprecated in + Erlang/OTP 25 have been removed. + * dialyzer: The --gui option for Dialyzer has been removed. + * ssl: The ssl client can negotiate and handle certificate status + request (OCSP stapling support on the client side). + * tools: There is a new tool tprof, which combines the + functionality of eprof and cprof under one interface. It also + adds heap profiling. + * xmerl: As an alternative to xmerl_xml, a new export module + xmerl_xml_indent that provides out-of-the box indented output + has been added. + +------------------------------------------------------------------- +Sat Aug 03 07:23:34 UTC 2024 - matwey.kornilov@gmail.com + +- Changes for 26.2.5.2: + * erts: When no time warp mode was enabled, a smaller Erlang + monotonic time could be read than a previously read time, i.e., + breaking the monotonic property. The runtime system will abort + when detecting an issue like this since OTP 24.3.4.17 and OTP + 25.0. Up until OTP 25 no time warp mode is the default. As of + OTP 26 multi time warp mode is the default. + * erts: A scheduler thread could get stuck when deleting a memory + allocator carrier when adjacent carriers were deleted and/or + inserted simultaneously by other schedulers. This in turn could + cause the other schedulers to get stuck as well. + * crypto: Add warning in documentation to avoid crypto:start/0 as + it does not work for FIPS mode. Use application:start(crypto) + instead. + * stdlib: Fixed a bug that caused the shell completion to crash + when keyword and tuple appeared on the same line. + * ssl: When the default value for signature_algs is used, default + the signature_algs_cert to the default value + rsa_pkcs1_sha1 + to allow this algorithms for certificates but not for the TLS + protocol. This is for better interoperability. If + signature_algs is set explicitly signature_algs_cert must also + be set explicitly if they should be different. +- Changes for 26.2.5.1: + * erts: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout = + 0 on Windows could cause a (case clause) crash if data is + immediately available. + * erts: When a port command crashed in the inet driver during + gen_tcp:send/2, a monitor 'DOWN' message could be left + lingering in the caller's mailbox. This has now been fixed. + * erts: 'DOWN' messages originating from a monitored port, + contained the atom process instead of the atom port as the + third element when the exit reason was not an immediate term. + * public_key: Fix bug in dnsName constraint check, could cause + valid cert to be considered bad during path validation. + * diameter: Pick peer can now also handle request of type + #diameter_packet{}. + * kernel: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout + = 0 on Windows could cause a (case clause) crash if data is + immediately available. + * kernel: Open a disk_log file and combining head_func with + rotate options did not work. + * ssh: With this change, ssh client will automatically adjust + transfer window size for commands executed remotely over SSH. + * ssh: With this change, race condition between connection + closing and automatic window adjustment is fixed. + * ssl: Check for TLS-1.3 support should check minimum + requirements. + * ssl: If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2 + negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 hash and + signature pairs for increased interoperability. + * ssl: TLS-1.3 negotiation now uses SNI based options correctly + instead of ignoring them. + * ssl: Make it easier to distinguish between a invalid signature + and unsupported signature. + * ssl: Enhance ALERT logs to help understand what causes the + alert. +- Changes for 26.2.5: + * erts: gen_sctp:send/3,4 now waits for the send to complete + instead of returning an OS result such as {error, ewouldblock}. + * erts: ETS functions did not properly handle keys containing + maps, sometimes matching too many or too few objects. + * erts: Fix CPU quota determination for cgroups. The bug was + introduced through OTP-18999. + * erts: Added a warning to open_port/2 regarding the BadBatBut + attack affecting Windows. + * dialyzer: Fixed an issue with bitstring type inference on + segments following UTF-8/16/32 segments. + * kernel: Fix the shell Job Control Mode to not crash when typing + TAB or CTRL+R. + * kernel: Fix calls to blocking application APIs to throw an + exception with reason terminating if called when the system is + terminating. This is done in order to avoid deadlocks during + shutdown or restart. + * stdlib: Fix shell expansion of -type a() :: $a. in the erlang + shell. + * stdlib: Fix the shell Job Control Mode to not crash when typing + TAB or CTRL+R. + * ssl: Fix certificate authorities check so that CA closest to + peer is not lost. It could manifest itself in a failed + connection as the client failed to realize it had a valid + certificate chain to send to the server. + * ssl: ssl:signature_algs/2 did not list some legacy algorithm + schemes correctly when listing all algorithms available. + * mnesia: Mnesia could crash during startup if del_table_copy/2 + and add_table_copy/3 was invoked when the table was loading. + +------------------------------------------------------------------- +Tue Apr 16 06:33:05 UTC 2024 - Simon Lees + +- Changes for 26.2.4 + * asn1: An ASN.1 module that contains named BIT STRING values + would fail to compiled if both the BER and JER + back-ends were enabled. + * Compiler: In rare circumstances, the compiler code generate + unsafe code for a bit syntax match. + * Compiler: In rare circumstances, binary matches that were + supposed to succeed failed. + * Compiler: Fixed a bug where a fun's environment could be + overridden by an argument in some cases. + * Crypto: Fix building with --enable-fips with OpenSSL 3 on + MacOS. + * Debugger: Guards with nested record expression could wrongly + evaluate to false. + * Diameter: Reduce the impact of calling service_info by not + counting the binaries (on the heap) info, This is done + by introducing an option, bins_info, which controls + this. + * erts: Fixed CPU quota determination for cgroup version 2 + * erts: Fix faulty reduction counting in exiting process which + could cause it to do unnecessary yielding. + * erts: Fix bug in re:run/3 where if an invalid UTF-8 subject + was given, re:run could get stuck in an infinite loop. + Bug was introduced in Erlang/OTP 22.1. + * erts: On AArch64 (ARM64), Erlang code using bit syntax + construction compiled using Erlang/OTP 24 could crash + the runtime system when run in Erlang/OTP 26.2.3. + * erts: Calling erlang:trace/3 with first argument one of + ports, processes, existing_ports, existing_processes, + existing or all, could cause emulator crash if a dirty + scheduler was executing a simultaneous trace action. + * erts: Fixed an integer overflow when the monotonic time unit + reported by the operating system was greater than 10 + and lower than 100 microseconds. + * erts: Fix option reuseaddr for FreeBSD 14 + * erts: When a traced process executing on a dirty scheduler + received an exit signal, the dirty scheduler could use + the wrong thread specific data which could lead to a + crash. + * erts: Fixed a more or less harmless bug that caused time + correction of Erlang monotonic time to become slightly + off on Windows platforms when QueryPerformanceCounter() + was used as OS monotonic time source. + + erlang:system_info(os_monotonic_time_source) now also + returns information about used resolution which not + always corresponds to the resolution of the OS + monotonic time source. + * erts: When using IPv6, classic gen_udp failed to add (group) + membership (drop was used instead). + * erts: Fix bug on Windows where "Unknown event: 2" would be + printed to the console. + * erts: Checks for monotonicity of monotonic time have been + improved so that Erlang and OS monotonic time are + checked separately. + * erts: For severe errors, when the `socket` module terminates + the Erlang VM, now an erl_crash.dump is produced, to + facilitate post mortem debugging. + * kernel: When using IPv6, classic gen_udp failed to add (group) + membership (drop was used instead). + * kernel: The check in inet_res of the RD bit has been relaxed + slightly. + * ssh: With this change, owner and group file attributes + decoding is fixed and results with value of integer + type. + * ssl: Cleanup and close all connections in DTLS when the + listen socket owner dies. + Improved IPv6 handling in DTLS. + * ssl: Fixed a crash in dtls accept. + * stdlib: Attempting to use the maybe construct in a macro + argument could crash the compiler. + +- Changes for 26.2.3 + * otp: Quote uninstall path in registry when installing on + windows. + * compiler: In rare circumstances, an unsafe optimization could + cause the compiler to generate incorrect code for list + matching. + * compiler: Fix the compilation server to restart if the + applications in its lib dir changes inbetween erlc + invokations. + * crypto: Fix compile error when OPENSSL_NO_DES is defined. + * crypto: The function crypto:pbkdf2_hmac will no longer block + the main schedulers. If the iteration count or block + size parameters are such that the function is likely to + take a long time to execute, the function will be + scheduled to run on a dirty CPU scheduler. + * erts: Fixed compile warning in erl_nif.c for gcc-13. + * erts: Fix C++ compile error for macros enif_select_read and + friends. + * erts: Fixed a name clash on Solaris that prevented the JIT + from being built. + * erts: Fix termcap detection on solaris. + * erts: Fix heap corruption bug that could cause runaway memory + consumption due to circular offheap list at process + exit. Other symptoms may also be possible. Bug exists + since OTP 25.0. + * erts: Do not clear tracing in old module instance if load + fails with 'not_purged'. + * erts: When exceeding the `max_heap_size` limit in a garbage + collection initiated by some bit syntax operations, the + process would not always terminate immediately. + * erts: The code server could be hanging if a module with + on_load function was loaded at the same time as another + module was purged using erlang:purge_module directly. + * erts: A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That + is, the processes was not woken up to take care of the + signal, so the signal would not be taken care of until + the process was woken by another signal. Only processes + configured with message_queue_data set to off_heap + utilize this optimization. + * erts: Fix segfault when generating crashdump containing a fun + places in persistent_term storage. + * erts: By default the JIT is disabled on Intel Macs, because + of annoying poups on macOS Sonoma. It is now possible + to explicitly enable the JIT on Intel Macs. Here is + how: ./configure --enable-jit + * kernel: Fix performance bug when using io:fread to read from + standard_io. This regression was introduced in OTP + 26.0. + * kernel: A bug in the code server could cause it to crash in + some concurrent scenarios. This bug was introduced in + 26.1. + * kernel: Fixed gen_udp:open/2 type spec to include already + supported module socket address types. + * kernel: Fix reading of password for ssh client when in + user_interactive mode. + * odbc: Use spec for API doc + * public_key: Hostname prefix with X number of dots should not be + accepted. + * ssh: With this change, acceptor_sup is not started for ssh + client as it is not needed in that role. + * ssh: With this change, more secure algorithms are preferred + by ssh and documentation is updated to reflect that. + * ssh: With this change, KEX strict terminal message is + emitted with debug verbosity. + * ssh: Fix reading of password for ssh client when in + user_interactive mode. + * ssl: ssl:prf/5, will start working instead of hanging in a + TLS-1.3 context if called appropriately. Note that the + implementation has changed and in OTP-27 a more + adequate API will be documented. + * ssl: Server name verification didn't work if a connection + was made with IP-address as a string. + * ssl: The fallback after "dh" ssl option was undefined was to + get "dh" from ssl options again. This is clearly wrong + and now changed to the documented fallback "dhfile" ssl + option. + * ssl: Correct default value selection for DTLS. Will only + affect users linked with really old version of + cryptolib library. + * ssl: Adhere elliptic curves with RFC 8422 pre TLS-1.3, that + is Edwards curves are added to curves that can be used + for key exchange, and documentation and implementation + of eccs/0,1 are aligned. + * ssl: Improve alert reason when ecdhe_rsa key_exchange does + not have any common curves to use + * stdlib: The help texts shown by argparse will now display + sub-command arguments in the correct order. + * stdlib: Clarified the argparse documentation regarding the + user-defined help template. + * stdlib: Fix shell expansion to not crash when expanding invalid + using invalid atoms. + * wx: Add option to silence wx depracation macros. + +- Changes for 26.2.2 + * common_test: Fix how CT finds Erlang/OTP releases for compatability + testing. This functionality is only used to test + Erlang/OTP. + * erl_interface: Fix bug where the system installed openssl/md5.h would + be confused with the vendored md5.h. + * erts: 32-bit runtime systems on most Unix like platforms + could crash if a BIF timer was set with a huge timeout + of more than 68 years into the future. In order for the + crash to occur, the huge timer (at a later time than + when it was set) had to become the nearest active timer + set on the specific scheduler on which it was set. This + could not happen on a system with only one scheduler + since there would always be shorter timers in the + system. + + Setting a timer larger than 49 days on Windows could + under rare circumstances cause the timeout to be + delayed. + * erts: Fix bug where the system installed openssl/md5.h would + be confused with the vendored md5.h. + * erts: The JIT has now been disabled on x86 Macs to prevent + annoying the "verifying shm-xyz" popups introduced in + MacOS Sonoma. + ARM Macs are unaffected. + * erts: Garbage collection of a process on a dirty scheduler + could collide with signal handling for that process + causing a crash of the runtime system. This bug was + introduced in OTP 25.3.2.8 and OTP 26.2. + * kernel: Fix group (that is the shell) to properly handle when + an get_until callback function returned {done, eof, []} + when an eof was detected. + * ssh: With this change, Curve25519 and Curve448 KEX methods + become most preferred (related to RFC8731). + * ssl: Legacy name handling could cause interop problems + between TLS-1.3/1.2 client and TLS-1.2 server. +- Fix for bsc#1222591 + +------------------------------------------------------------------- +Thu Feb 22 11:41:18 UTC 2024 - Dominique Leuenberger + +- Use %patch -P N instead of deprecated %patchN. + +------------------------------------------------------------------- +Tue Jan 23 09:35:11 UTC 2024 - Simon Lees + +- Disable rpmlint tests on SLE-15 where they currently fail + +------------------------------------------------------------------- +Tue Jan 23 01:27:26 UTC 2024 - Simon Lees + +- This codestream wasn't affected by bsc#1207113 + +------------------------------------------------------------------- +Thu Jan 11 06:09:29 UTC 2024 - Simon Lees + +- 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 instead of . +- Disable test suite for now, it has many false positives and + takes a very long time. + +------------------------------------------------------------------- +Wed Oct 25 15:15:02 UTC 2023 - matwey.kornilov@gmail.com + +- Changes for 26.1.2: + * erts: If the external term format encoding of an argument list + part of a distributed spawn operation was faulty, the newly + spawned remote process could misbehave. The misbehavior + included hanging or interpret an incoming message as an + argument list to use. This was very unlikely to happen unless + using an alternate implementation of the distribution protocol + which made a faulty encoding of the argument list. The child + process will now detect this error and terminate before + executing the user specified code. + * erts: Fix bugs where if the body of a matchspec would return a + map with a variable ('$1', '$_' etc) as one of the keys or + values and the variable was not an immidiate, the term would + not be copied to the receiving processes heap. This would later + corrupt the term in the table as the GC could place move + markers in it, which in turn would cause the VM to crash. Bug + has been present for since OTP 17.0. + * xmerl: The xmerl version 1.3.32 was released in OTP 26.0.1, but + the incorrect version number of 1.3.31.1 was used for it. This + incorrect version number continued to appear in OTP 26.0.2, OTP + 26.1, and OTP 26.1.1. The actual xmerl code in these OTP + versions however corresponds to xmerl version 1.3.32. +- Changes for 26.1.1: + * wx: The wx application would fail to build on macOS with Xcode + 15. + * compiler: The compiler could become extremely slow for modules + containing huge functions. + * stdlib: Garbage collect the shell process when reducing the + amount of saved history and results. +- Changes for 26.1: + * crypto: Fix VM crash caused by crypto being purged and reloaded + (by init:restart for example) on OS with musl libc (such as + Alpine linux). + * crypto: Improved understanding of LibreSSL versions. Support + chacha20 and chacha20_poly1305 for LibreSSL 3.7. Reflect + removal of support for the DSS/DSA algorithm which was done in + LibreSSL 2.6.1. + * crypto: FIPS supported by crypto for OpenSSL 3.0.* and 3.1.*. + * asn1: The ASN.1 compiler would ignore a constraint such as + (SIZE (1..4), ...), causing incorrect behavior of the encoding + and decoding function for the PER and UPER backends. Corrected + to handle the constraint in the same way as (SIZE (1..4, ...)). + * asn1: The JER backend has been internally refactored in a way + that is compatible for applications that use the documented + API. However, for a group of ASN.1 modules that depend on each + other (for example, S1AP-PDU-Descriptions, S1AP-Contents, and + so on), all modules in the group must be recompiled if on of + the group members is recompiled. + * observer: Closing the trace log window via the menu did not + work. + * erts: maps:put with existing key and identical value was not + optimized as a no-op correctly if having the same 32-bit hash + as another key in the map. In practice very rare and harmless. + * erts: Fixed an issue with truncated crash slogans on failed + emulator start. + * erts: Fixed a bug where the emulator was unable to determine + the current cgroup CPU quota. + * erts: A process optimized for parallel signal delivery could + under some circumstances lose wakeup information. That is, the + processes was not woken up to take care of the signal, so the + signal would not be taken care of until the process was woken + by another signal. Only processes configured with + message_queue_data set to off_heap utilize this optimization. + * erts: Function socket:close/1 could cause a VM crash on + Windows. + * erts: Fixed a bug in the ARM JIT where it could accidentally + add garbage trailing bits when creating bitstrings whose size + wasn't an even multiple of 8 bits. + * erts: Fix erlang:system_info/1 documentation to show correct + types. + * erts: Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. Added the + types io:standard_io/0, io:standard:error/0 and io:user/0. + * erts: Fix compilation with GNU termcap. + * erts: Delivery time of message signals to a process not + executing any receive expressions could become very long, + potentially infinite. For example, a process checking for + messages using process_info(self(), message_queue_len) or + process_info(self(), messages) and avoiding to execute a + receive expression matching on messages could be very slow in + detecting new messages. Note that you are still discouraged + from using process_info() this way. A process that wants to + check if there are messages available to handle should execute + a receive expression matching on messages. + * erts: On AArch64 (ARM64), when calculating both the quotient + and remainder with a divisor begin a power two, the remainder + could be incorrectly calculated. + * erts: Fix bug causing "magic" references in a compressed ETS + table to not keep the referred object alive. The symptom would + be the referred object being garbage collected prematurely and + the reference appearing stale, not referring to anything. + Examples of such magically referred objects are atomics and NIF + resources. + * erts: Matching out short bitstrings with a fixed size not + divisible by 8 could could lead to the runtime system + terminating with an "Overrun heap and stack" error. + * erts: A constant flow of incoming non-message signals could + prevent a process needing to execute dirty from doing so. + * erts: A BEAM file usually contains a chunk with the tag "Type" + containing type information that can be used by the JIT. The + beam_lib:strip/1 takes care to preserve that chunk, but a + build/release tool that does customized stripping could + accidentally remove the chunk. Loading a BEAM file without the + "Type" chunk could cause incorrect behavior of the loaded code. + * erts: gen_udp:recv/* for Unix Domain Socket in binary mode and + passive mode has been fixed to not crash. + * erts: The cleanup operation of not yet delivered signals to a + terminated process yielded excessively. + * erts: Fixed minor hashing issue with the local option of + term_to_binary()/term_to_iovec(). + * erts: Update gen_tcp_socket and gen_udp_socket to handle + 'completion' (socket on Windows). + * erts: Add support for Unix Domain Sockets (only for STREAM + sockets) on Windows for 'socket'. + * erts: In Erlang/OTP 27, by default escripts will be compiled + before being executed. That means that the compiler application + must be installed. It is possible to force the escript to be + interpreted by adding the directive -mode(interpret). to the + escript file. In Erlang/OTP 28, support for interpreting an + escript will be removed. + * erts: Add basic support for socket ioctl on Windows. + * erts: Removed erts/etc/darwin/Info.plist, as it is no longer + necessary after macos 10.12 + * erts: Add support for (Windows) socket option exclusiveaddruse. + * erts: [socket] Add support for the 'nopush' option. + * erts: Add support for socket option 'BSP STATE'. + * erts: Add tcp socket options 'keepcnt', 'keepidle' and + 'keepintvl'. + * erts: Add support for misc (Windows) socket options + ('max_msg_size' and 'maxdg'). + * compiler: The compiler could run forever when compiling a call + to is_record/3 with a huge positive tuple size. The call + is_record(A, a, 0) would crash the compiler when used in a + function body. When used in a guard the compiler would emit + incorrect code that would accept {a> as a record. + * compiler: Fixed a bug that caused dialyzer to crash when + analyzing bogus code that contained the literal atom undefined + in segment sizes. + * compiler: The compiler would crash when compiling some modules + that contained a call to erlang:load_nif/2. + * compiler: Fixed a bug that caused the compiler to crash on + legal code. + * compiler: The compiler could crash when attempting to compile a + call to is_list/1 in a complex expression. + * compiler: A complex guard expression using the or operator + could succeed when it was supposed to fail. + * compiler: Compiling nested try/catch and catch expression could + result in an internal compiler error. + * compiler: Using the bnot operator in a complex expression could + cause the compiler to terminate with an internal consistency + failure diagnostic. + * compiler: Fixed a bug that caused the compiler to crash in a + binary optimization pass. + * compiler: The compiler could terminate with an internal error + when attempting to compile a binary pattern that could not + possibly match. + * compiler: Fixed various performance issues related to the alias + optimization pass. + * erl_docgen: Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. Added the + types io:standard_io/0, io:standard:error/0 and io:user/0. + * mnesia: Do not delete old backup file if the new backup fails. + * megaco: Make megaco transports handle gen_tcp | gen_udp with + socket backend on Windows (completion). + * common_test: With this change, ct_hooks manual refers to CTH + execution order section in user guide. + * common_test: With this change, Config data from + pre_end_per_testcase hook is delivered to post_end_per_testcase + callback in case of testcase timetrap or linked process crash. + * common_test: With this change, remaining references to not + supported vts tool in ct_run are removed (mainly relates to + docs and ct_run help message). + * common_test: With this change, prompt search functionality in + ct_telnet handles unicode input. + * common_test: Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. Added the + types io:standard_io/0, io:standard:error/0 and io:user/0. + * stdlib: The compiler could run forever when compiling a call to + is_record/3 with a huge positive tuple size. The call + is_record(A, a, 0) would crash the compiler when used in a + function body. When used in a guard the compiler would emit + incorrect code that would accept {a> as a record. + * stdlib: Fix bug in ets:tab2file that could make it fail if + another Erlang process created the same file at the same time. + * stdlib: An {else_clause,Value} exception will now be reported + nicely in the shell. + * stdlib: Correct return value for error case, so that it matches + the documented and intended return value {error, + {already_started, pid()} when local registered names are used. + * stdlib: sys:get_state/1,2 and sys:replace_state/2,3 has been + corrected to handle a state named error as a state name, not as + a failed system callback. For the standard server behaviours + this was an issue only for gen_statem (and gen_fsm) when the + state name was error, and for gen_server if the complete state + was {error,_}. + * stdlib: Multiple problems were fixed in + filelib:safe_relative_path/2. If its second argument was a path + that contained symbolic links, an incorrect result patch could + be returned. Also, paths were sometimes falsely considered + unsafe. + * stdlib: Fix deadlock when erl.exe is used as part of a pipe on + Windows and trying to set the encoding of the standard_io + device. + * stdlib: Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. Added the + types io:standard_io/0, io:standard:error/0 and io:user/0. + * stdlib: Fix h/2,3 to properly render multi-clause + documentation. + * stdlib: Timers created by timer:apply_after/4, + apply_interval/4, and apply_repeatedly/4 would silently fail to + do the apply if it was not possible to spawn a process when the + timer expired. This has now been corrected, and if the spawn + fails, the system will be taken down producing a crash dump. + * stdlib: When an Erlang source file lacked a module definition, + there would be a spurious "module name must not be empty" + diagnostic for each spec in the file. + * stdlib: The argument descriptions for option types in argparse + have been made less ambiguous. + * stdlib: Clarified the documentation of normal shutdown reason + on gen_server:call/2,3 + * stdlib: Pattern matching and equivalence (=:=, =/=) comparisons + on 0.0 will now raise a warning, as it will no longer be + considered equivalent to -0.0 in OTP 27. If a match on 0.0 + specifically is desired (distinct from -0.0), the warning can + be suppressed by writing +0.0 instead. The arithmetic + comparison operators are unaffected, including arithmetic + equality (==). *** POTENTIAL INCOMPATIBILITY *** + * stdlib: The semantics of the gen_{server,statem,event} + behaviour's synchronous start behaviour introduced in OTP-26.0 + with OTP-18471, has been clarified in the documentation. + * stdlib: Added functionality to set a custom multiline prompt. + * stdlib: A warning for (accidental use of) Triple-Quoted Strings + has been implemented as per EEP 64. *** POTENTIAL + INCOMPATIBILITY *** + * stdlib: The keyboard shortcuts for the shell are now + configurable. + * kernel: Fixed an issue with truncated crash slogans on failed + emulator start. + * kernel: Fix shell:start_interactive function specification. + * kernel: Fix code:get_doc/1 to return missing, when it can't + find erts instead of crashing. + * kernel: Function socket:close/1 could cause a VM crash on + Windows. + * kernel: Fix deadlock when erl.exe is used as part of a pipe on + Windows and trying to set the encoding of the standard_io + device. + * kernel: Expanded the documentation about how to use the + standard_io, standard_error and user I/O devices. Added the + types io:standard_io/0, io:standard:error/0 and io:user/0. + * kernel: Fix logger's overload protection mechanism to only + fetch memory used by messages when needed. + * kernel: Fixed a number of socket-related issues causing + incompatibilities with gen_tcp and gen_udp respectively. + * kernel: gen_tcp:connect with socket address and socket (inet-) + backend fails because of missing callback function. + * kernel: The DNS RR cache used by `inet_res` has been fixed to + preserve insert order, which is beneficial when the DNS server + returns RRs in some specific order for e.g load balancing + purposes. + * kernel: The options `reuseport`, `reuseport_lb` and + `exclusiveaddruse` were accidentally not allowed for e.g + `gen_udp:open/1,2`, which has now been corrected. + * kernel: gen_udp:recv/* for Unix Domain Socket in binary mode + and passive mode has been fixed to not crash. + * kernel: Fixed issue where cursor would not be placed at the end + of the expression when navigating shell history. + * kernel: Update gen_tcp_socket and gen_udp_socket to handle + 'completion' (socket on Windows). + * kernel: Add support for Unix Domain Sockets (only for STREAM + sockets) on Windows for 'socket'. + * kernel: Add basic support for socket ioctl on Windows. + * kernel: The file:location/0 type is now exported. + * kernel: Add support for (Windows) socket option + exclusiveaddruse. + * kernel: [socket] Add support for the 'nopush' option. + * kernel: Add support for socket option 'BSP STATE'. + * kernel: Add tcp socket options 'keepcnt', 'keepidle' and + 'keepintvl'. + * kernel: Add support for misc (Windows) socket options + ('max_msg_size' and 'maxdg'). + * kernel: The keyboard shortcuts for the shell are now + configurable. + * kernel: Optimized code_server to reduce repeated work when + loading the same module concurrently. + * debugger: The call int:no_break(Module) did not remove any + breakpoints. + * debugger: The maybe expression is now supported in the + Debugger. + * debugger: The maybe expression is now supported in the + Debugger. + * debugger: The call int:no_break(Module) did not remove any + breakpoints. + * ssl: Avoid function clause error in ssl:getopts/2 by handling + that inet:getopts may return an empty list during some + circumstances, such as the socket being in a closing state. + * ssl: The API function `ssl:recv/3` has been tightened to + disallow negative length, which has never been documented to + work, but was passed through and caused strange errors. + * ssl: When a client initiated renegotiation was rejected and the + client socket was in active mode the expected error message to + the controlling process was not sent. + * ssl: Add some guidance for signature algorithms configuration + in ssl applications users guide. + * snmp: Make snmp handle gen_udp with socket backend on Windows + (completion). + * public_key: Country name comparison shall be case insensitive + * public_key: Add check to disallow duplicate certs in a path + * inets: With this change, re_write httpd works as expected and + does not return error. + * inets: Fixed a bug so httpd does not crash when stopped at the + wrong time during TLS connection negotiation, or any other + theoretically as slow connection setup. + * inets: Enhance error handling and avoid that the HTTP client + hangs on headers provided on the wrong format. + * inets: With this change, error report generated by httpd during + connection setup contains socket type information. + * inets: Stop and restart of the httpd server in the Inets + application has been refactored to a more synchronous and OTP + supervisor friendly approach. This should increase stability + and for example avoid a supervisor report from + httpd_connection_sup about killed child process(es) in some + cases when stopping or restarting httpd. + * dialyzer: Fixed a bug that caused dialyzer to crash when + analyzing bogus code that contained the literal atom undefined + in segment sizes. + * dialyzer: Dialyzer could crash when attempting to analyze a + module that defined a type called product/. +- Changes for 26.0.2: + * erts: Fix using the IME (Input Method Editor) to enter text in + cmd.exe and powershell.exe on Windows. + * erts: Multiple socket:accept calls issue. When making multiple + accept calls, only the last call is active. + * erts: Fix the shell to ignore terminal delay when the terminal + capabilities report that they should be used. + * erts: Fix "oldshell" to echo characters while typing on + Windows. + * erts: On Windows, a call to the function socket:close, when + there are waiting active calls to read, write or accept + functions, could hang. + * erts: Fix issues when reading or configuring standard_io on + Windows when erl.exe is started using -noshell flag. + * erts: The following functions are now much faster when given a + long list or binary: + * erts: On AArch64 (ARM64), equality and non-equality tests with + literal bitstrings could succeed when they should fail and vice + versa. + * compiler: Fixed a type handling bug that would cause an + internal consistence failure for correct code. + * compiler: Fixed a bug that could cause the stack trace of throw + exceptions to be erroneously optimized out. + * compiler: Complex guard expression using 'or' were not always + fully evaluated, making guards that were supposed to fail + succeed. + * stdlib: Fix bug where when you entered Alt+Enter in the + terminal, the cursor would move to the last line, instead of + moving to the next line. + * stdlib: Fix eof handling when reading from stdin when erlang is + started using -noshell. + * stdlib: Fixed problem where output would disappear if it was + received after a prompt was written in the shell. + * stdlib: The following functions are now much faster when given + a long list or binary: + * kernel: Fix bug where when you entered Alt+Enter in the + terminal, the cursor would move to the last line, instead of + moving to the next line. + * kernel: Fix so that the shell does not crash on startup when + termcap is not available. + * kernel: Multiple socket:accept calls issue. When making + multiple accept calls, only the last call is active. + * kernel: Fix the shell to ignore terminal delay when the + terminal capabilities report that they should be used. + * kernel: Fix "oldshell" to echo characters while typing on + Windows. + * kernel: Fix eof handling when reading from stdin when erlang is + started using -noshell. + * kernel: On Windows, a call to the function socket:close, when + there are waiting active calls to read, write or accept + functions, could hang. + * kernel: Fix issues when reading or configuring standard_io on + Windows when erl.exe is started using -noshell flag. + * kernel: gen_udp:connect with inet_backend = socket fails when + the Address is a hostname (string or atom). + * kernel: Fixed problem which would cause shell to crash if + particular escape sequence was written to stdout. + * kernel: Fixed problem where output would disappear if it was + received after a prompt was written in the shell. + * kernel: Fix a crash where the location of erts could not be + found in rebar3 dev builds. + * kernel: Introduce the KERNEL application parameter + standard_io_encoding that can be used to set the default + encoding for standard_io. This option needs to be set to latin1 + if the application wants to treat all input data as bytes + rather than utf-8 encoded characters. + * ssl: Added keylog information to all protocol versions in + ssl:connection_information/2. + * ssl: Add RFC-6083 considerations for DTLS to enable gen_sctp + based callback for the transport. + * ssh: Added multiline editing support to ssh clients connected + through OTP ssh daemon. + +------------------------------------------------------------------- +Sat Jun 24 11:03:03 UTC 2023 - Matwey Kornilov + +- Changes for 26.0.1: + * erts: Build of the socket nif failed on Solaris 11. + * erts: Fixed two reduction-counting bugs relating to binaries. + * erts: Constructing a binary segment not aligned with a byte + boundary, with a size not fitting in 31 bits, and with a value + not fitting in a 64-bit word could crash the runtime system. + * erts: When a binary construction failed because of bad size for + a segment, the error information was not always correct. + * erts: Fixed a crash when calling a fun that was defined in a + module that had been upgraded. + * kernel: The POSIX error exdev was sometimes incorrectly + described as "cross domain link" in some error messages. + * kernel: Corrected the socket send function description (send + with Timeout = nowait). The send function(s) could not return + {ok, {RestData, SelectInfo}} + * stdlib: The POSIX error exdev was sometimes incorrectly + described as "cross domain link" in some error messages. + * ssl: Make sure that selection of client certificates handle + both TLS-1.3 and TLS-1.2 names correctly. Could cause valid + client certificate to not be selected, and an empty client + certificate message to be sent to server. + * ssl: Improved ssl:format_error/1 to handle more error tuples. + * ssl: Fixed hanging ssl:connect when ssl application is not + started. + * ssl: Correct handling of retransmission timers, current + behavior could cause unwanted delays. + * inets: Do not make the default ssl options by calling + httpc:ssl_verify_host_options(true) if ssl options are supplied + by the user. + * xmerl: New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some XML + security issues. xmerl_scan gets one new option: + xmerl_sax_parser gets the following options: The old option + skip_external_dtd is still valid and the same as + {external_entities, none} and {fail_undeclared_ref, false} but + just affects DTD's and not other external references. + * compiler: Fixed a bug where a failing bsl expression in a guard + threw an exception instead of causing the guard to fail. + * compiler: Fixed a bug that would case the validator to reject + legal code. + * compiler: The compiler could re-order clauses matching binaries + so that the incorrect clause would match. That could only + happen for code that used the option {error_location,line} or + for code without line or column number information (e.g. + generated by a parse transform). + * compiler: Complex guard expression using the or operator and + guard BIFs that can fail could sometimes be miscompiled so that + the guard would succeed even if a call to a guard BIF failed. + * compiler: With optimizations disabled, a try/catch construct + could return an incorrect value. + * compiler: In rare circumstance, a combination of binary + construction and binary_part/3 would cause the compiler to + generate unsafe code that would crash the runtime system. + * compiler: The compiler could be very slow when compiling guards + with multiple guard tests separated with 'or' or ';'. + * compiler: Complex guard expressions using 'or' and map updates + could succeed even if the map update failed. + +------------------------------------------------------------------- +Sat Jun 24 10:18:24 UTC 2023 - Matwey Kornilov + +- Version 26.0: + * Leex has been extended with optional column number support. + * The family of enumeration functions in module lists has been + extended with enumerate/3 that allows a step value to be + supplied. + * Update Unicode to version 15.0.0. + * proc_lib:start*/* has become synchronous when the started + process fails. This requires that a failing process use a new + function proc_lib:init_fail/2,3, or exits, to indicate failure. All + OTP behaviours have been fixed to do this. + * auto-complete of variables, record names, record fields names, + map keys, function parameter types and filenames. + * Open external editor in the shell to edit the current + expression. + * defining records (with types), functions, specs and types in + the shell. + * Creation and matching of binaries with segments of fixed sizes + have been optimized. + * Creation and matching of UTF-8 segments have been optimized. + * Appending to binaries has been optimized. + * The compiler and JIT now generate better code for creation of + small maps where all keys are literals known at compile time. + * Thanks to the optimizations above the performance of the base64 + module has been significantly improved. For example, on an + x86_64 system with the JIT both encode and decode are almost + three times faster than in Erlang/OTP 25. + * Map comprehensions as suggested in EEP 58 has now been + implemented. + * Some map operations have been optimized by changing the + internal sort order of atom keys. This changes the + (undocumented) order of how atom keys in small maps are printed + and returned by maps:to_list/1 and maps:next/1. The new order + is unpredictable and may change between different invocations + of the Erlang VM. + * Introducing the new function maps:iterator/2 for creating an + interator that return the map elements in a deterministic + order. There are also new modifiers k and K for the format + string in io:format() to support printing map elements ordered. + * Added the new built-in type dynamic() introduced in EEP 61, PR + introducing EEP 61 improving support for gradual type checkers. + * Dialyzer has a new incremental mode that be invoked by giving + the --incremental option when running Dialyzer. This new + incremental mode is likely to become the default in a future + release. + * Multi time warp mode is now enabled by default. This assumes + that all code executing on the system is time warp safe. + * Support for UTF-8 atoms and strings in the NIF interface + including new functions enif_make_new_atom, + enif_make_new_atom_len and enif_get_string_length. + * The BIFs min/2 and max/2 are now allowed to be used in guards + and match specs. + * Improved the selective receive optimization, which can now be + enabled for references returned from other functions. This + greatly improves the performance of gen_server:send_request/3, + gen_server:wait_response/2, and similar functions. + * It is no longer necessary to enable a feature in the runtime + system in order to load modules that are using it. It is + sufficient to enable the feature in the compiler when compiling + it. + * inet:setopts/2 has got 3 new options: reuseport, reuseport_lb + and exclusiveaddruse. + * Fix so that -fno-omit-frame-pointer is applied to all of the + Erlang VM when using the JIT so that tools, such as perf, can + crawl the process stacks. + * In the lists module, the zip family of functions now takes + options to allow handling lists of different lengths. + * Added the zip:zip_get_crc32/2 function to retrieve the CRC32 + checksum from an opened ZIP archive. gen_server optimized by + caching callback functions + * The modules Erlang DNS resolver inet_res and helper modules + have been updated for RFC6891; to handle OPT RR with DNSSEC OK + (DO) bit. + * Introduced application:get_supervisor/1. + * Cache OTP boot code paths, to limit how many folders that are + being accessed during a module lookup. Can be disabled with + -cache_boot_path false. + * Support for Kernel TLS (kTLS), has been added to the SSL + application, for TLS distribution (-proto_dist inet_tls), the + SSL option {ktls, true}. + * Improved error checking and handling of ssl options. + * Mitigate memory usage from large certificate chains by lowering + the maximum handshake size. This should not effect the common + cases, if needed it can be configured to a higher value. + * For security reasons the SHA1 and DSA algorithms are no longer + among the default values. + * Add encoding and decoding of use_srtp hello extension to + facilitate for DTLS users to implement SRTP functionality. + +------------------------------------------------------------------- +Fri Jun 23 19:39:26 UTC 2023 - matwey.kornilov@gmail.com + +- Changes for 25.3.2.2: + * compiler: The compiler could be very slow when compiling guards + with multiple guard tests separated with 'or' or ';'. +- Changes for 25.3.2.1: + * xmerl: New options to xmerl_scan and xmerl_sax_parser so one + can limit the behaviour of the parsers to avoid some XML + security issues. xmerl_scan gets one new option: + xmerl_sax_parser gets the following options: The old option + skip_external_dtd is still valid and the same as + {external_entities, none} and {fail_undeclared_ref, false} but + just affects DTD's and not other external references. + * erts: Fixed a crash during tracing on certain platforms that + cannot use the machine stack for Erlang code (mainly OpenBSD + and Linux with musl). + * erts: Constructing a binary segment not aligned with a byte + boundary, with a size not fitting in 31 bits, and with a value + not fitting in a 64-bit word could crash the runtime system. + * erts: Further robustify implementation of large maps (> 32 + keys). Keys that happen to have same internal 32-bit hash + values are now put in collision nodes which are traversed with + linear search. This removes the demand for the internal hash + function when salted to eventually produce different hashes for + all possible pairs of unequal terms. + * stdlib: Static supervisors are very idle processes after they + have started so they will now be hibernated after start to + improve resource management. + * compiler: Fixed a bug where a failing bsl expression in a guard + threw an exception instead of causing the guard to fail. + * compiler: Complex guard expression using the or operator and + guard BIFs that can fail could sometimes be miscompiled so that + the guard would succeed even if a call to a guard BIF failed. + +------------------------------------------------------------------- +Sun May 07 09:41:11 UTC 2023 - matwey.kornilov@gmail.com + +- Changes for 25.3.2: + * compiler: Fixed type handling bugs that could cause an internal + error in the compiler for correct code. + * os_mon: Avoid error report from failing erlang:port_close at + shutdown of cpu_sup and memsup. Bug exists since OTP 25.3 + (os_mon-2.8.1). + * erts: If a runtime system which was starting the distribution + already had existing pids, ports, or references referring to a + node with the same nodename/creation pair that the runtime + system was about to use, these already existing pids, ports, or + references would not work as expected in various situations + after the node had gone alive. This could only occur if the + runtime system was communicated such pids, ports, or references + prior to the distribution was started. That is, it was + extremely unlikely to happen unless the distribution was + started dynamically and was even then very unlikely to happen. + The runtime system now checks for already existing pids, ports, + and references with the same nodename/creation pair that it is + about to use. If such are found another creation will be chosen + in order to avoid these issues. +- Changes for 25.3.1: + * snmp: Attempts to minimize the number of the error reports + during a failed agent init. + * compiler: When a map update such as #{}#{key:=value} that + should fail with an exception was unused, the exception would + be lost. + * compiler: Fixed bug in the validator that made it reject valid + code. + * crypto: With this change, random errors are fixed for + crypto:generate_key calls with OpenSSL 3. + * erts: Fixed a bug in the loader that prevented certain modules + compiled with no_ssa_opt from being loaded. + * erts: Implementations of the call() driver callback that + returned a faulty encoded result could cause a memory leak and + could cause invalid data on the heap of the processes calling + erlang:port_call/3. + * erts: Fixed a memory corruption issue when upgrading code. The + bug was introduced in OTP 25.3 + * erts: Fixed configure tests for a few ARM-specific + instructions, which prevented the emulator from being built on + some platforms. + * erts: Aliases created in combination with a monitor using the + {alias, explicit_unalias} option stopped working from remote + nodes when a 'DOWN' signal had been received due to the monitor + or if the monitor was removed using the erlang:demonitor() BIF. + This bug was introduced in OTP 24.3.4.10 and OTP 25.3. + * erts: In rare circumstances, bit syntax matching of an invalid + code point for a utf32 would crash the runtime system. + * erts: Building the runtime system failed when native atomic + support was missing. Note that execution on such systems have + only been rudimentary tested. + * erl_interface: Fixed configure tests for a few ARM-specific + instructions, which prevented the emulator from being built on + some platforms. + * eldap: Added a new function eldap:info/1 that returns the + socket and the transport protocol for the eldap connection. + * inets: Correct timing related pipelining/keepalive queue bug, + that could result in unexpected "socket_remotly_closed" errors. + * inets: With this change, upon remote socket closure current + request is added to a retried queue (either pipeline or + keep_alive, but not both). + * ssl: With this change, ssl:connection_information/2 returns + correct keylog data after TLS1.3 key update. + * ssl: Client signature algorithm list input order is now honored + again , it was accidently reversed by a previous fix. + * stdlib: The type specs in the erl_parse module has been updated + to include the maybe construct and the ! operator. + * wx: Improve debug prints from the nifs. Some minor fixes for + wxWidgets-3.2. Fixed OpenGL debug functions. + +------------------------------------------------------------------- +Sat Mar 25 10:06:34 UTC 2023 - matwey.kornilov@gmail.com + +- Changes for 25.3: + * reltool: Fixed a bug that would cause analysis to crash. + * stdlib: Fixed a bug that would cause analysis to crash. + * stdlib: Fixed a crash when formatting stack traces for error + reports. + * stdlib: Instead of crashing, the list_to_integer/1 and + list_to_integer/2 BIFs now raise the system_limit exception for + overlong lists that can't be converted to integers. Similarly, + the string:to_integer/1 BIF now returns {error,system_limit} + for overlong lists. + * stdlib: Removal of non-necessary undefined types added to the + state's supervisor record. + * compiler: Fixed a bug that would cause the compiler to hang. + * compiler: Fixed a crash when compiling code that contained + maybe expressions. + * compiler: Constructing a binary with an explicit size of all + for a binary segment would crash the compiler. + * compiler: The compiler would generate incorrect code for the + following type of expression: Pattern = BoundVar1 = . . . = + BoundVarN = Expression An exception should be raised if any of + the bound variables have different values than Expression. The + compiler would generate code that would cause the bound + variables to be bound to the value of Expressionwhether the + value matched or not. + * xmerl: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * megaco: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * debugger: Fixed a bug that would cause analysis to crash. + * erts: Fixed a bug on Windows where file:read_file_info/1 would + fail for files with corrupt metadata. + * erts: Fix process_info(_, binary) to again include "writable + binaries" which were lost in OTP-25.0. Writable binaries are an + optimization used when binaries are appended upon in a loop. + * erts: Fix rare race when receiving fragmented messages on a + terminating connection. Could potentially cause memory leaks as + well as double free crashes. Bug exists since OTP 22.0. + * erts: Fixed bug that could maybe cause problems when a file + descriptor number is closed by a linked in driver and then + opened (reused) and passed to enif_select by a NIF. No actual + symptoms seen, only failed internal assertions in debug build. + * erts: The runtime system could crash when tracing a process + executing on a dirty scheduler. + * erts: In the binary syntax, attempting to match out integers + with size exceeding 2 GiB could crash the runtime system. + * erts: Fixed edge case in floating-point negation where A = 0.0, + B = -A did not produce B = -0.0 on x86_64 JIT. + * erts: Fixed an issue in the JIT that could crash the emulator + on some platforms. + * erts: Added meta data to the windows installer. + * erts: Fixed ETS insertion order into bag and duplicate_bag of + tuples with identical keys when passed in a list to + ets:insert/2. The insert order has been head-to-tail but was + accidentally changed in OTP 23.0. For bag it was reverted + (tail-to-head), while for duplicate_bag it was sometimes + reverted depending on the length of the list and number of + "reductions" left for the calling process. This fix changes the + insert order of ets:insert/2 back to always be head-to-tail of + the list argument. + * erts: With the JIT for AArch64 (AMD64), calling bxor in with + non-integer arguments in a guard would crash the runtime + system. + * erts: Fix bug regarding process flag max_heap_size. Could cause + strange behavior when a process was killed due to exceeding the + limit. + * erts: Fixed binary comprehensions to be similar to other + creation of binary data with respect to its contribution of + triggering garbage collection. + * erts: In rare circumstances, when a process exceeded its + allowed heap size set by option max_heap_size, it would not be + killed as it should be, but instead enter a kind of zombie + state it would never get out of. + * erts: Instead of crashing, the list_to_integer/1 and + list_to_integer/2 BIFs now raise the system_limit exception for + overlong lists that can't be converted to integers. Similarly, + the string:to_integer/1 BIF now returns {error,system_limit} + for overlong lists. + * erts: Active process aliases of a process at its termination + leaked memory. + * erts: Support for fully asynchronous distributed signaling + where send operations never block. This functionality is by + default disabled and can be enabled per process. For more + information see the documentation of process_flag(async_dist, + Bool). + * erts: Added the +JPperf no_fp option to explicitly disable + Erlang frame pointers otherwise added when using the +JPperf + map option. + * erl_interface: Accept connection setup from OTP 23 and 24 nodes + that are not using epmd. + * erl_interface: The ei API for decoding/encoding terms is not + fully 64-bit compatible since terms that have a representation + on the external term format larger than 2 GB cannot be handled. + * syntax_tools: erl_syntax_lib:annotate_bindings/1,2 will now + properly annotate named functions and their arguments. + * kernel: Fixed a bug on Windows where file:read_file_info/1 + would fail for files with corrupt metadata. + * kernel: Accept connection setup from OTP 23 and 24 nodes that + are not using epmd. + * public_key: As different solutions of verifying certificate + revocation exists move the decode of 'CRLDistributionPoints' so + that it will only be decode. When it is actually used in the + verification process. This would enable interoperability with + systems that use certificates with an invalid empty + CRLDistributionPoints extension that they want to ignore and + make verification by other means. + * public_key: public_key:pkix_path_validation validates + certificates expiring after 2050 + * public_key: Do not leave exit message in message queue after + calling cacerts_load() on MacOS. + * public_key: Replace size/1 with either tuple_size/1 or + byte_size/1 The size/1 BIF is not optimized by the JIT, and its + use can result in worse types for Dialyzer. When one knows that + the value being tested must be a tuple, tuple_size/1 should + always be preferred. When one knows that the value being tested + must be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * ssl: Fixed that new dtls connections from the same client ip + port combination works. If there is a process waiting for + accept the new connection will connect to that, otherwise it + will try to re-connect to the old server connection. + * ssl: When shutting down a node that uses SSL distribution + (-proto_dist inet_tls), a confusing error message about an + unexpected process exit was printed. This particular message is + no longer generated. + * ssl: fixes the type spec for ssl:format_error/1 + * ssl: Replace size/1 with either tuple_size/1 or byte_size/1 The + size/1 BIF is not optimized by the JIT, and its use can result + in worse types for Dialyzer. When one knows that the value + being tested must be a tuple, tuple_size/1 should always be + preferred. When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, byte_size/1 + also accepts a bitstring (rounding up size to a whole number of + bytes), so one must make sure that the call to byte_size/ is + preceded by a call to is_binary/1 to ensure that bitstrings are + rejected. Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous code had + made sure that the argument is a binary, it does not harm to + add an is_binary/1 test immediately before the call to + byte_size/1. + * jinterface: Accept connection setup from OTP 23 and 24 nodes + that are not using epmd. + * os_mon: The port programs used by cpu_sup and memsup are now + gracefully shut down when cpu_sup and memsup are shut down. + * eunit: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * crypto: A user defined runtime library path configured using + --with-ssl-rpath= could fail to be enabled. + * crypto: Ensure that configure fails if a user defined runtime + library path has been passed by the user, but cannot set. + * mnesia: Improved consistency for dirty writes when a table was + added with add_table_copy/3. Fixed a problem with sticky write, + which could lead to inconsistent data. + * mnesia: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * common_test: Renamed undocumented macro CT_PEER/3 to + CT_PEER_REL/3. + * ssh: With this change, PKCS8 formatted private key file is + properly decoded and SSH daemon with such key can be started. + * ssh: Replace size/1 with either tuple_size/1 or byte_size/1 The + size/1 BIF is not optimized by the JIT, and its use can result + in worse types for Dialyzer. When one knows that the value + being tested must be a tuple, tuple_size/1 should always be + preferred. When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, byte_size/1 + also accepts a bitstring (rounding up size to a whole number of + bytes), so one must make sure that the call to byte_size/ is + preceded by a call to is_binary/1 to ensure that bitstrings are + rejected. Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous code had + made sure that the argument is a binary, it does not harm to + add an is_binary/1 test immediately before the call to + byte_size/1. + * inets: With this change, handling of URI to a folder, with + missing trailing / and a query component present is fixed. + * inets: Adds more type information to the inets app, thus + improving the errors that static analysis tools can detect. The + addition of type information to records and the updates to + function heads help static analysis tools to understand that + some values in the records cannot be 'undefined', thus making + static tools to type check correctly more modules in the inets + app + * inets: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * snmp: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * ftp: Replace size/1 with either tuple_size/1 or byte_size/1 The + size/1 BIF is not optimized by the JIT, and its use can result + in worse types for Dialyzer. When one knows that the value + being tested must be a tuple, tuple_size/1 should always be + preferred. When one knows that the value being tested must be a + binary, byte_size/1 should be preferred. However, byte_size/1 + also accepts a bitstring (rounding up size to a whole number of + bytes), so one must make sure that the call to byte_size/ is + preceded by a call to is_binary/1 to ensure that bitstrings are + rejected. Note that the compiler removes redundant calls to + is_binary/1, so if one is not sure whether previous code had + made sure that the argument is a binary, it does not harm to + add an is_binary/1 test immediately before the call to + byte_size/1. + * dialyzer: Fixed a bug that would cause analysis to crash. + * dialyzer: Replace size/1 with either tuple_size/1 or + byte_size/1 The size/1 BIF is not optimized by the JIT, and its + use can result in worse types for Dialyzer. When one knows that + the value being tested must be a tuple, tuple_size/1 should + always be preferred. When one knows that the value being tested + must be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. + * tftp: Replace size/1 with either tuple_size/1 or byte_size/1 + The size/1 BIF is not optimized by the JIT, and its use can + result in worse types for Dialyzer. When one knows that the + value being tested must be a tuple, tuple_size/1 should always + be preferred. When one knows that the value being tested must + be a binary, byte_size/1 should be preferred. However, + byte_size/1 also accepts a bitstring (rounding up size to a + whole number of bytes), so one must make sure that the call to + byte_size/ is preceded by a call to is_binary/1 to ensure that + bitstrings are rejected. Note that the compiler removes + redundant calls to is_binary/1, so if one is not sure whether + previous code had made sure that the argument is a binary, it + does not harm to add an is_binary/1 test immediately before the + call to byte_size/1. +- Changes for 25.2.3: + * erts: Comparisons between small numbers and pids or ports would + in some edge cases say that the number was greater than the pid + or port, violating the term order. + * erts: process_info(Pid, status) when Pid /= self() could return + an erroneous result. + * ssl: Maximize compatibility by ignoring change_cipher_spec + during handshake even if middle_box_mode is not negotiated + (mandated by client) + * ssl: Move assert of middlebox message after an + hello_retry_request to maximize interoperability. Does not + changes semantics of the protocol only allows unexpected + message delay from server. + * ssh: With this change, ssh application does not crash when + formatting some of info reports for unsuccessful connections. + * ssh: With this change, ssh does not log extensively long + messages. + * inets: Ensure graceful shutdown + * inets: Return type of the type specification for function + httpc:cookie_header/{1,2,3} has been fixed from -spec + cookie_header(url()) -> [{ field(), value() }] | {error, + Reason} to -spec cookie_header(url()) -> { field(), value() } | + {error, Reason} +- Changes for 25.2.2: + * ftp: Fixes calls to ftp:nlist/2 returning {error, epath} when + the file / folder exists +- Changes for 25.2.1: + * compiler: Fixed a bug that could cause legal code to fail + validation. + * compiler: Eliminated a rare crash in the beam_types module. + * erts: Fixed a bug in selective receive optimization that could + crash 32-bit emulators. + * erts: A race condition which was very rarely triggered could + cause the signal queue of a process to become inconsistent + causing the runtime system to crash. + * kernel: The tcp connect option 'bind_to_device' could not be + used with inet_backend = 'socket'. 'inet' requires value type + binarry() and 'socket' requires value type 'string()'. + * kernel: Minor issue processing options when calling + gen_tcp:connect with a sockaddr() and inet_backend = socket. + * common_test: Change timeout to infinity for gen_server calls in + cth_log_redirect + * inets: fixes a missing case of the type specification for + httpd:info/2/3/4 + * snmp: Single threaded agent crash when vacm table not properly + initiated. + +------------------------------------------------------------------- +Sun Dec 18 08:45:06 UTC 2022 - matwey.kornilov@gmail.com + +- 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 + +Meamin (no customized allocators). + * erts: gen_udp:open/2 with option(s) add_membership or + drop_membership would drop earlier options. + * erts: The inet:setopts/2 {reuseaddr, true} option will now be + ignored on Windows unless the socket is an UDP socket. For more + information see the documentation of the reuseaddr option part + of the documentation of inet:setopts/2. Prior to OTP 25 the + {reuseaddr, true} option was ignored for all sockets on + Windows, but as of OTP 25.0 this was changed so that it was not + ignored for any sockets. *** POTENTIAL INCOMPATIBILITY *** + * erts: Fix bug in binary_to_term decoding a list of length 1G or + longer. + * erts: Fix bug in binary_to_term (and distributed receive) when + decoding a large map (>32 keys) with unsorted small maps (<= + 32) as keys of the large map. This was only a problem if the + term was encoded by erl_interface, jinterface or otherwise, as + the VM itself always encodes small maps with sorted keys. The + "binary_to_term" would appear as successful but the created + large map was internally inconsistent. The smaller key-maps + could not be found with maps:get and friends. Other operations + such as map compare and merge could probably also give + incorrect results. + * erts: Fix Windows bug in open_port({spawn, Command}, ..) when + Command is found via the OS search PATH and that directory path + contains white spaces. The port program would start but the + command line arguments to it could be incorrect. + * ftp: fix unexpected result ok when calling ftp:nlist repeatedly + * inets: This change allows body requests to httpc:request/5 be + an iolist() + * inets: addition of type specs in httpc.erl + * inets: httpc: Add support for HTTP 308 status code + * dialyzer: Dialyzer would crash when attempting to analyze a bit + syntax segment size having an literal non-integer size such as + []. + * dialyzer: Dialyzer could crash when trying to analyze a + convoluted nested expression involving funs, + * kernel: Fixed shutdown crash in gen_tcp socket backend, when + the other end closed the socket. + * kernel: erl_tar can now read gzip-compressed tar files that are + padded. There is a new option compressed_one for file:open/2 + that will read a single member from a gzip file, + * kernel: Fix os:cmd to not translate all exceptions thrown to + badarg. For example emfile from erlang:open_port was translated + to badarg. This bug has existed since Erlang/OTP 24. + * kernel: Spec for function net:if_names/0 incorrect + * kernel: Missing ctrl option name transation for TOS and TTL (on + FreeBSD) when using gen_udp with the 'socket' inet_backend. + * kernel: gen_udp:open/2 with option(s) add_membership or + drop_membership would drop earlier options. + * kernel: The inet:setopts/2 {reuseaddr, true} option will now be + ignored on Windows unless the socket is an UDP socket. For more + information see the documentation of the reuseaddr option part + of the documentation of inet:setopts/2. Prior to OTP 25 the + {reuseaddr, true} option was ignored for all sockets on + Windows, but as of OTP 25.0 this was changed so that it was not + ignored for any sockets. *** POTENTIAL INCOMPATIBILITY *** + * kernel: The distribution socket option handling in + inet_tcp_dist has been cleaned up to clarify which were + mandatory and which just had default values. + * kernel: Improve warning message format for gen_tcp_socket. + * snmp: Explicitly close the socket(s) when terminating + (default-) net-if process. + * stdlib: erl_tar can now read gzip-compressed tar files that are + padded. There is a new option compressed_one for file:open/2 + that will read a single member from a gzip file, + * stdlib: A concurrent call to ets:rename could cause + ets:delete_all_objects to fail halfway through with badarg. + * stdlib: It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done by + constructing a record with a default initialization expression + that called a function. + * stdlib: The compiler could crash when using a record with + complex field initialization expression as a filter in a list + comprehension. + * stdlib: unicode:characters_to_binary() could build + unnecessarily large call stack. + * stdlib: Improve error message for ets:new/2 name clash. Say + "name already exists" instead of less specific "invalid + options". + * mnesia: Fixed crash which could happen during startup if too + many decisions where sent from remote nodes. + * os_mon: The disk_space_check_interval configuration parameter + of disksup can now be set to values smaller than a minute. + * ssh: graceful shutdown of ssh_conection_handler when connection + is closed by peer + * common_test: Fix starting of peer nodes on old releases when + the compile server was active and the current Erlang + installation contained non-latin1 characters in its path. + * public_key: Disregard LDAP URIs when HTTP URIs are expected. + * ssl: With this change, tls_sender process is hibernated after + sufficient inactivity. + * ssl: Correct handling of legacy schemes so that ECDSA certs + using sha1 may be used for some TLS-1.3 configurations. + * ssl: With this change, tls_sender does not cause logger crash + upon key update. + * ssl: Enhance warning message + * ssl: Provide server option to make certificate_authorities + extension in the TLS-1.3 servers certificate request optional. + This will allow clients to send incomplete chains that may be + reconstructable and thereby verifiable by the server, but that + would not adhere to the certificate_authorities extension. + * ssl: If the verify_fun handles four arguments the DER cert will + be supplied as one of the arguments. + * megaco: A very minor improvement to the measurement tool. + * observer: A WX event race could causes a crash in when handling + socket or port info. + * observer: Improve the nodes menu to include more nodes. + * compiler: Line number in compiler messages would be truncated + to 4 digits for line numbers greater than 9999. + * compiler: In rare circumstance, matching a binary as part of a + receive clause could cause the compiler to terminate because of + an internal consistency check failure. + * compiler: Compiling a function with complex bit syntax matching + such as f(<>, <>) -> ok. could crash the + compiler. + * compiler: It is not allowed to call functions from guards. The + compiler failed to reject a call in a guard when done by + constructing a record with a default initialization expression + that called a function. + * compiler: The compiler could crash when using a record with + complex field initialization expression as a filter in a list + comprehension. + * wx: Added environment variable WX_MACOS_NON_GUI_APP to allow + user to override OSXIsGUIApplication behavior. + +------------------------------------------------------------------- +Thu Nov 24 17:37:54 UTC 2022 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Thu Oct 13 16:02:52 UTC 2022 - opensuse-packaging@opensuse.org + +- 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 + that started it which caused the peer node to linger without + ever halting. +- Changes for 25.1: + * dialyzer: Two bugs have been fixed in Dialyzer's checking of + behaviors: When a mandatory callback function is present but + not exported, Dialyzer would not complain about a missing + callback. When an optional callback function was not exported + and had incompatible arguments and/or the return values were + incompatible, Dialyzer would complain. This has been changed to + suppress the warning, because the function might not be + intended to be a callback function, for instance if a release + added a new optional callback function (such as format_status/1 + for the gen_server behaviour added in OTP 25). + * dialyzer: The no_extra_return and no_missing_return warnings + can now be suppressed through -dialyzer directives in source + code. + * jinterface: Fix javadoc build error by adding option -encoding + UTF-8. + * diameter: There is a new configure option, --enable- + deterministic-build, which will apply the deterministic + compiler option when building Erlang/OTP. The deterministic + option has been improved to eliminate more sources of non- + determinism in several applications. + * crypto: Fix configure with --with-ssl and --disable-dynamic- + ssl-lib on Windows. + * crypto: Remove all references correctly in the garbage + collection if an engine handle was not explicit unloaded. + * crypto: Changed the behaviour of the engine load/unload + functions The engine load/unload functions have got changed + semantics to get a more consistent behaviour and work correct + when variables are garbage collected. The load functions now + don't register the methods for the engine to replace. That will + now be handled with the new functions + engine_register/engine_unregister if needed. Some functions are + removed from the documentation and therefor the API, but they + are left in the code for compatibility. *** POTENTIAL + INCOMPATIBILITY *** + * crypto: Fixed a naming bug for AES-CFB and Blowfish-CFB/OFB + when linked with OpenSSL 3.0 cryptolib. + * crypto: Sign/verify does now behave as in OTP-24 and earlier + for eddsa. + * crypto: Pass elliptic curve names from crypto.erl to crypto's + nif. + * crypto: The configure option --disable-deprecated-warnings is + removed. It was used for some releases when the support for + OpenSSL 3.0 was not completed. It is not needed in OTP 25. + * crypto: Crypto is now considered to be usable with the OpenSSL + 3.0 cryptolib for production code. ENGINE and FIPS are not yet + fully functional. + * crypto: Do not exit if the legacy provider is missing in + libcrypto 3.0. + * ssl: Reject unexpected application data in all relevant places + for all TLS versions. Also, handle TLS-1.3 middlebox + compatibility with more care. This will make malicious + connections fail early and further, mitigate possible DoS + attacks, that would be caught by the handshake timeout. Thanks + to Aina Toky Rasoamanana and Olivier Levillain from Télécom + SudParis for alerting us of the issues in our implementation. + * ssl: With this change, value of cacertfile option will be + adjusted before loading certs from the file. Adjustments + include converting relative paths to absolute and converting + symlinks to actual file path. Thanks to Marcus Johansson + * ssl: In TLS-1.3, if chain certs are missing (so server auth + domain adherence can not be determined) send peer cert and hope + the server is able to recreate a chain in its auth domain. + * ssl: Make sure periodical refresh of CA certificate files + repopulates cache properly. + * ssl: Correct internal CRL cache functions to use internal + format consistently. + * ssl: Incorrect handling of client middlebox negotiation for + TLS-1.3 could result in that a TLS-1.3 server would not use + middlebox mode although the client was expecting it too and + failing the negotiation with unexpected message. + * ssl: If the "User" process, the process starting the TLS + connection, gets killed in the middle of spawning the dynamic + connection tree make sure we do not leave any processes behind. + * ssl: A vulnerability has been discovered and corrected. It is + registered as CVE-2022-37026 "Client Authentication Bypass". + Corrections have been released on the supported tracks with + patches 23.3.4.15, 24.3.4.2, and 25.0.2. The vulnerability + might also exist in older OTP versions. We recommend that + impacted users upgrade to one of these versions or later on the + respective tracks. OTP 25.1 would be an even better choice. + Impacted are those who are running an ssl/tls/dtls server using + the ssl application either directly or indirectly via other + applications. For example via inets (httpd), cowboy, etc. Note + that the vulnerability only affects servers that request client + certification, that is sets the option {verify, verify_peer}. + (bsc#1205318) + * eunit: With this change, Eunit can optionally not try to + execute related module with "_tests" suffix. This might be used + for avoiding duplicated executions when source and test modules + are located in the same folder. + * erl_docgen: Update DTD to allow XML tag em under pre. + * inets: Add httpc:ssl_verify_host_options/1 to help setting + default ssl options for the https client. + * inets: This change fixes dialyzer warnings generated for + inets/httpd examples (includes needed adjustment of spec for + ssh_sftp module). + * inets: Remove documentation of no longer supported callback. + * stdlib: Fixed inconsistency bugs in global due to + nodeup/nodedown messages not being delivered before/after + traffic over connections. Also fixed various other + inconsistency bugs and deadlocks in both global_group and + global. As building blocks for these fixes, a new BIF + erlang:nodes/2 has been introduced and + net_kernel:monitor_nodes/2 has been extended. The -hidden and + -connect_all command line arguments did not work if multiple + instances were present on the command line which has been + fixed. The new kernel parameter connect_all has also been + introduced in order to replace the -connect_all command line + argument. + * stdlib: Fix the public_key:ssh* functions to be listed under + the correct release in the Removed Functionality User's Guide. + * stdlib: The type spec for format_status/1 in gen_statem, + gen_server and gen_event has been corrected to state that the + return value is of the same type as the argument (instead of + the same value as the argument). + * stdlib: If the timer server child spec was already present in + kernel_sup but it was not started, the timer server would fail + to start with an {error, already_present} error instead of + restarting the server. + * stdlib: When changing callback module in gen_statem the + state_enter calls flag from the old module was used in for the + first event in the new module, which could confuse the new + module and cause malfunction. This bug has been corrected. With + this change some sys debug message formats have been modified, + which can be a problem for debug code relying on the format. + *** POTENTIAL INCOMPATIBILITY *** + * stdlib: There is a new configure option, --enable- + deterministic-build, which will apply the deterministic + compiler option when building Erlang/OTP. The deterministic + option has been improved to eliminate more sources of non- + determinism in several applications. + * stdlib: The rfc339_to_system_time/1,2 functions now allows the + minutes part to be omitted from the time zone. + * stdlib: The receive statement in gen_event has been optimized + to not use selective receive (which was never needed, and could + cause severe performance degradation under heavy load). + * stdlib: Add new API function erl_features:configurable/0 + * parsetools: There is a new configure option, --enable- + deterministic-build, which will apply the deterministic + compiler option when building Erlang/OTP. The deterministic + option has been improved to eliminate more sources of non- + determinism in several applications. + * public_key: Support more Linux distributions in cacerts_load/0. + * public_key: Correct asn1 typenames available in type + pki_asn1_type() + * public_key: Sign/verify does now behave as in OTP-24 and + earlier for eddsa. + * snmp: Improved the get-bulk response max size calculation. Its + now possible to configure 'empty pdu size', see appendix c for + more info. + * snmp: Fix various example dialyzer issues + * ssh: Handling rare race condition at channel close. + * ssh: New ssh option no_auth_needed to skip the ssh + authentication. Use with caution! + * ssh: This change fixes dialyzer warnings generated for + inets/httpd examples (includes needed adjustment of spec for + ssh_sftp module). + * ssh: The new function ssh:daemon_replace_options/2 makes it + possible to change the Options in a running SSH server. + Established connections are not affected, only those created + after the call to this new function. + * ssh: Add a timeout as option max_initial_idle_time. It closes a + connection that does not allocate a channel within the timeout + time. For more information about timeouts, see the Timeouts + section in the User's Guide Hardening chapter. + * observer: Fixed units in gui. + * xmerl: There is a new configure option, --enable-deterministic- + build, which will apply the deterministic compiler option when + building Erlang/OTP. The deterministic option has been improved + to eliminate more sources of non-determinism in several + applications. + * asn1: There is a new configure option, --enable-deterministic- + build, which will apply the deterministic compiler option when + building Erlang/OTP. The deterministic option has been improved + to eliminate more sources of non-determinism in several + applications. + * erts: Fixed inconsistency bugs in global due to nodeup/nodedown + messages not being delivered before/after traffic over + connections. Also fixed various other inconsistency bugs and + deadlocks in both global_group and global. As building blocks + for these fixes, a new BIF erlang:nodes/2 has been introduced + and net_kernel:monitor_nodes/2 has been extended. The -hidden + and -connect_all command line arguments did not work if + multiple instances were present on the command line which has + been fixed. The new kernel parameter connect_all has also been + introduced in order to replace the -connect_all command line + argument. + * erts: Fixed IPv6 multicast_if and membership socket options. + * erts: Accept funs (NEW_FUN_EXT) with incorrectly encoded size + field. This is a workaround for a bug (OTP-18104) existing in + OTP 23 and 24 that could cause incorrect size fields in certain + cases. The emulator does not use the decoded size field, but + erl_interface still does and is not helped by this workaround. + * erts: Fixed issue with inet:getifaddrs hanging on pure IPv6 + Windows + * erts: Fix faulty distribution encoding of terms with either The + symptom could be failed decoding on the receiving side leading + to aborted connection. Fix OTP-18093 is a workaround for theses + bugs that makes the VM accepts such faulty encoded funs. The + first encoding bug toward pending connection exists only in OTP + 23 and 24, but the second one exists also on OTP 25. + * erts: Fixed emulator crash that could happen during crashdump + generation of ETS tables with options ordered_set and + {write_concurrency,true}. + * erts: Retrieval of monotonic and system clock resolution on + MacOS could cause a crash and/or erroneous results. + * erts: Fix bug where the max allowed size of erl +hmax was lower + than what was allowed by process_flag. + * erts: On computers with ARM64 (AArch64) processors, the JIT + could generate incorrect code when more than 4095 bits were + skipped at the tail end of a binary match. + * erts: In rare circumstances, an is_binary/1 guard test could + succeed when given a large integer. + * erts: Fix bug causing ets:info (and sometimes ets:whereis) to + return 'undefined' for an existing table if a concurrent + process were doing ets:insert with a long list on the same + table. + * erts: Fix writing and reading of more than 2 GB in a single + read/write operation on macOS. Before this fix attempting to + read/write more than 2GB would result in {error,einval}. + * erts: Fix bug sometimes causing emulator crash at node shutdown + when there are pending connections. Only seen when running duel + distribution protocols, inet_drv and inet_tls_dist. + * erts: Yield when adjusting large process message queues due to + The message queue adjustment work will now be interleaved with + all other types of work that processes have to do, even other + message queue adjustment work. + * erts: Add rudimentary debug feature (option) for the inet- + driver based sockets, such as gen_tcp and gen_udp. + * erts: Introduced the hidden and dist_listen options to + net_kernel:start/2. Also documented the -dist_listen command + line argument which was erroneously documented as a kernel + parameter and not as a command line argument. + * erts: New documentation chapter "Debugging NIFs and Port + Drivers" under Interoperability Tutorial. + * erts: Add new API function erl_features:configurable/0 + * kernel: Fixed inconsistency bugs in global due to + nodeup/nodedown messages not being delivered before/after + traffic over connections. Also fixed various other + inconsistency bugs and deadlocks in both global_group and + global. As building blocks for these fixes, a new BIF + erlang:nodes/2 has been introduced and + net_kernel:monitor_nodes/2 has been extended. The -hidden and + -connect_all command line arguments did not work if multiple + instances were present on the command line which has been + fixed. The new kernel parameter connect_all has also been + introduced in order to replace the -connect_all command line + argument. + * kernel: Fixed IPv6 multicast_if and membership socket options. + * kernel: Fixed issue with inet:getifaddrs hanging on pure IPv6 + Windows + * kernel: The type specifications for inet:getopts/2 and + inet:setopts/2 have been corrected regarding SCTP options. + * kernel: The type specifications for inet:parse_* have been + tightened. + * kernel: Fix gen_tcp:connect/3 spec to include the inet_backend + option. + * kernel: Fix bug where using a binary as the format when calling + logger:log(Level, Format, Args) (or any other logging function) + would cause a crash or incorrect logging. + * kernel: Add rudimentary debug feature (option) for the inet- + driver based sockets, such as gen_tcp and gen_udp. + * kernel: Introduced the hidden and dist_listen options to + net_kernel:start/2. Also documented the -dist_listen command + line argument which was erroneously documented as a kernel + parameter and not as a command line argument. + * kernel: Scope and group monitoring have been introduced in pg. + For more information see the documentation of + pg:monitor_scope(), pg:monitor(), and pg:demonitor(). + * kernel: A new function global:disconnect/0 has been introduced + with which one can cleanly disconnect a node from all other + nodes in a cluster of global nodes. + * compiler: The compiler will now forbid using the empty atom '' + as module name. Also forbidden are modules names containing + control characters, and module names containing only spaces and + soft hyphens. + * compiler: The bin_opt_info and recv_opt_info options would + cause the compiler to crash when attempting to compile + generated code without location information. + * compiler: In rare circumstances involving floating point + operations, the compiler could terminate with an internal + consistency check failure. + * compiler: In rare circumstances when doing arithmetic + instructions on non-numbers, the compiler could crash. + * compiler: In rare circumstances, complex boolean expressions in + nested cases could cause the compiler to crash. + * compiler: Expression similar to #{assoc:=V} = #key=>self()}, V + would return the empty map instead of raising an exception. + * compiler: Eliminated a crash in the beam_ssa_bool pass of the + compiler when compiling a complex guard expression. + * compiler: In rare circumstances, the compiler could crash with + an internal consistency check failure. + * compiler: When compiling with the option inline_list_funcs, the + compiler could produce a nonsensical warning. + * compiler: When given the no_ssa_opt option, the compiler could + terminate with an internal consistency failure diagnostic when + compiling map matching. + * compiler: Made warnings for existing atoms being keywords in + experimental features more precise, by not warning about quoted + atoms. + * compiler: There is a new configure option, --enable- + deterministic-build, which will apply the deterministic + compiler option when building Erlang/OTP. The deterministic + option has been improved to eliminate more sources of non- + determinism in several applications. + * megaco: Fixed various dialyzer related issues in the examples + and the application proper. + * megaco: There is a new configure option, --enable- + deterministic-build, which will apply the deterministic + compiler option when building Erlang/OTP. The deterministic + option has been improved to eliminate more sources of non- + determinism in several applications. + * common_test: Fix cth_surefire to handle when a suite is not + compiled with debug_info. This bug has been present since + Erlang/OTP 25.0. + * common_test: Common Test now preserves stack traces for throws. + +------------------------------------------------------------------- +Sat Aug 27 07:16:06 UTC 2022 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Tue Aug 09 08:24:52 UTC 2022 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Sun Jul 03 09:28:47 UTC 2022 - matwey.kornilov@gmail.com + +- 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 + erlang:monitor_node() and erlang:monitor() BIFs could + erroneously fail even though configured distribution service + was available. This occurred if these BIFs were called after + the distribution had been started using dynamic node name + assignment but before the name had been assigned. + * kernel: Added the missing mandatory address/0 callback in the + gen_tcp_dist example. + * erts: A spawn_reply signal from a remote node could be delayed + and be delivered after other signals from the newly spawned + process. When this bug triggered, the connection to the node + where the process was spawned sometimes could be taken down due + to the bug. The following error message would then be logged if + this happened: Missing 'spawn_reply' signal from the node + detected by on the node . The + node probably suffers from the bug with ticket id + OTP-17737. This bug only affected processes which had enabled + off_heap message_queue_data and parallel reception of signals + had been automatically enabled. This bug was introduced in OTP + 25.0, ERTS version 13.0. + * erts: Fixed type spec of erlang:system_info(dist_ctrl). + * erts: The zlib built in to the runtime system has been updated + to version 1.2.12. (Note that on most platforms, the platform's + own zlib is used.) + * erts: 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 + erlang:monitor_node() and erlang:monitor() BIFs could + erroneously fail even though configured distribution service + was available. This occurred if these BIFs were called after + the distribution had been started using dynamic node name + assignment but before the name had been assigned. + * crypto: Note in the documentation that MODP (rfc3526) groups + and OpenSSL 3.0 can give an error if a call to + crypto:generate_key/2 specifies a key length, and that length + is to small. + * crypto: The cmac now uses only the 3.0 API + * crypto: Documentation is now updated with which OpenSSL + cryptolib versions that OTP currently is tested. + * dialyzer: Fixed the documentation for the missing_return and + extra_return options. + * mnesia: Fixed add_table_copy which could leave a table lock if + the receiving node went down during the operation. + * ssh: Binaries can be limited in logs with the parameter + max_log_item_len. The default value is 500 bytes. + * stdlib: In the initial release of Erlang/OTP 25, the expression + bound to the _ pseudo-field in a record initialization would + always be evaluated once, even if all other fields in the + record were explicitly initialized. That would break the use + case of binding the expression error(...) to _ in order to get + an exception if not all fields were initialized. The behavior + of binding to _ has been reverted to the pre-OTP 25 behavior, + that is, to not evaluate the expression if all fields have been + bound to explicit values. + +------------------------------------------------------------------- +Sun May 22 11:19:11 UTC 2022 - Matwey Kornilov + +- Version 25.0: + - stdlib + * New function filelib:ensure_path/1 will ensure that all + directories for the given path exists + * New functions groups_from_list/2 and groups_from_list/3 in + the maps module + * New functions uniq/1 uniq/2 in the lists module + * New PRNG added to the rand module, for fast pseudo-random + numers. + - compiler, kernel, stdlib, syntax_tools: + * Added support for selectable features as described in EEP-60. + Features can be enabled/disabled during compilation with + options (ordinary and +term) to erlc as well as with + directives in the file. Similar options can be used to erl + for enabling/disabling features allowed at runtime. The new + maybe expression EEP-49 is fully supported as the feature + maybe_expr. + - erts & JIT: + * The JIT now works for 64-bit ARM processors. + * The JIT now does type-based optimizations based on type + information in the BEAM files. + * Improved the JIT’s support for external tools like perf and + gdb, allowing them to show line numbers and even the original + Erlang source code when that can be found. + - erts, stdlib, kernel: + * Users can now configure ETS tables with the + {write_concurrency, auto} option. This option forces tables + to automatically change the number of locks that are used at + run-time depending on how much concurrency is detected. The + {decentralized_counters, true} option is enabled by default + when {write_concurrency, auto} is active. + * Benchmark results comparing this option with the other ETS + optimization options are available here: benchmarks. + * To enable more optimizations, BEAM files compiled with OTP 21 + and earlier cannot be loaded in OTP 25. + * The signal queue of a process with the process flag + message_queue_data=off_heap has been optimized to allow + parallel reception of signals from multiple processes. This + can improve performance when many processes are sending in + parallel to one process. See benchmark. + * The Erlang installation directory is now relocatable on the + file system given that the paths in the installation’s + RELEASES file are paths that are relative to the + installations root directory. + * A new option called short has been added to the functions + erlang:float_to_list/2 and erlang:float_to_binary/2. This + option creates the shortest correctly rounded string + representation of the given float that can be converted back + to the same float again. + * Introduction of quote/1 and unquote/1 functions in the + uri_string module - a replacement for the deprecated + functions http_uri:encode and http_uri:decode. + * The new module peer supersedes the slave module. The slave + module is now deprecated and will be removed in OTP 27. + * global will now by default prevent overlapping partitions due + to network issues. This is done by actively disconnecting + from nodes that reports that they have lost connections to + other nodes. This will cause fully connected partitions to + form instead of leaving the network in a state with + overlapping partitions. + * It is possible to turn off the new behavior by setting the + the kernel configuration parameter + prevent_overlapping_partitions to false. Doing this will + retain the same behavior as in OTP 24 and earlier. + * The format_status/2 callback for gen_server, gen_statem and + gen_event has been deprecated in favor of the new + format_status/1 callback. + * The new callback adds the possibility to limit and change + many more things than the just the state. + * The timer module has been modernized and made more efficient, + which makes the timer server less susceptible to being + overloaded. The timer:sleep/1 function now accepts an + arbitrarily large integer. + - compiler: + * The maybe ... end construction as proposed in EEP-49 has been + implemented. It can simplify complex code where otherwise + deeply nested cases would have to be used. + * To enable maybe, give the option {enable_feature,maybe_expr} + to the compiler. The exact option to use will change in a + coming release candidate and then it will also be possible to + use from inside the module being compiled. + * When a record matching or record update fails, a {badrecord, + ExpectedRecordTag} exception used to be raised. In this + release, the exception has been changed to {badrecord, + ActualValue}, where ActualValue is the value that was found + instead of the expected record. + * Add compile attribute -nifs() to empower compiler and loader + with information about which functions may be overridden as + NIFs by erlang:load_nif/2. + * Improved and more detailed error messages when binary + construction with the binary syntax fails. This applies both + for error messages in the shell and for + erl_error:format_exception/3,4. + * Change format of feature options and directives for better + consistency. Options to erlc and the -compile(..) directive + now has the format {feature, feature-name, enable | disable}. + The -feature(..) now has the format -feature(feature-name, + enable | disable). + - crypto: + * Add crypto:hash_equals/2 which is a constant time comparision + of hashvalues. + - ssl: + * Introducing a new (still experimental) option + {certs_keys,[cert_key_conf()]}. With this a list of a + certificates with their associated key may be used to + authenticate the client or the server. The certificate key + pair that is considered best and matches negotiated + parameters for the connection will be selected. + - public_key: + * Functions for retrieving OS provided CA-certs added. + - dialyzer: + * Optimize operations in the erl_types module. Parallelize the + Dialyzer pass remote. + * Added the missing_return and extra_return options to raise + warnings when specifications differ from inferred types. + These are similar to, but not quite as verbose as overspecs + and underspecs. + * Dialyzer now better understands the types for min/2, max/2, + and erlang:raise/3. Because of that, Dialyzer can potentially + generate new warnings. In particular, functions that use + erlang:raise/3 could now need a spec with a no_return() + return type to avoid an unwanted warning. + +------------------------------------------------------------------- +Wed Apr 6 17:29:51 UTC 2022 - Matwey Kornilov + +- Fix build for Factory. Currently, any Java version + is fine for Erlang. + +------------------------------------------------------------------- +Sun Mar 27 10:40:39 UTC 2022 - matwey.kornilov@gmail.com + +- 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 + that will make erl_interface also release a dynamic library + version of libei. + * erl_interface: The ei API for decoding/encoding terms is not + fully 64-bit compatible since terms that have a representation + on the external term format larger than 2 GB cannot be handled. + * sasl: Fix bug in systools:make_script/1 documentation. + * inets: 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. + * inets: Documentation fix for inets:services_info/0, which now + describes that Info might be a Reason term() in case when + {error, Reason} is returned as service info. + * crypto: The crypto app in OTP can since OTP-24.2 be compiled, + linked and used with the new OpenSSL 3.0 cryptolib. The crypto + app has 3.0 support has been improved, but is still *not + recommended* for other usages than experiments and alpha + testing. There are not yet any guaranties that it works, not + even together with other OTP applications like for example SSL + and SSH, although there are no known errors. Since the previous + release, OTP-24.2, the following improvements have been done: - + It has been tested during nearly every nightly test on the OTP + lab - The hash algorithms md4 and ripemd160 have been enabled + with OpenSSL 3.0. - The ciphers blowfish_cbc, blowfish_ecb, + des_cbc, des_cfb, des_ecb, rc2_cbc and rc4 have been enabled + with OpenSSL 3.0. Disabled or unsupported with OpenSSL 3.0 are + still: - ENGINE support - FIPS mode - Other providers than the + built-in ones - Compiling and linking with OpenSSL 3.0 + cryptolib in compatibility modes (for example to behave as + 1.1.1) and, the ciphers blowfish_cfb64 and blowfish_ofb64 are + not supported and will not be either. Deprecated functions in + the OpenSSL 3.0 cryptolib must not be disabled as OTP/crypto + still uses some of the deprecated API functions. The gcc flag + -Wno-deprecated-declarations is set to prevent deprecation + warnings to be printed when compiling. + * crypto: Crypto is adapted to LibreSSL 3.5.0 on OpenBSD. + * crypto: New configure option ( --disable-otp-test-engine) to + prohibit the build of the OTP test engine used in some test + suites. The reason is that the test engine could be hard to + compile on for instance LibreSSL 3.5.0. For that particular + cryptolib version (or higher), this configure option is set + automatically. + * jinterface: Fix bug in OtpOutputStream.write_pid/4 and + write_ref/3 causing faulty encodig. Bug exists since OTP 23.0. + * wx: Removed the static_data option from wxImage creation + functions, as it was broken and could lead to crashes. Now + image data is always copied to wxWidgets as was the default + behavior. Removed some non working wxGridEvent event types, + which have there own events in newer wxWidgets versions, and + added a couple of event types that where missing in wx. + * asn1: Add support for the maps option in combination with the + jer backend. + * snmp: 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. + * snmp: [agent] Remove expectation of socket being a port. + * common_test: OTP internal test fix. + * runtime_tools: Fixed bug in scheduler:utilization(Seconds) that + would leave the scheduler_wall_time system flag incorrectly + enabled. + * runtime_tools: Add scheduler:get_sample/0 and get_sample_all/0. + Also clarify scheduler module documentation about how it + depends on system flag scheduler_wall_time. + * erts: Fixed a bug in the x86 JIT that might cause floating + point instructions to wrongly throw an exception. + * erts: Preserve correct nodedown_reason if supervised + distribution controller processes exit with {shutdown, Reason}. + * erts: Handling of send_timeout for gen_tcp has been corrected + so that the timeout is honored also when sending 0 bytes. + * erts: By default global does not take any actions to restore a + fully connected network when connections are lost due to + network issues. This is problematic for all applications + expecting a fully connected network to be provided, such as for + example mnesia, but also for global itself. A network of + overlapping partitions might cause the internal state of global + to become inconsistent. Such an inconsistency can remain even + after such partitions have been brought together to form a + fully connected network again. The effect on other applications + that expects that a fully connected network is maintained may + vary, but they might misbehave in very subtle hard to detect + ways during such a partitioning. In order to prevent such + issues, we have introduced a prevent overlapping partitions fix + which can be enabled using the prevent_overlapping_partitions + kernel(6) parameter. When this fix has been enabled, global + will actively disconnect from nodes that reports that they have + lost connections to other nodes. This will cause fully + connected partitions to form instead of leaving the network in + a state with overlapping partitions. Note that this fix has to + be enabled on all nodes in the network in order to work + properly. Since this quite substantially changes the behavior, + this fix is currently disabled by default. Since you might get + hard to detect issues without this fix you are, however, + strongly advised to enable this fix in order to avoid issues + such as the ones described above. As of OTP 25 this fix will + become enabled by default. + * erts: Corrected the type specification of erlang:seq_trace/2. + * erts: Fix memory leak when tracing on running on a process that + only handle system tasks or non-message signals (for example + process_info requests). + * erts: Add support for using socket:sockaddr_in() and + socket:sockaddr_in6() when using gen_sctp, gen_tcp and gen_udp. + This will make it possible to use Link Local IPv6 addresses. + * erts: Show on_load failure reasons in embedded mode. + * erts: Compile date saved in the Erlang VM executable has been + removed. + * erts: Improve documentation for the dynamic node name feature. + * ssh: Fix makefile dependency bugs. + * ssh: Fixed faulty OpenSSH decoding of Ed25519/Ed448 keys in the + OpenSSH format openssh_key_v1. + * ssh: Correction of ssh_file typing, specially for the + experimental openssh-key-v1 encoding. + * ssh: Improper tag for private ED keys when encoding with + ssh:encode/2. The tuple had ed_priv as first element, but + should have had ed_pri. This is now corrected. *** POTENTIAL + INCOMPATIBILITY *** + * ssh: Add support for Ed25519/Ed448 SSH host keys in the RFC + 4716 format ("-----BEGIN EC PRIVATE KEY-----") generated by for + example openssl or via Erlang functions (i.e. + public_key:generate_key({namedCurve, ed25519})). Ed25519 SSH + host keys generated by ssh-keygen was, and are still, + supported. + * kernel: Handling of send_timeout for gen_tcp has been corrected + so that the timeout is honored also when sending 0 bytes. + * kernel: By default global does not take any actions to restore + a fully connected network when connections are lost due to + network issues. This is problematic for all applications + expecting a fully connected network to be provided, such as for + example mnesia, but also for global itself. A network of + overlapping partitions might cause the internal state of global + to become inconsistent. Such an inconsistency can remain even + after such partitions have been brought together to form a + fully connected network again. The effect on other applications + that expects that a fully connected network is maintained may + vary, but they might misbehave in very subtle hard to detect + ways during such a partitioning. In order to prevent such + issues, we have introduced a prevent overlapping partitions fix + which can be enabled using the prevent_overlapping_partitions + kernel(6) parameter. When this fix has been enabled, global + will actively disconnect from nodes that reports that they have + lost connections to other nodes. This will cause fully + connected partitions to form instead of leaving the network in + a state with overlapping partitions. Note that this fix has to + be enabled on all nodes in the network in order to work + properly. Since this quite substantially changes the behavior, + this fix is currently disabled by default. Since you might get + hard to detect issues without this fix you are, however, + strongly advised to enable this fix in order to avoid issues + such as the ones described above. As of OTP 25 this fix will + become enabled by default. + * kernel: Fix bug where logger would crash when logging a report + including improper lists. + * kernel: Make erlang:set_cookie work for dynamic node names. + * kernel: Add support for using socket:sockaddr_in() and + socket:sockaddr_in6() when using gen_sctp, gen_tcp and gen_udp. + This will make it possible to use Link Local IPv6 addresses. + * kernel: A net_tickintensity kernel parameter has been + introduced. It can be used to control the amount of ticks + during a net_ticktime period. A new net_kernel:start/2 function + has also been introduced in order to make it easier to add new + options. The use of net_kernel:start/1 has been deprecated. + * kernel: Improve documentation for the dynamic node name + feature. + * erl_docgen: Fix css for large tables and images on small + screens + * erl_docgen: Fix bug with codeinclude tag that caused it to not + include the code if used in a correct, but unexpected way. + * observer: Calculate the display width in etop, instead of hard- + coding it to 89 characters. + * debugger: Fix record index matching, it was broken and could + never match. + * ssl: Improved error handling. + * ssl: Before this change, net_kernel used with TLS distribution + might be leaking processes in case of connectivity issues. + * ssl: Fix makefile dependency bugs. + * ssl: Make sure the TLS sender process handles explicit calls to + erlang:disconnect_node properly, avoiding potential hanging + problems in net_kernel. + * ssl: Add support for TLS-1.3 certificate_authorities extension. + And process certificate_authorities field in pre-TLS-1.3 + certificate requests. + * ssl: Support password fun for protected keyfiles in ssl:connect + function. + * ssl: Add in some cases earlier detection of possible DoS + attacks by malicious clients sending unexpected TLS messages + instead of the client hello. Note that such attacks are already + mitigated by providing a timeout for the TLS handshake. + * eldap: Fix eldap extensibleMatch dnAttributes option. According + to the ldap ASN1 the dnAttributes should be a bool, instead it + was generated as a string. + * eldap: Implemented paged searches according to https://www.rfc- + editor.org/rfc/rfc2696.txt + * public_key: Support password fun for protected keyfiles in + ssl:connect function. + * stdlib: 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. + * mnesia: Reduce the number of locks taken during table copying, + should reduce the startup time on large systems. + * diameter: 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. + +------------------------------------------------------------------- +Sun Mar 06 07:18:42 UTC 2022 - matwey.kornilov@gmail.com + +- Changes for 24.2.2: + * inets: Avoid intermediate ungraceful shutdown of the HTTP + server. + * ssh: The ssh sever parallel_login option was missing in OTP-24 + +------------------------------------------------------------------- +Mon Feb 21 18:12:08 UTC 2022 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Fri Jan 21 21:11:53 UTC 2022 - matwey.kornilov@gmail.com + +- 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. + * common_test: Before this change, group handling grammar was + ambiguous and also group paths did not support test specs. + * common_test: Before this change, it was not possible to link to + a particular header entry in Common Test log. Change adds right + aligned anchor icons in HTML test logs. + * parsetools: The default parser include file for yecc (yeccpre) + will no longer crash when attempting to print tokens when + reporting an error. + * tools: Erlang-mode fixed for newer versions of xref using CL- + Lib structures instead of EIEIO classes. + * inets: Correct HTTP server URI handling to fully rely on + uri_string. The server could mistreat some URI paths that in + turn could result in incorrect responses being generated. + * inets: Extend header values to httpc:request/5 to allow + binary() as well. Make error detection of invalid arguments to + httpc:request/5 be more precise so an error is returned in more + cases instead of causing a hang or function_clause. Be more + precise in documentation regarding the types of arguments being + accepted. + * crypto: Fixed the C-warning "implicit declaration of function + 'OpenSSL_version_num'" if compiling with an early LibreSSL + version. + * crypto: FIPS availability was not checked correctly for AEAD + ciphers. + * crypto: Fixed that cipher aliases (like aes_cbc etc) could be + present even if the aliased cipher(s) (like aes_128_cbc, + aes_256_cbc,... etc) was missing. + * crypto: The crypto app in OTP can now be compiled, linked and + used with the new OpenSSL 3.0 cryptolib. It has not yet been + extensively tested and is in this release *not recommended* for + other usages than experiments and alpha testing. There are not + yet any guaranties that it works, not even together with other + OTP applications like for example SSL and SSH, although there + are no known errors. Compiling and linking with OpenSSL 3.0 + cryptolib in compatibility modes (for example to behave as + 1.1.1) are not tested. It is not tested with external + providers. The support for FIPS mode does not yet work, and is + disabled when compiled with OpenSSL 3.0. Deprecated functions + in the OpenSSL 3.0 cryptolib must not be disabled as OTP/crypto + still uses some of the deprecated API functions. The gcc flag + -Wno-deprecated-declarations is set to prevent deprecation + warnings to be printed when compiling. The hash algorithms md4 + and ripemd160 are disabled temporarily when compiled with + OpenSSL 3.0. The ciphers blowfish_cbc, blowfish_cfb64, + blowfish_ecb, blowfish_ofb64, des_cbc, des_cfb, des_ecb, + rc2_cbc and rc4 are disabled temporarily when compiled with + OpenSSL 3.0. + * crypto: The error handling in crypto is partly refactored using + the new error reporting support. Errors earlier propagated like + exceptions are still so, but when the failing function is + called from the terminal - for example during failure hunting - + a more descriptive text is produced. + * crypto: A new function crypto:info/0 which presents some data + about the compilation and linkage of the crypto nif is added. + * crypto: Added the pbkdf2_hmac/5 function to the crypto module. + It calls the PKCS5_PBKDF2_HMAC function which implements PBKD2 + with HMAC in an efficient way. + * stdlib: Fix rendering of nbsp on terminals that do not support + unicode. + * stdlib: Improved the erl_error printout for when re fails to + compile a regular expression to also print hints about why the + compilation failed. + * stdlib: Fixed spec for supervisor_bridge:start_link(). + * stdlib: Added missing shutdown clauses in supervisor which + could cause erroneous error reports. + * stdlib: Add the no_auto_import_types to erl_lint to allow a + module to define types of the same name as a predefined type. + * erts: When matching and constructing utf16 segments in the + binary syntax, the native flag would be ignored. That is, the + endian would always be big endian even on a little-endian + computer (almost all modern computers). + * erts: Fix the help printout of +JPperf. + * erts: Fix bug that could cause Erlang to deadlock during + creation of an Erlang crash dump. + * erts: Fixed C++ build errors on some aarch64 platforms. + * erts: For macOS, the Info.plist file embedded in the runtime + system now only contains the absolute minimum amount of + information needed for the web view in wx to work towards + localhost. The other fields have been removed, allowing an + application packaged in a bundle to specify the application + name and other parameter in its own Info.plist file. + * erts: Fix bug in internal stacks (WSTACK and ESTACK) used by + term_to_binary/2 to encode terms. The bug could cause a + segfault if a very very large map was to be encoded with the + deterministic option given. + * erts: Improve the error printout when open_port/2 fails because + of invalid arguments. + * erts: Fix bug in crash dumps where the stackframe of a process + would be printed using an incorrect format. Crash dump viewer + has also been fixed to be able read the broken stack format. + The bug has existed since Erlang/OTP 23.0. + * erts: An option for enabling dirty scheduler specific allocator + instances has been introduced. By default such allocator + instances are disabled. For more information see the + documentation of the +Mdai erl command line argument. + * erts: Minor optimization of receive markers in message queues. + * erts: All predefined types have been added to the erlang module + together with documentation. Any reference to a predefined type + now links to that documentation so that the user can view it. + * erts: Suppress a code checker warning caused by debug builds of + YCF. YCF tries to get a conservative estimate of the bottom of + the stack by reading and returning a call stack allocated + variable. + * erts: Add file and product properties to erl.exe and werl.exe. + * erts: Micro optimization in bitstring append operations. + * erts: Responsiveness of processes executing on normal or low + priority could suffer due to code purging or literal area + removal on systems with a huge amount of processes. This since + during these operations all processes on the system were + scheduled for execution at once. This problem has been fixed by + introducing a limit on outstanding purge and copy literal + requests in the system. By default this limit is set to twice + the amount of schedulers on the system. This will ensure that + schedulers will have enough work scheduled to perform these + operations as quickly as possible at the same time as other + work will be interleaved to a much higher degree. Performance + of these operations will however be somewhat degraded due to + the overhead of enforcing this limit compared to when using a + very large limit. This limit can be set by passing the +zosrl + command line argument to erl, or by calling + erlang:system_flag(outstanding_system_requests_limit, + NewLimit). + * kernel: socket:which_sockets( pid() ) uses wrong keyword when + looking up socket owner ('ctrl' instead of 'owner'). + * kernel: In epmd_ntop, the #if defined(EPMD6) conditional was + inverted and it was only including the IPv6-specific code when + EPMD6 was undefined. This was causing IPv6 addrs to be + interpreted as IPv4 addrs and generating nonsense IPv4 + addresses as output. Several places were incorrectly using + 'num_sockets' instead of 'i' to index into the iserv_addr array + during error logging. This would result in a read into + uninitialized data in the iserv_addr array. Thanks to John + Eckersberg for providing this fix. + * kernel: Minor fix of the erl_uds_dist distribution module + example. + * kernel: A bug has been fixed for the legacy TCP socket adaption + module gen_tcp_socket where it did bind to a socket address + when given a file descriptor, but should not. + * kernel: Improve the error printout when open_port/2 fails + because of invalid arguments. + * kernel: Calling socket:monitor/1 on an already closed socket + should succeed and result in an immediate DOWN message. This + has now been fixed. + * kernel: Fix the configuration option logger_metadata to work. + * kernel: 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. + * kernel: Add logger:reconfigure/0. + * kernel: Add socket function ioctl/2,3,4 for socket device + control. + * kernel: Add simple support for socknames/1 for gen_tcp_socket + and gen_udp_socket. + * kernel: The types for callback result types in gen_statem has + bee augmented with arity 2 types where it is possible for a + callback module to specify the type of the callback data, so + the callback module can get type validation of it. + * erl_docgen: Fix codeinclude tag to correctly respect the type + attribute. + * erl_docgen: The HTML documentation has been updated to collapse + better on small screens. + * erl_docgen: All predefined types have been added to the erlang + module together with documentation. Any reference to a + predefined type now links to that documentation so that the + user can view it. + * snmp: Handling of test config flag when starting "empty". + * snmp: Add support for new authentication algorithms (SHA-224, + SHA-256, SHA-384 and SHA-512), according to RFC 7860. + * snmp: Improve debug info for (snmp) manager. + * wx: Fix crash in cleanup code when a gui application is + exiting. Fix errors in the OpenGL wrapper that could cause + crashes and improve the documentation. + * edoc: Add option link_predefined_types that is used to create + links to erlang predefined types. This is mainly to be used by + erl_docgen when creating the Erlang/OTP documentation. + * dialyzer: Fixed a crash when opaque types contained certain + unicode characters. + * dialyzer: 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. + * observer: Fix bug in crash dumps where the stackframe of a + process would be printed using an incorrect format. Crash dump + viewer has also been fixed to be able read the broken stack + format. The bug has existed since Erlang/OTP 23.0. + * ssh: The value of the connect_timeout option is now used as + default value for the negotiation timeout. + * ssh: Add better error handling in connect/2,3,4. Detect + incorrect arguments and return an informative error tuple + instead of throwing a function_clause or similar. + * ssh: Make ssh algorithm selection better handle dynamic changes + changes in crypto fips mode. + * megaco: [megaco_tcp] When connect fails, include more info in + the error reason. +- Changes for 24.1.7: + * ssh: Fixed a race condition in the acceptor loop: if a client + disconnected immediately after the tcp connect, the server + could cease handling connection on that address:port. +- Changes for 24.1.6: + * ssl: Correct typo of ECC curve name in signature algorithm + handling. Will make the signature algorithm + ecdsa_secp521r1_sha512 succeed. + * ssl: Suppress authenticity warning when option verify_none is + explicitly supplied. +- Changes for 24.1.5: + * erts: The runtime system could call select() with a too large + timeout value when executing on MacOS. This could in turn cause + the runtime system to crash. + * erts: The fix for Linux's behaviour when reconnecting an UDP + socket in PR-5120 released in OTP-24.1.2 has been refined to + only dissolve the socket's connection before a connect if the + socket is already connected, that is: only for a reconnect. + This allows code to open a socket with an ephemeral port, get + the port number and connect; without the port number changing + (on Linux). This turned out to have at least one valid use case + (besides test cases). Should one reconnect the socket then the + port number may change, on Linux; it is a known quirk, which + can be worked around by binding to a specific port number when + opening the socket. If you can do without an ephemeral port, + that is... + * erts: Certain distributed signals that for various reasons must + to be forced into the distribution buffer even when it is full + would instead be lost if the distribution buffer was full when + sent. The effected signals: + * kernel: The internal, undocumented, but used, module inet_dns + has been fixed to handle mDNS high bit usage of the Class + field. Code that uses the previously obsolete, undocumented and + unused record field #dns_rr.func will need to be updated since + that field is now used as a boolean flag for the mDNS high + Class bit. Code that uses the also undocumented record + #dns_query will need to be recompiled since a boolean field + #dns_query.unicast_response has been added for the mDNS high + Class bit. *** POTENTIAL INCOMPATIBILITY *** + * kernel: The fix for Linux's behaviour when reconnecting an UDP + socket in PR-5120 released in OTP-24.1.2 has been refined to + only dissolve the socket's connection before a connect if the + socket is already connected, that is: only for a reconnect. + This allows code to open a socket with an ephemeral port, get + the port number and connect; without the port number changing + (on Linux). This turned out to have at least one valid use case + (besides test cases). Should one reconnect the socket then the + port number may change, on Linux; it is a known quirk, which + can be worked around by binding to a specific port number when + opening the socket. If you can do without an ephemeral port, + that is... +- Changes for 24.1.4: + * erts: Fix bug where a gen_tcp write error that happened during + a delayed_send would cause a use after free segfault. + * erts: Fix x86 JIT bug where a rem instruction could cause a + segfault if given values that would cause an badarith + exception. +- Changes for 24.1.3: + * ssl: Fix TLS-1.2 RSA-PSS negotiation and also fix broken + certificate request message for pre-TLS-1.3 servers. + * ssl: Fix CRL issuer verification that under some circumstances + could fail with a function_clause error. + * erts: Reduction counter was not updated before and after doing + apply operations on the runtime system with the jit enabled. + This caused reduction counting to get out of sync if a garbage + collection was made as part of the apply operation. + * erts: This fixes a bug in erts_factory_undo that caused the + heap to not be reset correctly. The erts_factory_undo function + is, for example, called when a binary_to_term/1 call fails to + reset the heap to its state before the binary_to_term/1 call. + This can cause the heap to contain invalid terms which + potentially can cause issues (e.g., crashes) when the whole + heap is scanned. + * erts: When attempting to construct a binary with an segment + having an illegal type for the size (e.g. an atom), there could + be an unnecessary memory allocation (and subsequent + deallocation) before the operation failed. Amended to fail + before allocating any memory for the binary. + * erts: Fix bug in persistent_term when a key-value pair contains + a magic reference that is referred more than once. Magic + references are NIF resources or returned from BIFs like + ets:new, atomics:new. The bug could cause the memory of the + referred resource to be prematurely deallocated. The bug also + apply to magic references in message passing on a runtime built + with configure option --enable-sharing-preserving. Bug exist + for 64-bit since OTP-24.0 and for 32-bit since OTP-20.0. + * erts: Fixed a crash when inspecting the stack trace of an + exception raised at a very high line number. This bug was + introduced in OTP 24. + * erts: The following two bugs that caused erlang:demonitor() to + behave erroneously have been fixed. The bugs were only + triggered if the monitor that was removed by demonitor() had + previously been created simultaneously as a monitor and as an + alias. + +------------------------------------------------------------------- +Wed Oct 20 13:10:47 UTC 2021 - matwey.kornilov@gmail.com + +- 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. + * stdlib: Fixed a bug that could cause a child to become orphaned + when a supervisor died between unlinking and sending the + shutdown signal to this child. There was also a possibility for + erratic supervisor reports caused by a race between a + supervisor shutting down a child and that child exiting by + itself at the same time. + * erts: A race between an exiting port and handling of + simultaneously received signals to that port could cause a + runtime system crash. The effected signals are link, monitor + and demonitor. On OTP 22 a similiar race could also cause a + memory leak when receiving an unlink signal. + * erts: A user defined tag on a monitor message could cause the + runtime system to crash when the monitor message had been + received. + * erts: A call to erlang:demonitor(Ref) where the reference Ref + referred to an active alias, but not an active monitor, caused + the runtime system to crash. + * erts: The message queue of a process entered an inconsistent + state after a receive expression with an invalid timeout value + was executed. If the exception raised due to the invalid + timeout value was caught, the following receive expression + executed by the process could fail to match messages already + present in the message queue. On OTP 24 this could also cause + the whole runtime system to crash. + * erts: Sending a Port ! {PortOwner, close} signal from a process + other than the port owner could erroneously trigger a badsig + exit signal being sent to the port owner process even though + the correct PortOwner had been passed in the signal. + * snmp: Sockets are monitored, but the handling of the 'DOWN' + message expected a new style socket ('socket'), old style + (port) was not handled. +- Changes for 24.1: + * kernel: The extended error information has been corrected and + improved for the following BIFs: binary_to_existing_atom/2, + list_to_existing_atom/1, erlang:send_after/{3,4}, and + erlang:start_timer/{3,4}. + * kernel: Fixed rare bug that could cause net_kernel process to + hang for ever. Have seen to happen with massive number of TLS + connections while remote nodes are restarting. Bug exists since + OTP-22.0. + * kernel: Improve handling of closed sockets for inet:info/1. + * kernel: This change fixes a performance problem introduced in + pull-request #2675. Pull-request #2675 made so the system tried + to start children of already started applications which is + unnecessary. This change fixes this performance problem. + * kernel: Fix code:get_doc/1 to not crash when module is located + in an escript. + * kernel: Parsing of the result value in the native DNS resolver + has been made more defensive against incorrect results. + * kernel: A bug in the option handling for the legacy socket + adaptor, that is; when using inet_backend = socket, has been + fixed. Now socket options are set before the bind() call so + options regarding, for example address reuse have the desired + effect. + * kernel: inet:ntoa/1 has been fixed to not accept invalid + numerical addresses. + * kernel: Parsing of DNS records has been improved for records of + known types to not accept and present malformed ones in raw + format. + * kernel: The ip_mreq() type for the {ip,add_membership} and + {ip,drop_membership} socket options has been corrected to have + an interface field instead of, incorrectly, an address field. + * kernel: Add simple utility function to display existing sockets + i the erlang shell (socket:i/0). + * kernel: gen_udp can now be configured to use the socket inet- + backend (in the same way as gen_tcp). + * kernel: Functions erlang:set_cookie(Cookie) and + erlang:get_cookie(Node) have been added for completeness and to + facilitate configuring distributed nodes with different + cookies. The documentation regarding distribution cookies has + been improved to be less vague. + * kernel: A workaround has been implemented for Linux's quirky + behaviour to not adjust the source IP address when connecting a + connected (reconnecing) UDP socket. The workaround is to, on + Linux, always dissolve any connection before connecting an UDP + socket. + * kernel: Documented our recommendation against opening NFS- + mounted files, FIFOs, devices, and similar using file:open/2. + * debugger: Improve record handling, print known records with + record syntax. + * observer: Atoms with Unicode code points greater than 255 (for + example Greek or Cyrillic characters) would not be displayed + correctly by crashdump_viewer. + * observer: Fix the crashdump_viewer to be able to parse + monitor_node/2 monitors correctly. + * observer: Observer now has a sectiion for new socket. + * observer: Added a trace all button to the trace window. + * parsetools: Fix a bug in Leex which caused the Erlang Compiler + to generate warnings. + * parsetools: Fix a bug in Yecc which caused the Erlang Compiler + to generate warnings. + * mnesia: Fixed that index keys was deleted for set tables when + mnesia:delete_object/1 tried to delete a non-existing record. + * mnesia: Optimized table loading and added max_transfer_size + configuration parameter. + * stdlib: Fix io:format with ~p to no longer interpret floats as + printable characters. + * stdlib: Fix specs for base64 encode/decode functions to also + include 0. + * stdlib: The failing call io:format("~p\n") would result in a + warning for line number 0 instead of the correct line and + column numbers. This has been corrected, and all warnings for + failing calls to io:format() has been rephrased to make it + clearer exactly what the problem is. + * stdlib: When the options warn_missing_spec and export_all were + given, there would only be warnings for missing specs for + functions that had been explicitly exported using an -export + attribute. + * stdlib: Calling c:ls/1 with an atom whose contents is the the + name of a file (as opposed to a directory) would crash. + * stdlib: The MODULE and MODULE_STRING macros would always appear + to be defined (when tested by -ifdef), even though no -module() + declaration had been seen yet. Changed so that -ifdef ?MODULE. + will not consider ?MODULE defined if -module() has not been + previously seen. + * stdlib: Fix bug with rendering of missing types and callbacks + in shell_docs. + * stdlib: When the deterministic option was given to the + compiler, the ?FILE macro would be expanded to full path of the + source file before the first include directive and to base part + of the filename after include directive. + * stdlib: Fixed broken win32reg:delete_key and fixed + win32reg:value for default value. + * stdlib: Fixed error information for the call maps:get(some_key, + #{}). + * stdlib: Most output functions in the io module now print extra + error information when provided with invalid arguments. The + functions are: io:format, io:fwrite, io:put_chars, io:nl and + io:write. + * stdlib: EEP-54 (Provide more information about errors) now + includes two new return values for the format_error callback, + general and reason. Multi-line error descriptions returned from + a format_error callback are now correctly indented. The + documentation for erl_error, error/3 and Errors and Error + Handling in the Erlang Reference Manual have been extended. + * stdlib: In the documentation for the lists module, it has been + clarified that predicate funs must return a boolean. + * stdlib: The documentation for c:c/1, c:c/2, and c:c/3 has been + clarified. + * tools: The cover tool would not work on modules compiled with + the tuple_calls option. + * common_test: Float allowed as multiply_timetraps parameter. + * common_test: Remove usage of legacy API macro and functions. + * erts: Atoms with Unicode code points greater than 255 (for + example Greek or Cyrillic characters) would not be displayed + correctly by crashdump_viewer. + * erts: Fix rare minor memory leak related to jit code loading. + * erts: The extended error information has been corrected and + improved for the following BIFs: binary_to_existing_atom/2, + list_to_existing_atom/1, erlang:send_after/{3,4}, and + erlang:start_timer/{3,4}. + * erts: Fix bug provoked when building with gcc 10 and link time + optimization (-flto), causing Erlang compiler to crash. Bug + exists since OTP-24.0. + * erts: Corrected bugs where builds were not reducible even when + the deterministic option was given. In particular, modules with + map literals with more than 32 elements could cause this + problem. As part of this fix, the term_to_binary BIF now + accepts the option deterministic. + * erts: After an exception has been caught in a process, the + stack trace would be kept in the process longer than necessary. + * erts: Fix rare race bug in memory management of distribution + entries. Have been seen to cause VM crash when massive number + of repeated concurrent failing connection attempts. + * erts: The configure test for --disable-esock-socket-registry + has been corrected so disabling now works. + * erts: init:stop() no longer unloads loaded code before + terminating the runtime system. On systems with slow CPUs (such + as Raspberry PI Zero), that can significantly speed up + termination of the runtime system. + * erts: Fixed match specifications that use maps in either the + guard or the body to work properly. With this fix both keys and + values in maps can be expressions. Various other crashes and + bugs when using maps in match specifications have also been + fixed. + * erts: Parsing of the result value in the native DNS resolver + has been made more defensive against incorrect results. + * erts: When binary_to_term/2 failed, the extended error + information would always blame the second argument even if the + actual error was in the first argument. + * erts: On 32-bit computers, binary_to_term/1,2 is now more + resilient against corrupted binaries containing maps in the + external format. + * erts: A call to process_info(Pid, status) could erroneously + report the status running when it should have reported waiting. + This occurred when the calling process was executing on a + higher priority than the process being inspected. This bug has + been present since OTP 21.0 (erts version 10.0). + * erts: Optimize memory usage of erts internal processes used + during code loading/purging by hibernating them after a long + time of inactivity. + * erts: Add the type erlang:stacktrace/0. + * erts: The arity argument of error/2,3 can now be none to + indicate that the calling functions arity should be used. + * erts: Optimize match spec compiler for immediate (single word) + constant terms. + * erts: Functions erlang:set_cookie(Cookie) and + erlang:get_cookie(Node) have been added for completeness and to + facilitate configuring distributed nodes with different + cookies. The documentation regarding distribution cookies has + been improved to be less vague. + * erts: A workaround has been implemented for Linux's quirky + behaviour to not adjust the source IP address when connecting a + connected (reconnecing) UDP socket. The workaround is to, on + Linux, always dissolve any connection before connecting an UDP + socket. + * erts: The internal documentation for how to use Yielding C Fun + (YCF) has been updated to contain text about best practices for + using YCF for ERTS. + * erts: Optimize garbage collection for processes with large + number of binaries, funs and/or external pids/ports/refs. + * erl_docgen: Fix codeinclude tags to work as part of reference + manual documentation. + * erl_docgen: Fix creation of link elements with anchors in + EEP-48 style documentation. + * dialyzer: Do not crash if a PLT file no longer exists. + * dialyzer: Fix bug in erl_types related to maps. + * dialyzer: Fix bugs in erl_types regarding improper lists. + * dialyzer: The underspecs and overspecs options will now + generate correct warnings for misused opaque types. + * eunit: In an eunit test, when a test case times out, include a + stacktrace. + * snmp: It is now possible to configure the built-in net-if + processes (both agent and manager) to use the new (gen_udp-) + option 'inet_backend'. + * asn1: A parameterized type with a SEQUENCE with extension + ("...") made the compiler backend to crash. The previous fix + for this in GH-4514 was not complete. + * wx: Fix crash when closing an application. + * wx: Some functions with overloaded color arguments could not be + used. For example the copy constructor wxTextAttr:new(TextAttr) + did not work. + * wx: Added the Microsoft Edge WebView loader dll to the + installer on windows. + * wx: Handle specific Mac gui application events. + * erl_interface: erl_call now prints an error when the arguments + cannot be parsed. + * erl_interface: The ei API for decoding/encoding terms is not + fully 64-bit compatible since terms that have a representation + on the external term format larger than 2 GB cannot be handled. + * edoc: Fix broken documentation link in edoc_extract:file/4. + * ssl: Fix Makefile dependency generation to work no matter what + the ERL_TOP folder is called. + * ssl: If trying to downgrade a TLS-1.3 connection to a plain TCP + connection, possible TLS-1.3 session ticket messages will be + ignored in the "downgrade" state while waiting for the close + notify alert. + * ssl: Corrected error handling to correctly generate an + insufficient security alert when there are no suitable groups + that can be negotiated in TLS-1.3 instead of crashing resulting + in an internal error alert. + * ssl: Properly handle default session data storage. When a + client tries to reuse an expired session the default server + storage handling would crash loosing other session data. This + would cause a error report and possible loss of abbreviated + handshakes. + * ssl: Add support for RSA-PSS-PSS signatures and + signature_algorithms_cert in TLS-1.2. This is a TLS-1.3 RFC + requirement to backport this functionality. + * ssl: Use inet:monitor/1 to monitor listen-sockets so that we + are compatible with the new socket backend for gen_tcp. + * ssl: Enhance ssl:prf/4 handling and testing + * ssl: Enhanced cipher suite filtering functionality, making sure + TLS-1.3 and TLS-1.2 cipher suites can be supported correctly + together even when TLS-1.2 anonymous ciphers are included. + * ssl: Enhance gracefulness especially in TLS-1.3 + * os_mon: On a Mac with Apple Silicon, memsup:get_os_wordsize/0 + would return 32 instead of 64. + * ssh: Fixed that a slow start (>30s) of a client subsystem could + cause a log entry with the password. + * ssh: Fixed an error when running as an sftp server and a client + requests a directory contents listing. The fix is to handle the + error code {error, eacces} as {error, enoent} in the + ssh_sftpd:get_attrs/5 internal function; that is, just skip it. + * ssh: The "Key exchange failed" Info Report is now more + informative. + * inets: Before this change hrefs in dir listing page contained + percentage encoded forward slashes which did not work properly + with httpd. + * inets: Restored HTTP headers handling in inets/mod_esi. + * inets: inets/httpd dir listing icons and other improvements + * inets: httpc: Improve performance by removing redundant URI + handling + * compiler: If a parse transform raised an exception using + throw/1 or exit/1, the compiler would report that as an + internal compiler error, which would be confusing. Amended to + report that the parse transform failed. + * compiler: The failing call io:format("~p\n") would result in a + warning for line number 0 instead of the correct line and + column numbers. This has been corrected, and all warnings for + failing calls to io:format() has been rephrased to make it + clearer exactly what the problem is. + * compiler: When the options warn_missing_spec and export_all + were given, there would only be warnings for missing specs for + functions that had been explicitly exported using an -export + attribute. + * compiler: In rare circumstances, the compiler could emit an + incorrect warning for a term that was constructed but never + used. + * compiler: Corrected bugs where builds were not reducible even + when the deterministic option was given. In particular, modules + with map literals with more than 32 elements could cause this + problem. As part of this fix, the term_to_binary BIF now + accepts the option deterministic. + * compiler: The MODULE and MODULE_STRING macros would always + appear to be defined (when tested by -ifdef), even though no + -module() declaration had been seen yet. Changed so that -ifdef + ?MODULE. will not consider ?MODULE defined if -module() has not + been previously seen. + * compiler: In a guard, not (X =:= true) would incorrectly + evaluate to false for non-boolean values of X. + * compiler: When the deterministic option was given to the + compiler, the ?FILE macro would be expanded to full path of the + source file before the first include directive and to base part + of the filename after include directive. + * public_key: public_key:pkix_sign/2 now honors the salt length + from the provided input parameters. Earlier this could result + in incorrect signatures if not using recommended defaults. + * public_key: When decoding an 'ECPrivateKey' unwrap the private + key. For more precise information see RFC 8410, section 7. + * runtime_tools: Observer now has a sectiion for new socket. + * runtime_tools: The dbg docs have been expanded to include the + meaning of all the function name acronyms. + * megaco: It is now possible to configure the built-in transports + (megaco_tcp and megaco udp) to use the new (gen_udp- and + gen_tcp-) option 'inet_backend'. + * crypto: Fix bug in crypto:ensure_engine_unloaded. Also fixed + minor memory leak related to engine unloading. + * crypto: Fixes that FIPS enable and disable (or vice versa) on + Windows sometimes leads to core dump at the time of process + exit. + * crypto: Disable fips if cryptolib < 1.0.1 and OTP/crypto is + configured with --enable-fips If not, there could be compiling + or loading problems with antique OpenSSL versions. + * jinterface: Fixed rare race bug that could cause + NullPointerException on local close of connection. +- Changes for 24.0.6: + * erts: A call to the process_info() BIF could end up hanging for + ever due to a bug introduced when the new selective receive + optimization was introduced in OTP 24.0. Note that this bug + only effects process_info(). + * erts: Fix buffer overrun problem in the tty driver. The problem + happens on some platforms when using the CTRL+R functionality + of newshell with very long strings in the history. + * erts: Fix race-condition that could cause a crash when tracing + scheduling or garbage collections on a process that was running + on a dirty scheduler. + * erts: Fix rare bug where re:run would crash/return invalid + results when given a subbinary as subject. This bug has existed + since Erlang/OTP 20.0. + * erts: binary_to_term/1,2 is now more resilient against + corrupted binaries containing maps in the external format. + +------------------------------------------------------------------- +Tue Sep 14 07:19:32 UTC 2021 - Johannes Segitz + +- Added hardening to systemd service(s) (bsc#1181400). Modified: + * epmd.service + +------------------------------------------------------------------- +Wed Aug 04 16:05:03 UTC 2021 - opensuse-packaging@opensuse.org + +- 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 + notifications can be ordered. + +------------------------------------------------------------------- +Fri Jul 23 09:21:53 UTC 2021 - Matwey Kornilov + +- Fix more directories not owned by the package (boo#1187546) + +------------------------------------------------------------------- +Mon Jul 05 20:15:51 UTC 2021 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Sat Jun 26 11:26:43 UTC 2021 - Matwey Kornilov + +- Use sysusers-tools to provide epmd user +- Fix directories not owned by the package (boo#1187546) + +------------------------------------------------------------------- +Mon Jun 14 10:27:13 UTC 2021 - Callum Farmer + +- Install RPM macros file to %{_rpmmacrodir} (boo#1185667) + +------------------------------------------------------------------- +Fri May 21 18:55:19 UTC 2021 - Matwey Kornilov + +- 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. + +------------------------------------------------------------------- +Wed May 12 11:39:09 UTC 2021 - Matwey Kornilov + +- 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. + +------------------------------------------------------------------- +Thu Apr 8 16:27:35 UTC 2021 - Matwey Kornilov + +- Pack doc/chunks into %{_libdir} (boo#1184492) + +------------------------------------------------------------------- +Sun Jan 17 07:33:55 UTC 2021 - Matwey Kornilov + +- Use wxWidgets < 3.1 (boo#1180488) + +------------------------------------------------------------------- +Fri Jan 15 14:39:59 UTC 2021 - matwey.kornilov@gmail.com + +- 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 + on the external term format larger than 2 GB cannot be handled. + * ssl: Fix CVE-2020-35733 this only affects ssl-10.2 (OTP-23.2). + This vulnerability could enable a man in the middle attack + using a fake chain to a known trusted ROOT. Also limits + alternative chain handling, for handling of possibly extraneous + certs, to improve memory management. + * ssl: Add support for AES CCM based cipher suites defined in RFC + 7251 Also Correct cipher suite name conversion to OpenSSL + names. A few names where corrected earlier in OTP-16267 For + backwards compatible reasons we support usage of openSSL names + for cipher suites. Mostly anonymous suites names where + incorrect, but also some legacy suites. +- Changes for 23.2.1: + * erts: Fix emulator crash when sending small bit-strings over + Erlang distribution while the connection is being setup. The + fault was introduced in OTP-23.0 +- Changes for 23.2: + * erl_docgen: Fix links in titles to github and anchors to work. + * erl_docgen: Fix some typing errors on variable names in + documentation examples. + * mnesia: Avoid potential performance issue, if the input queue + to mnesia_tm is long. + * crypto: Build the supported curves cache in the NIF when crypto + is loaded, no matter how it is loaded. This prevents a possible + problem with different processes starting the crypto + application concurrently. + * crypto: It is now possible to build with crypto and openssl + gprof-enabled and statically link them into the VM. + * crypto: Fixed performance loss in HMAC when using older OpenSSL + due to mutex issues. A workaround is implemented to allow + fallback from using the EVP API for HMAC operations. On some + architectures this may improve the performance, especially with + old OpenSSL versions. This fallback to low-level functions is + always enabled for openssl versions before 1.0.2. + * kernel: The apply call's in logger.hrl are now called with + erlang prefix to avoid clashed with local apply/3 functions. + * kernel: Fix memory leak in pg. + * kernel: Fix crash in logger_proxy due to stray gen_server:call + replies not being handled. The stray replies come when logger + is under heavy load and the flow control mechanism is reaching + its limit. + * kernel: Fixed a bug in erl_epmd:names() that caused it to + return the illegal return value noport instead of {error, + Reason} where Reason is the actual error reason. This bug also + propagated to net_adm:names(). This bug was introduced in + kernel version 7.1 (OTP 23.1). + * kernel: Add export of some resolver documented types. + * kernel: Add configurable retry timeout for resolver lookups. + * kernel: gen_server:multi_call() has been optimized in the + special case of only calling the local node with timeout set to + infinity. + * public_key: Corrected dialyzer spec for pkix_path_validation/3 + * snmp: If an attempt was made to send a v1 trap on a IPv6 + transport this could cause a master agent crash (if the agent + was *not* multi-threaded). + * snmp: The deprecation info for a couple of the deprecated MIB + compiler functions where incorrect. Referred to functions in + the 'snmpa' module instead of 'snmpc'. + * snmp: Make it possible for the agent to configure separate + transports (sockets) for request-responder and trap-sender. + * snmp: The mib server cache handling has been improved. First, + the default gclimit has been changed from 100 to infinity (to + ensure the size is as small as possible). Also, the method of + removing old elements has been optimized. + * snmp: It is now possible to configure the agent in such a way + that the order of outgoing notifications are processed in order + in the agent. What happens after the notification message has + left the agent (been sent) is of course still out of our + control. + * snmp: Improve handling of the udp_error message. Basically an + improved error/warning message. + * wx: Add popup menu callback to wxTaskBarIcon:new/1. + * dialyzer: Clarify warning option -Wunmatched_returns in + dialyzer(3). + * tools: Correct the Xref analysis exports_not_used to not report + internally generated behaviour_info/1. + * syntax_tools: In the syntax_tools application, the igor module + and all functions in erl_tidy except file/2 have been + deprecated. + * compiler: Several minor compiler bugs have been fixed: + Constructing a binary with a list as a size of a binary segment + could generate a BEAM file that could not be loaded. When + matching a binary segment of type float and ignoring the + matched out value, the match would always succeed, even if the + size was invalid or the value of the float was NaN or some + other non-numeric float value. Attempting to construct an + invalid external fun (e.g. fun m:f:bad) is supposed to raise a + 'badarg' exception, but if the value was never used, no + exception would be raised. + * compiler: Fixed multiple bugs in the validator that could cause + it to reject valid code. + * compiler: The compiler could crash when a binary comprehension + had a generator that depended on another generator. + * compiler: Fixed a bug in the type optimization pass that could + yield incorrect values or cause the wrong clauses to be + executed. + * erts: Fixed bug which could cause VM crash when a NIF is loaded + at the same time as the Erlang implementation of the NIF is + called. Bug exists since OTP 23.0. + * erts: Fixed enif_make_map_* functions in debug build when given + environment from enif_alloc_env. + * erts: Fixed broken configuration option --disable-pie. + * erts: Fixed rare distribution bug in race between received + signal (link/monitor/spawn_request/spawn_reply) and + disconnection. Symptom: VM crash. Since: OTP 21.0. + * erts: Fixed a performance issue when extremely many items were + stored in the process dictionary. (Fixing this bug also + eliminates a compiler warning emitted by the latest version of + Clang.) + * erts: Remove -ftree-copyrename from flags passed to compiler + when building erts. The flag is not used by modern gcc's and is + not supported by clang. + * erts: Modules using complicated nested binary comprehensions + could fail to load. + * erts: Fixed a race in file:read_file/1 were an incomplete file + could be returned if another OS process swapped the file out + while reading. + * erts: The call list_to_integer("10", true) would return 4 + instead of raising an exception. Certain other atoms would also + be interpreted as a number base. + * erts: On macOS 11 (Big Sur), erl would not start if the maximum + number of file descriptors were unlimited (ulimit -n + unlimited). + * erts: Add manifest to all executables and dynamic libraries. + * xmerl: Corrected namespace and expanded name in the old dom + backend example module. + * xmerl: Corrected a bug that in some cases didn't allow + unresolved references when skip_external_dtd option used. + * ssh: Fixed problems in the ssh cli/shell handling. Most + important are: 1) the ssh:shell function did sometimes cause + the input to be echoed twice, 2) the ssh:shell function didn't + transfer the LANG and LC_ALL shell variables to the connected + server which sometimes made Unicode handling erroneous, 3) + Unicode was not always transferred correctly to and from the + peer. + * ssh: The SSH protocol message SSH_MSG_DISCONNECT was sometimes + sent instead of SSH_MSG_CHANNEL_FAILURE + * ssh: The ssh_cli module now always sends the exit-status to + connected clients so they can use that to check for successful + command execution. + * ssh: A new option pk_check_user enables checking of the + client's user name in the server when doing public key + authentication. + * stdlib: This change fixes the handling of deep lists in the + path component when using uri_string:recompose/1. + * stdlib: Fix shell_docs to clear shell decorations + (bold/underline) when paginating output. Fix various small + renderings issues when integrating shell_docs with edoc. + * stdlib: Improved the API and documentation of the uri_string + module. Added a new chapter to the Users Guide about Uniform + Resource Identifiers and their handling with the new API. Added + two new API functions: uri_string:allowed_characters/0 and + uri_string:percent_decode/1. This change has been marked as + potentially incompatible as uri_string:normalize/2 used to + decode percent-encoded character triplets that corresponded to + characters not in the reserved set. After this change, + uri_string:normalize/2 will only decode those percent-encoded + triplets that correspond to characters in the unreserved set + (ALPHA / DIGIT / "-" / "." / "_" / "~"). *** POTENTIAL + INCOMPATIBILITY *** + * stdlib: The shell_docs module has been expanded with the + possibility to configure unicode, ansi and column size for the + rendered text. + * megaco: Empty statistics descriptor (now) allowed in both + encode and decode for version 3. + * ssl: SSL's Erlang Distribution Protocol modules inet_tls_dist + and inet6_tls_dist lacked a callback function, so the start + flag "-dist_listen false" did not work, which has now been + fixed. + * ssl: Correct OpenSSL names for newer cipher suites using DHE in + their name that accidentally got the wrong value when fixing + other older names using EDH instead. + * ssl: This change improves the handling of DTLS listening + dockets, making it possible to open multiple listeners on the + same port with different IP addresses. + * ssl: Fix a bug that causes cross-build failure. This change + excludes the ssl.d dependency file from the source tarballs. + * ssl: This change fixes ssl:peername/1 when called on a DTLS + client socket. + * ssl: Retain emulation of active once on a closed socket to + behave as before 23.1 + * ssl: Corrected server session cache entry deletion pre TLS-1.3. + May increase session reuse. + * ssl: Handle extraneous certs in certificate chains as well as + chains that are incomplete but can be reconstructed or + unordered chains. The cert and certfile options will now accept + a list of certificates so that the user may specify the chain + explicitly. Also, the default value of the depth option has + been increased to allow longer chains by default. + * ssl: This change implements optional NSS-style keylog in + ssl:connection_information/2 for debugging purposes. The keylog + contains various TLS secrets that can be loaded in Wireshark to + decrypt TLS packets. + * ssl: Use new gen_statem feature of changing callback mode to + improve code maintainability. + * ssl: The handling of Service Name Indication has been aligned + with RFC8446. + * ssl: Add explicit session reuse option to TLS clients for pre + TLS-1.3 sessions. Also, add documentation to Users Guide for + such sessions. + * inets: Fix an issue about HTML-escaped filename in inets. + * common_test: Add behaviour for test suites +- Changes for 23.1.5: + * ssh: An ssh-client can take an accepted socket from a listening + socket and do an ssh:connect/2 on it. Multiple clients on + sockets accepted from the same listening socket had stopped + working. This is corrected now. +- Changes for 23.1.4: + * ssh: The inet option raw was not passed on from the ssh option + list to inet. + +------------------------------------------------------------------- +Wed Nov 18 20:20:39 UTC 2020 - Matwey Kornilov + +- 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 + exception instead of a badopt error message reply. + +------------------------------------------------------------------- +Tue Oct 06 10:17:04 UTC 2020 - Matwey Kornilov + +- 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 + +Mcp 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 + be used to modify the result returned by + memsup:get_system_memory_data(). For more information see the + memsup documentation. Note that the configuration parameter is + intended to be removed in OTP 24 and the modified result is + intended to be used as of OTP 24. + * ssh: Fix decoder bug. + * compiler: Fixed a performance bug that could be triggered by + tuple matching in very large functions. + * public_key: Fix the issue that pem_decode will crash with an + invalid input. +- Changes for 23.1: + * kernel: A fallback has been implemented for file:sendfile when + using inet_backend socket + * kernel: Make default TCP distribution honour option backlog in + inet_dist_listen_options. + * kernel: Raw option handling for the experimental gen_tcp_socket + backend was broken so that all raw options were ignored by for + example gen_tcp:listen/2, a bug that now has been fixed. + Reported by Jan Uhlig. + * kernel: Accept fails with inet-backend socket. + * kernel: Fixed various minor errors in the socket backend of + gen_tcp. + * kernel: Correct disk_log:truncate/1 to count the header. Also + correct the documentation to state that disk_log:truncate/1 can + be used with external disk logs. + * kernel: Fix erl_epmd:port_please/2,3 type specs to include all + possible error values. + * kernel: Fix erl -erl_epmd_port to work properly. Before this + fix it did not work at all. + * kernel: Fix typespec for internal function + erlang:seq_trace_info/1 to allow term() as returned label. This + in turn fixes so that calls to seq_trace:get_token/1 can be + correctly analyzer by dialyzer. + * kernel: Fix erroneous double registration of processes in pg + when distribution is dynamically started. + * kernel: Make (use of) the socket registry optional (still + enabled by default). Its now possible to build OTP with the + socket registry turned off, turn it off by setting an + environment variable and controlling in runtime (via function + calls and arguments when creating sockets). + * kernel: erl -remsh nodename no longer requires the hostname to + be given when used together with dynamic nodenames. + * observer: Fix graph windows flickering on windows. + * mnesia: FIx mnesia delete object handling in transaction + storage. In a transaction mnesia:read/1 could indicate that + exiting objects did not exist after another object was deleted. + * mnesia: Fixed crash during startup, which could happen if a + table was deleted on another node. + * stdlib: The functions digraph:in_edges/2 and + digraph:out_edges/2 would return false edges if called for a + vertex that had a '_' atom in its name term. + * stdlib: filelib:wildcard("not-a-directory/..") should return an + empty list. On Windows it returned "not-a-directory/..". + * stdlib: Fix the typespec of shell_docs:render to use the + correct type for an MFA. + * stdlib: Fix uri_string:recompose/1 when host is present but + input path is not absolute. This change prevents the recompose + operation to change the top level domain of the host when the + path does not start with a slash. + * stdlib: The epp module would return a badly formed error term + when an 'if' preprocessor directive referenced an undefined + symbol. epp:format_error/1 would crash when called with the bad + error term. + * stdlib: lists:sublist(List, Start, Len) failed with an + exception if Start > length(List) + 1 even though it is + explicitly documented that "It is not an error for Start+Len to + exceed the length of the list". + * tools: Correct the Xref analysis locals_not_used to find + functions called exclusively from on_load functions. + * erts: Update the documentation of the abstract format to use + ANNO instead of LINE. + * erts: The emulator will no longer revert to the default number + of schedulers when running under a CPU quota lower than 1 CPU. + * erts: Fixed a problem with crash dumps. When a process that + contained reference to literals internally created by the + runtime system (such as the tuple returned by os:type/0), the + literal would not be included in the crash dump and the + crashdump viewer would complain about the heap being + incomplete. + * erts: Fix configure detection of PGO for clang. + * erts: The to_erl program has been fixed to correctly interpret + newline as only newline and not newline+return. This bug would + cause the terminal to behave strangely when using lines longer + than the terminal size. + * erts: A race condition when changing process priority by + calling process_flag(priority, Prio) could cause elevation of + priority for a system task to be ignored. This bug hit if the + system task was scheduled on the process calling process_flag() + at the same time as the priority was changed. The bug is quite + harmless and should hit very seldom if ever. + * erts: Adjust /bin/sh to /system/bin/sh in scripts when + installing on Android. + * erts: In rare circumstances, when loading a BEAM file generated + by an alternative code generator (not the Erlang compiler in + OTP) or from handwritten or patched BEAM code, the loader could + do an unsafe optimization. + * erts: A memory and file descriptor leak in socket has been + fixed. (When a newly opened socket that had not entered the fd + into the VM's poll set (neither received, sent, accepted nor + connected) was abandoned without closing (process died), after + assigning a different controlling process, then a memory block + and the file descriptor could be leaked.) + * erts: The documentation of statistics(run_queue) erroneously + stated that it returns the total length of all normal run + queues when it is the total length of all normal and dirty CPU + run queues that is returned. The documentation has been updated + to reflect the actual behavior. + * erts: Changes in order to build on the Haiku operating system. + Thanks to Calvin Buckley + * erts: When building the inet driver on Windows, there where + many compiler warnings regarding type casting (used when + calling the debug macro). This has now been resolved. + * erts: Make (use of) the socket registry optional (still enabled + by default). Its now possible to build OTP with the socket + registry turned off, turn it off by setting an environment + variable and controlling in runtime (via function calls and + arguments when creating sockets). + * erts: Change default filename encoding on android to UTF-8. + * erts: Clarification of the format of the atom cache header used + by the distribution. + * erl_docgen: Repaired lost function "since" versions in the + right margin of the module reference HTML documentation. + * erl_docgen: Remove erlang compilation warnings and trailing + whitespaces. + * ftp: Avoid timing issue when setting active once on a socket + that is being closed by the peer. + * ftp: Avoid timing issue when setting active once on a socket + that is being closed by the peer. + * dialyzer: In rare circumstance, dialyzer wold crash when + analyzing a list comprehension. + * eunit: Fixed compiler warning. + * snmp: For agent fix PrivParams for SNMPv3 USM with AES privacy, + as earlier fixed for the manager in OTP_16541. + * snmp: The SNMP Agent missed to re-activate datagram reception + in an odd timeout case and went deaf. This bug has been fixed. + * snmp: Use of deprecated functions in example 2 has been removed + (no more compiler warnings). + * snmp: A file descriptor leak has been plugged. When calling the + reconfigure function of a mib, it opened the config file(s) but + never closed them on successful read. + * asn1: Changes in order to build on the Haiku operating system. + Thanks to Calvin Buckley + * syntax_tools: Minor documentation fix of erl_syntax:operator/1. + * erl_interface: Fix erl_interface on windows to be compiled with + correct flags to make internal primitives reentrant. + * erl_interface: Fixed ei_get_type to set *size to zero for + floats, pids, port and refs according to documentation. + * erl_interface: Fix ei_connect when using a dynamic node name to + force usage of distribution version 6. This bug caused erl_call + -R -address to not work properly. + * erl_interface: Changes in order to build on the Haiku operating + system. Thanks to Calvin Buckley + * erl_interface: The ei API for decoding/encoding terms is not + fully 64-bit compatible since terms that have a representation + on the external term format larger than 2 GB cannot be handled. + * ssl: If a passive socket is created, ssl:recv/2,3 is never + called and then the peer closes the socket the controlling + process will no longer receive an active close message. + * ssl: Data deliver with ssl:recv/2,3 could fail for when using + packet mode. This has been fixed by correcting the flow control + handling of passive sockets when packet mode is used. + * ssl: This change fixes a potential man-in-the-middle + vulnerability when the ssl client is configured to + automatically handle session tickets ({session_tickets, auto}). + * ssl: Fix the internal handling of options 'verify' and + 'verify_fun'. This change fixes a vulnerability when setting + the ssl option 'verify' to verify_peer in a continued handshake + won't take any effect resulting in the acceptance of expired + peer certificates. + * ssl: This change fixes the handling of stateless session + tickets when anti-replay is enabled. + * ssl: Fix a crash due to the faulty handling of stateful session + tickets received by servers expecting stateless session + tickets. This change also improves the handling of + faulty/invalid tickets. + * ssl: Correct flow ctrl checks from OTP-16764 to work as + intended. Probably will not have a noticeable affect but will + make connections more well behaved under some circumstances. + * ssl: Distribution over TLS could exhibit livelock-like + behaviour when there is a constant stream of distribution + messages. Distribution data is now chunked every 16 Mb to avoid + that. + * ssl: Implement the cookie extension for TLS 1.3. + * ssl: Experimental OCSP client support. + * ssl: TLS 1.0 -TLS-1.2 sessions tables now have a absolute max + value instead of using a shrinking mechanism when reaching the + limit. To avoid out of memory problems under heavy load + situations. Note that this change infers that implementations + of ssl_session_cache_api needs to implement the size function + (introduce in OTP 19) for session reuse to be optimally + utilized. + * os_mon: memsup now returns the correct amount of system memory + on macOS. + * os_mon: Fix memsup:get_os_wordsize/0 to return the current size + on aarch64. + * ssh: Fixed a bug when a message to ssh-agent was divided into + separate packets. + * ssh: Fix a bug that could crash the cli server if a too large + cli-window was requested from the client. + * ssh: Increased test coverage. + * ssh: A chapter about hardening the OTP SSH is added to the + User's Guide. + * ssh: The internal Diffie-Hellman high level API for key + generation was slow in old and by OpenSSL now unsupported + cryptolib versions (1.0.1 and earlier). If such a cryptolib is + used anyhow, the low-level API is used internally in the crypto + application. + * ssh: A new timeout is defined for daemons: hello_timeout. The + timeout is supposed to be used as a simple DoS attack + protection. It closes an incoming TCP-connection if no valid + first SSH message is received from the client within the + timeout limit after the TCP initial connection setup. The + initial value is 30s by compatibility reasons, but could be + lowered if needed, for example in the code or in a config file. + * inets: Clarify the handling of percent encoded characters in + http client. + * inets: fix crash for undefined port in uri. + * inets: Avoid timing issue when setting active once on a socket + that is being closed by the peer. + * inets: Handle message body of response with 1XX status code as + next http message. + * inets: Fix a crash in http server when setopts is called on a + socket closed by the peer. + * inets: A vulnerability in the httpd module (inets application) + regarding directory traversal that was introduced in OTP 22.3.1 + and corrected in OTP 22.3.4.6. It was also introduced in OTP + 23.0 and corrected in OTP 23.1 The vulnerability is registered + as CVE-2020-25623 (boo#1177354) The vulnerability is only exposed + if the http server (httpd) in the inets application is used. The + vulnerability makes it possible to read arbitrary files which + the Erlang system has read access to with for example a + specially prepared http request. + * inets: Add support of PATCH method in mod_esi. + * compiler: If the update of a map with the 'Map#{Key := Value}' + syntax failed, the line number in the stack backtrace could be + incorrect. + * compiler: Fixed a performance bug that slowed down compilation + of modules with deeply nested terms. + * compiler: The compiler could in rare circumstances do an an + unsafe optimization that would result in a matching of a nested + map pattern would fail to match. + * compiler: Fixed a bug in the validator that caused it to reject + valid code. + * public_key: Fixed an insignificant whitespace issue when + decoding PEM file. + * public_key: Experimental OCSP client support. + * public_key: Use user returned path validation error for + selfsigned cert. It allows users of the ssl application to + customize the generated TLS alert, within the range of defined + alerts. + * public_key: add API function to retrieve the subject-ID of an + X509 certificate + * runtime_tools: Fixed a crash in appmon_info triggered by trying + to read port info from a port that was in the process of + terminating. appmon_info is used by observer to get information + from the observed node. + * megaco: The expected number of warnings when (yecc) generating + v2 and v3 (text) parser's was incorrect. + * hipe: Fixed a warning issued when building the hipe + application. + * odbc: Changes in order to build on the Haiku operating system. + Thanks to Calvin Buckley + * crypto: Fix type spec bug in crypto for crypto_init and + crypto:one_time + * crypto: The deprecation message for crypto:rand_uniform/2 + indicated a non-existent function. The correct one + (rand:uniform/1) is now suggested. + * crypto: Implemented a workaround to allow fallback from using + the EVP API for Diffie-Hellman key generation + * crypto: The internal Diffie-Hellman high level API for key + generation was slow in old and by OpenSSL now unsupported + cryptolib versions (1.0.1 and earlier). If such a cryptolib is + used anyhow, the low-level API is used internally in the crypto + application. + * sasl: Make release_handler more resilient against exiting + processes during upgrade. +- Changes for 23.0.4: + * stdlib: When a temporary child of a simple_one_for_one + supervisor died, the internal state of the supervisor would be + corrupted in a way that would cause the supervisor to retain + the start arguments for subsequent children started by the + supervisor, causing unnecessary growth of the supervisor's + heap. There state corruption could potentially cause other + problems as well. + * erts: The ERTS internal I/O poll implementation could get into + an inconsistent state causing input events to be ignored. + * megaco: The v2 and v3 parsers could not properly decode some + IPv6 addresses. + +------------------------------------------------------------------- +Mon Aug 24 10:20:01 UTC 2020 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Fri Jun 12 07:24:09 UTC 2020 - Matwey Kornilov + +- 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. + +------------------------------------------------------------------- +Fri Jun 12 06:36:45 UTC 2020 - Matwey Kornilov + +- 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 + erl_). + * The deprecated erlang:get_stacktrace/0 BIF now returns an empty + list instead of a stacktrace. erlang:get_stacktrace/0 is + scheduled for removal in OTP 24. +- Improvements and new features: + * ssh: OpenSSH 6.5 introduced a new file representation of keys + called openssh-key-v1. This is now supported with the exception + of handling encrypted keys. + * Algorithm configuration could now be done in a .config file. This + is useful for example to enable an algorithm that is disabled by + default without need to change the code. + * SSL: Support for the middlebox compatibility mode makes the TLS + 1.3 handshake look more like a TLS 1.2 handshake and increases + the chance of successfully establishing TLS 1.3 connections + through legacy middleboxes. + * Add support for key exchange with Edward curves and PSS-RSA + padding in signature verification + * The possibility to run Erlang distribution without relying on + EPMD has been extended. + * A first EXPERIMENTAL socket backend to gen_tcp and inet has been + implemented. gen_udp and gen_sctp will follow. + * Putting {inet_backend, socket} as first option to listen() or + connect() makes it easy to try this for existing code + * A new module erpc in kernel which implements an enhanced subset + of the operations provided by the rpc module. Enhanced in the + sense that it makes it possible to distinguish between returned + value, raised exceptions and other errors. erpc also has better + performance and scalability than the original rpc implementation. + This by utilizing the newly introduced spawn_request() BIF. Also + the rpc module benefits from these improvements by utilizing erpc + when possible. + * Scalability and performance Improvements plus new functionality + regarding distributed spawn operations. + * In binary matching, the size of the segment to be matched is now + allowed to be a guard expression (EEP-52) + * When matching with maps the keys can now be guard expressions + (EEP-52). + * ssh: support for TCP/IP port forwarding, a.k.a tunnelling a.k.a + as tcp-forward/direct-tcp is implemented. In the OpenSSH client, + this corresponds to the options -L and -R. + * Allow underscores in numeric literals to improve readability. + Examples: 123_456_789, 16#1234_ABCD. + * New functions in the shell for displaying documentation for + Erlang modules, functions and types. + * kernel: The module pg with a new implementation of distributed + named process groups is introduced. The old module pg2 is + deprecated and scheduled for removal in OTP 24. + +------------------------------------------------------------------- +Wed Mar 25 08:48:44 UTC 2020 - g.santomaggio@gmail.com + +- 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 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. + +------------------------------------------------------------------- +Mon Mar 2 13:48:03 UTC 2020 - Tomáš Chvátal + +- Remove conditions and support for openSUSE/SLE < 15 +- Remove not really needed service file _service +- Convert the dependencies to pkgconfig style ones + +------------------------------------------------------------------- +Wed Feb 19 14:06:40 UTC 2020 - g.santomaggio@gmail.com + +- 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 + +------------------------------------------------------------------- +Sat Feb 15 09:40:37 UTC 2020 - matwey.kornilov@gmail.com + +- Changes for 22.2.6: + * erts: A process could get into an inconsistent state where it + was runnable, but never scheduled for execution. This could + occur when a mix of normal and low priority processes where + scheduled on the same type of dirty scheduler simultaneously. + +------------------------------------------------------------------- +Fri Feb 7 09:01:17 UTC 2020 - Gabriele Santomaggio + +- 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.) + +------------------------------------------------------------------- +Mon Feb 3 07:59:55 UTC 2020 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Fri Jan 24 08:08:38 UTC 2020 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Fri Jan 17 08:34:03 UTC 2020 - matwey.kornilov@gmail.com + +- 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 + setting the 'value' (in the varbind(s) of the varbinds list) to + '?NOTIFICATION_IGNORE_VB_VALUE'. + * snmp: Its now possible to specify that an oid shall be + "truncated" (trailing ".0" to be removed) when sending an + notification. + * ssl: Add missing alert handling clause for TLS record handling. + Could sometimes cause confusing error behaviors of TLS + connections. + * ssl: Fix handling of ssl:recv that happens during a + renegotiation. Using the passive receive function + ssl:recv/[2,3] during a renegotiation would fail the connection + with unexpected msg. + +------------------------------------------------------------------- +Thu Dec 19 16:04:42 UTC 2019 - Dominique Leuenberger + +- BuildRequire pkgconfig(libsystemd) instead of systemd-devel: + Allow OBS to shortcut through the -mini flavors. + +------------------------------------------------------------------- +Thu Dec 12 07:55:22 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Wed Nov 27 09:00:15 UTC 2019 - Gabriele Santomaggio + +- Changes for 22.1.8 + * http://erlang.org/download/OTP-22.1.8.README + * erts: Large amounts of quickly executed dirty work could + cause heavy contention on an internal spin lock. The + spin lock was replaced by a mutex which behaves much + better under these conditions. + +------------------------------------------------------------------- +Mon Nov 11 11:22:05 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Tue Oct 29 12:29:00 UTC 2019 - Gabriele Santomaggio + +- Changes for 22.1.5 + * http://erlang.org/download/OTP-22.1.5.README + * snmp: Application(s): snmp + Related Id(s): ERIERL-427 + The agent discovery process has been made to work with + snmptrapd.. + +------------------------------------------------------------------- +Wed Oct 23 14:06:06 UTC 2019 - Gabriele Santomaggio + +- Changes for 22.1.4 + * http://erlang.org/download/OTP-22.1.4.README + * compiler: Fixed a bug where the compiler could generate incorrect + code for a 'receive' statement inside a 'try'. + * crypto: FIxed a bug if the erlang emulator was linked with a + very old cryptolib version (1.0.1 or earlier). + The bug now fixed could have triggered a core dump if + an unknown cipher name was used in crypto functions. + * erts: Erlang/OTP can now be built on macOS Catalina (10.15). + +------------------------------------------------------------------- +Tue Oct 15 16:35:54 UTC 2019 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Sun Sep 22 08:21:20 UTC 2019 - matwey.kornilov@gmail.com + +- 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 with in + documentation. + +------------------------------------------------------------------- +Sun Sep 22 08:16:38 UTC 2019 - opensuse-packaging@opensuse.org + +- Rebased patches: + + 0001-erts-Do-not-use-named-no_cpuid-label-in-asm.patch dropped (merged upstream) + +------------------------------------------------------------------- +Tue Aug 27 10:51:47 UTC 2019 - Martin Liška + +- Udate -ffat-lto-objects in order to properly build static libraries + provided by the package (boo#1142645). +- Use %make_build macro. + +------------------------------------------------------------------- +Mon Jul 29 08:15:47 UTC 2019 - opensuse-packaging@opensuse.org + +- 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. + * ssl: Hibernation now works as expected in all cases, was + accidently broken by optimization efforts. + * ssl: Fix interoperability problems with openssl when the TLS + 1.3 server is configured wirh the option signature_algs_cert. + * dialyzer: Make sure Dialyzer does not crash if the formatting + of results fails. Instead of crashing, an unformatted version + of the results is returned. + * erts: An invalid value test caused the socket:setopt(Socket, + ip, add_membership, ip_mreq()) to fail with badarg. The same + for drop_membership. + * erts: Fixed bug causing VM crash when doing textual dump of a + process containing an unhandled monitor down signal. Textual + process dumps can be done with erlang:system_info(procs), trace + feature process_dump, Erlang shell break menu and a crashdump. + Bug exist since OTP 21.0. + * erts: lists:subtract/2 would produce incorrect results for some + inputs on 64-bit platforms. + * erts: Fixed a bug in the loader that was similar to OTP-15938, + yielding incorrect code for some inputs on 64-bit platforms. + * erts: Fixed bug causing scheduler threads in rare cases to + block spinnning indefinitely. Bug exists since OTP 21.0. + +------------------------------------------------------------------- +Thu Jul 4 13:13:17 UTC 2019 - Matwey Kornilov + +- Drop priv/obj directories: boo#1140404 + +------------------------------------------------------------------- +Tue Jun 25 10:23:44 UTC 2019 - Gabriele Santomaggio + +- Version 22.0.4: + * http://erlang.org/download/OTP-22.0.4.README + - Bug Fixes + * erts: Fixed a buffer overflow when binary_to_existing_atom/2 + and list_to_existing_atom/2 was used with the latin1 + encoding. + * erts: The runtime system disconnected a connection if it + received an exit/2 signal where the recipient was a + process on an old incarnation of the current node. That + is, the receiving node had the same node name, but + another "creation" number. The signal will now just be + dropped since the receiving process no longer exists. + * kernel: user/user_drv could respond to io requests before they + had been processed, which could cause data to be + dropped if the emulator was halted soon after a call to + io:format/2, such as in an escript. + * ssl: Correct handshake handling, might cause strange + symptoms such as ASN.1 certificate decoding issues. + * ssl: Fix handling of the signature_algorithms_cert extension + in the ClientHello handshake message. + * ssl:Handle new ClientHello extensions when handshake is + paused by the {handshake, hello} ssl option. + +------------------------------------------------------------------- +Sun Jun 16 07:47:56 UTC 2019 - Matwey V. Kornilov + +- 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. + +------------------------------------------------------------------- +Thu May 16 09:47:44 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Mon Apr 29 09:48:44 UTC 2019 - Gabriele Santomaggio + +- Update to 21.3.7: +- Changes for 21.3.7: + * http://erlang.org/download/OTP-21.3.7.README + * ssh: When an SSH server receives the very first message on a + new TCP connection, and that message is not the + expected one, the 64 first bytes of the received + message are now dumped in the INFO REPORT that reports + the Protocol Error. + This facilitates the debugging of who sends the bad + message or of detecting a possible port scanning + +------------------------------------------------------------------- +Tue Apr 23 12:04:44 UTC 2019 - Gabriele Santomaggio + +- Update to 21.3.6: +- Changes for 21.3.6: + * http://erlang.org/download/OTP-21.3.6.README + * ssl: With the default BEAST Mitigation strategy for TLS 1.0 + an empty TLS fragment could be sent after a one-byte + fragment. This glitch has been fixed. + +------------------------------------------------------------------- +Wed Apr 17 09:56:44 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Mon Apr 15 09:13:44 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Tue Apr 02 12:05:44 UTC 2019 - Gabriele Santomaggio + +- Update to 21.3.3: +- Changes for 21.3.3: + * http://erlang.org/download/OTP-21.3.3.README + * erts: Fixed a bug in seq_trace:reset_trace/0 that could crash + the emulator. + * erts: Fixed bug in process_info(reductions) causing it to + sometimes return invalid results. + * kernel/stdlib: Fixed a performance regression when reading files + opened with the compressed flag. + +------------------------------------------------------------------- +Tue Mar 26 09:18:44 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Wed Mar 20 11:32:44 UTC 2019 - Gabriele Santomaggio + +- 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. + +- Update to 21.3: +- Changes for 21.3: + * http://erlang.org/download/OTP-21.3.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. + +------------------------------------------------------------------- +Tue Feb 19 10:37:44 UTC 2019 - Gabriele Santomaggio + +- Update to 21.2.6: +- Changes for 21.2.6: + * http://erlang.org/download/OTP-21.2.6.README + * erts: When using the {linger,{true,T}} option; + gen_tcp:listen/2 used the full linger time before + returning for example eaddrinuse. This bug has now been + corrected. + * stdlib: Optimize pretty printing of terms. The slower behaviour + was introduced in Erlang/OTP 20. + +------------------------------------------------------------------- +Thu Feb 7 18:20:58 UTC 2019 - matwey.kornilov@gmail.com + +- Drop unsupported openSUSE versions + +------------------------------------------------------------------- +Tue Feb 5 10:43:37 UTC 2019 - Gabriele Santomaggio + +- Update to 21.2.5: +- Changes for 21.2.5: + * http://erlang.org/download/OTP-21.2.5.README + * inets: Fixed bug that causes a crash in http client when using + hostnames (e.g. localhost) with the the option + ipv6_host_with_brackets set to true. + This change also fixes a regression: httpc:request + fails with connection error (nxdomain) if option + ipv6_host_with_brackets set to true and host component + of the URI is an IPv6 address. + +------------------------------------------------------------------- +Fri Jan 25 15:26:37 UTC 2019 - Gabriele Santomaggio + +- 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. + +------------------------------------------------------------------- +Mon Dec 31 17:59:37 UTC 2018 - Gabriele Santomaggio + +- 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 +------------------------------------------------------------------- +Wed Dec 12 19:11:37 UTC 2018 - matwey.kornilov@gmail.com + +- Drop crypto.patch: isn't required anymore + Reported by Gabriele Santomaggio + +------------------------------------------------------------------- +Sun Dec 2 21:09:41 UTC 2018 - Gabriele Santomaggio +- update to 21.1.4: +- Changes for 21.1.4: + * http://erlang.org/download/OTP-21.1.4.README + * kernel: Fix bug causing net_kernel process crash on connection + attempt from node with name identical to local node. +- update to 21.1.3: +- Changes for 21.1.3: + * http://erlang.org/download/OTP-21.1.3.README + * erts: Added an optional ./configure flag to compile the + emulator with spectre mitigation: + --with-spectre-mitigation + Note that this requires a recent version of GCC with + support for spectre mitigation and the + --mindirect-branch=thunk flag, such as 8.1. +------------------------------------------------------------------- +Wed Nov 25 15:40:59 UTC 2018 - matwey.kornilov@gmail.com + +- Pack /etc/init.d/epmd only for systemd-less cases (boo#1116009) + +------------------------------------------------------------------- +Fri Nov 17 22:39:41 UTC 2018 - Gabriele Santomaggio +- update to 21.1.2: +- Changes for 21.1.2: + * http://erlang.org/download/OTP-21.1.2.README + * compiler: Fixed a bug where incorrect code was generated + following a binary match guard. + * erts: Fixed a rare bug where files could be closed on a + normal instead of an IO scheduler, resulting in system + instability if the operation blocked. + * public_key: Add DSA SHA2 oids in public_keys ASN1-spec and + public_key:pkix_sign_types/1 + +------------------------------------------------------------------- +Thu Nov 8 17:16:08 UTC 2018 - Markos Chandras + +- Fix instructions for changing address for epmd.socket service. The + ListenStream option needs to be completely overriden otherwise the + socket will be started with multiple ListenStream options and it + will fail. + +------------------------------------------------------------------- +Fri Nov 2 21:24:41 UTC 2018 - Gabriele Santomaggio + +- 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 +------------------------------------------------------------------- +Sun Sep 30 07:20:57 UTC 2018 - Dirk Mueller + +- update to 20.3.8.9: + - Changes for 20.3.8.9: + - http://erlang.org/download/OTP-20.3.8.9.README + * Fix a regression in OTP-15204 that removed .beam file metadata + - Changes for 20.3.8.8: + - http://erlang.org/download/OTP-20.3.8.8.README + * inets: Do not use chunked-encoding with 1xx, 204 and 304 + responses when using mod_esi + * inets: Add robust handling of chunked-encoded HTTP responses + with an empty body (1xx, 204, 304) + - Changes for 20.3.8.7: + - http://erlang.org/download/OTP-20.3.8.7.README + * crypto: Update the crypto engine functions to handle multiple + loads of an engine + * mnesia: Fixed a bug where the bag table index data was not + deleted when objects were deleted. + +------------------------------------------------------------------- +Wed Aug 15 11:27:27 UTC 2018 - matwey.kornilov@gmail.com + +- Update to 20.3.8.6: + * inets: Change status code for no mod found to handle request + to 501 + +------------------------------------------------------------------- +Tue Aug 14 18:57:58 UTC 2018 - matwey.kornilov@gmail.com + +- Update to 20.3.8.5. +- Changes for 20.3.8.5: + * 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. Thanks to + Simon Cornish for finding the bug and supplying a fix. + * 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. + * 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. Thanks to + Simon Cornish for finding the bug and supplying a fix. + * mnesia: When master node is set do not force a load from + ram_copies replica when there are no available disc_copies, + since that would load an empty table. Wait until a disk + replica is available or until user explicitly force_loads the + table. + * mnesia: Allow to add replicas even if all other replicas are + down when the other replicase are not stored on disk. + * ssl: Correct handling of empty server SNI extension + * 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 20.3.8.4: + * asn1: A bug in ASN.1 BER decoding has been fixed. When + decoding a recursively enclosed term the length was not + propagated to that term decoding, so if the length of the + enclosed term was longer than the enclosing that error was not + dectected. A hard coded C stack limitation for decoding + recursive ASN.1 terms has been introduced. This is currently + set to 8 kWords giving a nesting depth of about 1000 levels. + Deeper terms can not be decoded, which should not be much of a + real world limitation. + +- Changes for 20.3.8.3: + * erts: Fixed a race condition in the inet driver that could + cause receive to hang when the emulator was compiled with gcc8. + * erts: Fix bug in generation of erl_crash.dump, which could + cause VM to crash. Bug exist since erts-9.2 (OTP-20.2). + * ic: Fixed potential buffer overflow bugs in + oe_ei_encode_long/ulong/longlong/ulonglong functions on 64-bit + architectures. These functions expect 32 bit integers as the + IDL type "long" is defined as 32 bits. But there is nothing + preventing user code from "breaking" the interface and pass + larger values on 64-bit architectures where the C type "long" + is 64 bits. + * inets: Enhance error handling, that is mod_get will return 403 + if a path is a directory and not a file. + * kernel: Non semantic change in dist_util.erl to silence + dialyzer warning. + * ssl: Improve cipher suite handling correcting ECC and TLS-1.2 + requierments. Backport of solution for ERL-641 + * ssl: Option keyfile defaults to certfile and should be trumped + with key. This failed for engine keys. + +- Changes for 20.3.8.2: + * erl_interface: Make ei_connect and friends also accept state + ok_simultaneous during handshake, which means the other node + has initiated a connection setup that will be cancelled in + favor of this connection. + * erts: Fixed a rare bug that could cause processes to be + scheduled after they had been freed. + * ic: Fixed bug in ic causing potential buffer overrun in + funtion oe_ei_encode_atom. Bug exists since ic-4.4.4 + (OTP-20.3.4). + * kernel: Fix some potential buggy behavior in how ticks are + sent on inter node distribution connections. Tick is now sent + to c-node even if there are unsent buffered data, as c-nodes + need ticks in order to send reply ticks. The amount of sent + data was also calculated wrongly when ticks were suppressed + due to unsent buffered data. + +- Changes for 20.3.8.1: + * inets: Options added for setting low-level properties on the + underlying TCP connections. The options are: sock_ctrl, + sock_data_act and sock_data_pass. See the manual for details. + * ssh: SFTP clients reported the error reason "" if a non-OTP + sftp server was killed during a long file transmission. Now + the signal name (for example "KILL") will be the error reason + if the server's reason is empty. The documentation also lacked + type information about this class of errors. + * ssh: Fix ssh_sftp decode error for sftp protocol version 4 + * syntax_tools: Fix a bug regarding reverting map types. + +- Changes for 20.3.8: + * erts: Fixed bug in ets that could cause VM crash if process A + terminates after fixating a table and process B deletes the + table at "the same time". The table fixation could be done + with ets:safe_fixtable or if process A terminates in the + middle of a long running select or match call. + * snmp: The Snmp MIB compiler now allows using a + TEXTUAL-CONVENTION type before defining it. + +- Changes for 20.3.7: + * erl_docgen: Update makefile so db_funcs.xsl is a part of the + installed application. + * erts: Fixed bug in enif_binary_to_term which could cause + memory corruption for immediate terms (atoms, small integers, + pids, ports, empty lists). + * erts: Fixed bug in erlang:system_profile/2 that could cause + superfluous {profile,_,active,_,_} messages for terminating + processes. + * inets: The option max_headers operated on the individual + header length instead of the total length of all headers. Also + headers with empty keys are now discarded. + +- Changes for 20.3.6: + * crypto: If OPENSSL_NO_EC was set, the compilation of the + crypto nifs failed. + * crypto: C-compile errors for LibreSSL 2.7.0 - 2.7.2 fixed + * ssh: Host key hash erroneously calculated for clients + following draft-00 of RFC 4419, for example PuTTY + * ssh: Renegotiation could fail in some states + +- Changes for 20.3.5: + * erts: Fixed a crash in heart:get_cmd/0 when the stored command + was too long. + * ssl: Proper handling of clients that choose to send an empty + answer to a certificate request. + +- Changes for 20.3.4: + * erl_interface: Fix bug in ei_connect functions that may cause + failure due to insufficient buffer space for gethostbyname_r. + * erl_interface, ic: Optimize encoding/decoding for pure 7-bit + ascii atoms. + * inets: Fix broken options handling in httpc (ERL-441). + * ssh: An ssh_sftp server (running version 6) could fail if it + is told to remove a file which in fact is a directory. + * ssh: Fix rare spurios shutdowns of ssh servers when receiveing + {'EXIT',_,normal} messages. + +- Changes for 20.3.3: + * sasl: When upgrading with instruction 'restart_new_emulator', + the generated temporary boot file used 'kernelProcess' + statements from the old release instead of the new release. + This is now corrected. + +------------------------------------------------------------------- +Sat Apr 14 10:51:00 UTC 2018 - matwey.kornilov@gmail.com + +- Update to 20.3.2 + * ssl: Added new API functions to facilitate cipher suite handling + * erts, observer: More crash dump info such as: process binary + virtual heap stats, full info for process causing out-of-mem + during GC, more port related info, and dirty scheduler info. + * inets: Add support for unix domain sockets in the http client. + +------------------------------------------------------------------- +Thu Feb 1 09:08:16 UTC 2018 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Mon Nov 27 07:46:03 UTC 2017 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Thu Nov 23 13:49:29 UTC 2017 - rbrown@suse.com + +- Replace references to /var/adm/fillup-templates with new + %_fillupdir macro (boo#1069468) + +------------------------------------------------------------------- +Thu Oct 19 10:40:11 UTC 2017 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Thu Sep 14 20:36:14 UTC 2017 - matwey.kornilov@gmail.com + +- Only Java 1.6 is supported by Erlang since 18.0 release + +------------------------------------------------------------------- +Thu Sep 14 20:05:23 UTC 2017 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Sun Aug 27 14:19:49 UTC 2017 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Sun Aug 20 06:28:17 UTC 2017 - matwey.kornilov@gmail.com + +- 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. + +------------------------------------------------------------------- +Mon Jul 31 17:02:58 UTC 2017 - matwey.kornilov@gmail.com + +- erlang-gs application has been depricated + +------------------------------------------------------------------- +Mon Jul 17 14:24:49 UTC 2017 - matwey.kornilov@gmail.com + +- Update to 20.0.1: + * erts: Fixed a bug in gen_tcp:send where it never returned when + repeatedly called on a remotely closed TCP socket. + * erts: Fixed segfault that could happen during cleanup of aborted + erlang:port_command/3 calls. A port_command is aborted if the + port is closed at the same time as the port_command was issued. + This bug was introduced in erts-8.0. + * erts: Fixed implementation of statistics(wall_clock) and + statistics(runtime) so that values do not unnecessarily wrap due + to the emulator. Note that the values returned by + statistics(runtime) may still wrap due to limitations in the + underlying functionality provided by the operating system. + * erts: Fix performance bug in pre-allocators that could cause + them to permanently fall back on normal more expensive memory + allocation. Pre-allocators are used for quick allocation of + short lived meta data used by messages and other scheduled + tasks. Bug exists since OTP_R15B02. + * runtime_tools: A faulty encoding comment was added when saving + trace patterns to file. This is now corrected. + * stdlib: A bug in proc_lib:format() introduced in Erlang/OTP 20.0 + is corrected. + * stdlib: Fix string:len/1 to be compatible with previous + versions. + * stdlib: In OTP-20.0, the behavior of c, make, and ct_make was + changed so that in some cases the beam files by default would be + written to the directory where the source files were found. This + is now changed back to the old behavior so beam files are by + default written to current directory. + +- Update to 20.0.0: + * Potential Incompatibilities + * ERTS: + * The non SMP Erlang VM is deprecated and not built by default + * Remove deprecated erlang:hash/2 + * erlang:statistics/1 with scheduler_wall_time now also + includes info about dirty CPU schedulers. + * The new purge strategy introduced in OTP 19.1 is mandatory + and slightly incompatible for processes holding funs + * see erlang:check_process_code/3. + * The NIF library reload is not supported anymore. + * Atoms can now contain arbitrary unicode characters which + means that the DFLAG_UTF8_ATOMS capability in the + distribution protocol must be supported if an OTP 20 node + should accept the connection with another node or library. + Third party libraries which uses the distribution protocol + need to be updated with this. + * Asn1: Deprecated module and functions removed (asn1rt, + asn1ct:encode/3 and decode/3) + * Ssh: client only option in a call to start a daemon will now fail + * Highlights + * Erts: + * Dirty schedulers enabled and supported on VM with SMP support. + * support for “dirty” BIFs and “dirty” GC. + * erlang:garbage_collect/2 for control of minor or major GC + * Erlang literals are no longer copied when sending messages. + * Improved performance for large ETS tables, >256 entries + (except ordered_set) + * erlang:system_info/1 atom_count and atom_limit + * Reduced memory pressure by converting sub-binaries to + heap-binaries during GC + * enif_select, map an external event to message + * Improvements of timers internally in the VM resulting in + reduced memory consumption and more efficient administration + for timers + * Compiler: + * Code generation for complicated guards is improved. + * Warnings for repeated identical map keys. #{'a'=>1, 'b'=>2, + 'a'=>3} will warn for the repeated key a. + * By default there is now a warning when export_all is used. + Can be disabled + * Pattern matching for maps is optimized + * New option deterministic to omit path to source + options + info the BEAM file. + * Atoms may now contain arbitrary unicode characters. + * compile:file/2 has an option to include extra chunks in the + BEAM file. + * Misc other applications: + * Significantly updated string module with unicode support and + many new functions + * crypto now supports OpenSSL 1.1 + * Unnamed ets tables optimized + * gen_fsm is deprecated and replaced by gen_statem + * A new event manager to handle a subset of OS signals in + Erlang + * Optimized sets add_element, del_element and union + * Added rand:jump/0-1 + * When a gen_server crashes, the stacktrace for the client + will be printed to facilitate debugging. + * take/2 has been added to dict, orddict, and gb_trees. + * take_any/2 has been added to gb_trees + * erl_tar support for long path names and new file formats + * asn1: the new maps option changes the representation of + SEQUENCE to be maps instead of records + * A TLS client will by default call + public_key:pkix_verify_hostname/2 to verify the hostname + * ssl: DTLS documented in the API, experimental + * ssh: improving security, removing and adding algorithms + * New math:fmod/2 + +------------------------------------------------------------------- +Sat May 6 11:26:42 UTC 2017 - meissner@suse.com + +- Disable global PIE for erlang, code is currently not fully + ready. + +------------------------------------------------------------------- +Sun Apr 30 08:51:11 UTC 2017 - matwey.kornilov@gmail.com + +- Update to 19.3.2: + * erts: The +Bi command line argument of erl erroneously caused + SIGTERM to be ignored by the VM as well as of all its child + processes. This bug was introduced in erts version 8.3. + +------------------------------------------------------------------- +Thu Apr 6 13:14:49 UTC 2017 - matwey.kornilov@gmail.com + +- Update to 19.3.1: + * crypto: Fix a bug with AES CFB 128 for 192 and 256 bit keys. + Thanks to kellymclaughlin ! + * erts: Trying to open a directory with file:read_file/1 on Unix + leaked a file descriptor. This bug has now been fixed. + * erts: Invoking init:stop/0 via the SIGTERM signal, in a non-SMP + BEAM, could cause BEAM to terminate with fatal error. This has + now been fixed and the BEAM will terminate normally when SIGTERM + is received. + * inets: Fixed a bug in ftp that made further operations after a + recv_chunk operation impossible. + * ssh: ssh:daemon_info/1 crashed if the listening IP was not 'any' + * ssl: Correct active once emulation, for TLS. Now all data + received by the connection process will be delivered through + active once, even when the active once arrives after that the + gen_tcp socket is closed by the peer. + +------------------------------------------------------------------- +Thu Apr 6 13:14:49 UTC 2017 - matwey.kornilov@gmail.com + +- Changes since 19.2: + * crypto, ssh: The implementation of the key exchange algorithms + diffie-hellman-group-exchange-sha* are optimized, up to a factor + of 11 for the slowest ( = biggest and safest) group size. + * dialyzer: The peak memory consumption is reduced. Analyzing + modules with binary construction with huge strings is now much + faster. + * erts: A received SIGTERM signal to beam will generate a 'stop' + message to the init process and terminate the Erlang VM nicely. + This is equivalent to calling init:stop/0. + * kernel: The functions in the file module that take a list of + paths (e.g. file:path_consult/2) will now continue to search in + the path if the path contains something that is not a directory. + * kernel: Two OTP processes that are known to receive many + messages are rex (used by rpc) and error_logger. Those processes + will now store unprocessed messages outside the process heap, + which will potentially decrease the cost of garbage collections. + * public_key: New function pkix_verify_hostname/2,3 implements + certificate hostname checking. See the manual and RFC 6125.- + * public_key, ssh: The ssh host key fingerprint generation now + also takes a list of algorithms and returns a list of + corresponding fingerprints. See + public_key:ssh_hostkey_fingerprint/2 and the option + silently_accept_hosts in ssh:connect. + * ssl: Move PEM cache to a dedicated process, to avoid making the + SSL manager process a bottleneck. This improves scalability of + TLS connections. + * stdlib: filename:safe_relative_path/1 to sanitize a relative + path has been added. + +------------------------------------------------------------------- +Fri Mar 10 08:10:13 UTC 2017 - matwey.kornilov@gmail.com + +- Add missed scripts requires for erlang-epmd package + +------------------------------------------------------------------- +Thu Feb 2 15:40:10 UTC 2017 - matwey.kornilov@gmail.com + +- Update to 19.2.2: + * mnesia: Fixed crash in checkpoint handling when table was + deleted during backup. + +------------------------------------------------------------------- +Sun Dec 18 09:38:50 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 19.2: + * stdlib: The new behaviour gen_statem has been improved with 3 + new features: the possibility to use old style non-proxy + timeouts for gen_statem:call/2,3, state entry code, and state + timeouts. These are backwards compatible. Minor code and + documentation improvements has been performed including a + borderline semantics correction of timeout zero handling. + * ssl: Experimental version of DTLS. It is runnable but not + complete and cannot be considered reliable for production usage. + To use DTLS add the option {protocol, dtls} to ssl:connect and + ssl:listen. + * ssh: Extended the option silently_accept_hosts for ssh:connect + to make it possible for the client to check the SSH host key + fingerprint string. Se the reference manual for SSH. + * ~40 contributions since the previous service release OTP 19.1 + +------------------------------------------------------------------- +Thu Sep 29 09:27:58 UTC 2016 - kruber@zib.de + +- Update to 19.1: + * erts: Improved dirty scheduler support. A purge of a module + will not have to wait for completion of all ongoing dirty + NIF calls + * erts: Improved accuracy of timeouts on MacOS X + * kernel: Add net_kernel:setopts/2 and net_kernel:getopts/2 to + control options for distribution sockets in runtime + * asn1: Compiling multiple ASN.1 modules in the same directory + with parallel make (make -j) should now be safe + * httpd: support for PUT and DELETE in mod_esi + * ~30 contributions since 19.0 + +------------------------------------------------------------------- +Fri Aug 12 18:20:31 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 19.0.4: + * erts: Fixed a race that could cause a lost wakeup of a process + that timed out in a receive ... after. This bug was introduced + in ERTS version 7.0. + * erts: Fixed segfault after writing an erl crash dump. + +------------------------------------------------------------------- +Sun Jun 26 09:01:32 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 19.0: + * compiler, stdlib: New preprocessor macros *?FUNCTION_NAME, + ?FUNCTION_ARITY*. New preprocessor directives -error(Term) and + -warning(Term) to cause a compilation error or warning, + respectively. + * gen_statem: a new state machine behavior + * mnesia_ext: plugin of external storage solutions to mnesia + * crypto: uses EVP interface in OpenSSL resulting in generally + better performance and support for HW acceleration + * ssh: performance improvements, uses the new gen_statem behavior + * ssl: enhanced error log messages + * dialyzer: the support for maps is very much extended both + the type specification syntax and the type analysis. + * erts: erlang:open_port(spawn, ...) 3-5 times faster + * erts/kernel: Experimental support for Unix Domain Sockets + * ose: Deprecated application has been removed + * webtool: Deprecated application has been removed + * test_server: Deprecated application has been removed, use + common_test instead + +------------------------------------------------------------------- +Mon Jun 20 21:35:57 UTC 2016 - jengelh@inai.de + +- Do not suppress errors from useradd/groupadd +- Orthographic/typographical fixes + +------------------------------------------------------------------- +Fri Jun 17 07:19:17 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 18.3.4: + * inets: Handle multiple \t in mime types file + * ssl: Correct ssl:prf/5 to use the negotiated cipher suite's prf + function in ssl:prf/5 instead of the default prf. + * ssl: Timeouts may have the value 0, guards have been corrected + to allow this + * ssl: Change of internal handling of hash sign pairs as the used + one enforced to much restrictions making some valid + combinations unavailable. + * ssl: Create a little randomness in sending of session + invalidation messages, to mitigate load when whole table is + invalidated. + +------------------------------------------------------------------- +Sun May 22 09:13:09 UTC 2016 - matwey.kornilov@gmail.com + +- Return diameter application: as for 18.3.3 it is distributed + under APL license + +------------------------------------------------------------------- +Sun May 22 08:58:48 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 18.3.3: + * common_test: The nodelay option used to be enabled (true) by + default for sockets opened by the Common Test + telnet client. + * common_test: Fix bug in cth_surefire + * common_test: The ct:get_timetrap_info/0 function has been + updated to return more information about timetrap + scaling. + * common_test: A problem with stylesheet HTML tags getting + incorrectly escaped by Common Test has been + corrected. + * common_test: The ct_run start flag -no_esc_chars and + ct:run_test/1 start option {esc_chars,Bool} have + been introduced. + * inets: Put back unused module inets_regexp + * ssl: Correct cipher suites conversion and gaurd expression. + +------------------------------------------------------------------- +Tue May 3 16:53:07 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 18.3.2: + * inets: Add environment information item peer_cert to mod_esi + * ssl: Corrections to cipher suite handling using + the 3 and 4 tuple format + * ssl: Make values for the TLS-1.2 signature_algorithms + extension configurable + +------------------------------------------------------------------- +Thu Mar 17 09:07:18 UTC 2016 - kruber@zib.de + +- Update to 18.3: + * New statistics info about runnable and active processes & + ports. Call erlang:statistics with: + total_run_queue_lengths | run_queue_lengths | total_active_tasks + | active_tasks. + * Time warp improvements: dbg:p/2 and erlang:trace/3 with + monotonic_timestamp |strict_monotonic_timestamp. + * Introduced a validation callback for heart. + * The module overload in sasl has been deprecated. + * several bug fixes + +------------------------------------------------------------------- +Sat Jan 30 14:49:55 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 18.2.3: + * inets: mod_alias now traverses all aliases picking + the longest match and not the first match. + +------------------------------------------------------------------- +Tue Jan 12 14:08:41 UTC 2016 - matwey.kornilov@gmail.com + +- Update to 18.2.2: + * ssh: The authentication method 'keyboard-interactive' failed + in the Erlang client when the server after successful + authentication continued by asking for zero more + passwords. + +------------------------------------------------------------------- +Mon Dec 28 08:50:34 UTC 2015 - matwey.kornilov@gmail.com + +- Update to 18.2.1: + * Due to a bug in the handling of paths on windows + none of the following would work with paths + containing a space: ct_run dialyzer erlc escript typer + This also contains a fix for HiPE enabled emulator for + FreeBSD. +- Update to 18.2: + * ssl: Add configurable upper limit for session + cache. erts: Add function enif_getenv to read OS + environment variables in a portable way from NIFs. + * kernel: Add {line_delim, byte()} option to + inet:setopts/2 and decode_packet/3 + * ssh: The 'ecdsa-sha2-nistp256', + 'ecdsa-sha2-nistp384' and 'ecdsa-sha2-nistp521' + signature algorithms for ssh are implemented. See RFC5656. + * ssh: The ssh:daemon option dh_gex_groups is + extended to read a user provided ssh moduli file + with generator-modulus pairs. The file is in openssh + format. + +------------------------------------------------------------------- +Thu Dec 17 17:37:16 CET 2015 - ro@suse.de + +- disable hipe on s390/s390x to fix build + +------------------------------------------------------------------- +Thu Oct 29 13:41:47 UTC 2015 - matwey.kornilov@gmail.com + +- Update to 18.1.3: + * ssl: Add possibility to downgrade an SSL/TLS connection to a + tcp connection, and give back the socket control to a user + process. + * ssh: The following new key exchange algorithms are + implemented:'ecdh-sha2-nistp256', 'ecdh-sha2-nistp384', + 'ecdh-sha2-nistp521','diffie-hellman-group14-sha1', + 'diffie-hellman-group-exchange-sha1' and + 'diffie-hellman-group-exchange-sha256'. This raises the + security level considerably. + * kernel,stdlib,sasl: A mechanism for limiting the amount of + text that the built-in error logger events will produce has + been introduced. It is useful for limiting both the size of + log files and the CPU time used to produce them. This + mechanism is experimental in the sense that it may be changed + based on feedback. See config parameter + error_logger_format_depth in the Kernel application. +- Removed erts_fix_unlock_status_lock.patch: fixed in upstream + +------------------------------------------------------------------- +Tue Sep 29 17:17:53 UTC 2015 - matwey.kornilov@gmail.com + +- Rework wxWidgets BuildRequire: fix build for Leap 42.1 + +------------------------------------------------------------------- +Wed Aug 26 17:23:03 UTC 2015 - kruber@zib.de + +- update to 18.0.3: + * erts: Fixed a binary memory leak when printing to shell using + the tty driver (i.e. not -oldshell). + * erts: Fix a bug where the standard error port sometimes + crashes with eagain as the reason. + +------------------------------------------------------------------- +Thu Aug 13 14:11:34 UTC 2015 - kruber@zib.de + +- add erts_fix_unlock_status_lock.patch to fix a rare deadlock in erts + +------------------------------------------------------------------- +Fri Jul 24 15:38:54 UTC 2015 - seife+obs@b1-systems.com + +- fix RHEL/CentOS 7 build + +------------------------------------------------------------------- +Thu Jul 9 07:44:58 UTC 2015 - kruber@zib.de + +- update to 18.0.2: + * Fix processes ending up in an inconsistent half exited state + in the runtime system without SMP support + * Remove unnecessary copying of data when retrieving corrected + Erlang monotonic time. + * POTENTIAL INCOMPATIBILITY: + Change default OS monotonic clock source chosen at build time. + This in order to improve performance. The behavior will now on + most systems be that (both OS and Erlang) monotonic time stops + when the system is suspended. (changeable via the + --enable-prefer-elapsed-monotonic-time-during-suspend + configure parameter) + * Fix erlang:system_info(end_time) returning a faulty value on + 32-bit architectures. + * Fix the trace_file_drv not handling EINTR correctly which + caused it to fail when the runtime system received a signal. + +------------------------------------------------------------------- +Tue Jun 30 15:34:14 UTC 2015 - kruber@zib.de + +- update to 18.0.1: + * Fix a rare hanging of the VM seen to happen just after + emulator start. Bug exists since R14. + +------------------------------------------------------------------- +Fri Jun 26 11:59:59 UTC 2015 - kruber@zib.de + +- update to 18.0: + * new license: APL 2.0 (Apache Public License) + * erts: The time functionality has been extended. This includes + a new API for time, as well as "time warp" modes which + alters the behavior when system time changes. You are + strongly encouraged to use the new API instead of the + old API based on erlang:now/0. erlang:now/0 has been + deprecated since it is a scalability bottleneck. See + http://www.erlang.org/doc/apps/erts/time_correction.html + * erts: Beside the API changes and time warp modes a lot of + scalability and performance improvements regarding time + management has been made. Examples are: + + scheduler specific timer wheels, + + scheduler specific BIF timer management, + + parallel retrieval of monotonic time and system time + on OS:es that support it. + * erts: The previously introduced "eager check I/O" feature is + now enabled by default. + * erts/compiler: enhanced support for maps. Big maps new uses a + HAMT (Hash Array Mapped Trie) representation internally + which makes them more efficient. There is now also + support for variables as map keys. + * dialyzer: The -dialyzer() attribute can be used for suppressing + warnings in a module by specifying functions or warning + options. It can also be used for requesting warnings in + a module. + * ssl: Remove default support for SSL-3.0 and added padding check + for TLS-1.0 due to the Poodle vulnerability. + * ssl: Remove default support for RC4 cipher suites, as they are + consider too weak. + * stdlib: Allow maps for supervisor flags and child specs + * stdlib: New functions in ets: + + take/2: Works the same as ets:delete/2 but also returns + the deleted object(s). + + update_counter/4 with a default object as argument + +------------------------------------------------------------------- +Thu Jun 25 08:41:52 UTC 2015 - dmueller@suse.com + +- update to 17.5.6: + * Fix broken relay counters + * Fix diameter_sctp listener race +- fix build for SLE_12 + +------------------------------------------------------------------- +Thu May 28 13:08:20 UTC 2015 - matwey.kornilov@gmail.com + +- Update to 17.5.4 + +------------------------------------------------------------------- +Mon May 4 10:01:30 UTC 2015 - dmueller@suse.com + +- fix systemd service files for epmd: + * fix stop of epmd (epmd -kill is deprecated and ignored, so stop hangs) + +------------------------------------------------------------------- +Tue Apr 7 12:18:26 UTC 2015 - kruber@zib.de + +- Update to 17.5: + * ERTS: Added command line argument option for setting the + initial size of process dictionaries. + * Diameter: configurable incoming_max len and string_decode for + diameter messages + * Bugfixes and minor small features in applications such as + compiler, common_test, crypto, debugger, eldap, erts, hipe, + inets, ssh, ssl, ... +- remoce ct-fix_incl-dirs.patch (included upstream) + +------------------------------------------------------------------- +Mon Feb 23 09:27:18 UTC 2015 - kruber@zib.de + +- add ct-fix_incl-dirs.patch (upstream patch for common test) + +------------------------------------------------------------------- +Sat Dec 13 12:12:16 UTC 2014 - matwey.kornilov@gmail.com + +- Version 17.4: + * eldap: Nearly all TCP options are possible to give in the eldap:open/2 call. + * ssh: Added API functions ptty_alloc/3 and ptty_alloc/4, to allocate a pseudo tty. + * ssl: Handle servers that may send an empty SNI extension to the client. + +------------------------------------------------------------------- +Sun Nov 9 08:20:52 UTC 2014 - matwey.kornilov@gmail.com + +- use wxWidgets 3.0 + +------------------------------------------------------------------- +Sun Nov 09 03:36:00 UTC 2014 - Led + +- fix bashisms in pre script + +------------------------------------------------------------------- +Wed Sep 17 12:18:17 UTC 2014 - matwey.kornilov@gmail.com + +- Update to 17.3: + * erts: Introduced enif_schedule_nif() which allows a long + running NIF to be broken into separate NIF invocations + without the help of a wrapper function written in Erlang + * common_test: Experimental support for running Quickcheck and + PropEr tests from common_test suites is added. + Examples of usage in the suites for the ssh and + inets applications + * Bugfixes and minor new features in applications such as asn1, + erts, kernel, stdlib, diameter, ssh, mnesia, ssl, jinterface + +------------------------------------------------------------------- +Tue Aug 26 11:34:10 UTC 2014 - matwey.kornilov@gmail.com + +- Enable Erlang-specific parts of rpmlint for openSUSE 13.2 + +------------------------------------------------------------------- +Fri Jun 27 17:56:13 UTC 2014 - matwey.kornilov@gmail.com + +- Starting from 17.1 explicit --enable-systemd required +- To remake configure is not required anymore (patches had been dropped) + +------------------------------------------------------------------- +Fri Jun 27 12:26:47 UTC 2014 - kruber@zib.de + +- Update to 17.0: + * crypto: Add aes_cfb8 cypher to crypto:block_encrypt and + block_decrypt. + * diameter: Add result code counters for CEA, DWA, and DPA. + * erts: The following built in functions in the erlang and + binary modules now bump an appropriate amount + of reductions and yield when out of reductions: + binary_to_list/1, binary_to_list/3, bitstring_to_list/1, + list_to_binary/1, iolist_to_binary/1, + list_to_bitstring/1, binary:list_to_bin/1 + * hipe: Handle Maps instructions get_map_elements, put_map_assoc, + put_map_exact in the HiPE native code compiler. + * mnesia: The time for inserting locks for a transaction with + large number of locks is reduced significantly. + * ssh: Option max_sessions added to ssh:daemon/{2,3}. + * stdlib: Add maps:get/3 to maps module. The function will + return the supplied default value if the key does not + exist in the map. +- Drop erlang-ppc.patch: has been upstreamed +- Drop fix-armv7hl.patch: has been upstreamed + +------------------------------------------------------------------- +Wed Apr 9 16:08:16 UTC 2014 - matwey.kornilov@gmail.com + +- Update to 17.0: + * Maps, a new dictionary data type (experimental) + * ASN.1 improvements and optimizations + * The {active, N} socket option for TCP, UDP, and SCTP + * A new (optional) scheduler utilization balancing mechanism + * Migration of memory carriers has been enabled by default on + all ERTS internal memory allocators + * Increased garbage collection tenure rate + * Experimental "dirty schedulers" functionality + * Funs can now be given names + * Miscellaneous unicode support enhancements + * A new version scheme for OTP its applications has been introduced +- Drop 0001-Add-systemd-option-to-empd.-Check-for-include-system.patch: has been upstreamed +- Drop 0002-Add-systemd-support-to-epmd.patch: has been upstreamed + +------------------------------------------------------------------- +Thu Mar 27 18:09:29 UTC 2014 - matwey.kornilov@gmail.com + +- Invoking ./Install is not required. + +------------------------------------------------------------------- +Thu Mar 27 17:17:49 UTC 2014 - matwey.kornilov@gmail.com + +- Split EPMd to separate package in order to make it possible to + use alternative implementations of EPMd. + +------------------------------------------------------------------- +Sun Mar 23 07:51:54 UTC 2014 - matwey.kornilov@gmail.com + +- Add README.SUSE, modify epmd.socket: fix bnc#869112 + +------------------------------------------------------------------- +Sun Mar 23 06:46:23 UTC 2014 - matwey.kornilov@gmail.com + +- Add erlang-observer package (observer depends on wx) + +------------------------------------------------------------------- +Thu Feb 20 07:35:16 UTC 2014 - matwey.kornilov@gmail.com + +- Use %service_add_pre macro + +------------------------------------------------------------------- +Wed Feb 19 07:23:07 UTC 2014 - matwey.kornilov@gmail.com + +- Fix names of epmd.service and epmd.socket files + +------------------------------------------------------------------- +Thu Feb 6 12:12:26 UTC 2014 - matwey.kornilov@gmail.com + +- Add User and Group to epmd.service + +------------------------------------------------------------------- +Sat Dec 21 11:05:07 UTC 2013 - matwey.kornilov@gmail.com + +- Add crypto.patch: fix compilation with openssl having EC disabled + +------------------------------------------------------------------- +Fri Dec 20 19:51:06 UTC 2013 - matwey.kornilov@gmail.com + +- Fixing systemd. +- Warning: variables in /etc/sysconfig/erlang must be set and filled. + +------------------------------------------------------------------- +Fri Dec 20 14:51:25 UTC 2013 - kruber@zib.de + +- update to R16B03 release: + + A new memory allocation feature called "super carrier" has + been introduced. It can for example be used for pre-allocation + of all memory that the runtime system should be able to use. + It is enabled by passing the +MMscs (size in MB) command line + argument. For more information see the documentation of the + +MMsco, +MMscrfsd, +MMscrpm, +MMscs, +MMusac, and, +Mlpm + command line arguments in the erts_alloc(3) documentation. + + The ldap client eldap now supports the start_tls operation. + This upgrades an existing tcp connection to encryption using + tls, see eldap:start_tls/2 and /3. + + The ftp client (inets application) now supports ftp over tls + (ftps). +- adapt patch erlang-not-install-misc.patch + +------------------------------------------------------------------- +Sun Oct 27 17:07:46 UTC 2013 - p.drouand@gmail.com + +- Add systemd support for openSUSE >= 12.3 + +------------------------------------------------------------------- +Thu Sep 19 06:13:18 UTC 2013 - matwey.kornilov@gmail.com + +- update to R16B02 release: + + Lots of bug-fixes + + A new test scope + + Added application:ensure_all_started/1-2 + + New erl option +SP to set schedulers by percentages. + +------------------------------------------------------------------- +Fri Jun 21 20:11:27 UTC 2013 - kruber@zib.de + +- update to R16B01 release: + + Migration of memory carriers between allocator instances, when + enabled it will result in reduced memory footprint when the + memory load is unevenly distributed between scheduler specific + allocator instances. + + Interruptible term_to_binary, (thanks to Erik Stenman) + + Added the +sfwi Scheduler Forced Wakeup Interval + + All crypto functions except the block chipers will now chunk + large input into several calls to avoid blocking the scheduler + for too long. + + Elliptic curve support in crypto, ssl and ssh + (thanks to Andreas Schultz) + + Lift static limitation (FD_SETSIZE) for file descriptors on + Mac OS X. (thanks to Anthony Ramine) + + Removed a lock around GC statistics counter + + Many small improvements and in Diameter + + 60 user contributions +- adapted fix-armv7hl.patch + +------------------------------------------------------------------- +Sat Jun 15 18:10:56 UTC 2013 - matwey.kornilov@gmail.com + +- dialyzer requires graphviz (see dialyzer_callgraph:to_ps/3) + +------------------------------------------------------------------- +Sat Jun 15 17:28:03 UTC 2013 - matwey.kornilov@gmail.com + +- move dialyzer binaries into separate package + +------------------------------------------------------------------- +Thu May 23 11:11:31 UTC 2013 - mrueckert@suse.de + +- added rcepmd symlinks for the init script + +------------------------------------------------------------------- +Thu Apr 4 08:23:56 UTC 2013 - speilicke@suse.com + +- Drop rebar-specific RPM macros, these belong into erlang-rebar + (seperate package) + +------------------------------------------------------------------- +Sun Mar 31 07:28:23 UTC 2013 - schwab@suse.de + +- Fix ppc and arm patches so that they don't conflict + +------------------------------------------------------------------- +Fri Mar 8 12:21:26 UTC 2013 - matwey.kornilov@gmail.com + +- Fix erlang-src orphaned directories. + erlang-src has been split according to erlang package. + +------------------------------------------------------------------- +Fri Mar 8 09:01:19 UTC 2013 - matwey.kornilov@gmail.com + +- Add erlang-no-install-misc.patch: + initial Fedora name was too long for us: +otp-0001-Do-not-format-man-pages-and-do-not-install-miscellan.patch + this patch is + * to remove generating of erlang/man/cat? directories (which were not even market as %ghost) at %post. + The man-files is gz-pped (by SUSE) and because of that, script misc/format_man_pages has been failing its job for a long time; + * to remove unused scripts from misc. + +------------------------------------------------------------------- +Wed Feb 27 14:52:47 UTC 2013 - kruber@zib.de + +- update to R16B release: + + Optimized handling of processes in the VM + * New internal process table allowing for parallel reads and + writes + * optimized run queue management + * optimized process state changes + + "Non-blocking" code loading + + New internal port table, and rewrite of scheduling of port + tasks. + + Dynamic allocation of port structures, allowing the default + for maximum ports to be raised to 65536 (from 1024) + + Support for UTF-8 encoded Unicode characters in source files. + + Inets application: The http client now support HTTPS through a + proxy + + Asn1 application: Major cleanup of back ends and optimizations + of mainly decode for PER and UPER. + + The experimental features parameterized modules and packages + are removed. An alternative compatible solution for + parameterized modules is provided here + https://github.com/erlang/pmod_transform. + + All built in functions BIF's (even if they are implemented in + C as part of the VM) are now visible in the source code of the + module they belong to, including their type specs. + + The Wx application now compiles and is usable with the + unstable development branch of wxWidgets-2.9. + This means that wx can now be built on 64 bit MacOsX as well. +- update otp-R15B02-rpath.patch to otp-R16B-rpath.patch + +------------------------------------------------------------------- +Thu Feb 7 18:07:06 UTC 2013 - matwey.kornilov@gmail.com + +- Add macros.erlang with some RPM macros for erlang packaging + +------------------------------------------------------------------- +Mon Feb 4 10:54:07 UTC 2013 - kruber@zib.de + +- update to R15B03-1 release: + + integrated fix for a bug in ssl that affected accept calls + with timeouts + + ERL_CRASH_DUMP_SECONDS only needs to be set when using heart, + all other invocations of the Erlang VM will crashdump on fatal + errors as they did in R15B02 + + systems using heart still have to define a maximum time for + crashdumps using the ERL_CRASH_DUMP_SECONDS environment + variable +- dropped otp-R15B03-fix_ssl_accept_timeout.patch + (fixed in release) + +------------------------------------------------------------------- +Mon Jan 7 12:40:48 UTC 2013 - matwey.kornilov@gmail.com + +- Add fix-armv7hl.patch - temporary fix build at armv7hl + +------------------------------------------------------------------- +Sat Jan 5 19:39:43 UTC 2013 - matwey.kornilov@gmail.com + +- add make clean before build. it clears .beam files bundled with + sources. our aim is to build everything from sources. + +------------------------------------------------------------------- +Mon Dec 3 23:31:33 UTC 2012 - mrueckert@suse.de + +- fixed typo in epmd init script: + echo -e needed to get the "\n" printed properly. + +------------------------------------------------------------------- +Mon Dec 3 18:07:40 UTC 2012 - kruber@zib.de + +- update to R15B03 release: + + mainly bug fixes + + ERL_CRASH_DUMP_SECONDS must be set in order to get any Erlang + crash dump (potential incompatibility introduced to fix the + use of "-heart" in combination with the Erlang crash dump + + details: http://www.erlang.org/download/otp_src_R15B03.readme + +------------------------------------------------------------------- +Mon Nov 19 18:41:15 UTC 2012 - dimstar@opensuse.org + +- Fix useradd invocation: -o is useless without -u and newer + versions of pwdutils/shadowutils fail on this now. + +------------------------------------------------------------------- +Sat Nov 17 13:36:31 UTC 2012 - matwey.kornilov@gmail.com + +- fixed 'executable-docs' lint error + +------------------------------------------------------------------- +Fri Nov 16 22:51:00 MSK 2012 - matwey.kornilov@gmail.com + +- directory /usr/share/man/man1 is handled by filesystem package, + we don't have to package it twice + +------------------------------------------------------------------- +Fri Nov 9 11:54:55 UTC 2012 - saschpe@suse.de + +- Symlink man-pages for binaries (1) into %_mandir (bnc#788027) + +------------------------------------------------------------------- +Tue Nov 6 14:00:09 UTC 2012 - saschpe@suse.de + +- Use SPDX-style license (ErlPL-1.1) +- Merge changes from devel:languages:misc/erlang, which is still the + devel project for Factory. + +------------------------------------------------------------------- +Wed Oct 31 14:55:39 UTC 2012 - saschpe@suse.de + +- Set same permissions for the following files (bnc#784670): + /usr/lib64/erlang/bin/start_erl + /usr/lib64/erlang/erts-5.8.5/bin/start_erl.src + +------------------------------------------------------------------- +Mon Oct 8 09:40:46 UTC 2012 - saschpe@suse.de + +- Avoid shipping libraries with licensing issues (see bnc#728667) + + Neither ship 'diameter' source or binary and remove the corresponding + but useless man pages + + The xmerl binary (library) is safe to ship, but not it's sources + (fixes bnc#776060) + +------------------------------------------------------------------- +Thu Sep 27 01:16:22 UTC 2012 - mrueckert@suse.de + +- epmd should not run under the service that needs it first: + - add init script to launch epmd under the newly added epmd + user/group. + - added /etc/sysconfig/erlang to configure the port and the + listening IP + +------------------------------------------------------------------- +Mon Sep 10 09:26:31 UTC 2012 - kruber@zib.de + +- require generic java-devel package for all distros (>= 1.5.0) +- fixed javac define for openjdk7 +- enabled parallel build again + +------------------------------------------------------------------- +Thu Sep 6 09:00:14 UTC 2012 - kruber@zib.de + +- update to R15B02 release: + + Highlights: + * Dialyzer: The type analysis tool Dialyzer is optimized to be + generally faster. - It can now also run in parallel (default) + on SMP systems and by this perform the analysis significantly + faster (Thanks to Stavros Aronis and Kostis Sagonas) + * The SSL application now has experimental support for the + TLS 1.1 and 1.2 standards as well (Thanks to Andreas Schultz). + * CommonTest: It is now possible to sort the generated html + tables. A Netconf client (ct_netconf) which support basic + netconf over ssh is added + * Diameter: Statistics counters related to Diameter messages can + now be retrieved by calling the diameter:service_info/2 function. + * Various smaller optimizations in the Erlang VM + * This release also contains 66 contributions from users outside + the Ericsson team + +------------------------------------------------------------------- +Wed Jul 25 14:05:47 UTC 2012 - dvaleev@suse.com + +- Add erlang-ppc.patch: Fix PPC architecture detection + +------------------------------------------------------------------- +Tue Jun 26 13:46:36 UTC 2012 - mvyskocil@suse.cz + +- Simply use java-devel >= 1.6.0 as it expands to correct jdk on every + distribution + +------------------------------------------------------------------- +Mon Apr 16 16:15:13 UTC 2012 - kruber@zib.de + +- updated to R15B01 release: + + Highlights from R15B01: + * Added erlang:statistics(scheduler_wall_time) to ensure correct + determination of scheduler utilization. Measuring scheduler + utilization is strongly preferred over CPU utilization, since + CPU utilization gives very poor indications of actual + scheduler/vm usage. + * Changed ssh implementation to use the public_key application + for all public key handling. This is also a first step for + enabling a callback API for supplying public keys and handling + keys protected with password phrases. Additionally the test + suites where improved so that they do not copy the users keys + to test server directories as this is a security liability. + Also ipv6 and file access issues found in the process has been + fixed. + * When an escript ends now all printout to standard output and + standard error gets out on the terminal. This bug has been + corrected by changing the behaviour of erlang:halt/0,1, which + should fix the same problem for other escript-like applications, + i.e. that data stored in the output port driver buffers got + lost when printing on a TTY and exiting through erlang:halt/0,1. + The BIF:s erlang:halt/0,1 has gotten improved semantics and + there is a new BIF erlang:halt/2 to accomplish something like + the old semantics. See the documentation. + * The DTrace source patch from Scott Lystig Fritchie is + integrated in the source tree. Using an emulator with dtrace + probe is still not supported for production use, but may be a + valuable debugging tool. Configure with + --with-dynamic-trace=dtrace (or --with-dynamic-trace=systemtap) + to create a build with dtrace probes enabled. See runtime_tools + for documentation and examples + * Added Torbjörn Törnkvists LDAP client as a new application + called eldap. + * Added options for the ssh client to support user keys files + that are password protected. + +------------------------------------------------------------------- +Thu Dec 14 22:07:03 UTC 2011 - alex@simonov.me + +- updated to R15B release + +------------------------------------------------------------------- +Thu Nov 10 12:28:20 UTC 2011 - saschpe@suse.de + +- Drop files with propriatery license (diameter and xmerl) (bnc#728667) + +------------------------------------------------------------------- +Mon Oct 10 20:20:58 UTC 2011 - kruber@zib.de + +- updated to R14B04 release + + mainly a stabilization of the R14B03 release + (but as usual there is some new functionality as well) + +------------------------------------------------------------------- +Thu Sep 29 23:47:56 UTC 2011 - saschpe@suse.de + +- BuildRequire java-1_6_0-openjdk-devel on 12.1 or newer, + java-1_6_0-sun was dropped +- Added a spec file license header (needed for Factory) +- No need to require %{version}-%{release}, %{version} is enough +- Remove outdated sections (%clean), use %make_install macro +- Don't package INSTALL file + +------------------------------------------------------------------- +Wed May 25 23:45:33 UTC 2011 - kruber@zib.de + +- updated to R14B03 release + + Highlights from R14B03: + * Diameter is a brand new application in this release. + The application support the diameter protocol specified in + RFC 3588 and is intended to provide an Authentication, + Authorization and Accounting (AAA) framework for applications. + * The documentation for stdlib and kernel now uses type + specifications from the source modules which should guarantee + that the documentation and code are consistent with regard to + the type information. + + Higlights from R14B02: + * OTP-8525 It is now possible to use Erlang specifications and + types in EDoc documentation. + * OTP-8768 All tests in Erlang/OTP have been converted to be run + with Common Test as the backend instead of Test Server + * OTP-8941 The previously experimental halfword emulator is now + official (it is not supported by HiPE though). + * OTP-9065 Dependency generation for Makefiles has been added + to the erts compiler and erlc + + Higlights from R14B01: + * OTP-8922 new ETS option compressed + * OTP-8926 new function inet:getifaddrs/0 modeled after C library + function getifaddrs() on BSD and Linux + (replaces inet:getiflist/0 and inet:ifget/2) + +------------------------------------------------------------------- +Mon Feb 14 10:52:49 UTC 2011 - mrueckert@suse.de + +- fix operator in some recommends + +------------------------------------------------------------------- +Mon Sep 27 12:26:56 UTC 2010 - kruber@zib.de + +- updated to R14B release + + Higlights: + * OTP-8544: re-writted large parts of the ethread library + * OTP-8763: auto-imported the following BIFs: + monitor/2, monitor/3, demonitor/2, demonitor/3, error/1, + error/2, integer_to_list/2, list_to_integer/2 + +------------------------------------------------------------------- +Fri Jun 4 10:10:52 UTC 2010 - kruber@zib.de + +- fixed parsing of the TOOLS_VERSION (fixes wrong erlang.el file + for emacs) +- also made sure that this could not happen with the other version + extractions + +------------------------------------------------------------------- +Mon May 3 12:35:11 UTC 2010 - kruber@zib.de + +- instead of removing all sources, create a sub-package with them +- include java_src and c_src as well +- fixed tv being packaged twice + +------------------------------------------------------------------- +Mon May 3 08:06:35 UTC 2010 - kruber@zib.de + +- added a fix from Arch Linux for their bug 17001 (wx not working) +- install common_test helper script per default + +------------------------------------------------------------------- +Tue Mar 23 08:30:46 UTC 2010 - aj@suse.de + +- Split up packages so that tcl/tk and wxGTK requirements are in sub + packages. +- Do not package erlang sources. +- Link against shared zlib. + +------------------------------------------------------------------- +Mon Mar 1 2010 kruber@zib.de + +- fixed emacs support + +------------------------------------------------------------------- +Thu Feb 25 2010 kruber@zib.de + +- update to R13B04, highlights: + * documentation can now be built from the source + * enhanced Native Implemented Functions (NIFs) (but still beta) + * enhanced garbage collection of binaries + * support for user defined prompt in the shell + * enhanced cross compilation support +- clean repo from old versions +- added emacs erlang support +- reduced package size (hardlink duplicates) + +------------------------------------------------------------------- +Thu Nov 26 2009 kruber@zib.de + +- update to R13B03, highlights: + * Native Implemented Functions (NIFs) still experimental but very useful. + * The documentation is built in a new way using xsltproc and Apache FOP. + The layout is changed both in HTML and PDF versions. This is the first step, + more changes and improvements will come in the following releases. + +------------------------------------------------------------------- +Mon Oct 12 2009 nico.laus.2001@gmx.de + +- update to R13B02, highlights: + * Dialyzer can now refer to types defined in another module, using the syntax + Module:Type(). + * There is a new function file:read_line/1 to facilitate reading entire lines + in raw mode. + * There is new section in the Efficiency Guide about drivers. +------------------------------------------------------------------- +* Thu Aug 20 2009 nico.laus.2001@gmx.de + +- use RPM_OPT_FLAGS for distributions other than openSUSE 11.0 or Fedora 9 + (adding this for those was not possible due to a bug in GCC) + +------------------------------------------------------------------- +* Sat Aug 1 2009 alex@simonov.in.ua + +- update to R13B01 +- clean repo from old versions +- integrated compiler patch that fixes an "Internal consistency check failed" error + see http://www.erlang.org/cgi-bin/ezmlm-cgi?2:mss:1335:200906:hbcibacodggnfnj +- version of java must be equal or great then 1.5.0 + +------------------------------------------------------------------- +Tue Feb 10 2009 alex@simonov.in.ua + +- add OTP-7738 patch +A process being garbage collected via the garbage_collect/1 +BIF or the check_process_code/2 BIF didn't handle message +receive and resume correctly during the garbage collect. +When this occurred, the process returned to the state it had +before the garbage collect instead of entering the new state. + +------------------------------------------------------------------- +* Wed Dec 25 2008 + +- fix build on SLE-10 + +------------------------------------------------------------------- +* Wed Dec 24 2008 + +- fix build jinterface, set javac target to 1.5 +- remove depend on gcc 4.3.3 +- add smp support +- add hipe support +- add kernel poll support +- add rpmlint file +- split java interface into separate package + +------------------------------------------------------------------- +Tue Dec 2 2008 + +- update to R12B-5 +- use GCC >= 4.3.3 for openSUSE 11 + +------------------------------------------------------------------- +Tue Oct 30 2007 mrueckert@suse.de +- fix ssl build + +------------------------------------------------------------------- +Tue Sep 25 2007 mrueckert@suse.de +- update to R11B-5 + diff --git a/erlang.spec b/erlang.spec new file mode 100644 index 0000000..43517e1 --- /dev/null +++ b/erlang.spec @@ -0,0 +1,565 @@ +# +# spec file for package erlang +# +# Copyright (c) 2024 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%{!?make_build:%{expand: %%global make_build %{make} %%{?_smp_mflags}}} +%define epmd_home %{_var}/lib/epmd +#Compat macro for new _fillupdir macro introduced in Nov 2017 +%if ! %{defined _fillupdir} + %define _fillupdir %{_localstatedir}/adm/fillup-templates +%endif +Name: erlang +Version: 27.1.3 +Release: 0 +Summary: General-purpose programming language and runtime environment +License: Apache-2.0 +URL: https://www.erlang.org +Source0: https://github.com/erlang/otp/archive/OTP-%{version}.tar.gz +# The link comes from ./make/ex_doc_link file +Source1: https://github.com/elixir-lang/ex_doc/releases/download/v0.34.1/ex_doc_otp_26 +Source3: %{name}-rpmlintrc +Source5: erlang.sysconfig +Source6: macros.erlang +Source7: epmd.service +Source8: epmd.socket +Source9: README.SUSE +Source10: epmd-user.conf +# PATCH-MISSING-TAG -- See http://en.opensuse.org/openSUSE:Packaging_Patches_guidelines +Patch0: otp-R16B-rpath.patch +# PATCH-FIX-OPENSUSE erlang-not-install-misc.patch - matwey.kornilov@gmail.com -- patch from Fedora, this removes unneeded magic +Patch4: erlang-not-install-misc.patch +BuildRequires: Mesa-devel +BuildRequires: autoconf +BuildRequires: dejavu-fonts +BuildRequires: fdupes +BuildRequires: fop +BuildRequires: gcc-c++ +BuildRequires: java-devel +BuildRequires: openssh +BuildRequires: openssl-devel +BuildRequires: pkgconfig +BuildRequires: sysuser-tools +BuildRequires: update-alternatives +BuildRequires: wxWidgets-devel >= 3.1 +BuildRequires: xsltproc +BuildRequires: pkgconfig(krb5) +BuildRequires: pkgconfig(libsystemd) +BuildRequires: pkgconfig(ncurses) +BuildRequires: pkgconfig(odbc) +BuildRequires: pkgconfig(tcl) +BuildRequires: pkgconfig(tk) +# not set up to be built with position independend executable support +#!BuildIgnore: gcc-PIE +Requires: erlang-epmd +%if 0%{?rhel} >= 7 +%undefine _missing_build_ids_terminate_build +%endif + +%description +Erlang is a general-purpose programming language and runtime +environment. Erlang has built-in support for concurrency, distribution +and fault tolerance. Erlang is used in several large telecommunication +systems from Ericsson. + +%package debugger +Summary: A debugger for debugging and testing of Erlang programs +Requires: %{name} = %{version} +Requires: %{name}-wx = %{version} + +%description debugger +A debugger for debugging and testing of Erlang programs. + +%package dialyzer +Summary: A DIscrepany AnaLYZer for ERlang programs +Requires: %{name} = %{version} +Requires: %{name}-wx = %{version} +Requires: graphviz + +%description dialyzer +A DIscrepany AnaLYZer for ERlang programs. + +%package diameter +Summary: Main API of the Diameter application +Requires: %{name} = %{version} + +%description diameter +This module provides the interface with which a user can implement a Diameter +node that sends and receives messages using the Diameter protocol as defined in +RFC 6733. + +%package doc +Summary: Erlang documentation +Requires: %{name} = %{version} + +%description doc +Documentation for Erlang. + +%package epmd +Summary: Erlang Port Mapper daemon +Requires: %{name} = %{version} +Requires(post): %fillup_prereq +%{sysusers_requires} + +%description epmd +The Erlang Port Mapper daemon acts as a name server on all hosts involved in distributed Erlang computations. + +%package et +Summary: An event tracer for Erlang programs +Requires: %{name} = %{version} +Requires: %{name}-wx = %{version} + +%description et +An event tracer for Erlang programs. + +%package jinterface +Summary: Erlang Java Interface +Requires: %{name} = %{version} +Requires: java >= 1.6.0 + +%description jinterface +JInterface module for accessing erlang from Java + +%package reltool +Summary: A release management tool +Requires: %{name} = %{version} +Requires: %{name}-wx = %{version} + +%description reltool +Reltool is a release management tool. It analyses a given +Erlang/OTP installation and determines various dependencies +between applications. The graphical frontend depicts the +dependencies and enables interactive customization of a +target system. The backend provides a batch interface +for generation of customized target systems. + +%package observer +Summary: A GUI tool for observing an erlang system +Requires: %{name} = %{version} +Requires: %{name}-wx = %{version} + +%description observer +The observer is gui frontend containing various tools to inspect a system. +It displays system information, application structures, process information, +ets or mnesia tables and a frontend for tracing with ttb. + +%package src +Summary: Erlang/OTP applications sources +Requires: %{name} = %{version} + +%description src +Erlang sources for all the applications in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package debugger-src +Summary: Erlang/OTP debugger application sources +Requires: %{name}-debugger = %{version} + +%description debugger-src +Erlang sources for the debugger application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package dialyzer-src +Summary: Erlang/OTP dialyzer application sources +Requires: %{name}-dialyzer = %{version} + +%description dialyzer-src +Erlang sources for the dialyzer application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package diameter-src +Summary: Erlang/OTP Diameter application sources +Requires: %{name}-diameter = %{version} + +%description diameter-src +Erlang sources for the Diameter application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package et-src +Summary: Erlang/OTP et application sources +Requires: %{name}-et = %{version} + +%description et-src +Erlang sources for the et application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package jinterface-src +Summary: Erlang/OTP jinterface application sources +Requires: %{name}-jinterface = %{version} + +%description jinterface-src +Erlang sources for the jinterface application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package reltool-src +Summary: Erlang/OTP reltool application sources +Requires: %{name}-reltool = %{version} + +%description reltool-src +Erlang sources for the reltool application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package observer-src +Summary: Erlang/OTP observer application sources +Requires: %{name}-observer = %{version} + +%description observer-src +Erlang sources for the observer application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating embedded systems. + +%package wx-src +Summary: Erlang/OTP wx application sources +Requires: %{name}-wx = %{version} + +%description wx-src +Erlang sources for the wx application in the Erlang/OTP system. +They are useful for educational purpose and as a base for creating +embedded systems. + +%package wx +Summary: A library for wxWidgets support in Erlang +Requires: %{name} = %{version} +Requires: wxWidgets >= 2.8 + +%description wx +A Graphics System used to write platform independent user interfaces. + +%prep +%setup -q -n otp-OTP-%{version} +%patch -P 0 -p1 -b .rpath +%patch -P 4 -p1 +cp %{SOURCE9} . +install -m 0755 %{SOURCE1} ./bin/ex_doc + +# enable dynamic linking for ssl +sed -i 's|SSL_DYNAMIC_ONLY=no|SSL_DYNAMIC_ONLY=yes|' erts/configure +# Remove shipped zlib sources +#rm -f erts/emulator/zlib/*.[ch] + +# fix for arch linux bug #17001 (wx not working) +sed -i 's|WX_LIBS=`$WX_CONFIG_WITH_ARGS --libs`|WX_LIBS="`$WX_CONFIG_WITH_ARGS --libs` -lGLU"|' lib/wx/configure || return 1 + +%build +%global _lto_cflags %{_lto_cflags} -ffat-lto-objects +export CFLAGS="%{optflags} -fno-strict-aliasing" +export CXXFLAGS=$CFLAGS +export LANG="en_US.UTF-8" + +%configure \ + --enable-systemd \ + --with-ssl=%{_prefix} \ + --enable-threads \ + --enable-smp-support \ + --enable-kernel-poll \ + --enable-shared-zlib +# clean stalled files before rebuild them +%make_build clean +%make_build +# to build the docs, just compiled erlang is required +PATH=$PWD/bin:$PATH ERL_TOP=$TMP_ERL_TOP %make_build docs + +%sysusers_generate_pre %{SOURCE10} epmd epmd-user.conf + +%check +# Disable tests by default, they are slow and have many false positives. +#PATH=$PWD/bin:$PATH make test + +%install +%make_install install-docs + +export TOOLS_VERSION=`ls %{buildroot}%{_libdir}/erlang/lib/ |grep ^tools- | sed "s|tools-||"` + +# clean up +find %{buildroot}%{_libdir}/erlang -perm 0775 | xargs chmod -v 0755 +find %{buildroot}%{_libdir}/erlang -name Makefile | xargs chmod -v 0644 +find %{buildroot}%{_libdir}/erlang -name \*.bat | xargs rm -fv +find %{buildroot}%{_libdir}/erlang -name index.txt.old | xargs rm -fv +find %{buildroot}%{_libdir}/erlang -type d -path '*/priv/obj' -print | xargs rm -rfv +find %{buildroot}%{_libdir}/erlang -name '.build' -print | xargs rm -rfv + +# doc +mkdir -p erlang_doc +mv %{buildroot}%{_libdir}/erlang/doc ./erlang_doc +find %{buildroot}%{_libdir}/erlang -maxdepth 4 -name info -or -type d -and -path '%{buildroot}%{_libdir}/**/doc/*' -and -not -name chunks -prune | while read S;do D=`echo $S | sed -e 's|%{buildroot}%{_libdir}/erlang|erlang_doc|'`; B=`dirname $D`; mkdir -p $B; mv $S $D; done +# compress man pages ... +find %{buildroot}%{_libdir}/erlang/man -type f -exec gzip {} + + +#make link to OtpErlang-*.jar in %%{_javadir} +mkdir -p %{buildroot}%{_javadir} +cd %{buildroot}%{_javadir} +export JINTERFACE_VERSION=`ls %{buildroot}%{_libdir}/erlang/lib/ |grep ^jinterface- | sed "s|jinterface-||"` +ln -sf ../../%{_lib}/erlang/lib/jinterface-$JINTERFACE_VERSION/priv/OtpErlang.jar OtpErlang-$JINTERFACE_VERSION.jar +cd - + +# The man-pages for binaries are safe to move to %{_mandir}, others may conflict with other packages +mkdir -p %{buildroot}%{_mandir}/man1 +for link in $(ls %{buildroot}%{_libdir}/erlang/man/man1/); do + ln -s %{_libdir}/erlang/man/man1/$link %{buildroot}%{_mandir}/man1/$link +done + +# emacs: automatically load support for erlang +# http://lists.mandriva.com//bugs/2007-08/msg00930.php +mkdir -p %{buildroot}%{_datadir}/emacs/site-lisp +cat > %{buildroot}%{_datadir}/emacs/site-lisp/erlang.el << EOF +(setq load-path (cons "%{_libdir}/erlang/lib/tools-$TOOLS_VERSION/emacs" load-path)) +(add-to-list 'load-path "%{_datadir}/emacs/site-lisp/ess") +(load-library "erlang-start") +EOF + +# hardlink duplicates: +find . -name "start_erl*" | xargs chmod 755 +%fdupes %{buildroot}/%{_libdir}/erlang +# %%doc macro copies the files to the package doc dir, hardlinks thus don't work +%fdupes -s erlang_doc + +install -d -m 0750 %{buildroot}%{epmd_home} +install -d -m 0755 %{buildroot}%{_sbindir} +install -D -m 0644 %{SOURCE7} %{buildroot}%{_unitdir}/epmd.service +install -D -m 0644 %{SOURCE8} %{buildroot}%{_unitdir}/epmd.socket +ln -s service %{buildroot}%{_sbindir}/rcepmd +install -D -m 0644 %{SOURCE6} %{buildroot}%{_rpmmacrodir}/macros.erlang +mkdir -p %{buildroot}%{_sysusersdir} +install -m 0644 %{SOURCE10} %{buildroot}%{_sysusersdir} + +%pre epmd -f epmd.pre +%service_add_pre epmd.service epmd.socket + +%post epmd +%fillup_only erlang +%service_add_post epmd.service epmd.socket + +%preun epmd +%service_del_preun epmd.service epmd.socket + +%postun epmd +%service_del_postun epmd.service epmd.socket + +%files +%license LICENSE.txt +%doc AUTHORS README.md +%doc README.SUSE +%{_bindir}/* +%exclude %{_bindir}/dialyzer +%exclude %{_bindir}/epmd +%dir %{_libdir}/erlang +%dir %{_libdir}/erlang/lib/ +%exclude %{_libdir}/erlang/lib/*/doc/chunks +%exclude %{_libdir}/erlang/lib/*/src +%exclude %{_libdir}/erlang/lib/*/c_src +%exclude %{_libdir}/erlang/lib/*/java_src +%dir %{_libdir}/erlang/bin/ +%{_libdir}/erlang/bin/* +%exclude %{_libdir}/erlang/bin/dialyzer +%exclude %{_libdir}/erlang/bin/epmd +%dir %{_libdir}/erlang/erts-*/ +%dir %{_libdir}/erlang/erts-*/bin/ +%{_libdir}/erlang/erts-*/* +%exclude %{_libdir}/erlang/erts-*/bin/dialyzer +%exclude %{_libdir}/erlang/erts-*/bin/epmd +%dir %{_libdir}/erlang/lib/asn1-*/ +%{_libdir}/erlang/lib/asn1-*/* +%dir %{_libdir}/erlang/lib/common_test-*/ +%{_libdir}/erlang/lib/common_test-*/* +%dir %{_libdir}/erlang/lib/compiler-*/ +%{_libdir}/erlang/lib/compiler-*/* +%dir %{_libdir}/erlang/lib/crypto-*/ +%{_libdir}/erlang/lib/crypto-*/* +%dir %{_libdir}/erlang/lib/edoc-*/ +%{_libdir}/erlang/lib/edoc-*/* +%dir %{_libdir}/erlang/lib/eldap-*/ +%{_libdir}/erlang/lib/eldap-*/* +%dir %{_libdir}/erlang/lib/erl_interface-*/ +%{_libdir}/erlang/lib/erl_interface-*/* +%dir %{_libdir}/erlang/lib/erts-*/ +%{_libdir}/erlang/lib/erts-*/* +%dir %{_libdir}/erlang/lib/eunit-*/ +%{_libdir}/erlang/lib/eunit-*/* +%dir %{_libdir}/erlang/lib/ftp-*/ +%{_libdir}/erlang/lib/ftp-*/* +%dir %{_libdir}/erlang/lib/inets-*/ +%{_libdir}/erlang/lib/inets-*/* +%dir %{_libdir}/erlang/lib/kernel-*/ +%{_libdir}/erlang/lib/kernel-*/* +%dir %{_libdir}/erlang/lib/megaco-*/ +%{_libdir}/erlang/lib/megaco-*/* +%dir %{_libdir}/erlang/lib/mnesia-*/ +%{_libdir}/erlang/lib/mnesia-*/* +%dir %{_libdir}/erlang/lib/odbc-*/ +%{_libdir}/erlang/lib/odbc-*/* +%dir %{_libdir}/erlang/lib/tftp-*/ +%{_libdir}/erlang/lib/tftp-*/* +%dir %{_libdir}/erlang/lib/os_mon-*/ +%{_libdir}/erlang/lib/os_mon-*/* +%dir %{_libdir}/erlang/lib/parsetools-*/ +%{_libdir}/erlang/lib/parsetools-*/* +%dir %{_libdir}/erlang/lib/public_key-*/ +%{_libdir}/erlang/lib/public_key-*/* +%dir %{_libdir}/erlang/lib/runtime_tools-*/ +%{_libdir}/erlang/lib/runtime_tools-*/* +%dir %{_libdir}/erlang/lib/sasl-*/ +%{_libdir}/erlang/lib/sasl-*/* +%dir %{_libdir}/erlang/lib/snmp-*/ +%{_libdir}/erlang/lib/snmp-*/* +%dir %{_libdir}/erlang/lib/ssh-*/ +%{_libdir}/erlang/lib/ssh-*/* +%dir %{_libdir}/erlang/lib/ssl-*/ +%{_libdir}/erlang/lib/ssl-*/* +%dir %{_libdir}/erlang/lib/stdlib-*/ +%{_libdir}/erlang/lib/stdlib-*/* +%dir %{_libdir}/erlang/lib/syntax_tools-*/ +%{_libdir}/erlang/lib/syntax_tools-*/* +%dir %{_libdir}/erlang/lib/tools-*/ +%{_libdir}/erlang/lib/tools-*/* +%dir %{_libdir}/erlang/lib/xmerl-*/ +%{_libdir}/erlang/lib/xmerl-*/* +%{_libdir}/erlang/man/ +%{_mandir}/man1/*.1%{?ext_man} +%{_libdir}/erlang/releases/ +%dir %{_libdir}/erlang/usr/ +%dir %{_libdir}/erlang/usr/include +%{_libdir}/erlang/usr/include/*.h +%dir %{_libdir}/erlang/usr/lib +%{_libdir}/erlang/usr/lib/*.a +%{_libdir}/erlang/Install +%{_datadir}/emacs/site-lisp/erlang.el +%{_rpmmacrodir}/macros.erlang + +%files debugger +%{_libdir}/erlang/lib/debugger-*/ +%exclude %{_libdir}/erlang/lib/debugger-*/src + +%files dialyzer +%{_bindir}/dialyzer +%{_libdir}/erlang/bin/dialyzer +%{_libdir}/erlang/erts-*/bin/dialyzer +%dir %{_libdir}/erlang/lib/dialyzer-*/ +%{_libdir}/erlang/lib/dialyzer-*/* +%exclude %{_libdir}/erlang/lib/dialyzer-*/src + +%files diameter +%dir %{_libdir}/erlang/lib/diameter-*/ +%{_libdir}/erlang/lib/diameter-*/* +%exclude %{_libdir}/erlang/lib/diameter-*/src + +%files doc +%defattr(0644,root,root,0755) +%doc erlang_doc/* +%{_libdir}/erlang/lib/*/doc/chunks +%exclude %{_libdir}/erlang/lib/debugger-*/doc/chunks +%exclude %{_libdir}/erlang/lib/dialyzer-*/doc/chunks +%exclude %{_libdir}/erlang/lib/diameter-*/doc/chunks +%exclude %{_libdir}/erlang/lib/et-*/doc/chunks +%exclude %{_libdir}/erlang/lib/reltool-*/doc/chunks +%exclude %{_libdir}/erlang/lib/observer-*/doc/chunks +%exclude %{_libdir}/erlang/lib/wx-*/doc/chunks + +%files et +%dir %{_libdir}/erlang/lib/et-*/ +%{_libdir}/erlang/lib/et-*/* +%exclude %{_libdir}/erlang/lib/et-*/src + +%files epmd +%{_bindir}/epmd +%dir %{_libdir}/erlang/ +%dir %{_libdir}/erlang/bin/ +%{_libdir}/erlang/bin/epmd +%dir %{_libdir}/erlang/erts-*/ +%dir %{_libdir}/erlang/erts-*/bin/ +%{_libdir}/erlang/erts-*/bin/epmd +%dir %attr(-,epmd,epmd) %{epmd_home} +%{_unitdir}/epmd.service +%{_unitdir}/epmd.socket +%{_sbindir}/rcepmd +%{_sysusersdir}/epmd-user.conf + +%files jinterface +%dir %{_libdir}/erlang/lib/jinterface-*/ +%{_libdir}/erlang/lib/jinterface-*/* +%exclude %{_libdir}/erlang/lib/jinterface-*/java_src +%{_javadir}/* + +%files reltool +%dir %{_libdir}/erlang/lib/reltool-*/ +%{_libdir}/erlang/lib/reltool-*/* +%exclude %{_libdir}/erlang/lib/reltool-*/src + +%files observer +%dir %{_libdir}/erlang/lib/observer-*/ +%{_libdir}/erlang/lib/observer-*/* +%exclude %{_libdir}/erlang/lib/observer-*/src + +%files wx +%dir %{_libdir}/erlang/lib/wx-*/ +%{_libdir}/erlang/lib/wx-*/* +%exclude %{_libdir}/erlang/lib/wx-*/src + +%files src +%exclude %{_libdir}/erlang/lib/erl_interface-*/src/INSTALL +%dir %{_libdir}/erlang/lib/*/src +%{_libdir}/erlang/lib/*/src/* +%dir %{_libdir}/erlang/lib/*/c_src +%{_libdir}/erlang/lib/*/c_src/* +%dir %{_libdir}/erlang/lib/*/java_src +%{_libdir}/erlang/lib/*/java_src/* +%exclude %{_libdir}/erlang/lib/debugger-*/src +%exclude %{_libdir}/erlang/lib/dialyzer-*/src +%exclude %{_libdir}/erlang/lib/diameter-*/src +%exclude %{_libdir}/erlang/lib/et-*/src +%exclude %{_libdir}/erlang/lib/jinterface-*/java_src +%exclude %{_libdir}/erlang/lib/reltool-*/src +%exclude %{_libdir}/erlang/lib/observer-*/src +%exclude %{_libdir}/erlang/lib/wx-*/src + +%files debugger-src +%dir %{_libdir}/erlang/lib/debugger-*/src +%{_libdir}/erlang/lib/debugger-*/src/* + +%files dialyzer-src +%dir %{_libdir}/erlang/lib/dialyzer-*/src +%{_libdir}/erlang/lib/dialyzer-*/src/* + +%files diameter-src +%dir %{_libdir}/erlang/lib/diameter-*/src +%{_libdir}/erlang/lib/diameter-*/src/* + +%files et-src +%dir %{_libdir}/erlang/lib/et-*/src +%{_libdir}/erlang/lib/et-*/src/* + +%files jinterface-src +%dir %{_libdir}/erlang/lib/jinterface-*/java_src +%{_libdir}/erlang/lib/jinterface-*/java_src/* + +%files reltool-src +%dir %{_libdir}/erlang/lib/reltool-*/src +%{_libdir}/erlang/lib/reltool-*/src/* + +%files observer-src +%dir %{_libdir}/erlang/lib/observer-*/src +%{_libdir}/erlang/lib/observer-*/src/* + +%files wx-src +%dir %{_libdir}/erlang/lib/wx-*/src +%{_libdir}/erlang/lib/wx-*/src/* + +%changelog diff --git a/erlang.sysconfig b/erlang.sysconfig new file mode 100644 index 0000000..d26591f --- /dev/null +++ b/erlang.sysconfig @@ -0,0 +1,20 @@ +## Path: Network/Erlang/epmd +## Description: epmd port +## Type: string +## Default: "127.0.0.1" +## ServiceRestart: epmd +# +# IPs that EPMD should listen on. +# Comma seperated +# +EPMD_ADDRESSES="127.0.0.1" + +## Path: Network/Erlang/epmd +## Description: epmd port +## Type: string +## Default: "4369" +## ServiceRestart: epmd +# +# Port that EPMD should listen on. +# +EPMD_PORT="4369" diff --git a/ex_doc_otp_26 b/ex_doc_otp_26 new file mode 100644 index 0000000..3ae3f72 Binary files /dev/null and b/ex_doc_otp_26 differ diff --git a/macros.erlang b/macros.erlang new file mode 100644 index 0000000..a3ac015 --- /dev/null +++ b/macros.erlang @@ -0,0 +1,14 @@ +# macros.erlang +# + +# suse-style macros +%erlang_dir %{_libdir}/erlang +%erlang_libdir %{_libdir}/erlang/lib + +%__erl /usr/bin/erl +%erlang_app_vsn() $(%{__erl} -noshell -eval '{ok,[{_,_,C}]}=file:consult("%{1}"), io:format(proplists:get_value(vsn,C)), halt().') +%erlang_app_name() $(%{__erl} -noshell -eval '{ok,[{_,N,_}]}=file:consult("%{1}"), io:format(N), halt().') + +# fedora compat +%_erldir %{erlang_dir} +%_erllibdir %{erlang_libdir} diff --git a/otp-R16B-rpath.patch b/otp-R16B-rpath.patch new file mode 100644 index 0000000..4bc1b78 --- /dev/null +++ b/otp-R16B-rpath.patch @@ -0,0 +1,13 @@ +Index: otp-OTP-24.0/lib/crypto/c_src/Makefile.in +=================================================================== +--- otp-OTP-24.0.orig/lib/crypto/c_src/Makefile.in ++++ otp-OTP-24.0/lib/crypto/c_src/Makefile.in +@@ -136,7 +136,7 @@ endif + endif + + ifeq ($(DYNAMIC_OR_WIN_CRYPTO_LIB),yes) +-SSL_DED_LD_RUNTIME_LIBRARY_PATH = @SSL_DED_LD_RUNTIME_LIBRARY_PATH@ ++SSL_DED_LD_RUNTIME_LIBRARY_PATH = + CRYPTO_LINK_LIB=$(SSL_DED_LD_RUNTIME_LIBRARY_PATH) -L$(SSL_LIBDIR) -l$(SSL_CRYPTO_LIBNAME) + EXTRA_FLAGS = -DHAVE_DYNAMIC_CRYPTO_LIB + else