Age | Commit message (Collapse) | Author |
|
* sverker/ets-no-mbuf-trapping/OTP-15660:
erts: Remove ets traversal yielding if heap fragment
|
|
Many heap fragments do no longer make the GC slow.
Even worse, we are not guaranteed that a yield will provoke a GC
removing the fragments, which might lead to a one-yield-per-bucket
scenario if the heap fragment(s) still remains after each yield.
|
|
|
|
* john/erts/OTP-20.3.8/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]>
|
|
* sverker/erts/ets-select_replace-bug/OTP-15346:
erts: Fix bug in ets:select_replace for bound key
|
|
which may cause following calls to ets:next or ets:prev to fail.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
* lukas/kernel/fix_os_cmd_max_size_win32/OTP-14940:
stdlib: Fix doc link in timer
kernel: Fix handling of os:cmd option max_size in win
|
|
OTP-14942
|
|
|
|
The small sub-binary conversion trick in the GC broke this test
pretty often on some machines.
|
|
The bug was introduced in 87a0af4 (R18).
|
|
|
|
* maint-20:
Updated OTP version
Update release notes
Update version numbers
erts: Add system_flags(erts_alloc,"+M?sbct *")
erts: Add age order first fit allocator strategies
erts: Refactor erl_ao_firstfit_alloc
erts: Add migration options "acnl" and "acfml"
kernel: Add os:cmd/2 with max_size option
erts: Add more stats for mbcs_pool
erts: Fix alloc_SUITE:migration
stdlib: Make ets_SUITE memory check try again
erts: Improve carrier pool search
erts: Improve alloc_SUITE:migration
erts: Refactor carrier dealloc migration
|
|
into 'sverker/maint-20/alloc-n-migration/ERIERL-88'
OTP-14915
OTP-14916
OTP-14917
OTP-14918
|
|
|
|
* raimo/stdlib/optimize-gen_statem:
Optimize plain call response time
Correct typo in design principles for gen_statem
|
|
|
|
Matching can be done on any terms.
|
|
|
|
|
|
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.
|
|
* hasse/stdlib/unicode_stacktrace/OTP-14847/ERL-553:
stdlib: Handle Unicode when formatting stacktraces
|
|
* hasse/stdlib/find_src/OTP-14832/ERL-527:
stdlib: Correct a filelib test case
stdlib: Let filelib:find_source() search subdirs
|
|
See also ERL-553 and ERL-544 (commit c3ddb0f).
|
|
'tar_entry()' values are only returned if we specify the 'verbose'
option when calling table/2, which table/1 doesn't do.
Now, it appears that Dialyzer as of OTP 20 is clever enough to realize
that the return type of table/1 must intersect with the return type of
table/2, and so it ignores the fact that table/1 says it returns
strings, and therefore its callers are expected to be dealing with
'tar_entry()' tuples, and never with strings.
This is obviously a mismatch between what the code does and what the
spec says is does, leading to false Dialyzer warnings on code that uses
table/1 (and, presumably, also table/2 when called without
the 'verbose' option.)
|
|
|
|
The Design Principles states that an application can have Erlang
source files one level below the "src" directory, and now
filelib:find_source() by default searches one level below "src".
The same applies to "esrc". That directory is only mentioned in
filename(3).
|
|
as memory stats do not guarantee consistency.
A typical ETS test case ends by a lot of deallocating
that may now trigger homecoming carrier migration,
that in turn can cause quite large inconsistencies
in memory stats when same carrier is accounted for twice
or not at all.
And that's my theory why I now sometimes see transient discrepancies
between before and after memory stats.
|
|
digraph: Document a bad_edge error
|
|
|
|
|
|
|
|
|
|
|
|
Avoid unicode_util module call for ASCII strings
|
|
Exit early for Latin-1
|
|
* lukas/docs/xmllint_fixes/OTP-14721:
ssl/ssh: Remove/ignore unused XML_FILES doc files
Refactor xmllint check and make it fail on failure
Add toplevel xmllint make target
Conflicts:
lib/crypto/doc/src/Makefile
|
|
This commit also adds a check to see that all files that
are part of an xi:include also have part of XML_FILES
and vice versa. It also fixes any applications where this
was not true.
|
|
When comparing the process dictionary before and after a test, only
(a sorted list of) qlc keys are compared.
|
|
Handle UNC (shared) path on win32, previously "//dir/.." and "\\\\dir\.." was cleaned up to
"/dir/.." which was not correct.
OTP-14693
|
|
* hasse/stdlib/fix_ets_i_1/OTP-14663:
stdlib: Make ets:i/1 exit cleaner upon ^D (old Erlang shell)
|
|
This reverts commit 0717a2194e863f3a78595184ccc5637697f03353, reversing
changes made to 71a40658a0cef8b3e25df3a8e48a72d0563a89bf.
|
|
* lars/doc-cleanup/OTP-14475:
[edoc] Remove unused module otpsgml_layout.erl
Remove unused files from the documentation build
|