Age | Commit message (Collapse) | Author |
|
dialyzer: Compute MD5s using the .beam file (OTP-14937)
|
|
* john/erts/nif-binary-iovec-fixes/OTP-14845/OTP-14931/OTP-14932:
Suggest using enif_make_new_binary when possible
Make enif_make_binary return heap binaries if possible
Expand ErlNifBinary by another word for future additions
Unconditionally transfer ownership to the created term
Tweak asserts and explain why the copy buf doesn't use the tmp obj list
Free temporary iovecs through the tmp object list
Add a helper function for attaching tmp objects to NIF environments
|
|
While enif_make_binary will create heap-binaries from ErlNifBinaries
when possible now, enif_alloc_binary still allocates a Binary* off-heap
which is avoided entirely with enif_make_new_binary.
|
|
This does not avoid allocating a ProcBin since we still need to
release the binary somehow (and using the tmp obj list is slightly
slower since it's an unavoidable off-heap allocation), but it does give
us a hard limit on how long said ProcBin will live, which is a lot
better than before.
OTP-14845
|
|
When fixing OTP-14931/14932 we had to settle for a solution that
decreased performance in a few corner cases like multiple calls to
enif_make_binary, as the other options on the table required extra
fields which would have broken ABI compatibility.
This is ABI-compatible since the fields are unused and at the end.
|
|
This fixes two corner-cases:
1) We will no longer return an invalid term when a binary inspected
on environment A is used in enif_make_binary on environment B
2) A double-free in this sequence of events:
* enif_alloc_binary(size, &bin);
* enif_ioq_enq_binary(ioq, &bin, skip);
* enif_make_binary(env, &bin);
* enif_make_binary(env, &bin);
OTP-14931
OTP-14932
|
|
|
|
Attaching to a ProcBin is the fastest way to delay the release of an
already allocated Binary, but alloc_tmp_obj is a lot faster when
starting from scratch since it usually uses temp_alloc.
|
|
|
|
* maint:
dialyzer: Correct a parameterized opaque types bug
|
|
* hasse/dialyzer/fix_opaque_bug/OTP-14925/ERL-565:
dialyzer: Correct a parameterized opaque types bug
|
|
Add ets:whereis/1 for resolving table names -> tid()
|
|
* maint:
stdlib: Correct a minor epp bug
|
|
* hasse/stdlib/minor_fix_epp:
stdlib: Correct a minor epp bug
|
|
* raimo/stdlib/rand-polish-stat-tests:
Decrease tolerance a wee bit
Repeat stat tests to only fail for systematic errors
Fix histogram and outlier checks
|
|
* maint:
ssh: Fix hanging engine test case on an old outdated version
|
|
* hans/ssh/cuddle_tests:
ssh: Fix hanging engine test case on an old outdated version
|
|
OpenSSL 1.0.1s-freebsd 1 Mar 2016
|
|
* maint:
Updated OTP version
Prepare release
ssh: Add option save_accepted_host
ssh: No error message for signal kill
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
Conflicts:
OTP_VERSION
|
|
* maint-20:
Updated OTP version
Prepare release
ssh: Add option save_accepted_host
ssh: No error message for signal kill
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
|
|
|
|
|
|
The previous mechanism was based on the core file which
meant that for every module in the PLT, we had to fetch
its .beam file, retrieve Erlang AST, compile that down
to core, serialize it into a binary and then get its MD5.
In a project with stdlib, kernel, elixir and a small
application in the PLT, relying only on the .beam sped
up --check_plt from 10s to 0.8s.
|
|
|
|
|
|
|
|
* hans/ssh/limit_knownhosts/OTP-14935:
ssh: Add option save_accepted_host
|
|
* hans/ssh/no_error_for_kill/OTP-14930:
ssh: No error message for signal kill
|
|
* hans/ssh/supervisor_timeout/OTP-14907:
ssh: Dont repeat supervisor defaults in map fields
ssh: Move starting of channel child to ssh_channel_sup
ssh: Test case for sup tree when shell server proc times out
|
|
|
|
The bug was introduced in 87a0af4 (R18).
|
|
Optimize non-strict equality check of binaries differing in size
|
|
|
|
* john/runtime_tools/fix-sysinfo-to-file-formatting:
Fix regression introduced in d468fcbb / OTP-14816
|
|
|
|
|
|
See also https://bugs.erlang.org/browse/ERL-565.
To avoid loops, erl_types:t_is_subtype checks for equality using
unopaqued types, but in (at least) one case something is lost:
This fix makes sure that when forwarding arguments in dataflow, types
with different parameters but equal when unopaqued are considered
different.
For example, dict:dict(0, {}) and dict:dict(0, []) are equal when
unopaqued (due to how dict(_, _) is declared in module dict), but
should be considered different when forwarding args.
|
|
|
|
Reject loading modules with slash in name
|
|
The ~p format specifier made file:consult/1 hysterically slow on one
of our test machines that had a unicode character in the root of the
code path; all paths were printed as lists and indented with way too
much whitespace.
Using ~w avoids this issue by never indenting.
|
|
|
|
|
|
|
|
|
|
* maint:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: If066f788c3fcb8b5c5a943892d3c03c201590e40
|
|
* peterdmv/inets/httpc_manager_crash/ERL-559/OTP-14908:
inets: Prepare for release
inets: Fix httpc crash on keep-alive connections
Change-Id: I5900a425ed2b9034b1a1bf6040ee45e068438a83
|
|
|
|
|
|
|
|
|