Age | Commit message (Collapse) | Author |
|
* sverker/ets-test-cuddle:
stdlib: Fix ets_SUITE:tabfile_ext4
|
|
on machines with long host names.
Move forward the file location interval to corrupt.
An ETS table file corrupted in the header may still be readable
with table content unchanged and that will cause tabfile_ext4 to fail.
The header length increase with long host names and added table options.
|
|
* hasse/remove_old_IO_requests/OTP-15695:
stdlib: Remove old I/O-requests from test suites
stdlib (doc): Do not mention old requests
snmp: Update old format I/O-request
sasl: Use encoding when reading terms
parsetools (doc): Update old format I/O-requests
mnesia: Update old format I/O-request
kernel: Update old format I/O-requests
stdlib: Remove no longer used function
kernel: Remove commented out code
stdlib: Remove commented out code
|
|
|
|
* maint:
fun2ms: accept ++ in function head when called from shell
|
|
* legoscia/stdlib/fun2ms-plusplus/OTP-15992/PR-2322:
fun2ms: accept ++ in function head when called from shell
|
|
* maint:
erts: Create heap binaries in binary:split/2-3
erts: Create heap binaries in binary_part/2-3
erts: Create heap binaries in split_binary/2
erts: Create heap binaries in bs_get_binary2
erts: Remove size check in bs_start_match
erts: Disallow binaries whose size in bits exceeds UWORD_MAX
|
|
ErlSubBin is a large struct that often dwarfs the region of memory
it points at, and it's common for them to refer to a ProcBin which
must be kept around as long as the SubBin lives, using up even more
heap space and keeping the referenced binary alive regardless of
how small the sub-binary is.
|
|
Code such as ets:fun2ms(fun({"foo" ++ X}) -> X end) works fine in
compiled code. Let's make it work when fun2ms is invoked from the
shell as well.
|
|
* sverker/ets_SUITE-fixtable_iter_bag:
stdlib: ets_SUITE:fixtable_iter_bag
|
|
Turns out the bug in ets:next() that I tried to provoke
with this new test wasn't really there. Oh well.
|
|
* maint:
Updated stdlib runtime dependency to erts
Convert generated re replace and split tests from latin1 to UTF8
Adjust generated re replacement and split tests
Generate new re replacement and split tests using perl 5.22.1
Update internal PCRE to version 8.43
|
|
* rickard/pcre-8.43/OTP-15889:
Updated stdlib runtime dependency to erts
Convert generated re replace and split tests from latin1 to UTF8
Adjust generated re replacement and split tests
Generate new re replacement and split tests using perl 5.22.1
Update internal PCRE to version 8.43
|
|
* maint:
erts: Fix integer overflow in loader
erts: Fix integer overflow in list subtraction
|
|
* john/erts/lists_subtract_fixes/OTP-15938/OTP-15939:
erts: Fix integer overflow in loader
erts: Fix integer overflow in list subtraction
|
|
CMP_TERM returned an `Sint`, which overflowed the `int` used in
erl_rbtree for storing the comparison, causing list subtraction to
behave strangely.
|
|
|
|
Adjustment needed due to incompatibility between PCRE 8.43
and perl version 5.22.1
|
|
|
|
|
|
* maint:
Update runtime dependency from stdlib to erts
Yield when validating UTF8 for long subject in re:run()
Add yield_on_subject_validation() test
Update runtime dependency from stdlib to erts
Only validate subject once when global is used in re:run()
Add global_unicode_validation() test
|
|
rickard-green/rickard/re-unicode-validation/OTP-15831/OTP-15836/ERL-876
re unicode validation
|
|
rickard/re-unicode-validation/OTP-15831/OTP-15836/ERL-876
* rickard/re-yield-unicode-validation/OTP-15836/ERL-876:
Update runtime dependency from stdlib to erts
Yield when validating UTF8 for long subject in re:run()
Add yield_on_subject_validation() test
|
|
rickard/re-unicode-validation/OTP-15831/OTP-15836/ERL-876
* rickard/re-global-unicode-validation/OTP-15831/ERL-876:
Update runtime dependency from stdlib to erts
Only validate subject once when global is used in re:run()
Add global_unicode_validation() test
|
|
* kjell/stdlib/ets_ordered_set_slow_react/OTP-15906:
ETS ordered_set: Improvements to the CA tree implementation
|
|
This commit only affects the implementation of ETS `ordered_set`
tables with the `write_concurrency` option enabled. Such tables are
implemented with a data structure that is called the contention
adapting search tree (CA tree). This commit introduces the following
changes:
* This commit causes a join to be triggered in one randomly selected
base node in about one of 1000 read unlock calls for base node
locks. No such joins happened before this commit. Before this
commit, operations that only acquired looks in read-mode never
triggered any contention adaptation. Therefore, the CA tree could
get stuck in a sub-optimal state in certain scenarios. This could
happen, for example, when a CA tree is first populated with parallel
inserts (which will cause splits of base nodes) and then only
read-only operations are applied to the data structure. Benchmark
results from the
`ets_SUITE:lookup_catree_par_vs_seq_init_benchmark/0` benchmark
function (which is included in this commit) shows that this change
can improve the throughput of the CA tree in the scenario described
above.
* Read-only operations will now also increase values of statistics
counters when they detect that they need to wait for other
operations. Only write operation changed statistics counters before
this commit. This improves the statistics that the adaptation
heuristics is based on.
* Additionally, this commit adds an upper and lower limit to the
contention statistics variables in the base nodes. Such limits did
not exist before this commit. This should, for example, make the CA
tree more responsive to contention after long periods of low
contention.
|
|
* hasse/stdlib/chars_limit_bug/OTP-15875/ERL-967:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
# Conflicts:
# lib/stdlib/test/io_SUITE.erl
|
|
* maint:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
|
|
* hasse/stdlib/chars_limit_bug/OTP-15875/ERL-967:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
|
|
This commit only affects the implementation of ETS `ordered_set`
tables with the `write_concurrency` option enabled. Such tables are
implemented with a data structure that is called the contention
adapting search tree (CA tree). This commit introduces the following
changes:
* This commit causes a join to be triggered in one randomly selected
base node in about one of 1000 read unlock calls for base node
locks. No such joins happened before this commit. Before this
commit, operations that only acquired looks in read-mode never
triggered any contention adaptation. Therefore, the CA tree could
get stuck in a sub-optimal state in certain scenarios. This could
happen, for example, when a CA tree is first populated with parallel
inserts (which will cause splits of base nodes) and then only
read-only operations are applied to the data structure. Benchmark
results from the
`ets_SUITE:lookup_catree_par_vs_seq_init_benchmark/0` benchmark
function (which is included in this commit) shows that this change
can improve the throughput of the CA tree in the scenario described
above.
* Read-only operations will now also increase values of statistics
counters when they detect that they need to wait for other
operations. Only write operation changed statistics counters before
this commit. This improves the statistics that the adaptation
heuristics is based on.
* Additionally, this commit adds an upper and lower limit to the
contention statistics variables in the base nodes. Such limits did
not exist before this commit. This should, for example, make the CA
tree more responsive to contention after long periods of low
contention.
|
|
See also https://bugs.erlang.org/browse/ERL-967.
|
|
* maint:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
|
|
* hasse/stdlib/chars_limit_bug/OTP-15847/ERL-957:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
|
|
* hasse/stdlib/chars_limit_bug/OTP-15847/ERL-957:
stdlib: Fix a bug concerning io_lib option 'chars_limit'
# Conflicts:
# lib/stdlib/test/io_SUITE.erl
|
|
See also https://bugs.erlang.org/browse/ERL-957.
|
|
|
|
|
|
This commit makes it possible to see relative differences in the HTML
page that visualizes results from the ETS throughput benchmark that is
included in the test suite ets_SUITE. This change will make it easier
to compare different ETS table configurations and implementations.
|
|
* hasse/stdlib/optimize_io_format/OTP-15705:
stdlib: Optimize pretty printing of strings with chars_limit
stdlib: Optimize printing of maps a bit
stdlib: Optimize pretty printing of lists slightly
|
|
* hasse/stdlib/check_spec_module/OTP-15563/ERL-845:
stdlib: Do not allow specs for functions in other modules
|
|
See also https://bugs.erlang.org/browse/ERL-845.
[Kostis:]
My suggestion is that the compiler refuses to compile modules that
contain specs for functions that are not from this module. I do not
remember when / why this `feature' was introduced, but thinking about
it I see a lot of (ugly) semantics issues with it. For example, should
one be allowed to declare in the foo module that lists:flatten/1 takes
an integer() as an argument and returns a binary()? Should one be
allowed to declare a spec in some module m1 for a function of m2 that
is not defined in m2?
There are all kinds of checks that will need to be added to dialyzer
to protect itself from these semantics issues. The compiler already
refuses to compile modules that contain specs for non-existing
functions of the module. Similarly, it should refuse to compile
modules that contain specs for functions of other modules - unless it
can somehow check that these functions are indeed defined, but it is
not how the compiler currently works.
|
|
Avoid traversing all of string arguments when limiting the output with
the 'chars_limit' option.
|
|
Could expand binary to list for to many elements.
Fix and add tests.
|
|
Fixed bug in slice which wrongly could return <<>> for non-utf8 binary input.
Also give a better error reason when non-utf8 binaries are given as
input to some functions.
|
|
This commit fixes an ETS test case that tests the decentralized memory
counter in tables of type ordered_set with the write_concurrency
option turned on. The test case assumed that the memory consumption of
the table would only grow monotonically when terms are
inserted. However, this was not the case when the emulator was
compiled in debug mode as random splits and joins of CA tree nodes
could happen. This commit fixes the test case by disabling random
splits and joins in the tested table.
|
|
|
|
Atomic elements such as atoms, '{}', '[]', and '<<>>' are output on
the same line in types, structs, lists, &c.
In particular types can be more compact, and easier to read.
A space is output after comma in tuples, to be more consistent.
|
|
* hasse/stdlib/erl_pp_quoted_atom_types/OTP-15756:
stdlib: Add option 'quote_singleton_atom_types' to erl_pp
|
|
The new option can be used by Dialyzer, which has traditionally quoted
singleton atom types.
The OTP team has decided not to use the convention in OTP
documentation, at least not for now. That is why the option is needed.
EDoc does not use the new option.
Syntax Tools does not have a similar option.
|
|
* sverker/test-cuddle:
stdlib: Remove ets_SUITE:time_lookup
|