aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-03-22erts: Add ERTS_RBT_YIELD_STAT_INIT to erl_rbtreeSverker Eriksson
for dynamic initialization of yield state.
2017-03-22Fix node_container_SUITERickard Green
2017-03-22list_to_ref/1Rickard Green
2017-03-22Merge pull request #1383 from shezarkhani/patch-1Björn Gustavsson
Minor document fix for proplists
2017-03-22Merge pull request #1385 from brucify/patch-4Björn Gustavsson
Update README.md
2017-03-22erts: Don't allocate memory during signal handlingBjörn-Egil Dahlberg
Allocations and message sending are now scheduled by a signal, via a signal state bitmap, instead of doing it directly in the signal handler.
2017-03-21Fix alignment of byte-sized constantsKostis Sagonas
2017-03-21ssl: Add connection information itemsIngela Anderton Andin
Add session_id and remove undocumented ssl:session_info/1 Add client_random, server_random and master_secret, they will not be included in ssl:connection_information/1 as they may affect the connections security if used recklessly.
2017-03-21Merge branch 'ingela/ssl/remove-deprecated'Ingela Anderton Andin
* ingela/ssl/remove-deprecated: ssl: Remove deprecated functions
2017-03-21Merge branch 'ingela/crypto/deprecate/rand_uniform'Ingela Anderton Andin
* ingela/crypto/deprecate/rand_uniform: crypto: Deprecate crypto:rand_uniform/2 as it is not cryptographically strong
2017-03-21erts: Make sigterm signal safe for non-smp beamBjörn-Egil Dahlberg
The signal handler will now schedule a sigterm message instead of sending the message in the signal handler. The signal handler must refrain from memory allocations and thus the event is scheduled.
2017-03-21Update README.mdBruce Yinhe
Update erlang-security email
2017-03-21Merge branch 'ingela/corrct-otp-internal'Ingela Anderton Andin
* ingela/corrct-otp-internal: ssl, public_key, crypto: Change deprecated to removed
2017-03-21compiler tests: Eliminate creation of untracked filesBjörn Gustavsson
Two dummy .erl files are created while releasing the tests for the compiler. Remove the files after they have been copied to the release directory to avoid that they show up as untracked files in the output of "git status".
2017-03-20Minor document fix for proplistsSasan Hezarkhani
2017-03-20erts: Make generated files depend on MakefileSverker Eriksson
in order to regenerate them if config has changed. ERL-379 Maybe a better solution would have been to run 'clean' target or stop and ask user to run make clean.
2017-03-20crypto: Deprecate crypto:rand_uniform/2 as it is not cryptographically strongIngela Anderton Andin
rand module should be used if not cryptographically strong is required. If cryptographically strong is required, new cryptographically strong functions should be added to crypto.
2017-03-20Merge pull request #1378 from ↵Björn Gustavsson
bjorng/bjorn/disallow-unicode-module-names/OTP-14285 Don't allow module names with non-latin1 characters
2017-03-20ssl, public_key, crypto: Change deprecated to removedIngela Anderton Andin
2017-03-20erts: Fix erl_async include files for no-threadsBjörn-Egil Dahlberg
2017-03-20Merge branch 'hans/ssh/remove_option__public_key_alg/OTP-14263'Hans Nilsson
2017-03-18No longer expose strong_rand_(range|float)Guilherme Andrade
2017-03-18Support cryptographically strong rand pluginGuilherme Andrade
2017-03-18Restyle crypto strong numeric generatorsGuilherme Andrade
for usage in rand
2017-03-17erts: Change HIPE allocations from sys_allocSverker Eriksson
to long lived, short lived and native stack.
2017-03-17ssh: remove from testHans Nilsson
2017-03-17ssh: remove from docHans Nilsson
2017-03-17ssh: remove from codeHans Nilsson
2017-03-17Update the documentation regarding Unicode atomsBjörn Gustavsson
2017-03-17Merge branch 'bjorn/asn1/clean-up'Björn Gustavsson
* bjorn/asn1/clean-up: Remove default clauses that cause exceptions for internal errors Clean up comments Clean up asn1ct_gen:emit/1 Remove unused clauses in asn1ct_gen:emit/1 Clean up use of asn1ct_gen:emit/1 Remove the 'debug' option Only generate needed single quotes around function names asn1ct_gen_ber_bin_v2: Remove unused code asn1ct_gen_per: Fix broken dialyzer suppression function asn1_erl_nif.c: Correct handling of tags >= 16384
2017-03-17Merge pull request #1362 from vladdu/patch-1Björn Gustavsson
use normal file names for eunit reports OTP-14287
2017-03-17Omit port from Host header on redirect to well-known portBram Verburg
ERL-316, as part of 19.3, adds the port number to the Host header upon automatic redirection. The port number is included even if it is a well-known port (80, 443). This is different from the behaviour of most HTTP clients, as well as httpc's own for new requests. The added port number can lead to problems such as this one, where the request signature assumes the client will not send the :443 suffix on redirection to an https URL: https://github.com/nerves-project/nerves/issues/96 I was unable to add a test case, since that would require a server on a well-known port, but I manually verified that the GitHub/S3 signing issue was indeed resolved with this patch.
2017-03-16hipe_spillmin_color: cleanup exit callsMagnus Lång
2017-03-16hipe_spillmin_color: Move coalescingMagnus Lång
2017-03-16hipe: Add pseudo_spill_f?move instructionsMagnus Lång
These pseudo instructions are added to all backends and allow spill slot to spill slot move coalescing in a clean way. They have regular move semantics, but contain an additional scratch register to be used if both source and destination are spilled, and can not be move coalesced. Additionally, a register allocator callback Target:is_spill_move(Instr, Context) is added which allows the spill slot allocators to check for these instructions and try to coalesce the spill slots the two temporaries are allocated to.
2017-03-16hipe: Add range splitter range_splitMagnus Lång
hipe_range_split is a complex live range splitter, more sophisticated thatn hipe_restore_reuse, but still targeted specifically at temporaries forced onto stack by being live over call instructions. hipe_range_split partitions the control flow graph at call instructions, like hipe_regalloc_prepass. Splitting decisions are made on a per partition and per temporary basis. There are three different ways in which hipe_range_split may choose to split a temporary in a program partition: * Mode1: Spill the temp before calls, and restore it after them * Mode2: Spill the temp after definitions, restore it after calls * Mode3: Spill the temp after definitions, restore it before uses To pick which of these should be used for each temp×partiton pair, hipe_range_split uses a cost function. The cost is simply the sum of the cost of all expected stack accesses, and the cost for an individual stack access is based on the probability weight of the basic block that it resides in. This biases the range splitter so that it attempts moving stack accesses from a functions hot path to the cold path. hipe_bb_weights is used to compute the probability weights. mode3 is effectively the same as what hipe_restore_reuse does. Because of this, hipe_restore_reuse reuses the analysis pass of hipe_restore_reuse in order to compute the minimal needed set of spills and restores. The reason mode3 was introduced to hipe_range_split rather than simply composing it with hipe_restore_reuse (by running both) is that such a composition resulted in poor register allocation results due to insufficiently strong move coalescing in the register allocator. The cost function heuristic has a couple of tuning knobs: * {range_split_min_gain, Gain} (default: 1.1, range: [0.0, inf)) The minimum proportional improvement that the cost of all stack accesses to a temp must display in order for that temp to be split. * {range_split_mode1_fudge, Factor} (default: 1.1, range: [0.0, inf)) Costs for mode1 are multiplied by this factor in order to discourage it when it provides marginal benefits. The justification is that mode1 causes temps to be live for longest, thus leading to higher register pressure. * {range_split_weight_power, Factor} (default: 2, range: (0.0, inf)) Adjusts how much effect the basic block weights have on the cost of a stack access. A stack access in a block with weight 1.0 has cost 1.0, a stack access in a block with weight 0.01 has cost 1/Factor. Additionally, the option range_split_weights chooses whether the basic block weights are used at all. In the case that the input is very big, hipe_range_split automatically falls back to hipe_restore_reuse only in order to keep compile times under control. Note that this is not only because of hipe_range_split being slow, but also due to the resulting program being slow to register allocate, and is not as partitionable by hipe_regalloc_prepass. hipe_restore_reuse, on the other hand, does not affect the programs partitionability. The hipe_range_split pass is controlled by a new option ra_range_split. ra_range_split is added to o2, and ra_restore_reuse is disabled in o2.
2017-03-16hipe: Add module computing basic blocks weightsMagnus Lång
hipe_bb_weights computes basic block weights by using the branch probability predictions as the coefficients in a linear equation system. This linear equation system is then solved using Gauss-Jordan Elimination. The equation system representation is picked to be efficient with highly sparse data. During triangelisation, the remaining equations are dynamically reordered in order to prevent the equations from growing in the common case, preserving the benefit of the sparse equation representation. In the case that the input is very big, hipe_bb_weights automatically falls back to a rough approximation in order to keep compile times under control.
2017-03-16hipe: Add branch prediction accessor ra callbacksMagnus Lång
Adds a new register allocator callback Target:branch_preds(Instr, Context) which, for a control flow instruction Instr, returns a list of tuples {Target, Probability} for each label name Target that Instr may branch to. Probability is a float between 0.0 and 1.0 and corresponds to the predicted probability that control flow branches to the corresponding target. The probabilities may sum to at most 1.0 (rounding errors aside). Note that a sum less than 1.0 is valid.
2017-03-16hipe: Add range splitter restore_reuseMagnus Lång
hipe_restore_reuse is a simplistic range splitter that splits temps that are forced onto the stack by being live over call instructions. In particular, it attempts to avoid cases where there are several accesses to such stack allocated temps in straight-line code, uninterrupted by any calls. In order to achieve this it splits temps between just before the first access(es) and just after the last access(es) in such straight-line code groups. The hipe_restore_reuse pass is controlled by a new option ra_restore_reuse. ra_restore_reuse is added to o1.
2017-03-16hipe: Add basic range splitting ra callbacksMagnus Lång
In addition to the temporary name rewriting that hipe_regalloc_prepass does, range splitters also need to be able to insert move instructions, as well as inserting new basic blocks in the control flow graph. The following four callbacks are added for that purpose: * Target:mk_move(Src, Dst, Context) Returns a move instruction from the temporary (not just register number) Src to Dst. * Target:mk_goto(Label, Context) Returns a unconditional control flow instruction that branches to the label with name Label. * Target:redirect_jmp(Instr, ToOld, ToNew, Context) Modifies the control flow instruction Instr so that any control flow that would go to a label with name ToOld instead goes to the label with name ToNew. * Target:new_label(Context) Returns a fresh label name that does not belong to any existing block in the current function, and is to be used to create a new basic block in the control flow graph by calling Target:update_bb/4 with this new name.
2017-03-16hipe: Add basic_edge_cases test caseMagnus Lång
Two tests are added, primarily aimed at the range splitters. * test_float_spills, which exercises the rare case of high floating point register pressure, including spill slot move coalescing. * test_infinite_loops, which tests that various infinite loops are properly compiled and do contain reduction tests (otherwise they would permanently hog their scheduler and not notice being sent an exit signal).
2017-03-16hipe: Extract disjoint sets to its own moduleMagnus Lång
2017-03-16hipe_x86_subst: Fix bug with zero-arity #fp_unop{}Magnus Lång
2017-03-16Improve no-pie solution from bug report ERL-294Karol Ostrovsky
Some linkers, for example on Gentoo Hardened, do not accept the -no-pie flag but require the -fno-PIE flag instead.
2017-03-16ssl: Remove deprecated functionsIngela Anderton Andin
2017-03-16Don't allow module names with non-latin1 charactersBjörn Gustavsson
In OTP 20, all Unicode characters are allowed in atoms. However, we have decided that we will not allow non-latin1 characters in module names in OTP 20. This restriction may be lifted in a future major release of OTP. Enforce the restriction in erl_lint, so that it will be a compilation error to have a module name containing non-latin1 characters. That means that tools such as debugger, xref, dialyzer, syntax_tools, and so on, do not have to be modified to handle non-latin1 module names.
2017-03-16Merge branch 'vans163/patch-1/PR-1319'Ingela Anderton Andin
* vans163/patch-1/PR-1319: Update inet.xml. Note buffer relation to MTU
2017-03-16Update inet.xml. Note buffer relation to MTUvans163
The documentation does not indicate this is the buffer responsible for the maximum bytes we can receive from a recv call.
2017-03-16Merge branch 'ingela/ssl/dtls-test'Ingela Anderton Andin
* ingela/ssl/dtls-test: dtls: Correct version check dtls: Test case fixes
2017-03-16update doc (#1365)getong
Update erl_interface tutorial docs to work reflect a more modern erl_interface environment