| Index | index by Group | index by Distribution | index by Vendor | index by creation date | index by Name | Mirrors | Help | Search |
| Name: erlang-wx | Distribution: openSUSE Tumbleweed |
| Version: 26.2.5.2 | Vendor: openSUSE |
| Release: 1.1 | Build date: Sat Aug 3 09:23:34 2024 |
| Group: Unspecified | Build host: reproducible |
| Size: 12923960 | Source RPM: erlang-26.2.5.2-1.1.src.rpm |
| Packager: http://bugs.opensuse.org | |
| Url: https://www.erlang.org | |
| Summary: A library for wxWidgets support in Erlang | |
A Graphics System used to write platform independent user interfaces.
Apache-2.0
* Sat Aug 03 2024 matwey.kornilov@gmail.com
- Changes for 26.2.5.2:
* erts: When no time warp mode was enabled, a smaller Erlang
monotonic time could be read than a previously read time, i.e.,
breaking the monotonic property. The runtime system will abort
when detecting an issue like this since OTP 24.3.4.17 and OTP
25.0. Up until OTP 25 no time warp mode is the default. As of
OTP 26 multi time warp mode is the default.
* erts: A scheduler thread could get stuck when deleting a memory
allocator carrier when adjacent carriers were deleted and/or
inserted simultaneously by other schedulers. This in turn could
cause the other schedulers to get stuck as well.
* crypto: Add warning in documentation to avoid crypto:start/0 as
it does not work for FIPS mode. Use application:start(crypto)
instead.
* stdlib: Fixed a bug that caused the shell completion to crash
when keyword and tuple appeared on the same line.
* ssl: When the default value for signature_algs is used, default
the signature_algs_cert to the default value + rsa_pkcs1_sha1
to allow this algorithms for certificates but not for the TLS
protocol. This is for better interoperability. If
signature_algs is set explicitly signature_algs_cert must also
be set explicitly if they should be different.
- Changes for 26.2.5.1:
* erts: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout =
0 on Windows could cause a (case clause) crash if data is
immediately available.
* erts: When a port command crashed in the inet driver during
gen_tcp:send/2, a monitor 'DOWN' message could be left
lingering in the caller's mailbox. This has now been fixed.
* erts: 'DOWN' messages originating from a monitored port,
contained the atom process instead of the atom port as the
third element when the exit reason was not an immediate term.
* public_key: Fix bug in dnsName constraint check, could cause
valid cert to be considered bad during path validation.
* diameter: Pick peer can now also handle request of type
[#]diameter_packet{}.
* kernel: A call to socket:[recv|recvfrom|recvmsg]/* with Timeout
= 0 on Windows could cause a (case clause) crash if data is
immediately available.
* kernel: Open a disk_log file and combining head_func with
rotate options did not work.
* ssh: With this change, ssh client will automatically adjust
transfer window size for commands executed remotely over SSH.
* ssh: With this change, race condition between connection
closing and automatic window adjustment is fixed.
* ssl: Check for TLS-1.3 support should check minimum
requirements.
* ssl: If both TLS-1.3 and TLS-1.2 is supported and TLS-1.2
negotiated convert TLS-1.3 ECDSA schemes to TLS-1.2 hash and
signature pairs for increased interoperability.
* ssl: TLS-1.3 negotiation now uses SNI based options correctly
instead of ignoring them.
* ssl: Make it easier to distinguish between a invalid signature
and unsupported signature.
* ssl: Enhance ALERT logs to help understand what causes the
alert.
- Changes for 26.2.5:
* erts: gen_sctp:send/3,4 now waits for the send to complete
instead of returning an OS result such as {error, ewouldblock}.
* erts: ETS functions did not properly handle keys containing
maps, sometimes matching too many or too few objects.
* erts: Fix CPU quota determination for cgroups. The bug was
introduced through OTP-18999.
* erts: Added a warning to open_port/2 regarding the BadBatBut
attack affecting Windows.
* dialyzer: Fixed an issue with bitstring type inference on
segments following UTF-8/16/32 segments.
* kernel: Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
* kernel: Fix calls to blocking application APIs to throw an
exception with reason terminating if called when the system is
terminating. This is done in order to avoid deadlocks during
shutdown or restart.
* stdlib: Fix shell expansion of -type a() :: $a. in the erlang
shell.
* stdlib: Fix the shell Job Control Mode to not crash when typing
TAB or CTRL+R.
* ssl: Fix certificate authorities check so that CA closest to
peer is not lost. It could manifest itself in a failed
connection as the client failed to realize it had a valid
certificate chain to send to the server.
* ssl: ssl:signature_algs/2 did not list some legacy algorithm
schemes correctly when listing all algorithms available.
* mnesia: Mnesia could crash during startup if del_table_copy/2
and add_table_copy/3 was invoked when the table was loading.
* Tue Apr 16 2024 Simon Lees <sflees@suse.de>
- Changes for 26.2.4
* asn1: An ASN.1 module that contains named BIT STRING values
would fail to compiled if both the BER and JER
back-ends were enabled.
* Compiler: In rare circumstances, the compiler code generate
unsafe code for a bit syntax match.
* Compiler: In rare circumstances, binary matches that were
supposed to succeed failed.
* Compiler: Fixed a bug where a fun's environment could be
overridden by an argument in some cases.
* Crypto: Fix building with --enable-fips with OpenSSL 3 on
MacOS.
* Debugger: Guards with nested record expression could wrongly
evaluate to false.
* Diameter: Reduce the impact of calling service_info by not
counting the binaries (on the heap) info, This is done
by introducing an option, bins_info, which controls
this.
* erts: Fixed CPU quota determination for cgroup version 2
* erts: Fix faulty reduction counting in exiting process which
could cause it to do unnecessary yielding.
* erts: Fix bug in re:run/3 where if an invalid UTF-8 subject
was given, re:run could get stuck in an infinite loop.
Bug was introduced in Erlang/OTP 22.1.
* erts: On AArch64 (ARM64), Erlang code using bit syntax
construction compiled using Erlang/OTP 24 could crash
the runtime system when run in Erlang/OTP 26.2.3.
* erts: Calling erlang:trace/3 with first argument one of
ports, processes, existing_ports, existing_processes,
existing or all, could cause emulator crash if a dirty
scheduler was executing a simultaneous trace action.
* erts: Fixed an integer overflow when the monotonic time unit
reported by the operating system was greater than 10
and lower than 100 microseconds.
* erts: Fix option reuseaddr for FreeBSD 14
* erts: When a traced process executing on a dirty scheduler
received an exit signal, the dirty scheduler could use
the wrong thread specific data which could lead to a
crash.
* erts: Fixed a more or less harmless bug that caused time
correction of Erlang monotonic time to become slightly
off on Windows platforms when QueryPerformanceCounter()
was used as OS monotonic time source.
erlang:system_info(os_monotonic_time_source) now also
returns information about used resolution which not
always corresponds to the resolution of the OS
monotonic time source.
* erts: When using IPv6, classic gen_udp failed to add (group)
membership (drop was used instead).
* erts: Fix bug on Windows where "Unknown event: 2" would be
printed to the console.
* erts: Checks for monotonicity of monotonic time have been
improved so that Erlang and OS monotonic time are
checked separately.
* erts: For severe errors, when the `socket` module terminates
the Erlang VM, now an erl_crash.dump is produced, to
facilitate post mortem debugging.
* kernel: When using IPv6, classic gen_udp failed to add (group)
membership (drop was used instead).
* kernel: The check in inet_res of the RD bit has been relaxed
slightly.
* ssh: With this change, owner and group file attributes
decoding is fixed and results with value of integer
type.
* ssl: Cleanup and close all connections in DTLS when the
listen socket owner dies.
Improved IPv6 handling in DTLS.
* ssl: Fixed a crash in dtls accept.
* stdlib: Attempting to use the maybe construct in a macro
argument could crash the compiler.
- Changes for 26.2.3
* otp: Quote uninstall path in registry when installing on
windows.
* compiler: In rare circumstances, an unsafe optimization could
cause the compiler to generate incorrect code for list
matching.
* compiler: Fix the compilation server to restart if the
applications in its lib dir changes inbetween erlc
invokations.
* crypto: Fix compile error when OPENSSL_NO_DES is defined.
* crypto: The function crypto:pbkdf2_hmac will no longer block
the main schedulers. If the iteration count or block
size parameters are such that the function is likely to
take a long time to execute, the function will be
scheduled to run on a dirty CPU scheduler.
* erts: Fixed compile warning in erl_nif.c for gcc-13.
* erts: Fix C++ compile error for macros enif_select_read and
friends.
* erts: Fixed a name clash on Solaris that prevented the JIT
from being built.
* erts: Fix termcap detection on solaris.
* erts: Fix heap corruption bug that could cause runaway memory
consumption due to circular offheap list at process
exit. Other symptoms may also be possible. Bug exists
since OTP 25.0.
* erts: Do not clear tracing in old module instance if load
fails with 'not_purged'.
* erts: When exceeding the `max_heap_size` limit in a garbage
collection initiated by some bit syntax operations, the
process would not always terminate immediately.
* erts: The code server could be hanging if a module with
on_load function was loaded at the same time as another
module was purged using erlang:purge_module directly.
* erts: A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That
is, the processes was not woken up to take care of the
signal, so the signal would not be taken care of until
the process was woken by another signal. Only processes
configured with message_queue_data set to off_heap
utilize this optimization.
* erts: Fix segfault when generating crashdump containing a fun
places in persistent_term storage.
* erts: By default the JIT is disabled on Intel Macs, because
of annoying poups on macOS Sonoma. It is now possible
to explicitly enable the JIT on Intel Macs. Here is
how: ./configure --enable-jit
* kernel: Fix performance bug when using io:fread to read from
standard_io. This regression was introduced in OTP
26.0.
* kernel: A bug in the code server could cause it to crash in
some concurrent scenarios. This bug was introduced in
26.1.
* kernel: Fixed gen_udp:open/2 type spec to include already
supported module socket address types.
* kernel: Fix reading of password for ssh client when in
user_interactive mode.
* odbc: Use spec for API doc
* public_key: Hostname prefix with X number of dots should not be
accepted.
* ssh: With this change, acceptor_sup is not started for ssh
client as it is not needed in that role.
* ssh: With this change, more secure algorithms are preferred
by ssh and documentation is updated to reflect that.
* ssh: With this change, KEX strict terminal message is
emitted with debug verbosity.
* ssh: Fix reading of password for ssh client when in
user_interactive mode.
* ssl: ssl:prf/5, will start working instead of hanging in a
TLS-1.3 context if called appropriately. Note that the
implementation has changed and in OTP-27 a more
adequate API will be documented.
* ssl: Server name verification didn't work if a connection
was made with IP-address as a string.
* ssl: The fallback after "dh" ssl option was undefined was to
get "dh" from ssl options again. This is clearly wrong
and now changed to the documented fallback "dhfile" ssl
option.
* ssl: Correct default value selection for DTLS. Will only
affect users linked with really old version of
cryptolib library.
* ssl: Adhere elliptic curves with RFC 8422 pre TLS-1.3, that
is Edwards curves are added to curves that can be used
for key exchange, and documentation and implementation
of eccs/0,1 are aligned.
* ssl: Improve alert reason when ecdhe_rsa key_exchange does
not have any common curves to use
* stdlib: The help texts shown by argparse will now display
sub-command arguments in the correct order.
* stdlib: Clarified the argparse documentation regarding the
user-defined help template.
* stdlib: Fix shell expansion to not crash when expanding invalid
using invalid atoms.
* wx: Add option to silence wx depracation macros.
- Changes for 26.2.2
* common_test: Fix how CT finds Erlang/OTP releases for compatability
testing. This functionality is only used to test
Erlang/OTP.
* erl_interface: Fix bug where the system installed openssl/md5.h would
be confused with the vendored md5.h.
* erts: 32-bit runtime systems on most Unix like platforms
could crash if a BIF timer was set with a huge timeout
of more than 68 years into the future. In order for the
crash to occur, the huge timer (at a later time than
when it was set) had to become the nearest active timer
set on the specific scheduler on which it was set. This
could not happen on a system with only one scheduler
since there would always be shorter timers in the
system.
Setting a timer larger than 49 days on Windows could
under rare circumstances cause the timeout to be
delayed.
* erts: Fix bug where the system installed openssl/md5.h would
be confused with the vendored md5.h.
* erts: The JIT has now been disabled on x86 Macs to prevent
annoying the "verifying shm-xyz" popups introduced in
MacOS Sonoma.
ARM Macs are unaffected.
* erts: Garbage collection of a process on a dirty scheduler
could collide with signal handling for that process
causing a crash of the runtime system. This bug was
introduced in OTP 25.3.2.8 and OTP 26.2.
* kernel: Fix group (that is the shell) to properly handle when
an get_until callback function returned {done, eof, []}
when an eof was detected.
* ssh: With this change, Curve25519 and Curve448 KEX methods
become most preferred (related to RFC8731).
* ssl: Legacy name handling could cause interop problems
between TLS-1.3/1.2 client and TLS-1.2 server.
- Fix for bsc#1222591
* Thu Feb 22 2024 Dominique Leuenberger <dimstar@opensuse.org>
- Use %patch -P N instead of deprecated %patchN.
* Tue Jan 23 2024 Simon Lees <sflees@suse.de>
- Disable rpmlint tests on SLE-15 where they currently fail
* Tue Jan 23 2024 Simon Lees <sflees@suse.de>
- This codestream wasn't affected by bsc#1207113
* Thu Jan 11 2024 Simon Lees <sflees@suse.de>
- Changes for 26.2.1:
* erts: Removed unnecessary PCRE source tar-ball.
* ssh: With this change (being response to CVE-2023-48795),
ssh can negotiate "strict KEX" OpenSSH extension with
peers supporting it; also
'chacha20-poly1305@openssh.com' algorithm becomes a
less preferred cipher.
If strict KEX availability cannot be ensured on both
connection sides, affected encryption modes(CHACHA and
CBC) can be disabled with standard ssh configuration.
This will provide protection against vulnerability, but
at a cost of affecting interoperability. See
Configuring algorithms in SSH. (bsc#1218192, CVE-2023-48795)
- Changes for 26.2:
* all: Replaced unintentional Erlang Public License 1.1
headers in some files with the intended Apache License
2.0 header.
* otp: The removal of the deprecated slave module, originally
planned for OTP 27, has been postponed to OTP 29.
* asn1: Fix benign warning from gcc 11 about mismatching call
to free().
* crypto: Enable engine support for OpenSSL versions 3.
* edoc: Emit <code> instead of <tt>.
- Disable test suite for now, it has many false positives and
takes a very long time.
* Wed Oct 25 2023 matwey.kornilov@gmail.com
- Changes for 26.1.2:
* erts: If the external term format encoding of an argument list
part of a distributed spawn operation was faulty, the newly
spawned remote process could misbehave. The misbehavior
included hanging or interpret an incoming message as an
argument list to use. This was very unlikely to happen unless
using an alternate implementation of the distribution protocol
which made a faulty encoding of the argument list. The child
process will now detect this error and terminate before
executing the user specified code.
* erts: Fix bugs where if the body of a matchspec would return a
map with a variable ('$1', '$_' etc) as one of the keys or
values and the variable was not an immidiate, the term would
not be copied to the receiving processes heap. This would later
corrupt the term in the table as the GC could place move
markers in it, which in turn would cause the VM to crash. Bug
has been present for since OTP 17.0.
* xmerl: The xmerl version 1.3.32 was released in OTP 26.0.1, but
the incorrect version number of 1.3.31.1 was used for it. This
incorrect version number continued to appear in OTP 26.0.2, OTP
26.1, and OTP 26.1.1. The actual xmerl code in these OTP
versions however corresponds to xmerl version 1.3.32.
- Changes for 26.1.1:
* wx: The wx application would fail to build on macOS with Xcode
15.
* compiler: The compiler could become extremely slow for modules
containing huge functions.
* stdlib: Garbage collect the shell process when reducing the
amount of saved history and results.
- Changes for 26.1:
* crypto: Fix VM crash caused by crypto being purged and reloaded
(by init:restart for example) on OS with musl libc (such as
Alpine linux).
* crypto: Improved understanding of LibreSSL versions. Support
chacha20 and chacha20_poly1305 for LibreSSL 3.7. Reflect
removal of support for the DSS/DSA algorithm which was done in
LibreSSL 2.6.1.
* crypto: FIPS supported by crypto for OpenSSL 3.0.* and 3.1.*.
* asn1: The ASN.1 compiler would ignore a constraint such as
(SIZE (1..4), ...), causing incorrect behavior of the encoding
and decoding function for the PER and UPER backends. Corrected
to handle the constraint in the same way as (SIZE (1..4, ...)).
* asn1: The JER backend has been internally refactored in a way
that is compatible for applications that use the documented
API. However, for a group of ASN.1 modules that depend on each
other (for example, S1AP-PDU-Descriptions, S1AP-Contents, and
so on), all modules in the group must be recompiled if on of
the group members is recompiled.
* observer: Closing the trace log window via the menu did not
work.
* erts: maps:put with existing key and identical value was not
optimized as a no-op correctly if having the same 32-bit hash
as another key in the map. In practice very rare and harmless.
* erts: Fixed an issue with truncated crash slogans on failed
emulator start.
* erts: Fixed a bug where the emulator was unable to determine
the current cgroup CPU quota.
* erts: A process optimized for parallel signal delivery could
under some circumstances lose wakeup information. That is, the
processes was not woken up to take care of the signal, so the
signal would not be taken care of until the process was woken
by another signal. Only processes configured with
message_queue_data set to off_heap utilize this optimization.
* erts: Function socket:close/1 could cause a VM crash on
Windows.
* erts: Fixed a bug in the ARM JIT where it could accidentally
add garbage trailing bits when creating bitstrings whose size
wasn't an even multiple of 8 bits.
* erts: Fix erlang:system_info/1 documentation to show correct
types.
* erts: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* erts: Fix compilation with GNU termcap.
* erts: Delivery time of message signals to a process not
executing any receive expressions could become very long,
potentially infinite. For example, a process checking for
messages using process_info(self(), message_queue_len) or
process_info(self(), messages) and avoiding to execute a
receive expression matching on messages could be very slow in
detecting new messages. Note that you are still discouraged
from using process_info() this way. A process that wants to
check if there are messages available to handle should execute
a receive expression matching on messages.
* erts: On AArch64 (ARM64), when calculating both the quotient
and remainder with a divisor begin a power two, the remainder
could be incorrectly calculated.
* erts: Fix bug causing "magic" references in a compressed ETS
table to not keep the referred object alive. The symptom would
be the referred object being garbage collected prematurely and
the reference appearing stale, not referring to anything.
Examples of such magically referred objects are atomics and NIF
resources.
* erts: Matching out short bitstrings with a fixed size not
divisible by 8 could could lead to the runtime system
terminating with an "Overrun heap and stack" error.
* erts: A constant flow of incoming non-message signals could
prevent a process needing to execute dirty from doing so.
* erts: A BEAM file usually contains a chunk with the tag "Type"
containing type information that can be used by the JIT. The
beam_lib:strip/1 takes care to preserve that chunk, but a
build/release tool that does customized stripping could
accidentally remove the chunk. Loading a BEAM file without the
"Type" chunk could cause incorrect behavior of the loaded code.
* erts: gen_udp:recv/* for Unix Domain Socket in binary mode and
passive mode has been fixed to not crash.
* erts: The cleanup operation of not yet delivered signals to a
terminated process yielded excessively.
* erts: Fixed minor hashing issue with the local option of
term_to_binary()/term_to_iovec().
* erts: Update gen_tcp_socket and gen_udp_socket to handle
'completion' (socket on Windows).
* erts: Add support for Unix Domain Sockets (only for STREAM
sockets) on Windows for 'socket'.
* erts: In Erlang/OTP 27, by default escripts will be compiled
before being executed. That means that the compiler application
must be installed. It is possible to force the escript to be
interpreted by adding the directive -mode(interpret). to the
escript file. In Erlang/OTP 28, support for interpreting an
escript will be removed.
* erts: Add basic support for socket ioctl on Windows.
* erts: Removed erts/etc/darwin/Info.plist, as it is no longer
necessary after macos 10.12
* erts: Add support for (Windows) socket option exclusiveaddruse.
* erts: [socket] Add support for the 'nopush' option.
* erts: Add support for socket option 'BSP STATE'.
* erts: Add tcp socket options 'keepcnt', 'keepidle' and
'keepintvl'.
* erts: Add support for misc (Windows) socket options
('max_msg_size' and 'maxdg').
* compiler: The compiler could run forever when compiling a call
to is_record/3 with a huge positive tuple size. The call
is_record(A, a, 0) would crash the compiler when used in a
function body. When used in a guard the compiler would emit
incorrect code that would accept {a> as a record.
* compiler: Fixed a bug that caused dialyzer to crash when
analyzing bogus code that contained the literal atom undefined
in segment sizes.
* compiler: The compiler would crash when compiling some modules
that contained a call to erlang:load_nif/2.
* compiler: Fixed a bug that caused the compiler to crash on
legal code.
* compiler: The compiler could crash when attempting to compile a
call to is_list/1 in a complex expression.
* compiler: A complex guard expression using the or operator
could succeed when it was supposed to fail.
* compiler: Compiling nested try/catch and catch expression could
result in an internal compiler error.
* compiler: Using the bnot operator in a complex expression could
cause the compiler to terminate with an internal consistency
failure diagnostic.
* compiler: Fixed a bug that caused the compiler to crash in a
binary optimization pass.
* compiler: The compiler could terminate with an internal error
when attempting to compile a binary pattern that could not
possibly match.
* compiler: Fixed various performance issues related to the alias
optimization pass.
* erl_docgen: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* mnesia: Do not delete old backup file if the new backup fails.
* megaco: Make megaco transports handle gen_tcp | gen_udp with
socket backend on Windows (completion).
* common_test: With this change, ct_hooks manual refers to CTH
execution order section in user guide.
* common_test: With this change, Config data from
pre_end_per_testcase hook is delivered to post_end_per_testcase
callback in case of testcase timetrap or linked process crash.
* common_test: With this change, remaining references to not
supported vts tool in ct_run are removed (mainly relates to
docs and ct_run help message).
* common_test: With this change, prompt search functionality in
ct_telnet handles unicode input.
* common_test: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* stdlib: The compiler could run forever when compiling a call to
is_record/3 with a huge positive tuple size. The call
is_record(A, a, 0) would crash the compiler when used in a
function body. When used in a guard the compiler would emit
incorrect code that would accept {a> as a record.
* stdlib: Fix bug in ets:tab2file that could make it fail if
another Erlang process created the same file at the same time.
* stdlib: An {else_clause,Value} exception will now be reported
nicely in the shell.
* stdlib: Correct return value for error case, so that it matches
the documented and intended return value {error,
{already_started, pid()} when local registered names are used.
* stdlib: sys:get_state/1,2 and sys:replace_state/2,3 has been
corrected to handle a state named error as a state name, not as
a failed system callback. For the standard server behaviours
this was an issue only for gen_statem (and gen_fsm) when the
state name was error, and for gen_server if the complete state
was {error,_}.
* stdlib: Multiple problems were fixed in
filelib:safe_relative_path/2. If its second argument was a path
that contained symbolic links, an incorrect result patch could
be returned. Also, paths were sometimes falsely considered
unsafe.
* stdlib: Fix deadlock when erl.exe is used as part of a pipe on
Windows and trying to set the encoding of the standard_io
device.
* stdlib: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* stdlib: Fix h/2,3 to properly render multi-clause
documentation.
* stdlib: Timers created by timer:apply_after/4,
apply_interval/4, and apply_repeatedly/4 would silently fail to
do the apply if it was not possible to spawn a process when the
timer expired. This has now been corrected, and if the spawn
fails, the system will be taken down producing a crash dump.
* stdlib: When an Erlang source file lacked a module definition,
there would be a spurious "module name must not be empty"
diagnostic for each spec in the file.
* stdlib: The argument descriptions for option types in argparse
have been made less ambiguous.
* stdlib: Clarified the documentation of normal shutdown reason
on gen_server:call/2,3
* stdlib: Pattern matching and equivalence (=:=, =/=) comparisons
on 0.0 will now raise a warning, as it will no longer be
considered equivalent to -0.0 in OTP 27. If a match on 0.0
specifically is desired (distinct from -0.0), the warning can
be suppressed by writing +0.0 instead. The arithmetic
comparison operators are unaffected, including arithmetic
equality (==). *** POTENTIAL INCOMPATIBILITY ***
* stdlib: The semantics of the gen_{server,statem,event}
behaviour's synchronous start behaviour introduced in OTP-26.0
with OTP-18471, has been clarified in the documentation.
* stdlib: Added functionality to set a custom multiline prompt.
* stdlib: A warning for (accidental use of) Triple-Quoted Strings
has been implemented as per EEP 64. *** POTENTIAL
INCOMPATIBILITY ***
* stdlib: The keyboard shortcuts for the shell are now
configurable.
* kernel: Fixed an issue with truncated crash slogans on failed
emulator start.
* kernel: Fix shell:start_interactive function specification.
* kernel: Fix code:get_doc/1 to return missing, when it can't
find erts instead of crashing.
* kernel: Function socket:close/1 could cause a VM crash on
Windows.
* kernel: Fix deadlock when erl.exe is used as part of a pipe on
Windows and trying to set the encoding of the standard_io
device.
* kernel: Expanded the documentation about how to use the
standard_io, standard_error and user I/O devices. Added the
types io:standard_io/0, io:standard:error/0 and io:user/0.
* kernel: Fix logger's overload protection mechanism to only
fetch memory used by messages when needed.
* kernel: Fixed a number of socket-related issues causing
incompatibilities with gen_tcp and gen_udp respectively.
* kernel: gen_tcp:connect with socket address and socket (inet-)
backend fails because of missing callback function.
* kernel: The DNS RR cache used by `inet_res` has been fixed to
preserve insert order, which is beneficial when the DNS server
returns RRs in some specific order for e.g load balancing
purposes.
* kernel: The options `reuseport`, `reuseport_lb` and
`exclusiveaddruse` were accidentally not allowed for e.g
`gen_udp:open/1,2`, which has now been corrected.
* kernel: gen_udp:recv/* for Unix Domain Socket in binary mode
and passive mode has been fixed to not crash.
* kernel: Fixed issue where cursor would not be placed at the end
of the expression when navigating shell history.
* kernel: Update gen_tcp_socket and gen_udp_socket to handle
'completion' (socket on Windows).
* kernel: Add support for Unix Domain Sockets (only for STREAM
sockets) on Windows for 'socket'.
* kernel: Add basic support for socket ioctl on Windows.
* kernel: The file:location/0 type is now exported.
* kernel: Add support for (Windows) socket option
exclusiveaddruse.
* kernel: [socket] Add support for the 'nopush' option.
* kernel: Add support for socket option 'BSP STATE'.
* kernel: Add tcp socket options 'keepcnt', 'keepidle' and
'keepintvl'.
* kernel: Add support for misc (Windows) socket options
('max_msg_size' and 'maxdg').
* kernel: The keyboard shortcuts for the shell are now
configurable.
* kernel: Optimized code_server to reduce repeated work when
loading the same module concurrently.
* debugger: The call int:no_break(Module) did not remove any
breakpoints.
* debugger: The maybe expression is now supported in the
Debugger.
* debugger: The maybe expression is now supported in the
Debugger.
* debugger: The call int:no_break(Module) did not remove any
breakpoints.
* ssl: Avoid function clause error in ssl:getopts/2 by handling
that inet:getopts may return an empty list during some
circumstances, such as the socket being in a closing state.
* ssl: The API function `ssl:recv/3` has been tightened to
disallow negative length, which has never been documented to
work, but was passed through and caused strange errors.
* ssl: When a client initiated renegotiation was rejected and the
client socket was in active mode the expected error message to
the controlling process was not sent.
* ssl: Add some guidance for signature algorithms configuration
in ssl applications users guide.
* snmp: Make snmp handle gen_udp with socket backend on Windows
(completion).
* public_key: Country name comparison shall be case insensitive
* public_key: Add check to disallow duplicate certs in a path
* inets: With this change, re_write httpd works as expected and
does not return error.
* inets: Fixed a bug so httpd does not crash when stopped at the
wrong time during TLS connection negotiation, or any other
theoretically as slow connection setup.
* inets: Enhance error handling and avoid that the HTTP client
hangs on headers provided on the wrong format.
* inets: With this change, error report generated by httpd during
connection setup contains socket type information.
* inets: Stop and restart of the httpd server in the Inets
application has been refactored to a more synchronous and OTP
supervisor friendly approach. This should increase stability
and for example avoid a supervisor report from
httpd_connection_sup about killed child process(es) in some
cases when stopping or restarting httpd.
* dialyzer: Fixed a bug that caused dialyzer to crash when
analyzing bogus code that contained the literal atom undefined
in segment sizes.
* dialyzer: Dialyzer could crash when attempting to analyze a
module that defined a type called product/.
- Changes for 26.0.2:
* erts: Fix using the IME (Input Method Editor) to enter text in
cmd.exe and powershell.exe on Windows.
* erts: Multiple socket:accept calls issue. When making multiple
accept calls, only the last call is active.
* erts: Fix the shell to ignore terminal delay when the terminal
capabilities report that they should be used.
* erts: Fix "oldshell" to echo characters while typing on
Windows.
* erts: On Windows, a call to the function socket:close, when
there are waiting active calls to read, write or accept
functions, could hang.
* erts: Fix issues when reading or configuring standard_io on
Windows when erl.exe is started using -noshell flag.
* erts: The following functions are now much faster when given a
long list or binary:
* erts: On AArch64 (ARM64), equality and non-equality tests with
literal bitstrings could succeed when they should fail and vice
versa.
* compiler: Fixed a type handling bug that would cause an
internal consistence failure for correct code.
* compiler: Fixed a bug that could cause the stack trace of throw
exceptions to be erroneously optimized out.
* compiler: Complex guard expression using 'or' were not always
fully evaluated, making guards that were supposed to fail
succeed.
* stdlib: Fix bug where when you entered Alt+Enter in the
terminal, the cursor would move to the last line, instead of
moving to the next line.
* stdlib: Fix eof handling when reading from stdin when erlang is
started using -noshell.
* stdlib: Fixed problem where output would disappear if it was
received after a prompt was written in the shell.
* stdlib: The following functions are now much faster when given
a long list or binary:
* kernel: Fix bug where when you entered Alt+Enter in the
terminal, the cursor would move to the last line, instead of
moving to the next line.
* kernel: Fix so that the shell does not crash on startup when
termcap is not available.
* kernel: Multiple socket:accept calls issue. When making
multiple accept calls, only the last call is active.
* kernel: Fix the shell to ignore terminal delay when the
terminal capabilities report that they should be used.
* kernel: Fix "oldshell" to echo characters while typing on
Windows.
* kernel: Fix eof handling when reading from stdin when erlang is
started using -noshell.
* kernel: On Windows, a call to the function socket:close, when
there are waiting active calls to read, write or accept
functions, could hang.
* kernel: Fix issues when reading or configuring standard_io on
Windows when erl.exe is started using -noshell flag.
* kernel: gen_udp:connect with inet_backend = socket fails when
the Address is a hostname (string or atom).
* kernel: Fixed problem which would cause shell to crash if
particular escape sequence was written to stdout.
* kernel: Fixed problem where output would disappear if it was
received after a prompt was written in the shell.
* kernel: Fix a crash where the location of erts could not be
found in rebar3 dev builds.
* kernel: Introduce the KERNEL application parameter
standard_io_encoding that can be used to set the default
encoding for standard_io. This option needs to be set to latin1
if the application wants to treat all input data as bytes
rather than utf-8 encoded characters.
* ssl: Added keylog information to all protocol versions in
ssl:connection_information/2.
* ssl: Add RFC-6083 considerations for DTLS to enable gen_sctp
based callback for the transport.
* ssh: Added multiline editing support to ssh clients connected
through OTP ssh daemon.
* Sat Jun 24 2023 Matwey Kornilov <matwey.kornilov@gmail.com>
- Changes for 26.0.1:
* erts: Build of the socket nif failed on Solaris 11.
* erts: Fixed two reduction-counting bugs relating to binaries.
* erts: Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with a value
not fitting in a 64-bit word could crash the runtime system.
* erts: When a binary construction failed because of bad size for
a segment, the error information was not always correct.
* erts: Fixed a crash when calling a fun that was defined in a
module that had been upgraded.
* kernel: The POSIX error exdev was sometimes incorrectly
described as "cross domain link" in some error messages.
* kernel: Corrected the socket send function description (send
with Timeout = nowait). The send function(s) could not return
{ok, {RestData, SelectInfo}}
* stdlib: The POSIX error exdev was sometimes incorrectly
described as "cross domain link" in some error messages.
* ssl: Make sure that selection of client certificates handle
both TLS-1.3 and TLS-1.2 names correctly. Could cause valid
client certificate to not be selected, and an empty client
certificate message to be sent to server.
* ssl: Improved ssl:format_error/1 to handle more error tuples.
* ssl: Fixed hanging ssl:connect when ssl application is not
started.
* ssl: Correct handling of retransmission timers, current
behavior could cause unwanted delays.
* inets: Do not make the default ssl options by calling
httpc:ssl_verify_host_options(true) if ssl options are supplied
by the user.
* xmerl: New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some XML
security issues. xmerl_scan gets one new option:
xmerl_sax_parser gets the following options: The old option
skip_external_dtd is still valid and the same as
{external_entities, none} and {fail_undeclared_ref, false} but
just affects DTD's and not other external references.
* compiler: Fixed a bug where a failing bsl expression in a guard
threw an exception instead of causing the guard to fail.
* compiler: Fixed a bug that would case the validator to reject
legal code.
* compiler: The compiler could re-order clauses matching binaries
so that the incorrect clause would match. That could only
happen for code that used the option {error_location,line} or
for code without line or column number information (e.g.
generated by a parse transform).
* compiler: Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled so that
the guard would succeed even if a call to a guard BIF failed.
* compiler: With optimizations disabled, a try/catch construct
could return an incorrect value.
* compiler: In rare circumstance, a combination of binary
construction and binary_part/3 would cause the compiler to
generate unsafe code that would crash the runtime system.
* compiler: The compiler could be very slow when compiling guards
with multiple guard tests separated with 'or' or ';'.
* compiler: Complex guard expressions using 'or' and map updates
could succeed even if the map update failed.
* Sat Jun 24 2023 Matwey Kornilov <matwey.kornilov@gmail.com>
- Version 26.0:
* Leex has been extended with optional column number support.
* The family of enumeration functions in module lists has been
extended with enumerate/3 that allows a step value to be
supplied.
* Update Unicode to version 15.0.0.
* proc_lib:start*/* has become synchronous when the started
process fails. This requires that a failing process use a new
function proc_lib:init_fail/2,3, or exits, to indicate failure. All
OTP behaviours have been fixed to do this.
* auto-complete of variables, record names, record fields names,
map keys, function parameter types and filenames.
* Open external editor in the shell to edit the current
expression.
* defining records (with types), functions, specs and types in
the shell.
* Creation and matching of binaries with segments of fixed sizes
have been optimized.
* Creation and matching of UTF-8 segments have been optimized.
* Appending to binaries has been optimized.
* The compiler and JIT now generate better code for creation of
small maps where all keys are literals known at compile time.
* Thanks to the optimizations above the performance of the base64
module has been significantly improved. For example, on an
x86_64 system with the JIT both encode and decode are almost
three times faster than in Erlang/OTP 25.
* Map comprehensions as suggested in EEP 58 has now been
implemented.
* Some map operations have been optimized by changing the
internal sort order of atom keys. This changes the
(undocumented) order of how atom keys in small maps are printed
and returned by maps:to_list/1 and maps:next/1. The new order
is unpredictable and may change between different invocations
of the Erlang VM.
* Introducing the new function maps:iterator/2 for creating an
interator that return the map elements in a deterministic
order. There are also new modifiers k and K for the format
string in io:format() to support printing map elements ordered.
* Added the new built-in type dynamic() introduced in EEP 61, PR
introducing EEP 61 improving support for gradual type checkers.
* Dialyzer has a new incremental mode that be invoked by giving
the --incremental option when running Dialyzer. This new
incremental mode is likely to become the default in a future
release.
* Multi time warp mode is now enabled by default. This assumes
that all code executing on the system is time warp safe.
* Support for UTF-8 atoms and strings in the NIF interface
including new functions enif_make_new_atom,
enif_make_new_atom_len and enif_get_string_length.
* The BIFs min/2 and max/2 are now allowed to be used in guards
and match specs.
* Improved the selective receive optimization, which can now be
enabled for references returned from other functions. This
greatly improves the performance of gen_server:send_request/3,
gen_server:wait_response/2, and similar functions.
* It is no longer necessary to enable a feature in the runtime
system in order to load modules that are using it. It is
sufficient to enable the feature in the compiler when compiling
it.
* inet:setopts/2 has got 3 new options: reuseport, reuseport_lb
and exclusiveaddruse.
* Fix so that -fno-omit-frame-pointer is applied to all of the
Erlang VM when using the JIT so that tools, such as perf, can
crawl the process stacks.
* In the lists module, the zip family of functions now takes
options to allow handling lists of different lengths.
* Added the zip:zip_get_crc32/2 function to retrieve the CRC32
checksum from an opened ZIP archive. gen_server optimized by
caching callback functions
* The modules Erlang DNS resolver inet_res and helper modules
have been updated for RFC6891; to handle OPT RR with DNSSEC OK
(DO) bit.
* Introduced application:get_supervisor/1.
* Cache OTP boot code paths, to limit how many folders that are
being accessed during a module lookup. Can be disabled with
- cache_boot_path false.
* Support for Kernel TLS (kTLS), has been added to the SSL
application, for TLS distribution (-proto_dist inet_tls), the
SSL option {ktls, true}.
* Improved error checking and handling of ssl options.
* Mitigate memory usage from large certificate chains by lowering
the maximum handshake size. This should not effect the common
cases, if needed it can be configured to a higher value.
* For security reasons the SHA1 and DSA algorithms are no longer
among the default values.
* Add encoding and decoding of use_srtp hello extension to
facilitate for DTLS users to implement SRTP functionality.
* Fri Jun 23 2023 matwey.kornilov@gmail.com
- Changes for 25.3.2.2:
* compiler: The compiler could be very slow when compiling guards
with multiple guard tests separated with 'or' or ';'.
- Changes for 25.3.2.1:
* xmerl: New options to xmerl_scan and xmerl_sax_parser so one
can limit the behaviour of the parsers to avoid some XML
security issues. xmerl_scan gets one new option:
xmerl_sax_parser gets the following options: The old option
skip_external_dtd is still valid and the same as
{external_entities, none} and {fail_undeclared_ref, false} but
just affects DTD's and not other external references.
* erts: Fixed a crash during tracing on certain platforms that
cannot use the machine stack for Erlang code (mainly OpenBSD
and Linux with musl).
* erts: Constructing a binary segment not aligned with a byte
boundary, with a size not fitting in 31 bits, and with a value
not fitting in a 64-bit word could crash the runtime system.
* erts: Further robustify implementation of large maps (> 32
keys). Keys that happen to have same internal 32-bit hash
values are now put in collision nodes which are traversed with
linear search. This removes the demand for the internal hash
function when salted to eventually produce different hashes for
all possible pairs of unequal terms.
* stdlib: Static supervisors are very idle processes after they
have started so they will now be hibernated after start to
improve resource management.
* compiler: Fixed a bug where a failing bsl expression in a guard
threw an exception instead of causing the guard to fail.
* compiler: Complex guard expression using the or operator and
guard BIFs that can fail could sometimes be miscompiled so that
the guard would succeed even if a call to a guard BIF failed.
* Sun May 07 2023 matwey.kornilov@gmail.com
- Changes for 25.3.2:
* compiler: Fixed type handling bugs that could cause an internal
error in the compiler for correct code.
* os_mon: Avoid error report from failing erlang:port_close at
shutdown of cpu_sup and memsup. Bug exists since OTP 25.3
(os_mon-2.8.1).
* erts: If a runtime system which was starting the distribution
already had existing pids, ports, or references referring to a
node with the same nodename/creation pair that the runtime
system was about to use, these already existing pids, ports, or
references would not work as expected in various situations
after the node had gone alive. This could only occur if the
runtime system was communicated such pids, ports, or references
prior to the distribution was started. That is, it was
extremely unlikely to happen unless the distribution was
started dynamically and was even then very unlikely to happen.
The runtime system now checks for already existing pids, ports,
and references with the same nodename/creation pair that it is
about to use. If such are found another creation will be chosen
in order to avoid these issues.
- Changes for 25.3.1:
* snmp: Attempts to minimize the number of the error reports
during a failed agent init.
* compiler: When a map update such as #{}#{key:=value} that
should fail with an exception was unused, the exception would
be lost.
* compiler: Fixed bug in the validator that made it reject valid
code.
* crypto: With this change, random errors are fixed for
crypto:generate_key calls with OpenSSL 3.
* erts: Fixed a bug in the loader that prevented certain modules
compiled with no_ssa_opt from being loaded.
* erts: Implementations of the call() driver callback that
returned a faulty encoded result could cause a memory leak and
could cause invalid data on the heap of the processes calling
erlang:port_call/3.
* erts: Fixed a memory corruption issue when upgrading code. The
bug was introduced in OTP 25.3
* erts: Fixed configure tests for a few ARM-specific
instructions, which prevented the emulator from being built on
some platforms.
* erts: Aliases created in combination with a monitor using the
{alias, explicit_unalias} option stopped working from remote
nodes when a 'DOWN' signal had been received due to the monitor
or if the monitor was removed using the erlang:demonitor() BIF.
This bug was introduced in OTP 24.3.4.10 and OTP 25.3.
* erts: In rare circumstances, bit syntax matching of an invalid
code point for a utf32 would crash the runtime system.
* erts: Building the runtime system failed when native atomic
support was missing. Note that execution on such systems have
only been rudimentary tested.
* erl_interface: Fixed configure tests for a few ARM-specific
instructions, which prevented the emulator from being built on
some platforms.
* eldap: Added a new function eldap:info/1 that returns the
socket and the transport protocol for the eldap connection.
* inets: Correct timing related pipelining/keepalive queue bug,
that could result in unexpected "socket_remotly_closed" errors.
* inets: With this change, upon remote socket closure current
request is added to a retried queue (either pipeline or
keep_alive, but not both).
* ssl: With this change, ssl:connection_information/2 returns
correct keylog data after TLS1.3 key update.
* ssl: Client signature algorithm list input order is now honored
again , it was accidently reversed by a previous fix.
* stdlib: The type specs in the erl_parse module has been updated
to include the maybe construct and the ! operator.
* wx: Improve debug prints from the nifs. Some minor fixes for
wxWidgets-3.2. Fixed OpenGL debug functions.
* Sat Mar 25 2023 matwey.kornilov@gmail.com
- Changes for 25.3:
* reltool: Fixed a bug that would cause analysis to crash.
* stdlib: Fixed a bug that would cause analysis to crash.
* stdlib: Fixed a crash when formatting stack traces for error
reports.
* stdlib: Instead of crashing, the list_to_integer/1 and
list_to_integer/2 BIFs now raise the system_limit exception for
overlong lists that can't be converted to integers. Similarly,
the string:to_integer/1 BIF now returns {error,system_limit}
for overlong lists.
* stdlib: Removal of non-necessary undefined types added to the
state's supervisor record.
* compiler: Fixed a bug that would cause the compiler to hang.
* compiler: Fixed a crash when compiling code that contained
maybe expressions.
* compiler: Constructing a binary with an explicit size of all
for a binary segment would crash the compiler.
* compiler: The compiler would generate incorrect code for the
following type of expression: Pattern = BoundVar1 = . . . =
BoundVarN = Expression An exception should be raised if any of
the bound variables have different values than Expression. The
compiler would generate code that would cause the bound
variables to be bound to the value of Expressionwhether the
value matched or not.
* xmerl: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* megaco: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* debugger: Fixed a bug that would cause analysis to crash.
* erts: Fixed a bug on Windows where file:read_file_info/1 would
fail for files with corrupt metadata.
* erts: Fix process_info(_, binary) to again include "writable
binaries" which were lost in OTP-25.0. Writable binaries are an
optimization used when binaries are appended upon in a loop.
* erts: Fix rare race when receiving fragmented messages on a
terminating connection. Could potentially cause memory leaks as
well as double free crashes. Bug exists since OTP 22.0.
* erts: Fixed bug that could maybe cause problems when a file
descriptor number is closed by a linked in driver and then
opened (reused) and passed to enif_select by a NIF. No actual
symptoms seen, only failed internal assertions in debug build.
* erts: The runtime system could crash when tracing a process
executing on a dirty scheduler.
* erts: In the binary syntax, attempting to match out integers
with size exceeding 2 GiB could crash the runtime system.
* erts: Fixed edge case in floating-point negation where A = 0.0,
B = -A did not produce B = -0.0 on x86_64 JIT.
* erts: Fixed an issue in the JIT that could crash the emulator
on some platforms.
* erts: Added meta data to the windows installer.
* erts: Fixed ETS insertion order into bag and duplicate_bag of
tuples with identical keys when passed in a list to
ets:insert/2. The insert order has been head-to-tail but was
accidentally changed in OTP 23.0. For bag it was reverted
(tail-to-head), while for duplicate_bag it was sometimes
reverted depending on the length of the list and number of
"reductions" left for the calling process. This fix changes the
insert order of ets:insert/2 back to always be head-to-tail of
the list argument.
* erts: With the JIT for AArch64 (AMD64), calling bxor in with
non-integer arguments in a guard would crash the runtime
system.
* erts: Fix bug regarding process flag max_heap_size. Could cause
strange behavior when a process was killed due to exceeding the
limit.
* erts: Fixed binary comprehensions to be similar to other
creation of binary data with respect to its contribution of
triggering garbage collection.
* erts: In rare circumstances, when a process exceeded its
allowed heap size set by option max_heap_size, it would not be
killed as it should be, but instead enter a kind of zombie
state it would never get out of.
* erts: Instead of crashing, the list_to_integer/1 and
list_to_integer/2 BIFs now raise the system_limit exception for
overlong lists that can't be converted to integers. Similarly,
the string:to_integer/1 BIF now returns {error,system_limit}
for overlong lists.
* erts: Active process aliases of a process at its termination
leaked memory.
* erts: Support for fully asynchronous distributed signaling
where send operations never block. This functionality is by
default disabled and can be enabled per process. For more
information see the documentation of process_flag(async_dist,
Bool).
* erts: Added the +JPperf no_fp option to explicitly disable
Erlang frame pointers otherwise added when using the +JPperf
map option.
* erl_interface: Accept connection setup from OTP 23 and 24 nodes
that are not using epmd.
* erl_interface: The ei API for decoding/encoding terms is not
fully 64-bit compatible since terms that have a representation
on the external term format larger than 2 GB cannot be handled.
* syntax_tools: erl_syntax_lib:annotate_bindings/1,2 will now
properly annotate named functions and their arguments.
* kernel: Fixed a bug on Windows where file:read_file_info/1
would fail for files with corrupt metadata.
* kernel: Accept connection setup from OTP 23 and 24 nodes that
are not using epmd.
* public_key: As different solutions of verifying certificate
revocation exists move the decode of 'CRLDistributionPoints' so
that it will only be decode. When it is actually used in the
verification process. This would enable interoperability with
systems that use certificates with an invalid empty
CRLDistributionPoints extension that they want to ignore and
make verification by other means.
* public_key: public_key:pkix_path_validation validates
certificates expiring after 2050
* public_key: Do not leave exit message in message queue after
calling cacerts_load() on MacOS.
* public_key: Replace size/1 with either tuple_size/1 or
byte_size/1 The size/1 BIF is not optimized by the JIT, and its
use can result in worse types for Dialyzer. When one knows that
the value being tested must be a tuple, tuple_size/1 should
always be preferred. When one knows that the value being tested
must be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* ssl: Fixed that new dtls connections from the same client ip
port combination works. If there is a process waiting for
accept the new connection will connect to that, otherwise it
will try to re-connect to the old server connection.
* ssl: When shutting down a node that uses SSL distribution
(-proto_dist inet_tls), a confusing error message about an
unexpected process exit was printed. This particular message is
no longer generated.
* ssl: fixes the type spec for ssl:format_error/1
* ssl: Replace size/1 with either tuple_size/1 or byte_size/1 The
size/1 BIF is not optimized by the JIT, and its use can result
in worse types for Dialyzer. When one knows that the value
being tested must be a tuple, tuple_size/1 should always be
preferred. When one knows that the value being tested must be a
binary, byte_size/1 should be preferred. However, byte_size/1
also accepts a bitstring (rounding up size to a whole number of
bytes), so one must make sure that the call to byte_size/ is
preceded by a call to is_binary/1 to ensure that bitstrings are
rejected. Note that the compiler removes redundant calls to
is_binary/1, so if one is not sure whether previous code had
made sure that the argument is a binary, it does not harm to
add an is_binary/1 test immediately before the call to
byte_size/1.
* jinterface: Accept connection setup from OTP 23 and 24 nodes
that are not using epmd.
* os_mon: The port programs used by cpu_sup and memsup are now
gracefully shut down when cpu_sup and memsup are shut down.
* eunit: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* crypto: A user defined runtime library path configured using
- -with-ssl-rpath=<PATHS> could fail to be enabled.
* crypto: Ensure that configure fails if a user defined runtime
library path has been passed by the user, but cannot set.
* mnesia: Improved consistency for dirty writes when a table was
added with add_table_copy/3. Fixed a problem with sticky write,
which could lead to inconsistent data.
* mnesia: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* common_test: Renamed undocumented macro CT_PEER/3 to
CT_PEER_REL/3.
* ssh: With this change, PKCS8 formatted private key file is
properly decoded and SSH daemon with such key can be started.
* ssh: Replace size/1 with either tuple_size/1 or byte_size/1 The
size/1 BIF is not optimized by the JIT, and its use can result
in worse types for Dialyzer. When one knows that the value
being tested must be a tuple, tuple_size/1 should always be
preferred. When one knows that the value being tested must be a
binary, byte_size/1 should be preferred. However, byte_size/1
also accepts a bitstring (rounding up size to a whole number of
bytes), so one must make sure that the call to byte_size/ is
preceded by a call to is_binary/1 to ensure that bitstrings are
rejected. Note that the compiler removes redundant calls to
is_binary/1, so if one is not sure whether previous code had
made sure that the argument is a binary, it does not harm to
add an is_binary/1 test immediately before the call to
byte_size/1.
* inets: With this change, handling of URI to a folder, with
missing trailing / and a query component present is fixed.
* inets: Adds more type information to the inets app, thus
improving the errors that static analysis tools can detect. The
addition of type information to records and the updates to
function heads help static analysis tools to understand that
some values in the records cannot be 'undefined', thus making
static tools to type check correctly more modules in the inets
app
* inets: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* snmp: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* ftp: Replace size/1 with either tuple_size/1 or byte_size/1 The
size/1 BIF is not optimized by the JIT, and its use can result
in worse types for Dialyzer. When one knows that the value
being tested must be a tuple, tuple_size/1 should always be
preferred. When one knows that the value being tested must be a
binary, byte_size/1 should be preferred. However, byte_size/1
also accepts a bitstring (rounding up size to a whole number of
bytes), so one must make sure that the call to byte_size/ is
preceded by a call to is_binary/1 to ensure that bitstrings are
rejected. Note that the compiler removes redundant calls to
is_binary/1, so if one is not sure whether previous code had
made sure that the argument is a binary, it does not harm to
add an is_binary/1 test immediately before the call to
byte_size/1.
* dialyzer: Fixed a bug that would cause analysis to crash.
* dialyzer: Replace size/1 with either tuple_size/1 or
byte_size/1 The size/1 BIF is not optimized by the JIT, and its
use can result in worse types for Dialyzer. When one knows that
the value being tested must be a tuple, tuple_size/1 should
always be preferred. When one knows that the value being tested
must be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
* tftp: Replace size/1 with either tuple_size/1 or byte_size/1
The size/1 BIF is not optimized by the JIT, and its use can
result in worse types for Dialyzer. When one knows that the
value being tested must be a tuple, tuple_size/1 should always
be preferred. When one knows that the value being tested must
be a binary, byte_size/1 should be preferred. However,
byte_size/1 also accepts a bitstring (rounding up size to a
whole number of bytes), so one must make sure that the call to
byte_size/ is preceded by a call to is_binary/1 to ensure that
bitstrings are rejected. Note that the compiler removes
redundant calls to is_binary/1, so if one is not sure whether
previous code had made sure that the argument is a binary, it
does not harm to add an is_binary/1 test immediately before the
call to byte_size/1.
- Changes for 25.2.3:
* erts: Comparisons between small numbers and pids or ports would
in some edge cases say that the number was greater than the pid
or port, violating the term order.
* erts: process_info(Pid, status) when Pid /= self() could return
an erroneous result.
* ssl: Maximize compatibility by ignoring change_cipher_spec
during handshake even if middle_box_mode is not negotiated
(mandated by client)
* ssl: Move assert of middlebox message after an
hello_retry_request to maximize interoperability. Does not
changes semantics of the protocol only allows unexpected
message delay from server.
* ssh: With this change, ssh application does not crash when
formatting some of info reports for unsuccessful connections.
* ssh: With this change, ssh does not log extensively long
messages.
* inets: Ensure graceful shutdown
* inets: Return type of the type specification for function
httpc:cookie_header/{1,2,3} has been fixed from -spec
cookie_header(url()) -> [{ field(), value() }] | {error,
Reason} to -spec cookie_header(url()) -> { field(), value() } |
{error, Reason}
- Changes for 25.2.2:
* ftp: Fixes calls to ftp:nlist/2 returning {error, epath} when
the file / folder exists
- Changes for 25.2.1:
* compiler: Fixed a bug that could cause legal code to fail
validation.
* compiler: Eliminated a rare crash in the beam_types module.
* erts: Fixed a bug in selective receive optimization that could
crash 32-bit emulators.
* erts: A race condition which was very rarely triggered could
cause the signal queue of a process to become inconsistent
causing the runtime system to crash.
* kernel: The tcp connect option 'bind_to_device' could not be
used with inet_backend = 'socket'. 'inet' requires value type
binarry() and 'socket' requires value type 'string()'.
* kernel: Minor issue processing options when calling
gen_tcp:connect with a sockaddr() and inet_backend = socket.
* common_test: Change timeout to infinity for gen_server calls in
cth_log_redirect
* inets: fixes a missing case of the type specification for
httpd:info/2/3/4
* snmp: Single threaded agent crash when vacm table not properly
initiated.
* Sun Dec 18 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(<<X:0, _:X>>, <<Y:0, _:Y>>) -> 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 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 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 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 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 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
<RemoteNode> detected by <Pid> on the node <LocalNode>. The
node <RemoteNode> 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 2022 Matwey Kornilov <matwey.kornilov@gmail.com>
- 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 06 2022 Matwey Kornilov <matwey.kornilov@gmail.com>
- Fix build for Factory. Currently, any Java version
is fine for Erlang.
* Sun Mar 27 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 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 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 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 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 2021 Johannes Segitz <jsegitz@suse.com>
- Added hardening to systemd service(s) (bsc#1181400). Modified:
* epmd.service
* Wed Aug 04 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 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- Fix more directories not owned by the package (boo#1187546)
* Mon Jul 05 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 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- Use sysusers-tools to provide epmd user
- Fix directories not owned by the package (boo#1187546)
* Mon Jun 14 2021 Callum Farmer <gmbr3@opensuse.org>
- Install RPM macros file to %{_rpmmacrodir} (boo#1185667)
* Fri May 21 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- 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 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- 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 08 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- Pack doc/chunks into %{_libdir} (boo#1184492)
* Sun Jan 17 2021 Matwey Kornilov <matwey.kornilov@gmail.com>
- Use wxWidgets < 3.1 (boo#1180488)
* Fri Jan 15 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.
/usr/lib/erlang/lib/wx-2.4.1 /usr/lib/erlang/lib/wx-2.4.1/doc /usr/lib/erlang/lib/wx-2.4.1/doc/chunks /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/gl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/glu.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wx.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAcceleratorEntry.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAcceleratorTable.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxActivateEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxArtProvider.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiDockArt.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiManager.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiManagerEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiNotebook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiNotebookEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiPaneInfo.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiSimpleTabArt.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxAuiTabArt.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBitmap.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBitmapButton.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBitmapDataObject.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBookCtrlBase.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBookCtrlEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBoxSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBrush.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBufferedDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxBufferedPaintDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxButton.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCalendarCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCalendarDateAttr.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCalendarEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCaret.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCheckBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCheckListBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxChildFocusEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxChoice.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxChoicebook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxClientDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxClipboard.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxClipboardTextEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCloseEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxColourData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxColourDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxColourPickerCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxColourPickerEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxComboBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCommandEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxContextMenuEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxControl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxControlWithItems.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxCursor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDCOverlay.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDataObject.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDateEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDatePickerCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDirDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDirPickerCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDisplay.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDisplayChangedEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxDropFilesEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxEraseEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxEvtHandler.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFileDataObject.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFileDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFileDirPickerEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFilePickerCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFindReplaceData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFindReplaceDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFlexGridSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFocusEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFont.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFontData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFontDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFontPickerCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFontPickerEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxFrame.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGBSizerItem.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGCDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGLCanvas.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGLContext.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGauge.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGenericDirCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsBrush.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsContext.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsFont.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsGradientStops.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsMatrix.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsObject.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsPath.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsPen.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGraphicsRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGrid.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridBagSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellAttr.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellBoolEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellBoolRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellChoiceEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellFloatEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellFloatRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellNumberEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellNumberRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellStringRenderer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridCellTextEditor.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxGridSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxHelpEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxHtmlEasyPrinting.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxHtmlLinkEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxHtmlWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxIcon.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxIconBundle.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxIconizeEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxIdleEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxImage.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxImageList.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxInitDialogEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxJoystickEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxKeyEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxLayoutAlgorithm.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListItem.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListItemAttr.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListView.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxListbook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxLocale.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxLogNull.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMDIChildFrame.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMDIClientWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMDIParentFrame.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMask.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMaximizeEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMemoryDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMenu.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMenuBar.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMenuEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMenuItem.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMessageDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMiniFrame.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMirrorDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMouseCaptureChangedEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMouseCaptureLostEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMouseEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMoveEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxMultiChoiceDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxNavigationKeyEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxNotebook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxNotificationMessage.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxNotifyEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxOverlay.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPageSetupDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPageSetupDialogData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPaintDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPaintEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPalette.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPaletteChangedEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPanel.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPasswordEntryDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPen.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPickerBase.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPopupTransientWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPopupWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPostScriptDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPreviewCanvas.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPreviewControlBar.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPreviewFrame.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrintData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrintDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrintDialogData.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrintPreview.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrinter.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxPrintout.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxProgressDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxQueryNewPaletteEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxRadioBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxRadioButton.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxRegion.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSashEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSashLayoutWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSashWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxScreenDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxScrollBar.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxScrollEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxScrollWinEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxScrolledWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSetCursorEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxShowEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSingleChoiceDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSizeEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSizerFlags.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSizerItem.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSlider.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSpinButton.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSpinCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSpinEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSplashScreen.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSplitterEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSplitterWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStaticBitmap.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStaticBox.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStaticBoxSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStaticLine.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStaticText.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStatusBar.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStdDialogButtonSizer.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStyledTextCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxStyledTextEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSysColourChangedEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSystemOptions.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxSystemSettings.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTaskBarIcon.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTaskBarIconEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTextAttr.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTextCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTextDataObject.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTextEntryDialog.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxToggleButton.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxToolBar.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxToolTip.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxToolbook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTopLevelWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTreeCtrl.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTreeEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxTreebook.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxUpdateUIEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWebView.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWebViewEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWindow.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWindowCreateEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWindowDC.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxWindowDestroyEvent.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxXmlResource.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wx_misc.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wx_object.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxe_master.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxe_server.chunk /usr/lib/erlang/lib/wx-2.4.1/doc/chunks/wxe_util.chunk /usr/lib/erlang/lib/wx-2.4.1/ebin /usr/lib/erlang/lib/wx-2.4.1/ebin/gl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/glu.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wx.app /usr/lib/erlang/lib/wx-2.4.1/ebin/wx.appup /usr/lib/erlang/lib/wx-2.4.1/ebin/wx.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAcceleratorEntry.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAcceleratorTable.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxActivateEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxArtProvider.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiDockArt.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiManager.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiManagerEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiNotebook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiNotebookEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiPaneInfo.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiSimpleTabArt.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxAuiTabArt.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBitmap.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBitmapButton.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBitmapDataObject.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBookCtrlBase.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBookCtrlEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBoxSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBrush.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBufferedDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxBufferedPaintDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxButton.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCalendarCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCalendarDateAttr.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCalendarEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCaret.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCheckBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCheckListBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxChildFocusEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxChoice.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxChoicebook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxClientDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxClipboard.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxClipboardTextEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCloseEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxColourData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxColourDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxColourPickerCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxColourPickerEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxComboBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCommandEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxContextMenuEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxControl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxControlWithItems.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxCursor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDCOverlay.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDataObject.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDateEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDatePickerCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDirDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDirPickerCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDisplay.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDisplayChangedEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxDropFilesEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxEraseEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxEvtHandler.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFileDataObject.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFileDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFileDirPickerEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFilePickerCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFindReplaceData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFindReplaceDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFlexGridSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFocusEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFont.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFontData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFontDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFontPickerCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFontPickerEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxFrame.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGBSizerItem.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGCDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGLCanvas.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGLContext.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGauge.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGenericDirCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsBrush.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsContext.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsFont.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsGradientStops.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsMatrix.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsObject.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsPath.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsPen.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGraphicsRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGrid.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridBagSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellAttr.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellBoolEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellBoolRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellChoiceEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellFloatEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellFloatRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellNumberEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellNumberRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellStringRenderer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridCellTextEditor.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxGridSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxHelpEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxHtmlEasyPrinting.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxHtmlLinkEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxHtmlWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxIcon.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxIconBundle.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxIconizeEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxIdleEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxImage.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxImageList.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxInitDialogEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxJoystickEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxKeyEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxLayoutAlgorithm.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListItem.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListItemAttr.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListView.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxListbook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxLocale.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxLogNull.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMDIChildFrame.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMDIClientWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMDIParentFrame.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMask.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMaximizeEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMemoryDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMenu.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMenuBar.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMenuEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMenuItem.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMessageDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMiniFrame.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMirrorDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMouseCaptureChangedEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMouseCaptureLostEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMouseEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMoveEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxMultiChoiceDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxNavigationKeyEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxNotebook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxNotificationMessage.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxNotifyEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxOverlay.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPageSetupDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPageSetupDialogData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPaintDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPaintEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPalette.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPaletteChangedEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPanel.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPasswordEntryDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPen.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPickerBase.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPopupTransientWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPopupWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPostScriptDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPreviewCanvas.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPreviewControlBar.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPreviewFrame.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrintData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrintDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrintDialogData.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrintPreview.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrinter.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxPrintout.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxProgressDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxQueryNewPaletteEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxRadioBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxRadioButton.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxRegion.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSashEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSashLayoutWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSashWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxScreenDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxScrollBar.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxScrollEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxScrollWinEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxScrolledWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSetCursorEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxShowEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSingleChoiceDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSizeEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSizerFlags.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSizerItem.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSlider.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSpinButton.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSpinCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSpinEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSplashScreen.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSplitterEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSplitterWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStaticBitmap.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStaticBox.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStaticBoxSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStaticLine.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStaticText.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStatusBar.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStdDialogButtonSizer.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStyledTextCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxStyledTextEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSysColourChangedEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSystemOptions.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxSystemSettings.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTaskBarIcon.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTaskBarIconEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTextAttr.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTextCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTextDataObject.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTextEntryDialog.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxToggleButton.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxToolBar.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxToolTip.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxToolbook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTopLevelWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTreeCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTreeEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxTreebook.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxUpdateUIEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWebView.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWebViewEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWindow.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWindowCreateEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWindowDC.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxWindowDestroyEvent.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxXmlResource.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wx_misc.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wx_object.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxe_master.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxe_server.beam /usr/lib/erlang/lib/wx-2.4.1/ebin/wxe_util.beam /usr/lib/erlang/lib/wx-2.4.1/examples /usr/lib/erlang/lib/wx-2.4.1/examples/demo /usr/lib/erlang/lib/wx-2.4.1/examples/demo/demo.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/demo.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/demo_html_tagger.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/demo_html_tagger.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/erlang.png /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_aui.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_aui.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_button.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_button.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_canvas.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_canvas.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_canvas_paint.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_canvas_paint.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_choices.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_choices.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_cursor.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_cursor.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_dialogs.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_dialogs.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_frame_utils.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_frame_utils.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_gauge.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_gauge.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_gl.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_gl.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_graphicsContext.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_graphicsContext.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_grid.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_grid.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_htmlWindow.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_htmlWindow.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_htmlWindow.html /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_listCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_listCtrl.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_notebook.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_notebook.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_notificationMessage.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_notificationMessage.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_pickers.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_pickers.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_popupMenu.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_popupMenu.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_radioBox.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_radioBox.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_sashWindow.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_sashWindow.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_sizers.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_sizers.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_slider.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_slider.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_splitterWindow.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_splitterWindow.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_static.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_static.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_textCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_textCtrl.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_treeCtrl.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_treeCtrl.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_webview.beam /usr/lib/erlang/lib/wx-2.4.1/examples/demo/ex_webview.erl /usr/lib/erlang/lib/wx-2.4.1/examples/demo/image.jpg /usr/lib/erlang/lib/wx-2.4.1/examples/simple /usr/lib/erlang/lib/wx-2.4.1/examples/simple/hello.erl /usr/lib/erlang/lib/wx-2.4.1/examples/simple/hello2.erl /usr/lib/erlang/lib/wx-2.4.1/examples/simple/menu.erl /usr/lib/erlang/lib/wx-2.4.1/examples/simple/minimal.erl /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku.beam /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku.erl /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku.hrl /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_board.beam /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_board.erl /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_game.beam /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_game.erl /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_gui.beam /usr/lib/erlang/lib/wx-2.4.1/examples/sudoku/sudoku_gui.erl /usr/lib/erlang/lib/wx-2.4.1/include /usr/lib/erlang/lib/wx-2.4.1/include/gl.hrl /usr/lib/erlang/lib/wx-2.4.1/include/glu.hrl /usr/lib/erlang/lib/wx-2.4.1/include/wx.hrl /usr/lib/erlang/lib/wx-2.4.1/priv /usr/lib/erlang/lib/wx-2.4.1/priv/erl_gl.so /usr/lib/erlang/lib/wx-2.4.1/priv/erlang-logo128.png /usr/lib/erlang/lib/wx-2.4.1/priv/erlang-logo32.png /usr/lib/erlang/lib/wx-2.4.1/priv/erlang-logo64.png /usr/lib/erlang/lib/wx-2.4.1/priv/wxe_driver.so
Generated by rpm2html 1.8.1
Fabrice Bellet, Thu Oct 23 22:29:00 2025