aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2018-08-08Fix side-effect optimization when compiling from Core ErlangJohn Högberg
When an expression is only used for its side effects, we try to remove everything that doesn't tie into a side-effect, but we went a bit too far when we applied the optimization to funs defined in such a context. Consider the following: do letrec 'f'/0 = fun () -> ... whatever ... in call 'side':'effect'(apply 'f'/0()) 'ok' When f/0 is optimized under the assumption that its return value is unused, side:effect/1 will be fed the result of the last side-effecting expression in f/0 instead of its actual result. https://bugs.erlang.org/browse/ERL-658 Co-authored-by: Björn Gustavsson <[email protected]>
2018-08-08Do NOT disc_load from ram_copies when master_node is setDan Gudmundsson
Setting master_nodes to a node with ram_copies replica and that node had not loaded the table, could cause it load an empty table, even though (non master) nodes had disc_replicas. This meant that tables where unexpected empty after multiple failures happened. When this happen do not load the table and wait for user to force_load it on some node, preferably with a disk copy.
2018-08-08Eliminate one more unmatched_return warningKostis Sagonas
2018-08-07Optimize binary matchJosé Valim
The idea is to use memchr on the first lookup for binary:match/2 and also after every match on binary:matches/2. We only use memchr in case of matches because benchmarks showed that using memchr even when we had false positives could negatively affect performance. This speeds up binary matching and binary splitting by 4x in some cases and by 70x in other scenarios (when the last character in the needle does not occur in the subject). The reason to use memchr is that it is highly specialized in most modern operating systems, often defaulting to SIMD operations. The implementation uses the reduction count to figure out how many bytes should be read with memchr. We could increase those numbers but they do not seem to make a large difference.
2018-08-07ssl: Make sure that a correct cipher suite is selectedIngela Anderton Andin
The keyexchange ECDHE-RSA requires an RSA-keyed server cert (corresponding for ECDHE-ECDSA), the code did not assert this resulting in that a incorrect cipher suite could be selected. Alas test code was also wrong hiding the error.
2018-08-07ssl: Correct close handlingIngela Anderton Andin
Transport accepted sockets that are in the error state, was not closed properly.
2018-08-07Eliminate double computation of next varMichał Muskała
My compiler benchmarks on modules with huge functions, show the next_free_variable_name call to be expensive. It turns out one of the 3 calls to the function was completely ignored.
2018-08-07Merge branch 'maint'Ingela Anderton Andin
2018-08-07Merge branch 'ingela/ssl/typos' into maintIngela Anderton Andin
* ingela/ssl/typos: ssl: Fix typos
2018-08-07Merge branch 'maint'Siri Hansen
2018-08-07Merge pull request #1906 from elbrujohalcon/patch-3Siri Hansen
Update documentation for ct:timetrap/1
2018-08-07Merge pull request #1872 from sunboshan/patch-1Siri Hansen
Fix kernel_app doc logger_level defaults
2018-08-07ssl: Fix typosIngela Anderton Andin
2018-08-06beam_validator: Fix false diagnostic for a receive nested in a tryBjörn Gustavsson
When nesting a receive in a try/catch, there could be a false diagnostic that a fragile term is used. https://bugs.erlang.org/browse/ERL-684
2018-08-06ssl: Make sure that a correct cipher suite is selectedIngela Anderton Andin
The keyexchange ECDHE-RSA requires an RSA-keyed server cert (corresponding for ECDHE-ECDSA), the code did not assert this resulting in that a incorrect cipher suite could be selected. Alas test code was also wrong hiding the error.
2018-08-06Update documentation for ct:timetrap/1Brujo Benavides
Even when `ct:sleep/1` accepts `Millisecs` as floats, `ct:timetrap/1` does not. If you try to use it in a test, you get the following error: ```erlang {invalid_time_format,0.1} ```
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-08-05Rewrite erlang:get_stacktrace calls to primop when safeMichał Muskała
This allows taking advantage of further optimisations, like the raw_raise instruction for code that can't upgrade (yet) to the new stacktrace syntax for compatibility reasons. The rewrite is only done when it is safe - when the get_stacktrace call is the very first thing the handler does.
2018-08-03Merge branch 'maint'Raimo Niskanen
* maint: Updated OTP version Prepare release Fix NIF stack recursion bug and enforce a limit
2018-08-03Merge branch 'maint-20' into maintRaimo Niskanen
* maint-20: Updated OTP version Prepare release Fix NIF stack recursion bug and enforce a limit Conflicts: OTP_VERSION lib/asn1/doc/src/notes.xml lib/asn1/vsn.mk otp_versions.table
2018-08-03Merge branch 'maint'Lukas Larsson
2018-08-03erts: Fix seq_trace to not clear token for system messagesLukas Larsson
A lot of erts internal messages used behind APIs to create non-blocking calls, e.g. port_command, would cause the seq_trace token to be cleared from the caller when it should not. This commit fixes that and adds asserts that makes sure that all messages sent have to correct token set. Fixes: ERL-602
2018-08-03Merge branch 'maint'Lukas Larsson
2018-08-03Merge branch 'lukas/erts/fix_udp_realloc_bug' into maintLukas Larsson
* lukas/erts/fix_udp_realloc_bug: erts: Limit the automatic max buffer for UDP to 2^16 erts: Free udp buffer when getting EAGAIN
2018-08-02Prepare releaseErlang/OTP
2018-08-02Fix NIF stack recursion bug and enforce a limitRaimo Niskanen
Fix recursion bug when decoding Constructed value within another value - here the allowed buffer for the recursed decode shall only be the size of the enclosing value, not the whole buffer. Return ASN1_ERROR if BER decode recurses more than about 8 kWords.
2018-08-01Fixes ERL-675Stevie Graham
RSA options rsa_mgf1_md, rsa_oaep_md, and rsa_oaep_label do not work. PR #838, which reimplemented various parts of the crypto application to use OpenSSL EVP APIs was merged manually. During the manual merge the macro define for HAVE_RSA_OAEP_MD was lost. The result being that setting rsa_mgf1_md and rsa_oaep_md for any other value than sha causes the nif to return not_sup. Support for configurable MGF1 digests and OAEP labels is available in OpenSSL version 1.1.0, a cursory look at libressl does not seem to reveal support, so it is not added in this PR. The defective functionality has been returned by defining HAVE_RSA_OAEP_MD alongside HAVE_CHACHA20_POLY1305, i.e. OpenSSL >= 1.1.0 and NOT libressl.
2018-07-31Merge branch 'maint'Lukas Larsson
2018-07-31tomas-abrahamsson/dialyzer-syntax-tools/PR-1888/OTP-15207Lukas Larsson
Fix spec for erl_syntax_lib:analyze_type_application/1
2018-07-31kernel: Fix checksum of zlib test documentLukas Larsson
The zipdoc file has to have the same contents as zipdoc.zip otherwise testcases fail. This was broken in 37c11cda19bd90.
2018-07-30erts: Limit the automatic max buffer for UDP to 2^16Lukas Larsson
There is no reason to have a larger buffer than this as the recvmsg call will never return more data. OTP-15206
2018-07-30Merge pull request #1891 from ↵Raimo Niskanen
RaimoNiskanen/raimo/can_not-should-mostly-be-cannot OTP-14282 'can not' should mostly be 'cannot'
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-27Remove newline between can and notRaimo Niskanen
After this whitespace modification there should be no "can not"s separated by a newline in the entire OTP repository, so to find them all a simple git grep will do just fine.
2018-07-26Merge branch 'maint'John Högberg
2018-07-26Merge branch 'maint-21' into maintJohn Högberg
2018-07-25Merge pull request #1886 from michalmuskala/mm/maps-refactorJohn Högberg
Refactor maps.erl
2018-07-24Merge branch 'peterdmv/ssl/version_downgrade_protection/OTP-15189'Péter Dimitrov
* peterdmv/ssl/version_downgrade_protection/OTP-15189: ssl: Implement downgrade protection mechanism (TLS 1.3) Change-Id: I29a281c1278509608fdea9b0346ad91c62f886a8
2018-07-24Merge branch 'maint'John Högberg
* maint: Fix typo in xmerl_scan:string/1 Updated OTP version Prepare release ssl: Engine key trumps certfile option inets: Prepare for release inets: Improve error handling
2018-07-24Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Prepare release ssl: Engine key trumps certfile option inets: Prepare for release inets: Improve error handling
2018-07-23Refine types of functions in maps moduleMichał Muskała
This only touches functions that are not further manually enhanced in erl_bif_types. The hope is that this will allow dialyzer to discover more issues in code using maps.
2018-07-23Merge pull request #1887 from goofansu/xmerl/string-equiv-typo-fixLukas Larsson
Fix typo in xmerl_scan:string/1
2018-07-23Fix typo in xmerl_scan:string/1YeJun Su
2018-07-20Fix spec for erl_syntax_lib:analyze_type_application/1Tomas Abrahamsson
2018-07-20Merge branch 'peterdmv/ssl/version_extension_updates/OTP-15059'Péter Dimitrov
* peterdmv/ssl/version_extension_updates/OTP-15059: ssl: Fix handling of TLS record versions ssl: Update hello state (TLS 1.3) ssl: Implement 'supported_versions' extension ssl: Sort supported versions in handle_options ssl: Add experimental version 'tlsv1.3' Change-Id: I071d24242103cc066c5ee8154effc5ee01b04703
2018-07-20Merge branch 'maint'Sverker Eriksson
2018-07-20Merge PR-1881 from f3c0/mnesia-spec-fix OTP-15201Sverker Eriksson
fix type spec of mnesia:change_config
2018-07-20Merge PR-1878 from michalmuskala/mm/map-new-bif-2 OTP-15200Sverker Eriksson
maps:new/0 is no longer a BIF
2018-07-20Prepare releaseErlang/OTP