aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib
AgeCommit message (Collapse)Author
2019-03-07Merge branch 'sverker/maint/ets-no-mbuf-trapping/OTP-15660'Sverker Eriksson
into sverker/master/ets-no-mbuf-trapping/OTP-15660
2019-03-07Merge branch 'sverker/ets-no-mbuf-trapping/OTP-15660'Sverker Eriksson
into sverker/maint/ets-no-mbuf-trapping/OTP-15660
2019-03-07erts: Remove ets traversal yielding if heap fragmentSverker Eriksson
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.
2019-03-06Merge branch 'maint'Hans Bolinder
* maint: stdlib: Correct and optimize pretty printing of strings
2019-03-05stdlib: Correct and optimize pretty printing of stringsHans Bolinder
Avoid traversing all of the list/string when only part of it will be used. An explicit check that the list is flat is needed since string:slice() accepts deep lists and more.
2019-03-05Fix broken doc linkRaimo Niskanen
2019-03-04Merge branch 'maint'Hans Bolinder
* maint: stdlib: Optimize calendar:system_time_to_rfc3339()
2019-03-04Merge branch 'hasse/stdlib/optimize_calendar_rfc3339/OTP-15630' into maintHans Bolinder
* hasse/stdlib/optimize_calendar_rfc3339/OTP-15630: stdlib: Optimize calendar:system_time_to_rfc3339()
2019-02-27Fix failing test case binary_module_SUITE:copy/1Björn Gustavsson
The stronger compiler optimizations made the test case fail.
2019-02-27Fix failing test case qlc_SUITE:lookup2/1Björn Gustavsson
5239eb0c62a9 removed some optimizations in `sys_core_fold`, and because of that two warnings are no longer emitted.
2019-02-27Revert "Prepare release"Rickard Green
This reverts commit df130102cdeca8d35fec95a0c926fd1cfec54eab.
2019-02-26Prepare releaseErlang/OTP
2019-02-25Merge branch 'siri/rsh-ssh/PR-1787'Hans Bolinder
OTP-15633 * siri/rsh-ssh/PR-1787: Fix some missed comments about rsh Document the restrictions on the -rsh command Use ssh as the default remote shell
2019-02-25Merge branch 'solvip/stdlib/gen_statem/export-start-types'Raimo Niskanen
* solvip/stdlib/gen_statem/export-start-types: Fix links within gen_statem doc
2019-02-25Fix links within gen_statem docRaimo Niskanen
2019-02-25Merge branch 'solvip/stdlib/gen_statem/export-start-types'Raimo Niskanen
* solvip/stdlib/gen_statem/export-start-types: Create a gen_statem type for enter_loop options gen_statem exports types related to starting & naming
2019-02-25Create a gen_statem type for enter_loop optionsRaimo Niskanen
2019-02-24Fix missing double quote in filename documentationChuan Wei Foo
2019-02-22Merge branch 'bmk/20190204/socket_as_nif/OTP-14831'Micael Karlberg
2019-02-22Merge branch 'maint'Björn Gustavsson
* maint: Clarify the atomic guarantees for ets:update_counter()
2019-02-22Clarify the atomic guarantees for ets:update_counter()Björn Gustavsson
The phrasing "no process can access the ETS table in the middle of the operation" implies that the entire table is looked during the operation, which is not true if `write_concurrency` is enabled.
2019-02-22Fix some missed comments about rshSiri Hansen
2019-02-21Merge branch 'maint'Hans Bolinder
* maint: stdlib: Fix a bug in the Erlang Pretty Printer
2019-02-20stdlib: Optimize calendar:system_time_to_rfc3339()Hans Bolinder
Not using io_lib for formatting makes the conversion several times faster.
2019-02-18stdlib: Fix a bug in the Erlang Pretty PrinterHans Bolinder
Long atom names in combination with <c><<>></c> could cause a crash.
2019-02-18Merge branch 'maint'Raimo Niskanen
* maint: Updated OTP version Prepare release
2019-02-18Merge branch 'maint-21' into maintRaimo Niskanen
* maint-21: Updated OTP version Prepare release
2019-02-18Merge branch 'maint'Hans Bolinder
* maint: Update primary bootstrap stdlib: Optimize formatted printing of terms Conflicts: bootstrap/lib/stdlib/ebin/io_lib.beam bootstrap/lib/stdlib/ebin/io_lib_format.beam bootstrap/lib/stdlib/ebin/io_lib_pretty.beam
2019-02-18Merge branch 'hasse/stdlib/optimize_pretty_print/ERIERL-306/OTP-15573' into ↵Hans Bolinder
maint * hasse/stdlib/optimize_pretty_print/ERIERL-306/OTP-15573: Update primary bootstrap stdlib: Optimize formatted printing of terms
2019-02-15Merge branch 'maint'Sverker Eriksson
2019-02-15Merge PR-2139 from sverker/ets-doc-partially-bound-key/OTP-15545Sverker Eriksson
Add ETS docs about partially bound key traversal
2019-02-15Prepare releaseErlang/OTP
2019-02-14Merge branch 'maint'Kjell Winblad
2019-02-14Merge pull request #2118 from kjellwinblad/fix_valgrind_problem_bignum OTP-15583Kjell Winblad
Fix bug in binary:encode_unsigned causing a read of uninitialized memory
2019-02-14stdlib: Optimize formatted printing of termsHans Bolinder
Try calling iolist_size() before calling string:length(). The reason is that calls to string:length/1 are slow when the argument is not a list of integers (or contains UNICODE).
2019-02-12Merge branch 'maint'Hans Bolinder
* maint: Optimize calendar:gregorian_days_to_date/1
2019-02-12Merge branch 'FNickRU/stdlib/optimize_calendar/PR-2121/OTP-15572' into maintHans Bolinder
* FNickRU/stdlib/optimize_calendar/PR-2121/OTP-15572: Optimize calendar:gregorian_days_to_date/1
2019-02-11beam_ssa_type: Propagate the 'none' type from callsBjörn Gustavsson
Consider this pseudo code: f(...) -> Val = case Expr of ... -> ... ; ... -> ... ; ... -> my_abort(something_went_wrong) end, %% Here follows code that uses Val. . . . my_abort(Reason) -> throw({error,Reason}). The first two clauses in the case will probably provide some information about the type of the variable `Var`, information that would be useful for optimizing the code that follows the case. However, the third clause would ruin everything. The call to `my_abort/1` could return anything, and thus `Val` could also have any type. 294d66a295f6 introduced module-level type analysis, which will in general keep track of the return type of a local function call. However, it does not improve the optimization for this specific function. When a function never returns, that is, when its type is `none`, it does not propagate the `none` type, but instead pretends that the return type is `any`. This commit extends the handling of functions that don't return to properly handle the `none` type. Any instructions that directly follows the function that does not return will be discarded, and the call will be rewritten to a tail-recursive call. For this specific example, it means that the type for `Val` deduced from the first two clauses will be retained and can be used for optimizing the code after the case.
2019-02-08stdlib: Add ETS docs about partially bound key traversalSverker Eriksson
2019-02-05Merge branch 'maint'Ingela Anderton Andin
Conflicts: lib/ssl/doc/src/ssl.xml lib/ssl/src/ssl.erl lib/ssl/src/ssl_cipher_format.erl lib/ssl/src/tls_handshake.erl
2019-02-05ssl: Use specs to generate type documentationIngela Anderton Andin
2019-02-04Merge branch 'bmk/20180918/nififying_inet/OTP-14831' into ↵Micael Karlberg
bmk/20190204/socket_as_nif/OTP-14831
2019-01-31Optimize calendar:gregorian_days_to_date/1Stanislav Mayorov
This patch improves the performance of calendar:gregorian_days_to_date/1 by changing the algorithm for finding the year to log-logarithmic. The old implementation has linear complexity, which makes function too slow for large values. For example: There is an API that allows you to create events for future dates. There are users of this API who, for some reasons, choose dates very far in the future. In such conditions, function works very slow. New implementation based on interpolation search, takes 1 or 2 iterations at most cases and free from such a flaw. A unit test was also developed to illustrate the speed of a function at large values.
2019-01-30Fix bug in binary:encode_unsigned causing a read of uninitialized memoryKjell Winblad
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]>
2019-01-24stdlib: Add ets doc note about subtle iteration odditiesSverker Eriksson
as it has been made more relevant with the introduction of write_concurrency for ordered_set.
2019-01-24Merge branch 'maint'Sverker Eriksson
2019-01-24Merge PR-2103 from sverker/ets-iteration-doc/OTP-15545Sverker Eriksson
Clarify ETS docs about table iterations
2019-01-24stdlib: Clarify ets docs about table iterationsSverker Eriksson
2019-01-22Merge branch 'maint'Sverker Eriksson
2019-01-22Merge branch 'sverker/fix-since-clauses/OTP-15460' into maintSverker Eriksson
* sverker/fix-since-clauses/OTP-15460: Fix "since" for all multi clause functions