Age | Commit message (Collapse) | Author |
|
* john/erts/OTP-18.3.4/minusminus_trapping/OTP-15371:
Optimize operator '--' and yield on large inputs
|
|
The removal set now uses a red-black tree instead of an array on
large inputs, decreasing runtime complexity from `n*n` to
`n*log(n)`. It will also exit early when there are no more items
left in the removal set, drastically improving performance and
memory use when the items to be removed are present near the head
of the list.
This got a lot more complicated than before as the overhead of
always using a red-black tree was unacceptable when either of the
inputs were small, but this compromise has okay-to-decent
performance regardless of input size.
Co-authored-by: Dmytro Lytovchenko <[email protected]>
|
|
|
|
|
|
* siri/test-ct_release_test/OTP-13390:
Remove upgrade tests from stdlib_SUITE
Add test of ct_release_test
|
|
The test cases minor_upgrade and major_upgrade used
ct_release_test. The point of the tests in stdlib was mainly to test
ct_release_test. ct_release_test produces a 'from-release' based on an
old version of the application under test (in this case stdlib) and
new versions of all other applications. But since it is not always a
good idea to load an old version of stdlib into a new emulator
(e.g. in the OTP-19.0 emulator), these tests are removed.
Instead new tests are added for ct_release_test in common_test.
|
|
* bjorn/cuddle-with-tests:
io_SUITE: Don't fail on fast computers with rough timers
|
|
* sverk/bad_printable_range:
stdlib: Fix io_SUITE:bad_printable_range for windows
|
|
Since Windows 8 we are not allowed (in non elevated mode) to
write to hklm.
|
|
avoid os:cmd as it treats stderr different on windows.
|
|
On a computer which is fast, but with timers with low resolution,
the measured time for an empty queue could be zero, which could
cause the test case to fail.
Add a calibration function to scale up the amount the amount of
work so that the measured time will not be lower than 50 ms.
|
|
* nybek/speed_up_supervisor_count_children:
Speed up supervisor:count_children/1; simple_one_for_one
Add supervisor:get_callback_module/1
OTP-13290
|
|
Speed up supervisor:count_children/1 for simple_one_for_one
supervisors. This is achieved by avoiding looping through all the
child process and verifying that each one is alive.
For a supervisor with 100,000 'temporary' children the count-time will
drop from approx 25ms to about 0.005ms.
For a supervisor with 100,000 'permanent' or 'transient' children the
count-time will drop from approx 30ms to about 0.005ms.
This avoids having the supervisor block for an extended period while
the count takes place. Under normal circumstances the accuracy of the
result should also improve since the duration is too short for many
processes to die during the count.
|
|
* rickard/monotonic-time-improvements/OTP-13222:
Introduce time management in native APIs
Introduce time warp safe replacement for safe_fixed option
Introduce time warp safe trace timestamp formats
|
|
The new time warp safe option is safe_fixed_monotonic_time which
gives erlang:monotonic_time().
The safe_fixed option was also slightly changed. It now gives
erlang:timestamp() instead of erlang:now(). This has however
not been documented, so it is considered a compatible change.
The above effects both ets, and dets.
This commit also include the bugfix OTP-13239 for
dets:info(Tab, safe_fixed). The timestamp in the result returned
by dets:info(Tab, safe_fixed) was unintentionally broken as a
result of the time API rewrites in OTP 18.0.
|
|
The Erlang Code Linter no longer crashes if there is a -deprecated()
attribute but no -module() declaration.
See also ERL-62 at bugs.erlang.org.
|
|
See also ERL-32 at bugs.erlang.org. Thanks to Ben Paxton.
|
|
* josevalim/jv-map-fun-eval-maint:
Use full list of bindings when matching on map keys
OTP-13218
|
|
* bjorn/stdlib/rand-export_seed/OTP-13162:
Correct rand:export_seed/0 when there is no prior seed
|
|
According to the documentation, rand:export_seed/0 should return
'undefined' if the seed has not been intialized. However, it will
create and return a seed. That means that the following code
will not work as expected:
case rand:export_seed() of
undefined -> rand:seen({1,2,3});
_ -> ok
end,
rand:uniform(Range)
|
|
Add parentheses around annotated type union elements in map pair
types. The bug was introduced in Erlang/OTP 18.0.
|
|
erl_lint:format_error/1 would crash with a function error if
conflicting types were given. That was most easily noticed in the
shell:
Eshell V7.0.3 (abort with ^G)
1> <<0/integer-binary>>.
*** ERROR: Shell process terminated! ***
Noticed-by: Aleksei Magusev
|
|
The test suite depended on the compiler to call
erl_lint:format_error/1 to ensure that format_error/1 was
covered. Unfortunately, though, if format_error/1 crashed
the compiler would catch the exception so that the test suite
would not notice it.
Add a smoke test of format_error/1 that will crash if there is
any problem with erl_lint:format_error/1.
|
|
Prior to this patch, the following code would not eval:
X = key,
(fun(#{X := value}) -> true end)(#{X => value})
That's because the key evaluation was using the new
list of bindings introduced on every anonymous fun.
Since keys only match on values defined prior to the
pattern and do not introduce any new binding, we must
use the full and original list of binding.
|
|
Introduced when changing state from tuple to record.
|
|
* bjorn/cuddle-with-tests: (23 commits)
rand_SUITE: Speed up basic_stats/1
base64_SUITE: Speed up roundtrip/1
lists_SUITE: Test lists:concat/2
lists_SUITE: Test lists:split/2
lists_SUITE: Add a test case for lists:prefix/2
lists_SUITE: Add hof/1 to test all high-order functions
lists_SUITE: Add test for lists:takewhile/1
lists_SUITE: Run test cases in each group in parallel
lists_SUITE: Test lists:keyreplace/4
lists_SUITE: Extend flatten/1 test to also test flatlength/1
lists_SUITE: Correct test of lists:flatten/2
id_transform_SUITE: Modernize test suite
io_proto_SUITE: Speed up determination of default shell
io_proto_SUITE: Refactor up rtnode() and friends
gen_event_SUITE: Remove unnecessary sleep calls
proc_lib: Improve coverage for crash/1
proc_lib_SUITE: Eliminate compiler warnings
io_SUITE: Add coverage/1 to completely cover io_lib_pretty
io_SUITE: Extend coverage of code for testing printable chars
io_SUITE: Speed up test for bad +pc option
...
|
|
Refactor basic_stats/1 into three separate test cases that can be
run in parallel.
|
|
Refactor roundtrip/1 into 4 test cases that can be run in parallel.
Assuming that there are 4 cores available, the group of 4 test
cases will run at roughly one fourth of the time for the original
test case.
|
|
|
|
|
|
|
|
|
|
|
|
On my computer, this will shave off more than one second of the
runnning time and about 4 seconds when cover is being run.
|
|
|
|
|
|
The test that was supposed to call lists:flatten/2 called
lists:flatten/1!
|
|
Remove handling of Clearcase; remove ?line macros.
|
|
Use getline_pred action that fails fast if the shell is not
the oldshell, to avoid having to wait for the timeout.
|
|
Introduce a new {getline_pred, Fun, Msg} action that is useful
in itself, but can also be used to share more code for
{getline, Match} and {getline_re, Match}.
Also get rid of the ?line macros in rtnode() so that we can
somewhat reduce the ridculous indentation level.
|
|
The calls to test_server:sleep/1 are unnecessary as the swapping
of handlers happens in a single process. Even though the
{swap_info,...} message is sent asynchronously, the
gen_event:which_handlers/1 call will not have a chance to
execute until the handlers have been swapped.
|
|
First refactor the entire test case using helper functions
to facilitate further maintenance. Then test that proc_lib
can handle that the process dictionary has been erased
(that will cover more code in proc_lib).
We can also shave off 2 seconds of the execution time by
testing the 'shutdown' exit reasons at beginning of the
test case instead of doing it at the end.
|
|
Use error/1 instead of forcing a badmatch.
|
|
|
|
|
|
Move the test for a bad +pc option to its own test case for
cleanliness. Use the os:cmd/1 function to avoid the annyoying
30 seconds time-out in test_server:start_node/3.
|
|
|
|
* howleysv/stdlib/compiled-unicode/OTP-12977:
stdlib: Fix bug with unicode detection in re
|
|
|
|
Fix bug with unrecognised 'unicode' option in re:split/2,3 &
re:replace/3,4 when using pre-compiled regex.
|