Age | Commit message (Collapse) | Author |
|
The bug could be seen by running the test that is added by this commit
in a valgrind enabled emulator.
Co-authored-by: John Högberg <[email protected]>
|
|
as it has been made more relevant with the introduction of
write_concurrency for ordered_set.
|
|
|
|
Clarify ETS docs about table iterations
|
|
|
|
|
|
* sverker/fix-since-clauses/OTP-15460:
Fix "since" for all multi clause functions
|
|
* raimo/stdlib/gen_statem-optimization/OTP-15452:
correct: Work around a compiler mis-optimization
|
|
This was not a compiler optimization that misfired, rather that
the code neede separate case clauses for when the timer was
running and not, so to not call erlang:cancel_timer/1 nor
maps:remove/2 in the case clause where only
a map update was needed before recursion.
See the comment in loop_timouts_cancel/13
|
|
* raimo/stdlib/gen_statem-optimization/OTP-15452:
Write some more comments in the engine loop
Work around a compiler mis-optimization
Move out helper functions to engine loop
Handle #trans_opts{} fields in parse_actions() arguments
Optimize gen_statem engine loop
Modify generic_statem_transit benchmark
|
|
|
|
The common subexpression optimization accidentally caused
unnecessary spilling of live registers. A rather ugly
workaround can be found in loop_timeouts_cancel.
|
|
This strategy improves speed benchmarks and reduces the
amount of garbage that is produced.
More:
* Handle transition options as loop function arguments instead
of in a record.
* Shorten the state_enter loop and make it more efficient
by making it more part of the loop and less a loop restart.
* Simplify the internal timeout action handling somewhat.
|
|
* maint:
Fix erl_parse:af_constraint()
Fix erl_parse:af_fun_type()
Add literal character to erl_parse:abstract_type/0 type
|
|
Fixes in erl_parse:abstract_type/0 type
|
|
* maint:
Fix sorting in lists.xml
|
|
This is the result of going through all .xml files
with "clause_i" attributes and make sure
their "since" versions are correct.
|
|
Correction of type abstract_expr -> abstract_expr() in erl_parse
|
|
`search/2` was sorted incorrectly.
|
|
|
|
* Use synchronolus cancel_timer since that is more efficient
than asynchronous when a process cancels its own timer
* Restructure the state to have fewer fields by breaking
out practically constant fields into a separate
loop argument record #params{}, group state and data
into one field and dito for timer fields
* Optimize engine loop arguments for staying in the loop so
the detour to sys:handle_system_message/6 will require
packing/unpacking of the sys: state, and of the argument Parent
* Avoid double reverse of event queue in many cases
* Restructure the state transition to not have duplicate
tracks for sys_debug and non-sys_debug cases
* Shortcut the empty list case where possible
* Loop unroll reversal of up to 2-element lists to avoid calling
lists:reverse/2 since an external call spills all live
registers to the stack
* Bring out the callback mode check to the engine loop
|
|
Instead of just changing states; also start a state_timeout
that gets cancelled by the state change.
I think it is important to have efficient timer handling.
|
|
* maint:
[xmerl] Fix detect charset crash
[cdv] Check only own persistent terms in crashdump_viewer test
Fix remote-call error in ms_transform
Conflicts:
lib/observer/test/crashdump_helper.erl
|
|
Fix remote-call error in ms_transform
|
|
Add missing list wrapper.
|
|
`af_function_type()` already contains the `{'type', anno(), 'fun', ...}`
tuple so it does not have to be wrapped again.
|
|
This is allowed since 19.3 (commit 6d238032) and documented since commit
744fb920.
|
|
|
|
Before OTP 22, the option `{nowarn_deprecated_function,MFAs}` was only
recognized when given in the file with the attribute
`-compile()`. (The option `{nowarn_unused_function,FAs}`
was incorrectly documented to only work in a file, but it also
worked when given in the option list.) Starting from OTP 22, all
options that can be given in the file can also be given in the option
list.
|
|
* raimo/stdlib/sys-log-of-gen-in-terminate-report/OTP-15381:
sys:log timeout 0 events
Filter gen_server State in crash sys:log
Fix statement duplication
Document system_events better
Adjust sys:log(N, get) to documentation
Unify system_events in gen_*
Log code change
Use from/1 type check
Limit more error_logger terms
Add client stacktrace
Print sys:log in error report
Optimize sys:handle_debug/4
Optimize sys:log
Fix sys:log functionality
Conflicts:
lib/stdlib/doc/src/sys.xml
|
|
|
|
|
|
|
|
Currently, a user of gen_statem cannot use gen_statem types
related to naming & starting in their behaviour implementations
As an example, we cannot do:
-spec start_link(Options) -> gen_statem:start_ret() when
Options :: some_complex_thing().
start_link(Options) ->
gen_statem:start_link(?MODULE, [Opts], []).
As dialyzer, if configured to complain about unknown types, will
warn that the type gen_statem:start_ret() is unknown.
Likewise, for the same reason, we cannot do:
-spec do_call_to_gen_statem(ServerRef) -> Reply when
ServerRef :: gen_statem:server_ref(),
Reply :: term().
do_call_to_gen_statem(ServerRef) ->
gen_statem:call(ServerRef, do_thing).
This fixes that by exporting the appropriate types
|
|
|
|
introduced after OTP_R13B03.
|
|
* maint:
Updated OTP version
Prepare release
|
|
|
|
The example should not show the iterator as that is
an internal value and if changed can confuse the reader
of the documentation. See ERL-796
|
|
* maint:
unicode_util did not handle binary input data correctly
|
|
* dgud/stdlib/unicode-binary-bug/ERL-777/OTP-15428:
unicode_util did not handle binary input data correctly
|
|
* maint:
stdlib: Let calendar:system_time_to_rfc3339() keep fractions
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|