aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
AgeCommit message (Collapse)Author
2018-02-28Merge branch 'peterdmv/stdlib/improve_uri_string_api/OTP-14910'Péter Dimitrov
* peterdmv/stdlib/improve_uri_string_api/OTP-14910: stdlib: Update uri_string documentation (HTML 5.2) stdlib: Improve URI normalization in uri_string Change-Id: I1b85e125ae3bc64e04b04ab884ca603217123167
2018-02-28Merge branch 'john/erts/binary-bin_to_list-performance-fix/OTP-14741'John Högberg
* john/erts/binary-bin_to_list-performance-fix/OTP-14741: Replace binary:bin_to_list CIF implementation with binary_to_list
2018-02-26Replace binary:bin_to_list CIF implementation with binary_to_listJohn Högberg
binary:bin_to_list had a poor implementation that resulted in excessive garbage collection. binary_to_list is almost identical and has a generally better implementation, so I've replaced binary:bin_to_list's CIF with a thin wrapper around binary_to_list. Granted, binary_to_list has a deprecated indexing scheme, but we're unlikely to ever remote it entirely and it's somewhat easy to move it to the 'binary' module later on.
2018-02-26Merge pull request #1719 from josevalim/jv-faster-dialyzer-md5Hans Bolinder
dialyzer: Compute MD5s using the .beam file (OTP-14937)
2018-02-23Merge pull request #1723 from jhogberg/john/erts/ets-whereis/OTP-14884John Högberg
Add ets:whereis/1 for resolving table names -> tid()
2018-02-23Merge branch 'maint'Hans Bolinder
* maint: stdlib: Correct a minor epp bug
2018-02-22Add ets:whereis/1 for resolving table names -> tid()John Högberg
2018-02-21Fix spec for beam_lib:all_chunks/1José Valim
2018-02-21stdlib: Correct a minor epp bugHans Bolinder
The bug was introduced in 87a0af4 (R18).
2018-02-13stdlib: Update uri_string documentation (HTML 5.2)Péter Dimitrov
- Original link to HTML 5.0 specification was broken as the document was moved when later revisions were released. - Form-urlencoded query string handling conforms to the HTML 5.2 specification that references WHATWG URL (10 Jan 2018). - HTML 5.2 does not specify handling of non-UTF-8 form-urlencoded query strings, but it is still supported as described in HTML 5.0. Change-Id: I44603bb501530b16651ecbb9a26ea64e119f83d9
2018-02-08stdlib: Improve URI normalization in uri_stringPéter Dimitrov
- normalize/1 accepts uri_map() as input type and can return error() if URI parsing fails. - Added normalize/2 that can return a normalized uri_map(). Change-Id: Icdd2e60c15019d3eec2e7bc994cae03066a79194
2018-02-07Merge branch 'hasse/no_get_stacktrace/OTP-14861'Hans Bolinder
* hasse/no_get_stacktrace/OTP-14861: erts: Update abstract format doc with stacktrace variable wx: Do not call erlang:get_stacktrace() tools: Do not call erlang:get_stacktrace() stdlib: Do not call erlang:get_stacktrace() sasl: Do not call erlang:get_stacktrace() runtime_tools: Do not call erlang:get_stacktrace() reltool: Do not call erlang:get_stacktrace() parsetools: Do not call erlang:get_stacktrace() observer: Do not call erlang:get_stacktrace() mnesia: Do not call erlang:get_stacktrace() (cont) mnesia: Do not call erlang:get_stacktrace() kernel: Do not call erlang:get_stacktrace() inets: Do not call erlang:get_stacktrace() eunit: Do not call erlang:get_stacktrace() et: Do not call erlang:get_stacktrace() dialyzer: Do not call erlang:get_stacktrace() debugger: Do not call erlang:get_stacktrace() debugger: Do not try to restore stacktrace common_test: Do not call erlang:get_stacktrace()
2018-02-06stdlib: Do not call erlang:get_stacktrace()Hans Bolinder
2018-02-05Merge branch 'emj/stdlib/tar-repro/PR-1608/OTP-14834'Hans Bolinder
* emj/stdlib/tar-repro/PR-1608/OTP-14834: Add options for creating reproducible tars Return error when unable to make dir
2018-02-02Add options for creating reproducible tarsEric Meadows-Jönsson
2018-01-29Merge branch 'maint'Sverker Eriksson
2018-01-29Merge branch 'sverker/ets-match_spec_run-spec/OTP-14889' into maintSverker Eriksson
2018-01-24Merge branch 'maint'Raimo Niskanen
Conflicts: lib/stdlib/src/gen_statem.erl
2018-01-24Merge branch 'raimo/stdlib/optimize-gen_statem' into maintRaimo Niskanen
* raimo/stdlib/optimize-gen_statem: Optimize plain call response time Correct typo in design principles for gen_statem
2018-01-23stdlib: Fix spec for match_spec_run/2Sverker Eriksson
Matching can be done on any terms.
2018-01-23Merge branch 'maint'Hans Bolinder
* maint: kernel: Correct contracts and a bug in group_history stdlib: Correct contracts dialyzer: Optimize handling of a lot of warnings Conflicts: lib/kernel/src/erl_boot_server.erl
2018-01-22stdlib: Correct contractsHans Bolinder
2018-01-17Merge branch 'maint'Hans Bolinder
* maint: stdlib: Garbage the shell's evaluator process more often
2018-01-16Optimize plain call response timeRaimo Niskanen
2018-01-16stdlib: Garbage the shell's evaluator process more oftenHans Bolinder
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.
2018-01-16Merge branch 'maint'Hans Bolinder
* maint: stdlib: Handle Unicode when formatting stacktraces
2018-01-16Merge branch 'hasse/stdlib/unicode_stacktrace/OTP-14847/ERL-553' into maintHans Bolinder
* hasse/stdlib/unicode_stacktrace/OTP-14847/ERL-553: stdlib: Handle Unicode when formatting stacktraces
2018-01-15Merge branch 'maint'Hans Bolinder
* maint: stdlib: Correct a filelib test case stdlib: Let filelib:find_source() search subdirs
2018-01-15Merge branch 'hasse/stdlib/find_src/OTP-14832/ERL-527' into maintHans Bolinder
* hasse/stdlib/find_src/OTP-14832/ERL-527: stdlib: Correct a filelib test case stdlib: Let filelib:find_source() search subdirs
2018-01-15stdlib: Handle Unicode when formatting stacktracesHans Bolinder
See also ERL-553 and ERL-544 (commit c3ddb0f).
2018-01-10Merge branch 'hasse/stdlib/erl_eval_stacktrace/OTP-14826/PR-1540'Hans Bolinder
* hasse/stdlib/erl_eval_stacktrace/OTP-14826/PR-1540: syntax_tools: Correct handling of stacktrace variable stdlib: Add check of stacktrace variable to erl_eval stdlib: Improve erl_eval's stacktraces
2018-01-10Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Add a test of erl_tar:table/1,2 Fix false Dialyzer warnings for erl_tar:table/1
2018-01-09stdlib: Add check of stacktrace variable to erl_evalHans Bolinder
Some of the functions of the erl_eval module do not call the Erlang code linter, so they need to explicitly check that the newly introduced stacktrace variable is not bound.
2018-01-09stdlib: Improve erl_eval's stacktracesHans Bolinder
The call "erlang:get_stacktrace()" is not handled explicitly. If there are issues, they can probably be ignored since erlang:get_stacktrace/1 will be deprecated and removed.
2018-01-09Fix false Dialyzer warnings for erl_tar:table/1Guilherme Andrade
'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.)
2018-01-05stdlib: Let filelib:find_source() search subdirsHans Bolinder
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).
2017-12-21Merge branch 'hasse/stdlib/gen_server_bench'Hans Bolinder
* hasse/stdlib/gen_server_bench: stdlib: Optimize gen a little stdlib: Introduce gen_server benchmark
2017-12-20stdlib: Optimize gen a littleHans Bolinder
2017-12-14Merge pull request #1653 from tonyrog/makedep_side_effectBjörn Gustavsson
Add -MMD option to erlc OTP-14830
2017-12-08Merge pull request #1634 from bjorng/bjorn/get_stacktrace-syntax/OTP-14692Björn Gustavsson
Add syntax in try/catch to retrieve the stacktrace directly
2017-12-07Merge branch 'hasse/stdlib/base64/OTP-14624'Hans Bolinder
* hasse/stdlib/base64/OTP-14624: stdlib: Add base64 benchmarks stdlib: Do not check base64 input more than needed stdlib: Minor optimization of base64 stdlib: Use binary_to_list in base64 when it is faster stdlib: Optimize base64 functions
2017-12-06Add -MMD option to erlcTony Rogvall
The compile option makedep_side_effect, erlc -MMD, instructs the compiler to emit dependencies and continue to compile as normal.
2017-12-04Merge pull request #1646 from tsloughter/hibernate_after_specHans Bolinder
add hibernate_after to the gen options type spec
2017-11-30Add syntax in try/catch to retrieve the stacktrace directlyBjörn Gustavsson
This commit adds a new syntax for retrieving the stacktrace without calling erlang:get_stacktrace/0. That allow us to deprecate erlang:get_stacktrace/0 and ultimately remove it. The problem with erlang:get_stacktrace/0 is that it can keep huge terms in a process for an indefinite time after an exception. The stacktrace can be huge after a 'function_clause' exception or a failed call to a BIF or operator, because the arguments for the call will be included in the stacktrace. For example: 1> catch abs(lists:seq(1, 1000)). {'EXIT',{badarg,[{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}]}} 2> erlang:get_stacktrace(). [{erlang,abs, [[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22, 23,24|...]], []}, {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,674}]}, {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,431}]}, {shell,exprs,7,[{file,"shell.erl"},{line,687}]}, {shell,eval_exprs,7,[{file,"shell.erl"},{line,642}]}, {shell,eval_loop,3,[{file,"shell.erl"},{line,627}]}] 3> We can extend the syntax for clauses in try/catch to optionally bind the stacktrace to a variable. Here is an example using the current syntax: try Expr catch C:E -> Stk = erlang:get_stacktrace(), . . . In the new syntax, it would look like: try Expr catch C:E:Stk -> . . . Only a variable (not a pattern) is allowed in the stacktrace position, to discourage matching of the stacktrace. (Matching would also be expensive, because the raw format of the stacktrace would have to be converted to the cooked form before matching.) Note that: try Expr catch E -> . . . is a shorthand for: try Expr catch throw:E -> . . . If the stacktrace is to be retrieved for a throw, the 'throw:' prefix must be explicitly included: try Expr catch throw:E:Stk -> . . .
2017-11-30erl_parse: Use a new pat_expr rule for pattern expressionsBjörn Gustavsson
In the grammar file for the Erlang language, patterns are parsed as expressions. erl_lint will then weed out expressions that are not legal patterns. The rule sharing causes problems if we were to introduce new syntax, for example a pattern followed by a ':'. There would be a shift/reduce conflict, and a pattern followed by a ':' would be parsed as a remote call. Introduce a new pat_expr rule to express exactly the subset of expressions that is allowed in pattern. Note: For the moment, we must allow full expressions in case clauses to keep 'merl' working.
2017-11-30Merge branch 'maint'Dan Gudmundsson
* maint: Avoid falling measurements testcases on slow machines stdlib: string optimize special case for ASCII stdlib: Minor unicode_util opts
2017-11-29stdlib: string optimize special case for ASCIIDan Gudmundsson
Avoid unicode_util module call for ASCII strings
2017-11-28add hibernate_after to the gen options type specTristan Sloughter
2017-11-28stdlib: Do not check base64 input more than neededHans Bolinder
Often the decode functions return a function_clause error, but not always, and the errors have not been consistent between modifications of the base64 module. Now the errors are returned as they happen--no attempt to make them look nice is done. The alternative, to ensure that, for example, {badarg, Culprit} is always returned upon bad input, was deemed pointless.
2017-11-28stdlib: Minor optimization of base64Hans Bolinder
Using /bits instead of /binary is faster when constructing binaries.