Age | Commit message (Collapse) | Author |
|
As pointed out by roowe, qlc does not handle errors in early compiler
(scanner, parser) well in OTP 18.0.
|
|
|
|
* nybek/fix_supervisor_get_childspec:
Fix supervisor:get_childspec/2 for simple_one_for_one
OTP-12841
|
|
* sverk/ets-file2tab-preserve-opts/OTP-12814:
stdlib: Make ets:file2tab preserve read/write_concurrency
stdlib: Fix ets_SUITE:tabfile_ext4
|
|
|
|
Add new functions erl_parse:type_inop_prec() and
erl_parse:type_preop_prec().
Get rid of paren_type used for parentheses in types.
|
|
* rickard/timer-improvement/OTP-12650:
Callback timer
Disable accessor timer option
Aux work flag descriptions
Fix test cases
|
|
A bug in supervisor:get_childspec/2 results in
{error, simple_one_for_one} being returned on every call when the
supervisor strategy is simple_one_for_one.
This commit includes a small refactoring which brings together the
two 'start_child' clauses to make the code easier to follow.
|
|
|
|
for hosts with long names.
|
|
Several people have requested that the assert macros in EUnit should be
moved out to a separate header file. This patch puts them in
stdlib/include/assert.hrl, which gets included by the eunit.hrl file.
Thus, nothing changes for eunit users, but the asserts can now also be
included separately.
|
|
* fishcakez/supervisor_ignore:
Don't store child that returns ignore in simple supervisor
OTP-12793
|
|
* richcarl/warnings-by-default/OTP-12781:
stdlib: Use warning channel in test qlc_SUITE:otp_6964/1
stdlib: Fix testcase for qlc_SUITE
kernel: Fix code_SUITE with respect to new logger default
Map error logger warnings to warning messages by default
|
|
|
|
|
|
* egil/opt-compile-time/OTP-12774:
stdlib: Relax erl_anno_SUITE:is_anno/1 test
Update primary bootstrap
compiler: Use Maps as type information
compiler: Use Maps instead of dict in beam_jump
compiler: Use cerl_sets instead of gb_sets in beam_type
compiler: Use Maps instead of gb_trees in beam_dead
compiler: Use cerl_sets instead of gb_sets in beam_jump
compiler: Use cerl_sets instead of sets in v3_kernel
compiler: Use cerl_sets instead of gb_sets in sys_core_fold
compiler: Add cerl_sets module
compiler: Scope uses gb_sets not gb_trees
beam_dict: Use Maps to map function name indices
beam_dict: Use Maps to map line indices
beam_dict: Use Maps to map atom indices
v3_codegen: Use Maps to map local functions
v3_life: Refactor variable db
compiler: Use lc instead of map/1 in v3_codegen
stdlib: Optimize erl_anno:is_string/1
Conflicts:
bootstrap/lib/kernel/ebin/inet_dns.beam
bootstrap/lib/stdlib/ebin/erl_anno.beam
bootstrap/lib/stdlib/ebin/erl_lint.beam
|
|
* egil/cuddle-tests:
erts: Relax monitor_SUITE:mixer/1
erts: Refactor monitor_SUITE:mixer/1
stdlib: Minor change of unicode_SUITE
stdlib: Relax iterations in binary_module_SUITE:random_ref_sr_comp/1
Remove ?line macro in binary_module_SUITE:random_ref_sr_comp/1
stdlib: Relax iterations in binary_module_SUITE:random_ref_comp/1
stdlib: Remove ?line macro in binary_module_SUITE:random_ref_comp/1
stdlib: Relax filesize of io_proto_SUITE:unicode_options_gen/1
stdlib: Relax rand_SUITE timeout
debugger: Relax test map_SUITE:t_guard_receive_large/1
tools: Relax lcnt test time
stdlib: ets_SUITE cuddling
|
|
If a child of a simple_one_for_one returns ignore from its start
function no longer store the child for any restart type. It is not
possible to restart or delete the child because the supervisor is a
simple_one_for_one.
Previously a simple_one_for_one would crash, potentially without
shutting down all of its children, when it tried to shutdown a child
with undefined pid.
Previous only one undefined pid child was stored in a simple_one_for_one
supervisor no matter how many times the child start function returned
ignore.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* egil/fix-hipe_libs:
stdlib: Relax maps test suite for HiPE
|
|
Due to the relaxation of erl_anno:is_string/1, the test
false = erl_anno:is_anno([{location,1},{text,[a,b,c]}]),
is no longer valid.
|
|
* sverk/ets-tab2file-syn/OTP-12737:
stdlib: Add 'sync' option to ets:tab2file/3
|
|
Time measurement of ets-lookups, too fast for windows.
|
|
|
|
|
|
|
|
|
|
to improve the chance of some real disk persistence
before tab2file returns.
|
|
* egil/fix-maps-copy-shallow:
erts: Make hashmap_get halfword safe
erts: Fix ETS db_has_variable check for large Maps
stdlib: Strengthen ETS Maps tests
erts: Fix copy shallow for large Maps
stdlib: Strengthen ETS Maps tests
erts: ETS ordered_set cannot use it's optimization with Maps
stdlib: Strengthen ETS Maps tests
stdlib: Refactor away ?line macro
|
|
* bjorn/stdlib/fix-filename-split/OTP-12716:
Correct filename:split(<<"">>)
|
|
* dgud/stdlib/rand/OTP-12586:
stdlib: Document and add normal distributed random value function
stdlib: Add new random functionality/module
|
|
Ensure db_has_variable is tested for large Maps as well.
|
|
Strengthen tests of large Maps in ETS.
|
|
The additional tests in match_object focus on ordered sets.
|
|
|
|
filename:split("") returns [], while filename:split(<<"">>) returns
[<<"/">>].
Since the support in the filename module for binary arguments is
much more recent than support for strings, change
filename:split(<<"">>) so that it returns [].
Noticed-by: KOUCHANG
|
|
It is needed in various tests. It uses the Ziggurat algorithm, which
is the fastest that I know.
|
|
As long as the Erlang Compiler and qlc do not agree on the location of
LC warnings, qlc's own warnings about patterns and filters that always
fail have been silenced.
|
|
|
|
Introduce erl_anno, an abstraction of the second element of tokens and
tuples in the abstract format. The convention that negative line
numbers can be used for silencing compiler warnings will no longer
work in OTP 19; instead the annotation 'generated' is to be used.
|
|
The old random module contains an old algorithm which have flaws
and the api requires the user to invoke seed and or checking if seed have
been invoked, if a non constant seed is to be used.
The api contains the following features:
- The user can invoke rand:unform/[0|1] directly and get a non constant seeding.
- The api is split in functional and non functional functions,
i.e. usage of _s functions will not affect the process dictionary.
- The api contains several algorithms with different characteristics and
can be extended with new algorithms in the future.
- Contains state of the art random number generators.
- Default algorithm is taylor made for erlang to be fast on 64bits machines.
|
|
fbaa0bec replaced the use of now/0 with erlang:monotonic_time/1 but at
the same time introduced a bug in inPeriod/3 so that it would always
return 'true' (the subtraction Time - Now would always result in
a non-positive number that would always be less than Period).
The symptoms of the bug is that when a child has been restarted the
maximum number of times allowed, the supervisor will terminate,
regardless of how much time that elapses between the restarts.
There was no test case that detected this problem. Add the missing
test case to ensure that this bug stays killed.
Reported-by: Rafał Studnicki
|
|
* bjorn/maps:
Document the new {badmap,Term} and {badkey,Key} exceptions
Raise more descriptive error messages for failed map operations
erl_term.h: Add is_not_map() macro
Tigthen code for the i_get_map_elements/3 instruction
Pre-compute hash values for the general get_map_elements instruction
Teach the loader to pre-compute the hash value for single-key lookups
Optimize use of i_get_map_element/4
beam_emu: Slightly optimize update_map_{assoc,exact}
v3_codegen: Don't sort map keys in map creation/update
beam_validator: No longer require strict literal term order
Sort maps keys in the loader
De-optimize the has_map_fields instructions
erts/map_SUITE.erl: Add a test case that tests has_map_fields
Fully evaluate is_map/1 for literals at load-time
map_SUITE: Add tests of is_map/1 with literal maps
Run a clone of map_SUITE without optimizations
Remove the fail label operand of the new_map instruction
Correct transformation of put_map_assoc to new_map
Remove support for put_map_exact without a source map
|
|
According to EEP-43 for maps, a 'badmap' exception should be
generated when an attempt is made to update non-map term such as:
<<>>#{a=>42}
That was not implemented in the OTP 17.
José Valim suggested that we should take the opportunity to
improve the errors coming from map operations:
http://erlang.org/pipermail/erlang-questions/2015-February/083588.html
This commit implement better errors from map operations similar
to his suggestion.
When a map update operation (Map#{...}) or a BIF that expects a map
is given a non-map term, the exception will be:
{badmap,Term}
This kind of exception is similar to the {badfun,Term} exception
from operations that expect a fun.
When a map operation requires a key that is not present in a map,
the following exception will be raised:
{badkey,Key}
José Valim suggested that the exception should be
{badkey,Key,Map}. We decided not to do that because the map
could potentially be huge and cause problems if the error
propagated through links to other processes.
For BIFs, it could be argued that the exceptions could be simply
'badmap' and 'badkey', because the bad map and bad key can be found in
the argument list for the BIF in the stack backtrace. However, for the
map update operation (Map#{...}), the bad map or bad key will not be
included in the stack backtrace, so that information must be included
in the exception reason itself. For consistency, the BIFs should raise
the same exceptions as update operation.
If more than one key is missing, it is undefined which of
keys that will be reported in the {badkey,Key} exception.
|