Age | Commit message (Collapse) | Author |
|
file: allow open/2 to work on directories
OTP-15835
|
|
* maint:
Eliminate compiler crash when compiling complex receive statements
|
|
* bjorn/compiler/fix-receive-patch/ERL-950/OTP-15832:
Eliminate compiler crash when compiling complex receive statements
|
|
|
|
|
|
|
|
|
|
|
|
PR-2245
ERL-914
* sverker/stdlib/binary-referenced_byte_size-doc:
stdlib: Improve example for binary:referenced_byte_size/1
|
|
Use of the deprecated module random has been replaced
by the module rand.
OTP-15331
|
|
Removed the use of the deprecated erlang:stacktrace() function.
Instead make use of the 'catch Class:Error:Stacktrace' feature.
OTP-15332
|
|
* maint:
Fix non-terminating compilation
Fix compiler crash when funs were matched
|
|
* bjorn/compiler/fix-freeze/ERL-948/OTP-15828:
Fix non-terminating compilation
|
|
Fix compiler crash when funs were matched
OTP-15833
|
|
* maint:
crypto: Re-enable aes_ctr for openssl cryptolib < 1.0.1
use correct module name for standard_error
|
|
* hans/crypto/enable_aes_ctr/OTP-15829:
crypto: Re-enable aes_ctr for openssl cryptolib < 1.0.1
|
|
Improve optimization of redundant tests
|
|
Make the swap instruction known to the compiler
|
|
Eliminate the beam_except pass
|
|
BEAM has had a `swap` instruction for several releases, but it was not
known to the compiler. The loader would translate a sequence of three
`move` instructions to the `swap` instructions, but only when it was
possible to determine that it would be safe.
By making `swap` known to the compiler, it can be applied in more
situations since it is easier for the compiler than for the loader
to ensure that the usage is safe, and the loader shenanigans can be
eliminated.
|
|
It was accidently disabled in the crypto:supports/0 and /1. It
worked however in the encrypt/decrypt functions.
|
|
Certain complex receive statements would result in an internal
compiler failure. That would happen when the compiler would fail
to find the common exit block following a receive. See the added
test case for an example.
https://bugs.erlang.org/browse/ERL-950
|
|
* velimir/kernel/fix-module-name:
use correct module name for standard_error
|
|
This commit makes the test case `t_connect_timeout` in the test suite
gen_tcp_api_SUITE more reliable by searching for unused IP addresses
in a larger range of IP addresses.
|
|
Previously, the `util_values` test case in the test suite
`cpu_sup_SUITE` tested the `cpu_sup:util()` by checking if a process
that spins in a loop cause the CPU utilization measured with
`cpu_sup:util()` to increase. This was unreliable on test machines
that ran other tasks at the same time. This commit tries to make the
test case more reliable by skipping the test case if it is detected
that the system is doing other work that use a lot of CPU time and
starting 100 spinning processes instead of only 1.
|
|
|
|
* maint-22:
Updated OTP version
Prepare release
# Conflicts:
# make/otp_version_tickets
|
|
The `beam_ssa_dead` pass is supposed to eliminate tests that are
determined to be redundant based on the outcome of a previous test.
For example, in the following example that repeats a guard test,
the second clause can never be executed:
foo(A) when A >= 42 -> one;
foo(A) when A >= 42 -> two;
foo(_) -> three.
`beam_ssa_dead` should have eliminated the second clause, but
didn't:
{test,is_ge,{f,5},[{x,0},{integer,42}]}.
{move,{atom,one},{x,0}}.
return.
{label,5}.
{test,is_ge,{f,6},[{x,0},{integer,42}]}.
{move,{atom,two},{x,0}}.
return.
{label,6}.
{move,{atom,three},{x,0}}.
return.
Correct the optimization of four different combinations of relational
operations that were too conservate. To ensure the correctness of the
optimization, also add an exahaustive test of all combinations of
relational operations with one variable and one literal. (Also remove
the weak and now redundant coverage tests in `beam_ssa_SUITE`.) With
this correction, the following code will be generated for the example:
{test,is_ge,{f,5},[{x,0},{integer,42}]}.
{move,{atom,one},{x,0}}.
return.
{label,5}.
{move,{atom,three},{x,0}}.
return.
Thanks to Dániel Szoboszlay (@dszoboszlay), whose talk at Code BEAM
STO 2019 made me aware of this missed opportunity for optimization.
|
|
The compiler would not terminate while compiling the following code:
foo(<<N:32>>, Tuple, NewValue) ->
_ = element(N, Tuple),
setelement(N, Tuple, NewValue).
The type analysis pass would attempt to construct a huge list when
attempting analyse the type of `Tuple` after the call to
`setelement/3`.
https://bugs.erlang.org/browse/ERL-948
|
|
* maint-21:
Updated OTP version
Prepare release
# Conflicts:
# OTP_VERSION
# lib/xmerl/doc/src/notes.xml
# lib/xmerl/vsn.mk
# make/otp_version_tickets
# otp_versions.table
|
|
maint
* lars/fix-sax-parser-bug-during-check-encoding/OTP-15826:
[xmerl] Fix parse bug when checking the character encoding
|
|
|
|
fix typo in gen_statem.xml
|
|
|
|
maint-21
* lars/fix-sax-parser-bug-during-check-encoding/OTP-15826:
[xmerl] Fix parse bug when checking the character encoding
|
|
|
|
The parser chrashed when an endmarker was missing when parsing
attribute values during the character encoding check.
|
|
* ingela/ssl-flow-ctrl/ERL-934/OTP-15825:
ssl: Refactor of OTP 22 code due to patch OTP-15823
ssl: Avoid dialyzer warning
ssl: Add test cases for issue reported in ERL-938
ssl: Internal active n must back off when user does not read data
ssl: Remove legacy calls to next_record
Conflicts:
lib/ssl/src/tls_connection.erl
|
|
|
|
Maybe we should only have specs for external APIs?!
This is a how to write spec problem that we have to address later.
|
|
|
|
TLS connections should not buffer too much application data if they
want to benefit from TCP flow control. Certain applications may want to
customize the value of internal_active_n as there is a tradeoff between
buffering memory and throughput.
Conflicts:
lib/ssl/src/tls_connection.erl
|
|
Conflicts:
lib/ssl/src/dtls_connection.erl
lib/ssl/src/ssl_connection.erl
|
|
* maint-21:
Updated OTP version
Prepare release
# Conflicts:
# OTP_VERSION
# erts/doc/src/notes.xml
# erts/vsn.mk
# lib/ssl/doc/src/notes.xml
# lib/ssl/vsn.mk
# lib/tools/doc/src/notes.xml
# lib/tools/vsn.mk
# make/otp_version_tickets
# otp_versions.table
|
|
|
|
This is useful mainly to ensure that a new file has been persisted
to disk by calling file:sync/1 or file:datasync/1 on file's parent
directory.
|
|
The beam_except pass rewrites certain calls `erlang:error/{1,2}` to
use specialized instructions for common exceptions such as
`{badmatch,Term}`.
Move this optimization to `beam_ssa_pre_codegen` and `beam_ssa_codegen`.
The main reason for this change is that optimization passes operating
on SSA code are easier to maintain than optimization passes working
on BEAM code.
|
|
Code such as the following would crash the compiler in OTP 22:
[some_atom = fun some_function/1]
The reason is that the fun would be copied (used both in the match
operation and as a value in the list), and the copy of the fun would
create two wrapper functions with the same name for calling
some_function/1. In OTP 21, the duplicate functions happened not to
cause any harm (one of the wrappers functions would be unused and
ultimately be removed by beam_clean). In OTP 22, the new beam_ssa_type
pass would be confused by the multiple definitions of the wrapper
function.
|
|
|
|
maint-21
* john/tools/fix-cover-register-race/ERL-943/OTP-15813:
cover: Fix register/2 race on startup
|