aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2014-09-03Merge branch 'maint'Hans Nilsson
2014-09-03Merge branch 'hans/update_vsn.mk' into maintHans Nilsson
2014-09-03ssh: update vsn.mkHans Nilsson
2014-09-03inets: update vsn.mkHans Nilsson
2014-09-03common_test: update vsn.mkHans Nilsson
2014-09-02Merge branch 'maint'Hans Nilsson
2014-09-02Merge branch 'hans/proptest/init/OTP-12119' into maintHans Nilsson
* hans/proptest/init/OTP-12119: ssh: Add simple experimental property test suites inets: Add simple experimental property test suite common_test: Add experimental module ct_property_test
2014-09-02ssh: Add simple experimental property test suitesHans Nilsson
2014-09-02inets: Add simple experimental property test suiteHans Nilsson
2014-09-02common_test: Add experimental module ct_property_testHans Nilsson
This module may change without warning...
2014-09-01Update primary bootstrapBjörn Gustavsson
2014-09-01Update primary bootstrapBjörn Gustavsson
2014-09-01Merge branch 'bjorn/compiler/fix-scope-bug/OTP-12132' into maintBjörn Gustavsson
* bjorn/compiler/fix-scope-bug/OTP-12132: sys_core_fold: Eliminate name capture bug
2014-09-01sys_core_fold: Eliminate name capture bugBjörn Gustavsson
The scope is supposed to contain all variables that are currently live. We need this information for certain optimizations to avoid capturing a name (a name that is in the scope must be renamed; for an example, see move_let_into_expr/2 or any function that calls sub_subst_scope/1). We also use the scope to optimize sub_del_var/2 and sub_is_val/2. When optimizing case expressions, the scope could be reset to an empty list (because sub_new/0 was called instead of sub_new/1). That could cause name capture if inlining was turned on. As simple way to force this bug is to uncomment the "-define(DEBUG, 1)." near the beginning of the file. Without this correction, most files in the test suite fail to compile.
2014-09-01Merge branch 'maint'Marcus Arendt
2014-09-01Merge branch 'nox/erl_scan-fix-column-tracking' into maintMarcus Arendt
* nox/erl_scan-fix-column-tracking: Properly track column numbers in erl_scan
2014-09-01Merge branch 'maint'Siri Hansen
2014-09-01Merge branch 'siri/ct-runtime-deps/OTP-12037' into maintSiri Hansen
* siri/ct-runtime-deps/OTP-12037: [ct] Update runtime dependencies towards test_server
2014-09-01Merge branch 'maint'Marcus Arendt
2014-09-01Merge branch 'maint-17' into maintMarcus Arendt
Conflicts: OTP_VERSION
2014-08-29Merge branch 'maint'Rickard Green
* maint: Fix busy_port_SUITE:io_to_busy test-case Ensure "runnable port" trace messages are not sent out of order Ensure "runnable proc" trace messages are not sent out of order
2014-08-29Merge branch 'rickard/runnable-trace-ooo-bug/OTP-12105' into maintRickard Green
* rickard/runnable-trace-ooo-bug/OTP-12105: Fix busy_port_SUITE:io_to_busy test-case Ensure "runnable port" trace messages are not sent out of order Ensure "runnable proc" trace messages are not sent out of order
2014-08-29Merge branch 'maint'Rickard Green
* maint: Verify run-queue asserts Fix emigrate bug in erts_port_task_schedule()
2014-08-29Merge branch 'rickard/port-emigrate-bug/maint/OTP-12084' into maintRickard Green
* rickard/port-emigrate-bug/maint/OTP-12084: Verify run-queue asserts Fix emigrate bug in erts_port_task_schedule()
2014-08-29Merge branch 'maint'Ingela Anderton Andin
2014-08-29Merge branch 'ia/public_key/dialyzer' into maintIngela Anderton Andin
* ia/public_key/dialyzer: public_key: Fix spec and documentation for pkix_crls_validate public_key: Fix spec and documentation for PBES
2014-08-29Updated OTP versionOTP-17.2.2Erlang/OTP
2014-08-29Prepare releaseErlang/OTP
2014-08-29Merge branch 'dgud/mnesia/create-table-race/OTP-12124' into maint-17Erlang/OTP
* dgud/mnesia/create-table-race/OTP-12124: Avoid timing issue in schema transaction when node is stopping
2014-08-28Merge branch 'maint'Rickard Green
* maint: add enif_schedule_nif() to NIF API
2014-08-28Merge branch 'vinoski/enif-schedule-nif' into maintRickard Green
* vinoski/enif-schedule-nif: add enif_schedule_nif() to NIF API
2014-08-28add enif_schedule_nif() to NIF APISteve Vinoski
In the #erlang IRC channel Anthony Ramine once mentioned the idea of allowing a NIF to use an emulator trap, similar to a BIF trap, to schedule another NIF for execution. This is exactly how dirty NIFs were implemented for Erlang/OTP 17.0, so this commit refactors and generalizes that dirty NIF code to support a new enif_schedule_nif() API function. The enif_schedule_nif() function allows a long-running NIF to be broken into separate NIF invocations. The NIF first executes part of the long-running task, then calls enif_schedule_nif() to schedule a NIF for later execution to continue the task. Any number of NIFs can be scheduled in this manner, one after another. Since the emulator regains control between invocations, this helps avoid problems caused by native code tying up scheduler threads for too long. The enif_schedule_nif() function also replaces the original experimental dirty NIF API. The function takes a flags parameter that a caller can use to indicate the NIF should be scheduled onto either a dirty CPU scheduler thread, a dirty I/O scheduler thread, or scheduled as a regular NIF on a regular scheduler thread. With this change, the original experimental enif_schedule_dirty_nif(), enif_schedule_dirty_nif_finalizer() and enif_dirty_nif_finalizer() API functions are no longer needed and have been removed. Explicit scheduling of a dirty NIF finalization function is no longer necessary; if an application wants similar functionality, it can have a dirty NIF just invoke enif_schedule_nif() to schedule a non-dirty NIF to complete its task. Lift the restriction that dirty NIFs can't call enif_make_badarg() to raise an exception. This was a problem with the original dirty NIF API because it forced developers to get and check all incoming arguments in a regular NIF, and then schedule the dirty NIF which then had to get all the arguments again. Now, the argument checking can be done in the dirty NIF and it can call enif_make_badarg() itself to flag incorrect arguments. Extend the ErlNifFunc struct with a new flags field that allows NIFs to be declared as dirty. The default value for this field is 0, indicating a regular NIF, so it's backwards compatible with all existing statically initialized ErlNifFunc struct instances, and so such instances require no code changes. Defining the flags field with a value of ERL_NIF_DIRTY_JOB_CPU_BOUND indicates that the NIF should execute on a dirty CPU scheduler thread, or defining it with a value of ERL_NIF_DIRTY_JOB_IO_BOUND indicates that the NIF should execute on a dirty I/O scheduler thread. Any other flags field value causes a NIF library loading error. Extend the ErlNifEntry struct with a new options field that indicates whether a NIF library was built with support for optional features such as dirty NIFs. When a NIF library is loaded, the runtime checks the options field to ensure compatibility. If a NIF library built with dirty NIF support is loaded into a runtime that does not support dirty NIFs, and the library defines one or more ErlNifFunc entries with non-zero flags fields indicating dirty NIFs, a NIF library loading error results. There is no error if a NIF library built with dirty NIF support is loaded into a runtime that does not support dirty NIFs but the library does not have any dirty NIFs. It is also not an error if a library without dirty NIF support is loaded into a runtime built with dirty NIF support. Add documentation and tests for enif_schedule_nif().
2014-08-28Merge branch 'maint'Dan Gudmundsson
2014-08-28Merge branch 'dgud/stdlib/format_status_terminate/OTP-11967' into maintDan Gudmundsson
* dgud/stdlib/format_status_terminate/OTP-11967: stdlib: Call format_status even if terminate callback crashes
2014-08-28Merge branch 'maint'Marcus Arendt
2014-08-28Merge branch 'michaelkschmidt/ssh_bug_fix' into maintMarcus Arendt
* michaelkschmidt/ssh_bug_fix: Test Other Clauses of start_shell Fix SSH CLI when using custom "shell" option
2014-08-28Merge branch 'maint'Marcus Arendt
2014-08-28Merge branch 'tuncer/misspelled-another' into maintMarcus Arendt
* tuncer/misspelled-another: Fix misspellings of 'another'
2014-08-28Merge branch 'okeuday/erts-poll-debug-print-fix' into maintMarcus Arendt
* okeuday/erts-poll-debug-print-fix: Fix ERTS_POLL_DEBUG_PRINT usage
2014-08-28Avoid timing issue in schema transaction when node is stoppingDan Gudmundsson
By doing an abort, the create_table can be restarted if a node go down during the transaction. {badarg, [{erlang,link,[undefined],[]}, {mnesia_controller, wait_for_schema_commit_lock,0, [{file,"mnesia_controller.erl"}, {line,303}]}, {mnesia_schema,prepare_commit,3, [{file,"mnesia_schema.erl"}, {line,1838}]}, {mnesia_tm,commit_participant,6, [{file,"mnesia_tm.erl"}, {line,1669}]}]}}},
2014-08-27public_key: Fix spec and documentation for pkix_crls_validateIngela Anderton Andin
2014-08-27public_key: Fix spec and documentation for PBESIngela Anderton Andin
2014-08-27Merge branch 'maint'Bruce Yinhe
2014-08-27Merge branch 'lpgauth/fix_httpc_doc_typo' into maintBruce Yinhe
* lpgauth/fix_httpc_doc_typo: Fix typo in documentation /header_as_is/headers_as_is/
2014-08-27Merge branch 'maint'Ingela Anderton Andin
2014-08-27Merge branch 'ia/odbc/win-test' into maintIngela Anderton Andin
* ia/odbc/win-test: odbc: Condition test case to avoid permission issues in Vista
2014-08-26odbc: Condition test case to avoid permission issues in VistaIngela Anderton Andin
2014-08-26Merge branch 'maint'Marcus Arendt
2014-08-26Merge branch 'kittee/maps_only' into maintMarcus Arendt
* kittee/maps_only: maps:only/2 -> maps:with/2 add maps:only/2
2014-08-26Merge branch 'maint'Ingela Anderton Andin