aboutsummaryrefslogtreecommitdiffstats
path: root/lib/tools
AgeCommit message (Collapse)Author
2018-12-12Add empty 'since' attribute for old modules and functionsSverker Eriksson
2018-12-11Add "since" attributes in xml for new functions and modulesSverker Eriksson
introduced after OTP_R13B03.
2018-12-11Merge branch 'maint'Henrik Nord
* maint: Updated OTP version Prepare release
2018-12-10Prepare releaseErlang/OTP
2018-12-04Merge branch 'maint'Raimo Niskanen
Conflicts: lib/ssl/test/ssl_dist_bench_SUITE.erl
2018-11-30Implement print on other nodeRaimo Niskanen
2018-10-11Merge branch 'maint'Dan Gudmundsson
* maint: Run emacs tests from test_suite Emacs: consider case in erlang-get-identifier-at-point Emacs: do not accept compiler warnings in selected elisp files Emacs: add test-erlang-mode
2018-10-09Run emacs tests from test_suiteDan Gudmundsson
Drive emacs test from test_suite instead of bash script.
2018-10-09Emacs: consider case in erlang-get-identifier-at-pointJohan Claesson
2018-10-09Emacs: do not accept compiler warnings in selected elisp filesJohan Claesson
2018-10-09Emacs: add test-erlang-modeJohan Claesson
2018-09-25Merge branch 'maint'Henrik Nord
2018-09-24Prepare releaseErlang/OTP
2018-09-21Merge branch 'maint'Henrik Nord
2018-09-21Update copyright yearHenrik Nord
2018-09-10Merge branch 'maint'Dan Gudmundsson
* maint: erlang-mode: fix void variable align-rules-list error
2018-08-28erlang-mode: fix void variable align-rules-list errorGrigory Starinkin
erlang-mode crashes with the following error: Symbol’s value as variable is void: align-rules-list caused by #1728
2018-08-16Merge remote-tracking branch 'upstream/maint'Dan Gudmundsson
* upstream/maint: Require align Add Erlang alignment regexps
2018-08-16Merge pull request #1728 from davidw/emacs-alignDan Gudmundsson
OTP-15239
2018-08-06Merge branch 'maint'Siri Hansen
2018-08-06Merge pull request #1807 from milmazz/improve-cover-html-pagesSiri Hansen
Improve Cover HTML page OTP-15213
2018-07-27Change "can not" into "cannot"Raimo Niskanen
I did not find any legitimate use of "can not", however skipped changing e.g RFCs archived in the source tree.
2018-07-16Merge branch 'maint'Lukas Larsson
2018-07-14Improve Cover HTML pageMilton Mazzarri
* Adapt diff colors to bring more contrast * Use monospace font for all the code in cover HTML report * Specify background color for the body as white * Reduce font-size for header * Install cover stylesheet when making release (@sirihansen made this improvement) * Additional changes based on feedback
2018-07-13docs: make clean all XMLDIRLukas Larsson
2018-07-05Make instrument suite more stable after PR-1854John Högberg
The SSA compiler branch is smart enough to recognize that the code past 'after infinity' is unreachable, so our test vectors weren't always kept alive.
2018-07-03Merge pull request #1854 from ↵John Högberg
jhogberg/john/erts/cross-type-carrier-migration/OTP-15063 Allow carrier migration between different allocator types
2018-06-28Allow cross-type carrier migrationJohn Högberg
2018-06-20Use bif for other ets tables countingArtur Cygan
2018-06-19Prepare releaseErlang/OTP
2018-06-18Update copyright yearHenrik Nord
2018-05-29Revert "Prepare release"Henrik
This reverts commit fd8e49b5bddceaae803670121b603b5eee8c5c08.
2018-05-25Prepare releaseErlang/OTP
2018-05-21Merge branch 'lukas/erts/cpu_time_thread/OTP-15090'Lukas Larsson
* lukas/erts/cpu_time_thread/OTP-15090: erts: Make cpu_timestamp use per thread on Linux
2018-05-16Merge branch 'richcarl/eliminate_lib_module/PR-1786/OTP-15072'Hans Bolinder
* richcarl/eliminate_lib_module/PR-1786/OTP-15072: Fix minor issues Eliminate call to ct:get_progname() in ts_erl_config Use \n escape instead of integer 10 Move error formatting to erl_error.erl and delete lib.erl Move extended parse functions in lib.erl to erl_eval.erl Move lib:eval_str/1 into mod_esi.erl Remove lib:progname/0 Eliminate call to lib:progname/1 in slave.erl Add ct:get_progname/0 Remove lib:error_message/2 Remove lib:flush_receive/0 Remove lib:send/2 and lib:sendw/2 Move lib:nonl/1 into yecc.erl
2018-05-15erts: Make cpu_timestamp use per thread on LinuxLukas Larsson
If we don't use per thread the value becomes completely nonsensical on systems with more than one scheduler. We keep the old solaris behaviour in order to support the option, but it only really works when using a single scheduler.
2018-05-08tools: Handle fast restarts of Xref serverHans Bolinder
2018-05-07Merge pull request #1802 from michalmuskala/map-is-key-bifBjörn Gustavsson
Introduce is_map_key/2 guard BIF OTP-15037
2018-05-07Ensure that lcnt server is terminated after lcnt:stop/0John Högberg
This makes the nightly tests slightly more stable as they assert that the server isn't alive when lcnt:start/0 is called, which it could still be since the stop command was a plain gen_server call that didn't wait until the termination was completed.
2018-05-04Use \n escape instead of integer 10Richard Carlsson
2018-05-04Move lib:nonl/1 into yecc.erlRichard Carlsson
2018-05-02Revert "Update release notes"Henrik
This reverts commit 202bb737e3deabfebee683266f4b7c42781eb521.
2018-05-02Revert "Update version numbers"Henrik
This reverts commit 345f7f527a4c26ef49cef0d81e2c8b71bf01ebc3.
2018-04-30Update release notesErlang/OTP
2018-04-30Update version numbersErlang/OTP
2018-04-29Introduce is_map_key/2 guard BIFMichał Muskała
This complements the `map_get/2` guard BIF introduced in #1784. Rationale. `map_get/2` allows accessing map fields in guards, but it might be problematic in more complex guard expressions, for example: foo(X) when map_get(a, X) =:= 1 or is_list(X) -> ... The `is_list/1` part of the guard could never succeed since the `map_get/2` guard would fail the whole guard expression. In this situation, this could be solved by using `;` instead of `or` to separate the guards, but it is not possible in every case. To solve this situation, this PR proposes a `is_map_key/2` guard that allows to check if a map has key inside a guard before trying to access that key. When combined with `is_map/1` this allows to construct a purely boolean guard expression testing a value of a key in a map. Implementation. Given the use case motivating the introduction of this function, the PR contains compiler optimisations that produce optimial code for the following guard expression: foo(X) when is_map(X) and is_map_key(a, X) and map_get(a, X) =:= 1 -> ok; foo(_) -> error. Given all three tests share the failure label, the `is_map_key/2` and `is_map/2` tests are optimised away. As with `map_get/2` the `is_map_key/2` BIF is allowed in match specs.
2018-04-25Merge branch 'map-get-bif' of git://github.com/michalmuskala/otpBjörn Gustavsson
* 'map-get-bif' of git://github.com/michalmuskala/otp: Introduce map_get guard-safe function OTP-15037
2018-04-24Introduce map_get guard-safe functionMichał Muskała
Rationale Today all compound data types except for maps can be deconstructed in guards. For tuples we have `element/2` and for lists `hd/1` and `tl/1`. Maps are completely opaque to guards. This means matching on maps can't be abstracted into macros, which is often done with repetitive guards. It also means that maps have to be always selected whole from ETS tables, even when only one field would be enough, which creates a potential efficiency issue. This PR introduces an `erlang:map_get/2` guard-safe function that allows extracting a map field in guard. An alternative to this function would be to introduce the syntax for extracting a value from a map that was planned in the original EEP: `Map#{Key}`. Even outside of guards, since this function is a guard-BIF it is more efficient than using `maps:get/2` (since it does not need to set up the stack), and more convenient from pattern matching on the map (compare: `#{key := Value} = Map, Value` to `map_get(key, Map)`). Performance considerations A common concern against adding this function is the notion that "guards have to be fast" and ideally execute in constant time. While there are some counterexamples (`length/1`), what is more important is the fact that adding those functions does not change in any way the time complexity of pattern matching - it's already possible to match on map fields today directly in patterns - adding this ability to guards will niether slow down or speed up the execution, it will only make certain programs more convenient to write. This first version is very naive and does not perform any optimizations.
2018-04-23erts: Rewrite memory instrumentationJohn Högberg
This commit replaces the old memory instrumentation with a new implementation that scans carriers instead of wrapping erts_alloc/erts_free. The old implementation could not extract information without halting the emulator, had considerable runtime overhead, and the memory maps it produced were noisy and lacked critical information. Since the new implementation walks through existing data structures there's no longer a need to start the emulator with special flags to get information about carrier utilization/fragmentation. Memory fragmentation is also easier to diagnose as it's presented on a per-carrier basis which eliminates the need to account for "holes" between mmap segments. To help track allocations, each allocation can now be tagged with what it is and who allocated it at the cost of one extra word per allocation. This is controlled on a per-allocator basis with the +M<S>atags option, and is enabled by default for binary_alloc and driver_alloc (which is also used by NIFs).
2018-04-16tools: Generate typespecs in doc buildJohn Högberg