Age | Commit message (Collapse) | Author |
|
Currently, the external fun syntax "fun M:F/A" only supports
literals. That is, "fun lists:reverse/1" is allowed but not
"fun M:F/A".
In many real-life situations, some or all of M, F, A are
not known until run-time, and one is forced to either use
the undocumented erlang:make_fun/3 BIF or to use a
"tuple fun" (which is deprecated).
EEP-23 suggests that the parser (erl_parse) should immediately
transform "fun M:F/A" to "erlang:make_fun(M, F, A)". We have
not followed that approach in this implementation, because we
want the abstract code to mirror the source code as closely
as possible, and we also consider erlang:make_fun/3 to
be an implementation detail that we might want to remove in
the future.
Instead, we will change the abstract format for "fun M:F/A" (in a way
that is not backwards compatible), and while we are at it, we will
move the translation from "fun M:F/A" to "erlang:make_fun(M, F, A)"
from sys_pre_expand down to the v3_core pass. We will also update
the debugger and xref to use the new format.
We did consider making the abstract format backward compatible if
no variables were used in the fun, but decided against it. Keeping
it backward compatible would mean that there would be different
abstract formats for the no-variable and variable case, and tools
would have to handle both formats, probably forever.
Reference: http://www.erlang.org/eeps/eep-0023.html
|
|
|
|
It is tempting to transform code such as:
fun(X) -> M:foo(X) end
to:
fun M:foo/1
Unfortunately, that transformation is not safe if
M happens to be a parameterized module. Add a test
case so that we don't attempt to do such an optimization
in the future.
|
|
A future release of the compiler might want to treat external
funs as literals. Make sure that the loader can cope with an
export entry being created from both an entry in the literal
pool and from the export table (i.e. if an external fun refers
to an exported function in the same module).
|
|
Make it clear for the user what has happened and how to fix it when
an attempt is made to load a BEAM file containing new instructions
that the current run-time system cannot handle.
Suggested-by: Thomas Lindgren
|
|
* lukas/kernel/tc_fixes:
Kill nodes inbetween tests
|
|
OTP-9673
|
|
* lukas/erts/large_float_cmp/OTP-9497:
Update documentation after changes in integer and float comparison
Do small optimisation on platforms with 32 bit Eterm
Add tests for equality checking
Optimize comparison of huge floats and smaller bignums
Add tests for comparing large floats and small bignums
Cleanup double_to_bignum conversion code
Update size of tmp cmp bignum buffer
Expand tests for float and number comparison
Update heauristic to work on halfword
Add heauristics bignum vs float checks
Optimise bugnum and small comparison
Add float vs integer comparison tests
Update integer and floating point number comparisons
|
|
* lukas/megaco/remove_driver_warning/OTP-9672:
Remove the warning that driver option is replaced by nif
|
|
* siri/observer/ttb-test-cleanup-slave-nodes/OTP-9644:
Adjust ttb_SUITE to work better on windows
Cleanup after testcases in ttb_SUITE
|
|
* siri/observer/close-ip-to-file-trace-port/OTP-9665:
Close ip_to_file trace port in ttb:stop
|
|
These dependency files was once used when building the documentation,
but are no longer needed.
|
|
Some applications still have support for an ancient documentation
build system. Eliminate the DOCSUPPORT define in otp.mk.in and the
not taken arm of the ifdefs in the Makefiles.
|
|
* bjorn/eliminate-regexp-usage:
erl_tidy: Eliminate two references to 'regexp' in the documentation
erts/z_SUITE: Eliminate use of deprecated regexp module
erts/nt_SUITE: Eliminate use of deprecated regexp module
erl_html_tools: Eliminate mention of deprecated regexp module
erl_interface tests: Eliminate use of deprecated regexp module
tools test suite: Eliminate compilation warnings for the eed module
tools test suite: Eliminate use of deprecated regexp module
xmerl test suite: Eliminate use of deprecated regexp module
appmon: Eliminate use of deprecated regexp module
tv: Eliminate use of deprecated regexp module
gs: Eliminate use of deprecated regexp module
inviso: Eliminate use of deprecated regexp module
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Also extend the test suite so that the changed code will be
executed.
|
|
|
|
This is a relay port opened from the IP trace client when tracing
diskless nodes. The port was not closed properly in ttb:stop, which
caused problems on windows since the file could not be moved to the
upload directory before the file descriptor was closed.
|
|
There is a problem with long paths on windows, which causes some of
the ttb logs in this suite not to be created. To go around this, the
original priv_dir from the Config is no longer used for writing the
logs. Instead a new priv_dir is created in the data_dir - which makes
the path much shorter.
There is also a problem caused by the lower resolution of the system
clock on windows. It makes the test cases for sorting trace messages
fail. To get around this a sleep of 2 ms is added in "appropriate
places", and also the messages sent between client and server when
creating the trace log for these test cases is now better synched.
The cleanup functions, which terminate slave nodes, was called in
end_per_testcase. However, it seems to be a bug in the test_server
which causes this to hang if the test case failed with a
timetrap_timeout. Workaround for this is to do the cleanup in
init_per_testcase instead - i.e. make sure that nodes that are to be
started by the test case do not already live when the test case
starts.
|
|
Slave nodes were earlier stopped inside each test case. If a test case
failed before this point, a slave node would survive and it might
interfere with the next test case causing multiple failures. This
commit moves the stopping of slave nodes out to a separate function
for each test case - called during end_per_testcase.
A minor correction is also done in ttb:ensure_no_overloaded_nodes -
the reply message sent back from the ttb process is tagged so only the
expected message will be picked from the message queue. Otherwise, for
instance nodedown messages from the monitoring of slave nodes (by the
test cases) could be received here.
Finally, the sleep timer when waiting for trace messages to arrive
over tcp/ip is extended a bit since test cases sometimes failed with
missing trace messages here.
|
|
'siri/runtime_tools/dbg-flush-trace-file-driver-before-stop/OTP-9651'
* siri/runtime_tools/dbg-flush-trace-file-driver-before-stop/OTP-9651:
Flush trace file driver before stopping dbg
|
|
|
|
|
|
|
|
|
|
* egil/eprof-doc:
otp: Update profiling doc with eprof
eprof: Fix invalid references to removed functions
OTP-9656
|
|
|
|
|
|
Earlier dbg:stop only did erlang:trace_delivered and did not flush the
trace file driver. Therefore there could still be trace messages that
were delivered to the driver (guaranteed by erlang:trace_delivered)
but not yet written to the file. This commit adds this flushing on
each node before the dbg process terminates.
|
|
* anders/diameter/make/OTP-9638:
Dumb down release target to Solaris /usr/ucb/install
Dumb down opt/release targets to make 3.80
Minor tweaks and cleanup
Need absolute -pa for bootstrap build
Simpler release targets for src subdirectories
Use secondary expansion for src subdirectory rules
One makefile for src build instead of recursion
Remove app dependency on compiler to avoid forced recompilation
Move diameter_exprecs to compiler directory
|
|
* anders/diameter/dictionaries/OTP-9641:
Add diameter_make as compilation interface
Update documentation
Don't require -i directory to exist
Allow @inherits to be set/cleared with diameterc
Allow @name/@prefix to be set with diameterc
Dependency fix
Move dictionaries into own directory and rename
Whitespace fixes
@result_code -> @define in dictionary files
|
|
* hb/stdlib/fix_testsuites/OTP-9637:
Fix a few tests that used to fail on the HiPE platform
|
|
|
|
* rc/epp-include-path-fix:
Make epp search directory of current file first when including another file
OTP-9645
|
|
* hl/fix-ms_transform-scope-warn:
ms_transform: Fix incorrect `variable shadowed' warnings
OTP-9646
|
|
* 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
|
|
* cf/supervisor_shutdown_infinity:
Add a warning to docs about workers' shutdown strategy
Allow an infinite timeout to shutdown worker processes
OTP-9648
|
|
* bjorn/unicode-noncharacters/OTP-9624:
Allow noncharacter code points in unicode encoding and decoding
|
|
* bjorn/parallel-make/OTP-9451:
corba applications: Fix broken 'make clean'
ic documentation: Support parallel make
Revert "ic documentation: Support parallel make"
|
|
|
|
|
|
Tweak some comments and variable names, move things around a bit
(default src target is now opt, not debug), only clean what's built,
use +warn_export_vars.
|
|
* maint-r14:
Fix match bug
|
|
Previously removed code erroneously reappeared in a merge to the master
branch (ec36499d7e329b4dc69a1a3be3422eac7907c260).
|
|
|