aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2016-02-26Merge branch 'bjorn/compiler/bit-syntax/OTP-13374'Björn Gustavsson
* bjorn/compiler/bit-syntax/OTP-13374: Produce warnings for binary patterns that will never match v3_core: Include line number annotations in binary patterns sys_core_fold: Introduce var_list/2 sys_core_fold: Optimize clause/4
2016-02-26Merge branch 'bjorn/multiple-load/OTP-13111'Björn Gustavsson
* bjorn/multiple-load/OTP-13111: code: Add functions that can load multiple modules Refactor post_beam_load handling Simplify and robustify code_server:all_loaded/1 Update preloaded modules Add erl_prim_loader:get_modules/3 Add has_prepared_code_on_load/1 BIF Allow erlang:finish_loading/1 to load more than one module beam_load.c: Add a function to check for an on_load function
2016-02-26Merge branch 'maint'Hans Nilsson
2016-02-26Merge branch 'hans/eldap/prepare_release' into maintHans Nilsson
2016-02-26Merge branch 'hans/ssh/prepare_release' into maintHans Nilsson
2016-02-25Merge branch 'maint'Hans Nilsson
2016-02-25Merge branch 'kenneth/ssh_erl-87/OTP-13305' into maintHans Nilsson
2016-02-25Merge branch 'maint'Björn-Egil Dahlberg
Conflicts: erts/emulator/beam/erl_alloc.types erts/emulator/beam/erl_bif_info.c erts/emulator/beam/erl_process.c erts/preloaded/ebin/erts_internal.beam
2016-02-25eldap: step vsn.mkHans Nilsson
2016-02-25eldap: fix error found by dialyzerHans Nilsson
2016-02-25Merge branch 'siri/remove-overload/OTP-13184'Siri Hansen
* siri/remove-overload/OTP-13184: Remove module 'overload' from SASL
2016-02-25Merge branch 'egil/heart-callback/OTP-13250' into maintBjörn-Egil Dahlberg
2016-02-25kernel: Clarify heart optionBjörn-Egil Dahlberg
Change scheduler responsiveness to 'check_schedulers'.
2016-02-25code: Add functions that can load multiple modulesBjörn Gustavsson
Add functions to 'code' to allow loading of multiple modules at once. code:atomic_load(Modules) will load all modules at once, or fail having loaded none of them. Since we cannot guarantee the atomicity if there are modules with -on_load functions, the list of modules must not contain any modules with an -on_load function. Also, to make it possible to put an application into an inactive state for as short time as possible, also add code:prepare_loading/1 and code:finish_loading/1. They are used like this: {ok,Prepared} = code:prepare_loading(Modules) . . . ok = code:finish_loading(Prepared) code:ensure_modules_loaded/1 is useful as a pure optimization to ensure that modules that will be needed soon have indeed been loaded. It will not reload modules that have already been loaded and it *will* accept modules that have an on_load function. Therefore, it does not make sense to give any atomicity guarantees. I did consider overloading the existing code:ensure_loaded/1 function, but rejected it because the return value is very different. Having different forms of return values depending on the types of arguments is confusing.
2016-02-25Refactor post_beam_load handlingBjörn Gustavsson
After loading a module without native code, it is still necessary to call hipe_unified_loader:post_beam_load() to ensure that any native calls to the module is done to the newly loaded module (and not to a previous version of the module in native code). Unfortunately, hipe_unified_loader:post_beam_load() can be slow and most of the time it doesn't do anything because no previous native code was loaded. Therefore, ad2962278f added a kludge using the process dictionary to avoid calling post_beam_load() if no native code at all has been loaded. Remove the kludge by keeping track exactly of which modules that have native code in the existing ets table. Also generalize post_beam_load() to handle severals modules at once, since we will soon need that functionality.
2016-02-25Simplify and robustify code_server:all_loaded/1Björn Gustavsson
The main ets table kept by code_server contains several pieces of information. Therefore, code_server:all_loaded/1 need to filter the information in the table. code_server:all_loaded/1 can be simplified if we use ets:select/2. Currently, the filtering is done by filtering away unwanted stuff ({sticky_dir,Mod} tuples). It is more robust to filter on the stuff that we want to keep ({Mod,Path} tuples, where Mod is an atom) in case that we'll add more auxiliary records to the table later.
2016-02-25Add erl_prim_loader:get_modules/3Björn Gustavsson
When we are going to implement functions that can load many modules at once, we don't the erl_prim_loader server to become a bottleneck. Therefore, we need erl_prim_loader:get_modules/3 that can read many BEAM files in parallel. Note that we will not bother making reading from archive files or using the inet loader efficient. That can be done later if it turns out to be important.
2016-02-25Add has_prepared_code_on_load/1 BIFBjörn Gustavsson
2016-02-25ssh: step vsn.mkHans Nilsson
2016-02-25Merge branch 'maint'Ingela Anderton Andin
2016-02-25Merge branch 'legoscia/fix-ssl-example/PR-976/OTP-13363' into maintIngela Anderton Andin
* legoscia/fix-ssl-example/PR-976/OTP-13363: ssl: Modernize utility function Fix ssl example
2016-02-25Merge branch 'maint'Henrik Nord
2016-02-25Merge branch 'bernardd/gen_tcp_export_socket' into maintHenrik Nord
* bernardd/gen_tcp_export_socket: Export gen_tcp:socket() type OTP-13380
2016-02-25Merge branch 'maint'Henrik Nord
2016-02-25Merge branch 'kostis/hipe-icode-cleanup' into maintHenrik Nord
* kostis/hipe-icode-cleanup: Fix dialyzer warning and some code refactoring OTP-13379
2016-02-25Merge branch 'maint'Henrik Nord
2016-02-25Merge branch 'legoscia/crl-check-without-dp' into maintHenrik Nord
* legoscia/crl-check-without-dp: Be suspicious of certificates without CRL DPs Refactor ssl_crl_SUITE: extract crl_verify_error/6 OTP-13378
2016-02-25Merge branch 'legoscia/critical-extension-verify-none' into maintHenrik Nord
* legoscia/critical-extension-verify-none: ssl: with verify_none, accept critical extensions OTP-13377
2016-02-25Merge branch 'maint'Henrik Nord
2016-02-25Merge branch 'benwilson512/better-maps-with' into maintHenrik Nord
* benwilson512/better-maps-with: Improved maps:with/2 and maps:without/2 algorithm OTP-13376
2016-02-25Produce warnings for binary patterns that will never matchBjörn Gustavsson
Binary matching can be confusing. For example: 1> <<-1>> = <<-1>>. ** exception error: no match of right hand side value <<"ÿ">> 2> When constructing binaries, the value will be masked to fit in the binary segment. But no such masking happens when matching binaries. One solution that we considered was to do the same masking when matching. We have rejected that solution for several reasons: * Masking in construction is highly controversial and by some people considered a bad design decision. * While masking of unsigned numbers can be understood, masking of signed numbers it not easy to understand. * Then there is the question of backward compatibility. Adding masking to matching would mean that clauses that did not match earlier would start to match. That means that code that has never been tested will be executed. Code that has not been tested will usually not work. Therefore, we have decided to warn for binary patterns that cannot possibly match. While we are it, we will also warn for the following example where size for a binary segment is invalid: bad_size(Bin) -> BadSize = bad_size, <<42:BadSize>> = Bin. That example would crash the HiPE compiler because the BEAM compiler would generate a bs_get_integer2 instruction with an invalid size field. We can avoid that crash if sys_core_fold not only warns for bad binary pattern, but also removes the clauses that will not match. Reported-by: http://bugs.erlang.org/browse/ERL-44 Reported-by: Kostis Sagonas
2016-02-25Merge branch 'maint'Hans Nilsson
2016-02-25Merge branch 'hans/eldap/unbind/OTP-13327' into maintHans Nilsson
Conflicts: lib/eldap/src/eldap.erl
2016-02-25Merge branch 'hans/eldap/referral/OTP-12272' into maintHans Nilsson
2016-02-24Merge branch 'maint'Hans Bolinder
* maint: [erl_interface] Correct documentation
2016-02-24[erl_interface] Correct documentationHans Bolinder
Fix mistakes found by 'xmllint'.
2016-02-23ssl: Modernize utility functionIngela Anderton Andin
Use application:ensure_all_started/2 instead of hard coding dependencies
2016-02-23kernel: Add heart options testBjörn-Egil Dahlberg
2016-02-23kernel: Add heart options documentationBjörn-Egil Dahlberg
2016-02-23Merge branch 'maint'Hans Nilsson
Conflicts: lib/ssh/test/ssh_upgrade_SUITE.erl
2016-02-23Merge branch 'hans/ssh/maint_cuddle_tests' into maintHans Nilsson
2016-02-23kernel: Add builtin scheduler check for heartBjörn-Egil Dahlberg
In addition, the heart API is extended with the following functions: * heart:set_options/1 * heart:get_options/0 If heart:set_options([scheduler]) is set, heart will check scheduler responsiveness before every heartbeat to the heart port.
2016-02-23kernel: Add heart validation callback documentationBjörn-Egil Dahlberg
2016-02-23Merge branch 'dgud/observer/perf-freq'Dan Gudmundsson
* dgud/observer/perf-freq: observer: Optimize drawing of graphs observer: Make it possible to change the graphs Xaxis and update freq
2016-02-23Merge branch 'maint'Henrik Nord
Conflicts: OTP_VERSION
2016-02-23Merge branch 'maint-18' into maintHenrik Nord
2016-02-23v3_core: Include line number annotations in binary patternsBjörn Gustavsson
We will need them when we start to produce warnings for patterns that can't match.
2016-02-23sys_core_fold: Introduce var_list/2Björn Gustavsson
As a preparation for checking binary patterns we will add var_list/2 that will work as pattern_list/2 but is guaranteed not to throw an exception. That way, we will only have to use try...catch for the few remaining calls to pattern_list/2.
2016-02-23sys_core_fold: Optimize clause/4Björn Gustavsson
Save work the *extremely* common case that the guard is a literal.
2016-02-22eldap: experimental impl of controls in LDAPMessageHans Nilsson