aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2018-03-22Fix signal order for is_process_aliveRickard Green
2018-03-21Implementation of true asynchronous signaling between processesRickard Green
Communication between Erlang processes has conceptually always been performed through asynchronous signaling. The runtime system implementation has however previously preformed most operation synchronously. In a system with only one true thread of execution, this is not problematic (often the opposite). In a system with multiple threads of execution (as current runtime system implementation with SMP support) it becomes problematic. This since it often involves locking of structures when updating them which in turn cause resource contention. Utilizing true asynchronous communication often avoids these resource contention issues. The case that triggered this change was contention on the link lock due to frequent updates of the monitor trees during communication with a frequently used server. The signal order delivery guarantees of the language makes it hard to change the implementation of only some signals to use true asynchronous signaling. Therefore the implementations of (almost) all signals have been changed. Currently the following signals have been implemented as true asynchronous signals: - Message signals - Exit signals - Monitor signals - Demonitor signals - Monitor triggered signals (DOWN, CHANGE, etc) - Link signals - Unlink signals - Group leader signals All of the above already defined as asynchronous signals in the language. The implementation of messages signals was quite asynchronous to begin with, but had quite strict delivery constraints due to the ordering guarantees of signals between a pair of processes. The previously used message queue partitioned into two halves has been replaced by a more general signal queue partitioned into three parts that service all kinds of signals. More details regarding the signal queue can be found in comments in the erl_proc_sig_queue.h file. The monitor and link implementations have also been completely replaced in order to fit the new asynchronous signaling implementation as good as possible. More details regarding the new monitor and link implementations can be found in the erl_monitor_link.h file.
2018-03-13Merge branch 'sverker/dict-put-immed-opt/OTP-14976'Sverker Eriksson
* sverker/dict-put-immed-opt: erts: Optimize erlang:put/2 for hash collision lists erts: Optimize erlang:put/2 for immed values erts: Refactor erlang:put/2
2018-03-13Merge branch 'sverker/dist-flags-consolidate'Sverker Eriksson
2018-03-13Merge branch 'hasse/dialyzer/extra-range/OTP-14970'Hans Bolinder
* hasse/dialyzer/extra-range/OTP-14970: ssl: Correct some specs os_mon: Correct a spec Fix broken spec in beam_asm Dialyzer should not throw away spec information because of overspec
2018-03-13ssl: Correct some specsHans Bolinder
2018-03-13Merge pull request #1743 from richcarl/io-format-multiple-modifiersHans Bolinder
Allow multiple modifier characters in io:format control sequences OTP-14971
2018-03-12Allow multiple modifier characters in io:format control sequencesRichard Carlsson
This makes it possible to print unicode atoms at the same time as suppressing detection of printable lists.
2018-03-12Merge branch 'hans/ssh/acceptor_restart/OTP-14955'Hans Nilsson
* hans/ssh/acceptor_restart/OTP-14955: ssh: Retry and exponentially backoff listener restart
2018-03-12Merge branch 'hans/crypto/remove_unused_functions/OTP-14956'Hans Nilsson
* hans/crypto/remove_unused_functions/OTP-14956: crypto: Remove undocumented, unused and erroneous functions
2018-03-09Merge branch 'peterdmv/use_uri_string/OTP-14902'Péter Dimitrov
* peterdmv/use_uri_string/OTP-14902: common_test: Use uri_string ssl: Use uri_string public_key: Use uri_string observer: Use uri_string Change-Id: I4beac2289db039cc7d566807727c5aaf7fadf942
2018-03-09Merge pull request #1735 from richcarl/io_lib-unscan-fixHans Bolinder
Make io_lib:unscan_format/1 work with pad char and default precision OTP-14958
2018-03-09Merge branch 'hasse/stdlib/improve_limit_term'Hans Bolinder
* hasse/stdlib/improve_limit_term: stdlib: Improve io_lib:limit_term/2
2018-03-09Merge pull request #1741 from josevalim/jv-debugger-binHans Bolinder
Do not treat binaries as top level in dbg_ieval OTP-14957
2018-03-09crypto: Remove undocumented, unused and erroneous functionsHans Nilsson
crypto:dh_generate_parameters and crypto:dh_check
2018-03-08stdlib: Improve io_lib:limit_term/2Hans Bolinder
Improve handling of maps. Addendum to b57e890.
2018-03-08Merge pull request #1737 from richcarl/io-format-printable-strings-docHans Bolinder
Improve documentation of io:format ~p when Unicode is involved
2018-03-08Improve documentation of io:format ~p when Unicode is involvedRichard Carlsson
2018-03-08common_test: Use uri_stringPéter Dimitrov
Change-Id: If9b7c1252642d31e6b802e8410883bfa26292674
2018-03-08ssl: Use uri_stringPéter Dimitrov
Change-Id: I1249b93b1e4a971cf1af2cb96a65563e23117e2b
2018-03-08Merge branch 'ingela/ssl/no-automated-fallback/OTP-14789'Ingela Anderton Andin
2018-03-08ssl: Increase security with safer defaultIngela Anderton Andin
The interoperability option to fallback to insecure renegotiation now has to be explicitly turned on.
2018-03-07ssh: Retry and exponentially backoff listener restartHans Nilsson
in case of eaddrinuse. This could happen if the acceptor process dies and is restarted immediatly.
2018-03-07Merge pull request #1732 from bjorng/bjorn/compiler/beam_typeBjörn Gustavsson
Refactor and fix minor bugs in beam_type
2018-03-07Do not treat binaries as top level in dbg_ievalJosé Valim
Prior to this change, calls inside binaries were treated as top level which would cause the `Fun(Arg)` call inside `<<Fun(Arg)/binary>>` to return an internal dbg_ieval tuple and ultimately error with badarg.
2018-03-07Merge branch 'maint'Péter Dimitrov
* maint: inets: work around http_uri:parse Dialyzer warning in uri_SUITE.erl:274 inets: refine types and doc of http_uri:parse options inets: export types documented for http_uri module Change-Id: Ifff539d8254cc86985f90978dd75a36616136c33
2018-03-07Merge pull request #1724 from lucafavatella/http_uri-typesPéter Dimitrov
Export types documented for http_uri module
2018-03-06Merge branch 'raimo/stop-encouraging-v4-mapped/ERL-503/OTP-13716'Raimo Niskanen
* raimo/stop-encouraging-v4-mapped/ERL-503/OTP-13716: Stop translating V4MAPPED addresses Stop returning V4MAPPED addresses Implement function for IPv4-mapped IPv6 addresses
2018-03-06Merge branch 'maint'Ingela Anderton Andin
2018-03-06Merge branch ↵Ingela Anderton Andin
'ingela/maint/voltone/ssl_anonymous_with_openssl/PR-1729/OTP-14952' into maint * ingela/maint/voltone/ssl_anonymous_with_openssl/PR-1729/OTP-14952: ssl: Fix anonymous suites regression and protocol error
2018-03-06Merge branch 'maint'Hans Nilsson
* maint: ssh: README updated with missing 4-number's versions
2018-03-06Merge branch 'hans/ssh/cuddle_README' into maintHans Nilsson
* hans/ssh/cuddle_README: ssh: README updated with missing 4-number's versions
2018-03-06ssl: Fix anonymous suites regression and protocol errorBram Verburg
Anonymous cipher suites were broken altogether, and there was an earlier issue where the server would send a signature in the server key exchange if a certificate was configured, even if an anonymous suite was actually negotiated. Backport of PR-1729
2018-03-06Merge branch 'maint'Péter Dimitrov
* maint: inets: Prepare for release inets: Skip http_unix_socket test group on Windows inets: Add unix domain socket support to httpc Change-Id: I4c3a3d6e4fbbdf82e4e2e7d30b84510f9c286c68
2018-03-06Merge branch 'peterdmv/inets/unix_domain_socket/OTP-14854' into maintPéter Dimitrov
* peterdmv/inets/unix_domain_socket/OTP-14854: inets: Prepare for release inets: Skip http_unix_socket test group on Windows inets: Add unix domain socket support to httpc Change-Id: I680e41463849a9d79add1385ec2703267be8754c
2018-03-06inets: work around http_uri:parse Dialyzer warning in uri_SUITE.erl:274Luca Favatella
Addresses https://github.com/erlang/otp/pull/1724#discussion_r172442753 Current `http_uri:parse/2` implementation intends that ["non-fun scheme_validation_fun works as no option passed"](https://github.com/erlang/otp/blob/OTP-20.2.4/lib/inets/test/uri_SUITE.erl#L271-L274).
2018-03-06inets: Prepare for releasePéter Dimitrov
Change-Id: I3021abef9530d42fa6eb04fbcbd46ab23392cd0d
2018-03-06Merge remote-tracking branch 'origin/hasse/kernel/rpc_doc_fix/OTP-10551'Hans Bolinder
* origin/hasse/kernel/rpc_doc_fix/OTP-10551: kernel: Improve docs of rpc:multicall/5
2018-03-06Merge branch 'maint'Anders Svensson
2018-03-06Merge branch 'anders/diameter/20.3/OTP-14946' into maintAnders Svensson
* anders/diameter/20.3/OTP-14946: vsn -> 2.1.4 Update appup for 20.3 Update service_info examples in doc Fix inaccurate comment
2018-03-05stdlib: Fix receive-ref optimization for gen_server:callSverker Eriksson
Optimization does not trigger for try-catch. But send cannot fail here anyway, as Process cannot be an atom.
2018-03-05Merge pull request #1560 from tsloughter/no_warn_sysconfigSiri Hansen
Include sys.config.src in release tar file OTP-14950
2018-03-05ssh: README updated with missing 4-number's versionsHans Nilsson
2018-03-05Merge branch 'maint' of github.com:erlang/otp into maintLars Thorsen
2018-03-05[ssl] Fix hanging test case on outdated lab machineLars Thorsen
2018-03-05inets: refine types and doc of http_uri:parse optionsLuca Favatella
2018-03-05[crypto] Fix hanging test case on outdated lab machineLars Thorsen
2018-03-05Merge branch 'maint'Hans Nilsson
* maint: Updated OTP version Update release notes Update version numbers ssh: Fix cli ssh: Test for disabled shell
2018-03-05Merge branch 'maint-18' into maintHans Nilsson
* maint-18: Updated OTP version Update release notes Update version numbers ssh: Fix cli ssh: Test for disabled shell Conflicts: OTP_VERSION lib/ssh/doc/src/notes.xml lib/ssh/src/ssh.erl lib/ssh/src/ssh_cli.erl lib/ssh/vsn.mk otp_versions.table
2018-03-05inets: export types documented for http_uri moduleLuca Favatella
Also: * Reuse type `inet:port_number()` in `http_uri` code and doc; * Do not imply that http_uri module can properly handle UTF-8 encoded binaries, while it can't. * Enrich function specifications in http_uri module; * Fix http_uri doc re missing type definition for `Scheme`.