aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib
AgeCommit message (Collapse)Author
2019-05-07Merge branch 'hasse/stdlib/optimize_io_format/OTP-15705'Hans Bolinder
* hasse/stdlib/optimize_io_format/OTP-15705: stdlib: Optimize pretty printing of strings with chars_limit stdlib: Optimize printing of maps a bit stdlib: Optimize pretty printing of lists slightly
2019-05-07Merge branch 'hasse/stdlib/check_spec_module/OTP-15563/ERL-845'Hans Bolinder
* hasse/stdlib/check_spec_module/OTP-15563/ERL-845: stdlib: Do not allow specs for functions in other modules
2019-05-06Merge branch 'dgud/stdlib/string-error-cases'Dan Gudmundsson
* dgud/stdlib/string-error-cases: unicode_util gc/1 Fix bug string:slice/3 on bad input
2019-05-03stdlib: Do not allow specs for functions in other modulesHans Bolinder
See also https://bugs.erlang.org/browse/ERL-845. [Kostis:] My suggestion is that the compiler refuses to compile modules that contain specs for functions that are not from this module. I do not remember when / why this `feature' was introduced, but thinking about it I see a lot of (ugly) semantics issues with it. For example, should one be allowed to declare in the foo module that lists:flatten/1 takes an integer() as an argument and returns a binary()? Should one be allowed to declare a spec in some module m1 for a function of m2 that is not defined in m2? There are all kinds of checks that will need to be added to dialyzer to protect itself from these semantics issues. The compiler already refuses to compile modules that contain specs for non-existing functions of the module. Similarly, it should refuse to compile modules that contain specs for functions of other modules - unless it can somehow check that these functions are indeed defined, but it is not how the compiler currently works.
2019-05-03stdlib: Optimize pretty printing of strings with chars_limitHans Bolinder
Avoid traversing all of string arguments when limiting the output with the 'chars_limit' option.
2019-05-03stdlib: Optimize printing of maps a bitHans Bolinder
2019-05-03stdlib: Optimize pretty printing of lists slightlyHans Bolinder
2019-05-02Remove description of structure of opaque type `gb_trees:tree/2`.Brujo Benavides
Since it's an opaque type, its internal structure shouldn't be part of the docs. Otherwise it leads misguided devs to the assumption that they can pattern-match on it, when they shouldn't.
2019-05-02unicode_util gc/1Dan Gudmundsson
Could expand binary to list for to many elements. Fix and add tests.
2019-04-30Fix bug string:slice/3 on bad inputDan Gudmundsson
Fixed bug in slice which wrongly could return <<>> for non-utf8 binary input. Also give a better error reason when non-utf8 binaries are given as input to some functions.
2019-04-30Merge pull request #2221 from FNickRU/queue-docHans Bolinder
Fix typo
2019-04-30Fix typoStanislav Mayorov
2019-04-24Revert "Prepare release"Rickard Green
This reverts commit 425889ba69b69a9b6fb14bfbef121d51b78e853a.
2019-04-23Prepare releaseErlang/OTP
2019-04-18Fix broken ETS test caseKjell Winblad
This commit fixes an ETS test case that tests the decentralized memory counter in tables of type ordered_set with the write_concurrency option turned on. The test case assumed that the memory consumption of the table would only grow monotonically when terms are inserted. However, this was not the case when the emulator was compiled in debug mode as random splits and joins of CA tree nodes could happen. This commit fixes the test case by disabling random splits and joins in the tested table.
2019-04-12stdlib: Adjust test suites and docs due to erl_pp changesHans Bolinder
2019-04-12stdlib: Let the Pretty Printer output more on one lineHans Bolinder
Atomic elements such as atoms, '{}', '[]', and '<<>>' are output on the same line in types, structs, lists, &c. In particular types can be more compact, and easier to read. A space is output after comma in tuples, to be more consistent.
2019-04-12Merge branch 'hasse/stdlib/erl_pp_quoted_atom_types/OTP-15756'Hans Bolinder
* hasse/stdlib/erl_pp_quoted_atom_types/OTP-15756: stdlib: Add option 'quote_singleton_atom_types' to erl_pp
2019-04-12stdlib: Add option 'quote_singleton_atom_types' to erl_ppHans Bolinder
The new option can be used by Dialyzer, which has traditionally quoted singleton atom types. The OTP team has decided not to use the convention in OTP documentation, at least not for now. That is why the option is needed. EDoc does not use the new option. Syntax Tools does not have a similar option.
2019-04-11Merge branch 'sverker/test-cuddle'Sverker Eriksson
* sverker/test-cuddle: stdlib: Remove ets_SUITE:time_lookup
2019-04-10Decentralized counters for ETS ordered_set with write_concurrencyKjell Winblad
Previously, all ETS tables used centralized counter variables to keep track of the number of items stored and the amount of memory consumed. These counters can cause scalability problems (especially on big NUMA systems). This commit adds an implementation of a decentralized counter and modifies the implementation of ETS so that ETS tables of type ordered_set with write_concurrency enabled use the decentralized counter. [Experiments][1] indicate that this change substantially improves the scalability of ETS ordered_set tables with write_concurrency enabled in scenarios with frequent `ets:insert/2` and `ets:delete/2` calls. The new counter is implemented in the module erts_flxctr (`erts_flxctr.h` and `erts_flxctr.c`). The module has the suffix flxctr as it contains the implementation of a flexible counter (i.e., counter instances can be configured to be either centralized or decentralized). Counters that are configured to be centralized are implemented with a single counter variable which is modified with atomic operations. Decentralized counters are spread over several cache lines (how many can be configured with the parameter `+dcg`). The scheduler threads are mapped to cache lines so that there is no single point of contention when decentralized counters are updated. The thread progress functionality of the Erlang VM is utilized to implement support for linearizable snapshots of decentralized counters. The snapshot functionality is used by the `ets:info/1` and `ets:info/2` functions. [1]: http://winsh.me/ets_catree_benchmark/flxctr_res.html
2019-04-10Merge pull request #2205 from bjorng/bjorn/record_info/ERL-907Björn Gustavsson
Issue an error for improper use of record_info/2 in a fun OTP-15760
2019-04-10Merge pull request #2197 from lbolla/spelling-mistakes-fixBjörn Gustavsson
Fix various spelling mistakes
2019-04-09Merge branch 'hasse/stdlib/erl_pp_throw/OTP-15751'Hans Bolinder
* hasse/stdlib/erl_pp_throw/OTP-15751: stdlib: Fix a bug concerning exception class 'throw'
2019-04-09Issue an error for improper use of record_info/2 in a funBjörn Gustavsson
`record_info/2` is a pseudo-function that requires literal arguments known at compile time. Therefore, the following usage is illegal: f() -> fun record_info/2. However, `erl_lint` did not issue a compilation error for this usage, and the compiler would crash in a later pass. https://bugs.erlang.org/browse/ERL-907
2019-04-08stdlib: Fix a bug concerning exception class 'throw'Hans Bolinder
Since the introduction of the stack trace variable, the Erlang Pretty Printer has left out the exception class 'throw' even when the stack trace variable cannot be left out, which is not correct Erlang code. The fix is to always include the exception class 'throw'. An alternative is to exclude 'throw' exactly when the stack trace variable is '_'.
2019-04-08Merge pull request #2200 from ↵Björn Gustavsson
bjorng/bjorn/deprecation-warnings/ERL-904/OTP-15749 Add compiler option for suppressing warnings about removed functions/modules
2019-04-07calendar.xml: fix typoMikael Pettersson
2019-04-05Add options for suppressing warnings about removed functionsBjörn Gustavsson
An appliction outside of OTP may want to reuse then name of a module that was previously included in OTP. Therefore, there should be a way to suppress warnings for removed functions.
2019-04-05Correct description for removal of rpc:safe_multi_server_call/2Björn Gustavsson
The warning would come out as: Warning: call to rpc:safe_multi_server_call/2 will fail, since it was removed in removed in OTP 19; use rpc:multi_server_call/2 ^^^^^^^^^^^^^^^^^^
2019-04-05Add a reminder to remove the warning for os_mon_mib in OTP 24Björn Gustavsson
2019-04-05No longer warn for use of the overload moduleBjörn Gustavsson
The entire overload module was removed in OTP 19. Stopping warning for it now, since the module name could be used by code outside OTP.
2019-04-05Don't warn for removed functions in OTP 18 or olderBjörn Gustavsson
2019-04-04Fix broken linksBjörn Gustavsson
A multitude of broken links were found when a bug was fixed in the link checker.
2019-04-02stdlib: Remove ets_SUITE:time_lookupSverker Eriksson
Fails sometimes on windows due to bad timer precision leading to division by zero. This is more a (bad) benchmark than a regression test.
2019-04-01Merge branch 'maint'Sverker Eriksson
* maint: Updated OTP version Prepare release # Conflicts: # OTP_VERSION # make/otp_version_tickets_in_merge
2019-03-31Fix various spelling mistakesLorenzo Bolla
Fix ERL-541 and various other unreported spelling mistakes.
2019-03-29Prepare releaseErlang/OTP
2019-03-29Merge branch 'maint'John Högberg
2019-03-28erl_tar: Use read_ahead when reading compressed tar filesJohn Högberg
Jumping around in a compressed file is nowhere near as cheap as for uncompressed files, as it requires reading and decompressing up until the desired position. Using read_ahead will improve performance slightly.
2019-03-26Revert "Prepare release"Henrik Nord
This reverts commit 0118046f9bda8dcf3594184fa439b79267db8017.
2019-03-25Prepare releaseErlang/OTP
2019-03-22Change "can not" into "cannot"Raimo Niskanen
2019-03-22Merge branch 'hasse/stdlib/restore_string_SUITE_timeout'Hans Bolinder
* hasse/stdlib/restore_string_SUITE_timeout: stdlib: Restore timeout in string_SUITE:meas()
2019-03-21Merge branch 'bjorn/hipe-compilation/OTP-15596'Björn Gustavsson
* bjorn/hipe-compilation/OTP-15596: HiPE: Don't fail the compilation for unimplemented instructions
2019-03-21stdlib: Restore timeout in string_SUITE:meas()Hans Bolinder
Make sure the test case meas() terminates without failing.
2019-03-21Merge pull request #2179 from richcarl/array-fixupDan Gudmundsson
Array fixup
2019-03-21Merge branch 'hasse/stdlib/optimize_string/OTP-15649'Hans Bolinder
* hasse/stdlib/optimize_string/OTP-15649: stdlib: Optimize handling of Unicode in the string module stdlib: Optimize handling of Unicode in the string module stdlib: Fix a bug in string:lexemes()
2019-03-20HiPE: Don't fail the compilation for unimplemented instructionsBjörn Gustavsson
2019-03-20stdlib: Optimize handling of Unicode in the string moduleHans Bolinder
Unroll some of the functions returning codepoints and grapheme clusters.