aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/src
AgeCommit message (Collapse)Author
2011-10-20Merge branch 'rc/epp-include-path-fix'Henrik Nord
* rc/epp-include-path-fix: Make epp search directory of current file first when including another file OTP-9645
2011-10-20Merge branch 'hl/fix-ms_transform-scope-warn'Henrik Nord
* hl/fix-ms_transform-scope-warn: ms_transform: Fix incorrect `variable shadowed' warnings OTP-9646
2011-10-20Merge branch 'cf/simple_one_for_one_shutdown'Henrik Nord
* cf/simple_one_for_one_shutdown: Explain how dynamic child processes are stopped Stack errors when dynamic children are stopped Explicitly kill dynamic children in supervisors Conflicts: lib/stdlib/doc/src/supervisor.xml OTP-9647
2011-10-20Merge branch 'cf/supervisor_shutdown_infinity'Henrik Nord
* cf/supervisor_shutdown_infinity: Add a warning to docs about workers' shutdown strategy Allow an infinite timeout to shutdown worker processes OTP-9648
2011-10-18Merge branch 'sverker/random-improved-algo'Sverker Eriksson
* sverker/random-improved-algo: Improve algorithm in module random. Fix a bug in the implementation of the pseudo-random number generator OTP-8713
2011-10-17Make epp search directory of current file first when including another fileRichard Carlsson
The expected behaviour of a C-style preprocessor (such as Erlang's epp) is to allow a header file to include another header file in the same directory even though that directory is not explicitly in the include path, and even if the actual include path might reference another directory containing a file with the same name. For example, if src/foo.erl explicitly includes "../include/foo.hrl", then foo.hrl should be able to include "bar.hrl" in that same directory even though "../include" might not be in the search path, and even if another file named bar.hrl could be found using the search path it should not override the one in the same directory as foo.hrl. In Erlang, the most common situation is that a user of an installed application includes a main public header file using include_lib ("appname/include/foo.hrl") and that file includes a secondary header file "bar.hrl". However, if it does this using include_lib, it causes a bootstrapping problem - in the build environment for the application itself, the application is not necessarily found by name. On the other hand, if foo.hrl uses a plain include, then bar.hrl might be found when the application is built (if explicit paths are set in the makefils) but not later on when a user includes the main header file of the installed application via include_lib. By making -include always look in the directory of the current file before it uses the search path, this problem is remedied, and include directives behave in a more intuitive way. This completes a partial fix in R11 that only worked for include_lib().
2011-10-17Fix a bug in Dets concerning repair of almost full tablesHans Bolinder
A Dets table with sufficiently large buckets could not always be repaired. (Reported by Gordon Guthrie.) The format of Dets files has been modified. When downgrading tables created with the new system will be repaired. Otherwise the modification should not be noticeable.
2011-10-17Correct the docsHans Bolinder
2011-10-10Allow an infinite timeout to shutdown worker processesChristopher Faulet
Now, in child specification, the shutdown value can also be set to infinity for worker children. This restriction was removed because this is not always possible to predict the shutdown time for a worker. This is highly application-dependent.
2011-10-10Fix a minor bug in DetsHans Bolinder
If a Dets table had been properly closed but the space management data could not been read, it was not possible to repair the file.
2011-10-07Add '-callback' attributes in stdlib's behavioursStavros Aronis
Replace the behaviour_info(callbacks) export in stdlib's behaviours with -callback' attributes for all the callbacks.
2011-10-07Automatically generate 'behaviour_info' function from '-callback' attributesStavros Aronis
'behaviour_info(callbacks)' is a special function that is defined in a module which describes a behaviour and returns a list of its callbacks. This function is now automatically generated using the '-callback' specs. An error is returned by lint if user defines both '-callback' attributes and the behaviour_info/1 function. If no type info is needed for a callback use a generic spec for it.
2011-10-07Add '-callback' attribute to language syntaxStavros Aronis
Behaviours may define specs for their callbacks using the familiar spec syntax, replacing the '-spec' keyword with '-callback'. Simple lint checks are performed to ensure that no callbacks are defined twice and all types referred are declared. These attributes can be then used by tools to provide documentation to the behaviour or find discrepancies in the callback definitions in the callback module.
2011-09-29Merge branch 'dev' into majorBjörn-Egil Dahlberg
* dev: Update copyright years
2011-09-29Update copyright yearsBjörn-Egil Dahlberg
2011-09-28Merge branch 'dev' into majorBjörn Gustavsson
* dev: distribution_SUITE:bulk_send_bigbig/1: Fail with more information distribution_SUITE: Use unique slave node names beam_lib: Handle rare race in the crypto key server functionality busy_port_SUITE: Avoid crash in register/2 [wx] Re-generate code [wx] Remove optional shadowing clauses [wx] Remove warning [wx] Fix trailing whitespace [wx] Test colors in textctrl [wx] Fix cleanup memory references
2011-09-27beam_lib: Handle rare race in the crypto key server functionalityBjörn Gustavsson
In rare circumstances, there can be a race when the crypto key server is started by beam_lib:crypto_key_fun/1 shortly after stopping it using beam_lib:clear_crypto_key_fun/0. The race occurs because the crypto key server first sends back the reply to the calling process, then terminates. (The race is probably more likely to happen on CPUs with hyper threading.)
2011-09-26Merge branch 'dev' into majorLukas
* dev: Add documentation for cth_log_redirect and built-in hooks Correct wrong match from lists:keyfind Update cth_log_redirect to wait for all error_logger events before ending test Force logging to framework log for parallel tests Add ct_log:ct_log funcion Add a hook for redirecting SASL and error_logger messages Add -enable_builtin_hooks <bool> config option Export write_events and add option to return a string
2011-09-26Merge branch 'lukas/common_test/system_logs_to_ct_log/OTP-9543' into devLukas
* lukas/common_test/system_logs_to_ct_log/OTP-9543: Add documentation for cth_log_redirect and built-in hooks Correct wrong match from lists:keyfind Update cth_log_redirect to wait for all error_logger events before ending test Force logging to framework log for parallel tests Add ct_log:ct_log funcion Add a hook for redirecting SASL and error_logger messages Add -enable_builtin_hooks <bool> config option Export write_events and add option to return a string
2011-09-20Export write_events and add option to return a stringLukas Larsson
2011-09-20Merge branch 'dev' into majorHenrik Nord
Conflicts: erts/aclocal.m4 erts/include/internal/ethread_header_config.h.in
2011-09-16Stack errors when dynamic children are stoppedChristopher Faulet
Because a simple_one_for_one supervisor can have many workers, we stack errors during its shutdown to report only one message for each encountered error type. Instead of reporting the child's pid, we use the number of concerned children.
2011-09-16Explicitly kill dynamic children in supervisorsChristopher Faulet
According to the supervisor's documentation: "Important note on simple-one-for-one supervisors: The dynamically created child processes of a simple-one-for-one supervisor are not explicitly killed, regardless of shutdown strategy, but are expected to terminate when the supervisor does (that is, when an exit signal from the parent process is received)." All is fine as long as we stop simple_one_for_one supervisor manually. Dynamic children catch the exit signal from the supervisor and leave. But, if this happens when we stop an application, after the top supervisor has stopped, the application master kills all remaining processes associated to this application. So, dynamic children that trap exit signals can be killed during their cleanup (here we mean inside terminate/2). This is unpredictable and highly time-dependent. In this commit, supervisor module is patched to explicitly terminate dynamic children accordingly to the shutdown strategy. NOTE: Order in which dynamic children are stopped is not defined. In fact, this is "almost" done at the same time.
2011-09-15Fix misspelling of compatibilityTuncer Ayaz
2011-09-15Fix misspelling of successfulTuncer Ayaz
2011-09-09Merge branch 'bmk/inets/inets58_integration' into majorMicael Karlberg
[httpc] Deprecated interface module <c>http</c> has been removed. It has (long) been replaced by http client interface module httpc. OTP-9359 [httpc|httpd] The old ssl implementation (based on OpenSSL), has been deprecated. The config option that specified usage of this version of the ssl app, *ossl*, has been removed. OTP-9522
2011-09-08Merge branch 'dev' into majorHenrik Nord
2011-09-08Merge branch 'ta/erl_compile-dead-code' into devHenrik Nord
* ta/erl_compile-dead-code: Remove dead code in erl_compile OTP-9527
2011-09-08ms_transform: Fix incorrect `variable shadowed' warningsHaitao Li
Compile below module resulting incorrect warning: $ cat tmp.erl -module(tmp). -export([tmp/1]). -include_lib("stdlib/include/ms_transform.hrl"). tmp(X) when X > 100 -> Y=X, Y; tmp(X) -> ets:fun2ms(fun(Y) -> {X, Y} end). $ erlc tmp.erl ./tmp.erl:8: Warning: variable 'Y' shadowed in ms_transform fun head The scope for a variable is its function clause. Variables bound in one function clause should not interfere with other function clauses. This patch removes incorrect passing of variable bindings from one function clause to another. Signed-off-by: Haitao Li <[email protected]>
2011-09-05Merge branch 'bmk/inets/httpc/remove_deprecated_module_http/OTP-9359' into ↵Micael Karlberg
bmk/inets/inets58_integration
2011-09-02Merge branch 'dev' into majorBjörn Gustavsson
* dev: Make the check_old_code/1 BIF auto-imported Deprecate the docbuilder application Conflicts: lib/stdlib/src/otp_internal.erl
2011-09-02Merge branch 'bjorn/deprecate-docbuilder/OTP-9509' into devBjörn Gustavsson
* bjorn/deprecate-docbuilder/OTP-9509: Deprecate the docbuilder application
2011-09-02Merge branch 'bjorn/erts/old-code-checking-improvements/OTP-9495' into devBjörn Gustavsson
* bjorn/erts/old-code-checking-improvements/OTP-9495: Make the check_old_code/1 BIF auto-imported
2011-09-02Merge branch 'dev' into majorHans Bolinder
* dev: Fix a couple of minor bugs with hook priority Update to reflect addition of CTH priority addition Update CTH priority default to be 0 Update to reflect new cth callback api Update the return from init/2 to be {ok, NewState} or {ok,NewState,Priority} instead of NewState. Add priority functionality and tests for ct hooks Update internal hooks state to use a record instead of tuples Improve and correct types and specifications in Kernel and STDLIB
2011-09-02Merge branch 'hb/spec_improvements/OTP-9485' into devHans Bolinder
* hb/spec_improvements/OTP-9485: Improve and correct types and specifications in Kernel and STDLIB
2011-09-01Merge branch 'dev' into majorHenrik Nord
2011-09-01Merge branch 'rc/stdlib-edoc-fix' into devHenrik Nord
* rc/stdlib-edoc-fix: fix broken edoc annotations OTP-9516
2011-09-01Make the check_old_code/1 BIF auto-importedBjörn Gustavsson
check_old_code/1 was documented to be auto-imported, but in fact was not auto-imported. Since check_process_code/2 and the other code loading BIFs are now auto-imported, for consistency auto-import check_old_code/1 too.
2011-09-01Deprecate the docbuilder applicationBjörn Gustavsson
2011-08-31Improve and correct types and specifications in Kernel and STDLIBHans Bolinder
Running Dialyzer on the test suites revealed a few type errors.
2011-08-30Remove dead code in erl_compileTuncer Ayaz
2011-08-30Merge branch 'dev' into majorHenrik Nord
2011-08-30Merge branch 'ft/fix_supervisor_temporary_restart' into devHenrik Nord
OTP-9502
2011-08-29Merge branch 'dev' into majorHenrik Nord
2011-08-29Merge branch 'rz/add_proplist_type' into devHenrik Nord
* rz/add_proplist_type: Add a proplist() type OTP-9499
2011-08-25Merge branch 'bjorn/line-numbers-in-exceptions/OTP-9468' into majorBjörn Gustavsson
* bjorn/line-numbers-in-exceptions/OTP-9468: (51 commits) debugger: By default, only save non-tail-recursive calls debugger: Add line_number_SUITE debugger: Include line numbers in exceptions Update examples in the documentation to include line numbers Update documentation for erlang:raise/3 and erlang:get_stacktrace/0 beam_lib: Retain the "Line" chunk when stripping BEAM files erl: Add +L to suppress loading of line number information compiler: Add no_line_info for suppressing line/1 instructions exception_SUITE: Test line numbers in exceptions common_test: Use line numbers in exceptions common_test tests: Don't do detailed testing of the stack backtrace test_server: Refactor init_per_testcase/3 into two functions Implement process_info(Pid, current_{location,stacktrace}) beam_emu: Factor out saving of stack trace from save_stacktrace() compiler: Don't create filenames starting with "./" ops.tab: Remove line instructions before tail-recursive calls Lookup and include filenames and line numbers in exceptions Fix decrement of continuation pointers Refactor building of the exception stacktrace BEAM loader: Load the line table ...
2011-08-25Merge branch 'dev' into majorHenrik Nord
2011-08-23fix supervisors restarting temporary childrenFred Hebert
In the current implementation of supervisors, temporary children should never be restarted. However, when a temporary child is restarted as part of a one_for_all or rest_for_one strategy where the failing process is not the temporary child, the supervisor still tries to restart it. Because the supervisor doesn't keep some of the MFA information of temporary children, this causes the supervisor to hit its restart limit and crash. This patch fixes the behaviour by inserting a clause in terminate_children/2-3 (private function) that will omit temporary children when building a list of killed processes, to avoid having the supervisor trying to restart them again. Only supervisors in need of restarting children used the list, so the change should be of no impact for the functions that called terminate_children/2-3 only to kill all children. The documentation has been modified to make this behaviour more explicit.
2011-08-18fix broken edoc annotationsRichard Carlsson
2011-08-18Fix a bug in zip:zip_open/1,2.Hans Bolinder
zip:zip_open/1,2 did not accept binary archives. Also corrected the contracts of t/1 and tt/1.