aboutsummaryrefslogtreecommitdiffstats
path: root/erts/doc/src
AgeCommit message (Collapse)Author
2018-07-05erts: Correct The Abstract FormatHans Bolinder
A minor correction regarding literal character types.
2018-07-05Merge branch 'sverker/purge-vfork' into maintSverker Eriksson
* sverker/purge-vfork: erts: Remove obsolete paragraph about ERL_NO_VFORK
2018-07-04Fix release notes for OTP-21.0.2John Högberg
The release notes generated in the README and notes.xml were out of sync, and notes.xml erroneously listed a fixed bug as open.
2018-07-04Merge branch 'maint-21' into maintJohn Högberg
* maint-21: Updated OTP version Update release notes Update version numbers Eliminate a crash in the beam_jump pass stdlib: Fix a 'chars_limit' bug Fix a race condition when generating async operation ids Fix internal compiler error for map_get/2 beam_type: Fix unsafe optimization public_key: Remove moduli 5121 and 7167 Thoose were added by 598629aeba9de98e8cdf5637043eb34e5d407751 but are not universaly supported.
2018-07-02erts: Remove obsolete paragraph about ERL_NO_VFORKSverker Eriksson
from erlang:open_port/2 docs.
2018-06-29Merge branch 'maint-20' into maintSverker Eriksson
* maint-20: Updated OTP version Prepare release kernel: Fix tick count bug when pending writes kernel: Send tick to hidden node even if pending writes ic: Fix buffer overrun bug in oe_ei_encode_atom erl_interface: Fix simultaneous connection setup
2018-06-29Update release notesErlang/OTP
2018-06-28Merge PR-1844 from arcz/ets_count OTP-15163Sverker Eriksson
Use erlang:system_info(ets_count) and improve docs
2018-06-28Prepare releaseErlang/OTP
2018-06-28Merge pull request #1848 from christhekeele/patch-1Hans Bolinder
Add missing bracket to erlang:spawn_opt/4 docs priority tuple option
2018-06-25Prepare releaseErlang/OTP
2018-06-24Add missing bracket to erlang:spawn_opt/4 priority option docsChristopher Keele
2018-06-20Update system_info doc to include ets_countArtur Cygan
2018-06-19Prepare releaseErlang/OTP
2018-06-18Update copyright yearHenrik Nord
2018-06-14Merge branch 'maint'John Högberg
* maint: Updated OTP version Prepare release Add test case Parse #mc_new_type{}s before definitions_loop/2 erts: Fix race between ets table deletion and auto-unfix
2018-06-13Explain why the AM becomes group leaderXavier Noria
2018-06-13Prepare releaseErlang/OTP
2018-06-11[logger] Update documentationSiri Hansen
2018-06-05Merge branch 'maint'John Högberg
* maint: Updated OTP version Prepare release inets: Gracefully handle bad headers
2018-06-05Prepare releaseErlang/OTP
2018-06-04Merge branch 'sverker/ets-count/OTP-14987'Sverker Eriksson
* sverker/ets-count/OTP-14987: erts,stdlib: Improve docs about obsolete ets_limit erts: Reduce test log noise from ets_SUITE erts: Increase scalability of ets name lookup erts: Rename one of delete_trap to select_delete_trap erts: Refactor usage of am_atom_put to ERTS_MAKE_AM erts: Add system_info(ets_count) erts: Fix narrow race between ets:new and ets:delete
2018-06-04erts,stdlib: Improve docs about obsolete ets_limitSverker Eriksson
2018-06-04erts: Add system_info(ets_count)Sverker Eriksson
2018-06-04Merge pull request #1806 from bitnitdit/erlang-xml-typosLukas Larsson
Fix typos in erlang.xml
2018-05-29Revert "Prepare release"Henrik
This reverts commit fd8e49b5bddceaae803670121b603b5eee8c5c08.
2018-05-25Prepare releaseErlang/OTP
2018-05-17tverlaan/add_dns_alternative_to_tcp_dist/PR-1694/OTP-15086Lukas Larsson
epmd: allow alternative to dns resolving for nodename
2018-05-16epmd: allow alternative to dns resolving for nodenameTimmo Verlaan
This makes it possible to create a custom integration with a key-value store for example. The key would then point to the actual address. You would have to write your own epmd module to make use of that feature.
2018-05-16Merge branch 'rickard/suspend/OTP-14964'Rickard Green
* rickard/suspend/OTP-14964: Fix erts_try_lock_sig_free_proc() Update etp Replace previous suspend in setnode/3 New process suspend implementation based on async signaling Teach HiPE to yield from receive
2018-05-16New process suspend implementation based on async signalingRickard Green
2018-05-14Merge pull request #1813 from legoscia/erl_driver.xml-typosLukas Larsson
Fix typos in erl_driver.xml
2018-05-10Fix typos in erl_driver.xmlMagnus Henoch
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-06Fix typos in erlang.xmlbitnitdit
2018-05-03Merge branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers ssl: Prepare for release ssl: Proper handling of clients that choose to send an empty answer to a certificate request heart: Use ntohs instead of manual conversion
2018-05-02Update release notesErlang/OTP
2018-05-02Revert "Update release notes"Henrik
This reverts commit 202bb737e3deabfebee683266f4b7c42781eb521.
2018-04-30Update release notesErlang/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 'hasse/stdlib/map_guards_shell/OTP-15035/ERL-613'Hans Bolinder
* hasse/stdlib/map_guards_shell/OTP-15035/ERL-613: erts: Correct abstract format doc regarding map creation stdlib: Correct the linter's check of map guard expressions
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-24Merge pull request #1790 from jhogberg/john/erts/more-alloc-info/OTP-14961John Högberg
Improve memory instrumentation OTP-15024 OTP-14961
2018-04-24erts: Correct abstract format doc regarding map creationHans Bolinder
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-23Merge branch 'john/erts/fix-sbwt-links'John Högberg
* john/erts/fix-sbwt-links: Fix seealso tags for +sbwt/+swt
2018-04-20Fix seealso tags for +sbwt/+swtJohn Högberg
2018-04-19Merge pull request #1789 from ↵Lukas Larsson
christhekeele/remove-trace-terms-from-table-types-in-match-docs Remove trace-specific terms from docs for table-oriented matchspecs
2018-04-19Remove trace-specific terms from docs for table-oriented matchspecsChris Keele
This removes the matchspec instructions `is_seq_trace` and `get_tcw/0` from the documentation for table-oriented matchspecs. This is likely correct as both are already documented under "Functions Allowed Only for Tracing", despite appearing in the list of possible options for table specs. The following observations further back this change up: ```erl erlang:match_spec_test([whatever], [{'_', [], [{is_seq_trace}]}], trace). %=> {ok,true,[],[]} erlang:match_spec_test({whatever}, [{'_', [], [{is_seq_trace}]}], table). %=> {error,[{error,"Special form 'is_seq_trace' used in wrong %dialect."}]} erlang:match_spec_test([whatever], [{'_', [], [{get_tcw}]}], trace). %=> {ok,true,[],[]} erlang:match_spec_test({whatever}, [{'_', [], [{get_tcw}]}], table). %=> {error,[{error,"Function get_tcw/0 cannot be called in this context."}]} ```