Age | Commit message (Collapse) | Author |
|
Make tuple calls opt-in
OTP-14497
|
|
* jv/dialyzer/no_support_19/OTP-14493/PR-1434:
No longer support OTP 19 beam files in Dialyzer
|
|
Tuple calls is the ability to invoke a function on a tuple
as first argument:
1> Var = dict:new().
{dict,0,16,16,8,80,48,
{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},
{{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}
2> Var:size().
0
This behaviour is considered by most to be undesired and confusing,
especially when it comes to errors. For example, imagine you invoke
"Mod:new()" where a Mod is an atom and you accidentally pass {ok, dict}.
It raises:
{undef,[{ok,new,[{ok,dict}],[]},...]}
As it attempts to invoke ok:new/1, which is really hard to debug
as there is no call to new/1 on the source code.
Furthemore, this behaviour is implemented at the VM level, which
imposes such semantics on all languages running on BEAM.
Since we cannot remove the behaviour above, this proposal makes the
behaviour opt-in with a compiler flag:
-compile(tuple_calls).
This means that, if a codebase relies on this functionality, they
can keep compatibility by adding configuring their build tool to
always use the 'tuple_calls' flag or explicitly on each module.
As long as the compile attribute above is listed, the codebase will
work on old and new Erlang versions alike. The only downside of the
current implementation is that modules compiled on OTP 20 that rely
on 'tuple_calls' will have to be recompiled to run with 'tuple_calls'
on OTP 21+.
|
|
* maint:
stdlib: Accept all nowarn_deprecated_function options
|
|
* hasse/stdlib/deprecated_warning/OTP-14378:
stdlib: Accept all nowarn_deprecated_function options
|
|
* maint:
Updated OTP version
Update release notes
Update version numbers
erts: Fix bug in quick alloc
Fix old length usage in string
stdlib: Fix bug in proc_lib
Support arbitrary crash report in proc_lib.
|
|
* maint-20:
Updated OTP version
Update release notes
Update version numbers
erts: Fix bug in quick alloc
Fix old length usage in string
stdlib: Fix bug in proc_lib
Support arbitrary crash report in proc_lib.
|
|
This commit removes the old code branches that attempted
to translate Erlang Abstract Format to Core and relies
exclusively on the new debug_info chunk.
This is a follow up to #1367.
|
|
|
|
* mikpe/erts/escript-dead-code:
escript.c: remove dead code
|
|
|
|
* siri/make/default-outdir/ERL-438/OTP-14489:
[ct_make] Do not use the interactive tool 'c' from ct_make
Use current dir as default outdir for c:c/1,2
[make] Do not use the interactive tool 'c' from make
|
|
* siri/dbg/faulty-encoding-comment/OTP-14479:
[dbg] Fix encoding comment
|
|
Support e2k platform
OTP-14492
|
|
|
|
* ingela/cuddle-openssl:
ssl: Workaround localhost problems
ssl: Move clause so that it will match
|
|
|
|
If net_adm:localhost() returns a FQDN we want to use it otherwise
we want to use localhost.
|
|
|
|
|
|
|
|
* sverker/prealloc-race-bug/OTP-14491:
erts: Fix bug in quick alloc
|
|
* siri/dbg/faulty-encoding-comment/OTP-14479:
[dbg] Fix encoding comment
|
|
* siri/make/default-outdir/ERL-438/OTP-14489:
[ct_make] Do not use the interactive tool 'c' from ct_make
Use current dir as default outdir for c:c/1,2
[make] Do not use the interactive tool 'c' from make
|
|
* dgud/stdlib/string-len-compat/OTP-14487:
Fix old length usage in string
|
|
* rickard/statistics/OTP-14484:
Fix statistics(wall_clock) and statistics(runtime) implementation
|
|
* hasse/stdlib/fix_proc_lib/PR-1488/OTP-14482:
stdlib: Fix bug in proc_lib
Support arbitrary crash report in proc_lib.
|
|
into maint-20
* lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481:
fixup! erts: Cleanup dropped port tasks correctly
erts: Add tests to detect port close race
erts: Cleanup dropped port tasks correctly
|
|
* john/erts/fix-port-leak/OTP-13939/ERL-193:
Add a testcase for OTP-13939/ERL-193
Mark socket disconnected on tcp_send_or_shutdown_error
# Conflicts:
# lib/kernel/test/gen_tcp_misc_SUITE.erl
|
|
The effect of the race is that a pre-allocated memory block
is inserted last without updating tail.data.last, which will cause
all subsequent insertions to also fail to update tail.data.last.
Hence all pre-allocation for this quick alloc instance is leaked
for this thread and will fallback on erts_alloc.
|
|
* maint:
Travis CI: Fix the build matrix
|
|
Some changes in Travis CI resulted in only a build for
32-bit Linux.
|
|
|
|
Encoding specified in a comment must be 'utf-8' instead of 'utf8'.
|
|
|
|
In OTP-20, c:c/1,2 started using the directory of the source file as
default output directory. For backwards compatibility reasons this is
now reversed so the current directory is used instead.
|
|
|
|
|
|
* sverker/erts/apply-badarg/ERL-432/OTP-14490:
erts: Make apply throw 'badarg' if Args is not a list
|
|
|
|
* ingela/ssl/crl-test-cuddle:
ssl: Skip test if OpenSSL has problems generating CRL
|
|
|
|
|
|
* ingela/ssl/timeout-cuddle:
ssl: Set rizzo* test timeout high enough for our slowest test machine
|
|
|
|
* bjorn/erts/minor-beam-ops-enhancements:
Reduce C code size for bit syntax instructions
ops.tab: Use combined operands
|
|
Bit syntax instructions never store their result in a Y register.
Therefore, change the bit syntax instructions to use 'x' as the
destination instead of 'd'. That will simplify the code that stores
the result, and will be a slight reduction in code size and execution
time.
|
|
|
|
* maint:
Eliminate potential unsafe use of general destination
|
|
* bjorn/erts/fix-gen-dest:
Eliminate potential unsafe use of general destination
|