aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib
AgeCommit message (Collapse)Author
2017-12-13Merge branch 'maint'Henrik Nord
2017-12-08Update release notesErlang/OTP
2017-12-08Update version numbersErlang/OTP
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-04Merge pull request #1646 from tsloughter/hibernate_after_specHans Bolinder
add hibernate_after to the gen options type spec
2017-12-01Merge branch 'john/erts/efile-nif'John Högberg
OTP-14256 OTP-14797
2017-11-30Merge branch 'maint'Rickard Green
* maint: Clarification in doc of unicode:characters_to_list/2
2017-11-30Clarification in doc of unicode:characters_to_list/2Rickard Green
2017-11-30stdlib: Add base64 benchmarksHans Bolinder
2017-11-30Remove port subtest in qlc_SUITE:sortJohn Högberg
This subtest revolves around the possibility that the underlying port can be killed, which is nonsense now that the file suite no longer uses ports for anything.
2017-11-30Account for new behavior in tests that touch prim_fileJohn Högberg
This also hides the module behind ?PRIM_FILE to make testing new implementations less painful.
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-29Minor grammar tweak in ETS documentationIsaac Whitfield
2017-11-29Avoid falling measurements testcases on slow machinesDan Gudmundsson
2017-11-29stdlib: string optimize special case for ASCIIDan Gudmundsson
Avoid unicode_util module call for ASCII strings
2017-11-29stdlib: Minor unicode_util optsDan Gudmundsson
Exit early for Latin-1
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.
2017-11-28stdlib: Use binary_to_list in base64 when it is fasterHans Bolinder
It is sometimes faster to use binary_to_list on input, at least when not considering time for garbage collections. The three functions all return a list, and the temporary list created by binary_to_list should be reclaimed very fast. The implementation from before is thus kept.
2017-11-28stdlib: Optimize base64 functionsHans Bolinder
A few test cases with zeroes are added. They were not handled correctly before. The access of DECODE_MAP is moved into the inlined function b64d, for symmetry. The function b64e is also inlined. The speed-up is small, but measurable. Note: encode(List), decode(List) and mime_decode(List) no longer call list_to_binary. This can break code that calls the functions with I/O-lists as input.
2017-11-20Merge pull request #1631 from peterdmv/stdlib/extend_uri_string/OTP-14747Péter Dimitrov
Extend uri_string module (compose_query and dissect_query)
2017-11-20Merge branch 'maint'Lukas Larsson
2017-11-20Merge branch 'lukas/docs/xmllint_fixes/OTP-14721' into maintLukas Larsson
* 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
2017-11-20Merge branch 'bjorn/make_port/OTP-14704'Björn Gustavsson
* bjorn/make_port/OTP-14704: Avoid using the efile driver in test suites
2017-11-20Merge branch 'lukas/stdlib/maps_iterators/OTP-14012'Lukas Larsson
* lukas/stdlib/maps_iterators/OTP-14012: erts: Limit size of first iterator for hashmaps Update primary bootstrap Update preloaded modules erts: Remove erts_internal:maps_to_list/2 stdlib: Make io_lib and io_lib_pretty use maps iterator erts: Implement batching maps:iterator erts: Implement maps path iterator erts: Implement map iterator using a stack stdlib: Introduce maps iterator API Conflicts: bootstrap/lib/stdlib/ebin/io_lib.beam bootstrap/lib/stdlib/ebin/io_lib_pretty.beam erts/emulator/beam/bif.tab erts/preloaded/ebin/erlang.beam erts/preloaded/ebin/erts_internal.beam erts/preloaded/ebin/zlib.beam
2017-11-20stdlib: Make io_lib and io_lib_pretty use maps iteratorLukas Larsson
2017-11-20erts: Implement batching maps:iteratorLukas Larsson
This iterator implementation fetches multiple elements to iterate over in one call to erts_internal:maps_next instead of one at a time. This means that the memory usage will go up for the iterator as we are buffering elements, but the usage is still bounded. In this implementation the max memory usage is 1000 words. Using this approach makes the iterator as fast as using maps:to_list, so maps:iterator/2 has been removed.
2017-11-17Avoid using the efile driver in test suitesBjörn Gustavsson
The efile driver will soon be reimplemented as a BIF. Instead of opening a port based on efile, use hd(erlang:ports()). It is a reasonable safe assumption that the runtime will continue to use use at least some ports.
2017-11-15Merge pull request #1602 from sirihansen/siri/supervisor/store-children-in-mapSiri Hansen
Refactor supervisor, and store children in a map instead of a list OTP-14586
2017-11-14[supervisor] Add test of scaling on start/stop of many childrenSiri Hansen
2017-11-09stdlib: Implement compose and dissect query (HTML5)Péter Dimitrov
Implement functions for handling form-urlencoded query strings based on the HTML5 specification.
2017-11-09[supervisor] Store children in map instead of listSiri Hansen
2017-11-09[supervisor] Change Name to IdSiri Hansen
2017-11-09[supervisor] Use map instead of dict for dynamic childrenSiri Hansen
2017-11-09[supervisor] Refactor to improve maintainabilitySiri Hansen
2017-11-09[supervisor] Add macros to use in guardsSiri Hansen
2017-11-09[supervisor] Refactor handling of dynamic childrenSiri Hansen
2017-11-09[supervisor] Improve test suite before refactoringSiri Hansen
2017-11-07Merge pull request #1551 from peterdmv/peterdmv/stdlib/add_uri_string/OTP-14496Péter Dimitrov
Implement new uri_string module in stdlib
2017-11-06Fix typo in test/ets_SUITE.erlDimitris Zorbas
2017-11-06stdlib: Remove compose_query and dissect_queryPéter Dimitrov
compose_query/{1,2} and dissect_query/1 removed as the implemented specification (HTML 2.0) is old. They will be re-implemented based on HTML5.
2017-11-03stdlib: Refactor functions in uri_stringPéter Dimitrov
2017-11-01stdlib: Add uri_string module to stdlib.app.srcPéter Dimitrov
2017-10-31stdlib: Fix case normalization (normalize/1)Péter Dimitrov
2017-10-31stdlib: Refactor helper functions in uri_stringPéter Dimitrov
2017-10-31Refactor xmllint check and make it fail on failureLukas Larsson
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.