aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib
AgeCommit message (Collapse)Author
2018-12-11Merge branch 'maint'Henrik Nord
* maint: Updated OTP version Prepare release
2018-12-10Prepare releaseErlang/OTP
2018-12-03Merge branch 'maint'Dan Gudmundsson
* maint: unicode_util did not handle binary input data correctly
2018-12-03Merge branch 'dgud/stdlib/unicode-binary-bug/ERL-777/OTP-15428' into maintDan Gudmundsson
* dgud/stdlib/unicode-binary-bug/ERL-777/OTP-15428: unicode_util did not handle binary input data correctly
2018-12-03Merge branch 'maint'Hans Bolinder
* maint: stdlib: Let calendar:system_time_to_rfc3339() keep fractions
2018-11-29stdlib: Let calendar:system_time_to_rfc3339() keep fractionsHans Bolinder
RFC3339 mentions in paragraph 5.1 that if certain conditions are fulfilled, then sorting date and time strings results in a time-ordered sequence. One of the conditions is that the strings must have the same number of fractional second digits. This commits makes sure this is indeed the case.
2018-11-29Merge branch 'lukas/ssl/dist_benchmarks'Lukas Larsson
* lukas/ssl/dist_benchmarks: stdlib: Adjust binary bench to be faster ssl: Add scheduler utilization benchmark of plain/tls dist ssl: Link to tstsrvr to group_leader in test ssl: Add some benchmarks to test
2018-11-29stdlib: Adjust binary bench to be fasterLukas Larsson
When benchmarking releases before OTP-22 the binary:match function is very slow so it takes a long time to run the benchmarks. This commit makes the benchmark run for a shorter time which will make the results a bit less stable, but it will cut 1 hour from the benchmark regression so we will have to live with that.
2018-11-22Merge branch 'maint'Björn Gustavsson
* maint: Fix inadvertently suppressed warning for unused variable
2018-11-21Fix inadvertently suppressed warning for unused variableBjörn Gustavsson
An external fun could inadvertently suppress warnings for unused variables, such as in this example: bug() -> BugVar = foo(), if true -> fun m:f/1 end. There would be no warning that `BugVar` was unused. The bug was introduced in ff432e262e652, which was the commit that extended external funs to allow variables. https://bugs.erlang.org/browse/ERL-762
2018-11-20Merge branch 'sverker/ets-ordered-set-fixups'Sverker Eriksson
2018-11-20stdlib: Fix bug in ets_SUITE:smp_ordered_iterationSverker Eriksson
Did fail on really slow unlucky machines.
2018-11-20unicode_util did not handle binary input data correctlyDan Gudmundsson
gc_zwj sent binaries recursivly to gc_extend/3 which didn't handle can't handle them. ERL-777
2018-11-16erts: Fix offheap leak of ets catree tmp iteration keySverker Eriksson
Also fix erts_debug:get_internal_status(node_and_dist_references) for catree to also search route node keys for offheap stuff.
2018-11-16Merge branch 'john/erts/plusplus-trapping/OTP-15427'John Högberg
* john/erts/plusplus-trapping/OTP-15427: Don't use too many reductions in lists:reverse/2 Make '++'/2 trapping
2018-11-14Merge branch 'maint'Lukas Larsson
* maint: Updated OTP version Prepare release Optimize operator '--' and yield on large inputs
2018-11-14Merge branch 'maint-18' into maintLukas Larsson
* maint-18: Updated OTP version Prepare release Optimize operator '--' and yield on large inputs Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/emulator/beam/erl_alloc.types erts/emulator/beam/erl_bif_lists.c erts/vsn.mk lib/stdlib/doc/src/notes.xml lib/stdlib/vsn.mk make/otp_version_tickets otp_versions.table
2018-11-09Prepare releaseErlang/OTP
2018-11-09Merge branch 'john/erts/OTP-18.3.4/minusminus_trapping/OTP-15371' into maint-18Erlang/OTP
* john/erts/OTP-18.3.4/minusminus_trapping/OTP-15371: Optimize operator '--' and yield on large inputs
2018-11-09Merge branch 'maint'Lukas Larsson
* maint: Updated OTP version Prepare release Optimize operator '--' and yield on large inputs
2018-11-09Merge branch 'maint-20' into maintLukas Larsson
* maint-20: Updated OTP version Prepare release Optimize operator '--' and yield on large inputs Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/emulator/beam/erl_alloc.types erts/emulator/beam/erl_bif_lists.c erts/vsn.mk lib/ssl/doc/src/notes.xml lib/ssl/vsn.mk lib/stdlib/doc/src/notes.xml lib/stdlib/vsn.mk make/otp_version_tickets otp_versions.table
2018-11-09Make '++'/2 trappingJohn Högberg
2018-11-07Remerge branch 'sverker/erts/ordered_set-select-improvements/OTP-15325'Sverker Eriksson
* sverker/erts/ordered_set-select-improvements/OTP-15325: erts: Tidy some ordered_set iteration code erts: Fix bug for catree iteration
2018-11-05Prepare releaseErlang/OTP
2018-11-05Merge branch 'john/erts/OTP-20.3.8/minusminus_trapping/OTP-15371' into maint-20Erlang/OTP
* john/erts/OTP-20.3.8/minusminus_trapping/OTP-15371: Optimize operator '--' and yield on large inputs
2018-11-05Optimize operator '--' and yield on large inputsJohn Högberg
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]>
2018-11-02Optimize operator '--' and yield on large inputsJohn Högberg
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]>
2018-11-02Merge branch 'maint'John Högberg
* maint: Optimize operator '--' and yield on large inputs Inline erts_cmp Clarify a magical allocation size Fix trapping in lists:reverse/2
2018-11-02Merge branch 'john/erts/minusminus_trapping/OTP-15371' into maintJohn Högberg
* john/erts/minusminus_trapping/OTP-15371: Optimize operator '--' and yield on large inputs Inline erts_cmp Clarify a magical allocation size Fix trapping in lists:reverse/2
2018-11-01erts: Fix bug for catree iterationSverker Eriksson
with keys containing off-heap terms. The passed key may actually be the one already saved (if nodes have been joined), in which case we do nothing. Calling destroy_route_key() may destroy off-heap data.
2018-11-01Merge branch 'bmk/20180927/remove_otp_mibs2/OTP-14984'Micael Karlberg
2018-10-31Merge PR-1997 from sverker/erts/ordered_set-select-improvements/OTP-15325Sverker Eriksson
Even more scalable ETS ordered_set with write_concurrency
2018-10-30stdlib: Add ets_SUITE:smp_ordered_iterationSverker Eriksson
to provoke iteration over a moving ordered_set with write_concurrency and make sure we hit all "stable" keys.
2018-10-30stdlib: Improve stim_cat_ord_set in ets_SUITESverker Eriksson
to generate a routing tree with keys that fit each test case.
2018-10-30Merge branch 'maint'Hans Nilsson
* maint: fix extra parameter in <type> Update profiling.xml Fix docs on gen_event optional callback
2018-10-29Optimize operator '--' and yield on large inputsJohn Högberg
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]>
2018-10-26erts: Join empty base nodes in catreeSverker Eriksson
The original implementation did not do this due to fear of bad performance. But we think the negative effect of "leaking" empty base nodes is more important to fix. To get the bad performance a special kind of access patterns is needed where base nodes are frequently emptied and then repopulated soon again. ets_SUITE:throughput_benchmark for example did not show any negative effect from this commit at all.
2018-10-24Fix docs on gen_event optional callbackBrujo Benavides
It returns `ok`, instead of `noreply`.
2018-10-24Merge branch 'maint'Björn Gustavsson
* maint: beam_lib: Remove obsolete module() from the beam() type hipe: Don't use beam_lib:info/1 with an atom as filename Honor the max heap size when copying literals after purging
2018-10-24Merge pull request #1992 from bjorng/bjorn/stdlib/beam_lib/ERL-696Björn Gustavsson
beam_lib: Clarify the beam() type in code and documentation OTP-15378
2018-10-23stdlib: Add runtime dependency to ertsSverker Eriksson
2018-10-23erts: Provoke random catree split/join for DEBUG emulatorSverker Eriksson
2018-10-23erts: Do contention adaptions during (updating) iterationsSverker Eriksson
Once an iteration key has been found, never fall back to first/last key in next/prev tree as trees may split or join under our feet. I.e we must always use previous key when searching for the next key.
2018-10-23stdlib: Optimize ets_SUITE:stimulate_contentionSverker Eriksson
with ets_force_split
2018-10-23erts: Implement ets:info(T, stats) for catreesSverker Eriksson
{RouteNodes, BaseNodes, MaxRouteTreeDepth}
2018-10-23stdlib: Remove doc note about multi key performance limitSverker Eriksson
2018-10-19beam_lib: Remove obsolete module() from the beam() typeBjörn Gustavsson
The type `beam()` in the `beam_lib` module is confusing: -type beam() :: module() | file:filename() | binary(). It says that the module name can be used to identify the BEAM module to be accessed, but passing in the module name only works if the BEAM file is located in the current working directory because the module is not searched for in the code path. The reason that it is allowed to pass in the module name as an atom is for backward compatibility. A long time ago, atoms instead of strings were used as filenames. For that reason, `filename` and `file` still accept atoms as filenames (although the practice is frown upon). `beam_lib` accepts an atom as the filename for the same reason. To remove the confusion, remove `module()` from the type and the mention of it in the documentation. Code that uses an atom as a filename will still work, but Dialyzer will issue a warning. https://bugs.erlang.org/browse/ERL-696
2018-10-19Merge branch 'maint'Siri Hansen
2018-10-19Merge branch 'siri/cuddle' into maintSiri Hansen
* siri/cuddle: Fix gen_fsm_SUITE:start2/1 to terminate process synchronously Fix sys_SUITE:special_process/1 to terminating process synchronously
2018-10-17Merge branch 'maint'Sverker Eriksson