Age | Commit message (Collapse) | Author |
|
* ingela/ssl/no-chacha-default-for-now/ERL-538/OTP-14882:
ssl: Remove chacha ciphers form default for now
|
|
We have discovered interoperability problems, ERL-538, that we
believe needs to be solved in crypto.
|
|
* ingela/ssl/remove-3des-from-default/OTP-14768:
ssl: Remove 3DES cipher suites from default
|
|
* maint:
dialyzer: Fix bsl/2 bug
|
|
* hasse/dialyzer/fix_bsl:
dialyzer: Fix bsl/2 bug
|
|
|
|
sys_core_bsm: Rearrange arguments to enable delayed sub binary creation
|
|
Fix typo in PKCS-7.asn1
OTP-14878
|
|
* maint:
stdlib: Garbage the shell's evaluator process more often
|
|
* hasse/stdlib/fix_shell_evaluator:
stdlib: Garbage the shell's evaluator process more often
|
|
* maint:
asn1_SUITE: Fix failure in xref_export_all/1
|
|
The variable 'S' was used twice. If the test case failed
because there were unused functions in asn1_SUITE, there
would be an ugly badmatch exception instead of the intended
nice error message.
|
|
A minor fix.
If the Erlang shell saves no results (history(0) or results(0)), the
evaluator process now garbage collects itself. This means that any
huge binaries created by the evaluation are reclaimed faster than
before.
|
|
Argument order can prevent the delayed sub binary creation.
Here is an example directly from the Efficiency Guide:
non_opt_eq([H|T1], <<H,T2/binary>>) ->
non_opt_eq(T1, T2);
non_opt_eq([_|_], <<_,_/binary>>) ->
false;
non_opt_eq([], <<>>) ->
true.
When compiling with the bin_opt_info option, there will be a
suggestion to change the argument order.
It turns out sys_core_bsm can itself change the order, not the
order of the arguments of themselves, but the order in which
the arguments are matched. Here is how it can be rewritten in
pseudo Core Erlang code:
non_opt_eq(Arg1, Arg2) ->
case < Arg2,Arg1 > of
< <<H1,T2/binary>>, [H2|T1] > when H1 =:= H2 ->
non_opt_eq(T1, T2);
< <<_,T2/binary>ffff>, [_|T1] > ->
false;
< <<>>, [] >> ->
true
end.
When rewritten like this, the bs_start_match2 instruction will be
the first instruction in the function and it will be possible to
store the match context in the same register as the binary
({x,1} in this case) and to delay the creation of sub binaries.
The switching of matching order also enables many other simplifications
in sys_core_bsm, since there is no longer any need to pass the position
of the pattern as an argument.
We will update the Efficiency Guide in a separate branch before the
release of OTP 21.
|
|
* ingela/ssl/remove-rsa-keyexchange-from-default/OTP-14769:
ssl: RSA key exchange is considered broken do not support by default
|
|
|
|
* hasse/stdlib/limit_gen_bench:
stdlib: Spend less time in gen_server benchmarks
|
|
* maint:
stdlib: Handle Unicode when formatting stacktraces
|
|
* hasse/stdlib/unicode_stacktrace/OTP-14847/ERL-553:
stdlib: Handle Unicode when formatting stacktraces
|
|
|
|
|
|
|
|
* bjorn/compiler/cuddle-with-tests:
beam_match_SUITE: Eliminate warnings for unused variables
bs_match_SUITE: Add tests case written when walking into a dead end
|
|
* maint:
stdlib: Correct a filelib test case
stdlib: Let filelib:find_source() search subdirs
|
|
* hasse/stdlib/find_src/OTP-14832/ERL-527:
stdlib: Correct a filelib test case
stdlib: Let filelib:find_source() search subdirs
|
|
Limit the time used for the benchmarks introduced in b8f16f0.
|
|
* maint:
ssl: Call clean version function
|
|
* ingela/ssl/test-cuddle:
ssl: Call clean version function
|
|
Make sure tests are run with intended version settings.
|
|
See also ERL-553 and ERL-544 (commit c3ddb0f).
|
|
|
|
'john/runtime_tools/reduce-sysinfo-to_file-memory-use/OTP-14816' into maint
|
|
* maint:
crypto: Disable RSA sslv23 padding for LibreSSL >= 2.6.1
|
|
Conflicts:
lib/observer/src/crashdump_viewer.erl
|
|
Not supported in newer LibreSSL.
|
|
Also modified erl_bif_types:infinity_bsl() when called with zero as
first argument. As of writing this, erlang:'bsl'/2 is modified on the
master branch to never fail if called with a huge second argument.
|
|
|
|
Add some tests cases written when attempting some new optimizations
that turned out to be unsafe.
|
|
* siri/cdv/many-links/OTP-14725:
[observer] Improve performance for many links or monitors
|
|
OTP:13713: Add documentation and typespecs for inet:i/0
|
|
Run beam_block a second time
|
|
Clean up and improve sys_core_fold optimizations
|
|
Refactor '%live' and '%def' annotations
|
|
|
|
|
|
Running beam_block again after the other optimizations have run will
give it more opportunities for optimizations. In particular, more
allocate_zero/2 instructions can be turned into allocate/2
instructions, and more get_tuple_element/3 instructions can store the
retrieved value into the correct register at once.
Out of a sample of about 700 modules in OTP, 64 modules were improved
by this commit.
|
|
If possible, when adding move/2 instructions, try to insert
them into a block. That could potentially allow them to
be optimized.
|
|
beam_utils:live_opt/1 is currently only run early (from
beam_block). Prepare it to be run after beam_split when
instructions with failure labels have been taken out of
blocks.
While we are it, also improve check_liveness/3. That will
improve the optimizations in beam_record (replacing tuple
matching instructions with an is_tagged_tuple instruction).
|
|
Since the select_val instruction never transfer directly to the next
instruction, the incoming live registers should be ignored. This
bug have not caused any problems yet, but it will in the future
if we are to run the liveness optimizations again after
the optimizations in beam_dead and beam_jump.
|
|
In a guard, reorder two consecutive calls to the element/2 BIF that
access the same tuple and have the same failure label so that highest
index is fetched first. That will allow the second element/2 to be
replace with the slightly cheaper get_tuple_element/3 instruction.
|