| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
`unit` can't be bound any more than `none` can.
This resulted in slightly improved analysis in some cases, taking
notice of more functions in OTP that lacked a local return, so I've
added specs to those functions in order to silence the warnings.
The pattern for that is:
```erlang
try function_that_returns_unit() catch _:_ -> error(xyz) end
```
Previously, this expression was treated as returning unit() even
though it could only ever return none(), as the wrapped function
would never return.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 'deterministic-build' of https://github.com/TD5/otp:
make: Allow OTP to be built deterministically
compiler: Make test_lib robust to +deterministic
compiler: Make compiler forward +determinsitic flag to epp
compiler: Make yecc respect +deterministic
compiler: Make leex respect +deterministic
compiler: Make asn1ct_gen respect +deterministic
compiler: Make EPP respect +deterministic
OTP-18165
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a --enable-deterministic-build to the configure script,
which sets ERL_DETERMINISTIC=yes throughout the relevant
Makefiles, which then invoke the relevant build stages with the
+deterministic option.
This addresses absolute paths being included in generated .erl files
and compiled .beam files that resulted in builds from different source
directories generating different artefacts (which is a component of the
issue in erlang#4482).
I think it would make sense to make this the default at some stage, but
I've put the change behind a flag for now to decouple
making deterministic OTP builds possible from making them the default.
Having +deterministic set results in compiler options being
removed from the module info for modules where this options was used.
This may have other implications for users of OTP.
For tests themselves, +determinism is not set, since many test cases
depend on accessing the test module's compilation options, or other
features not available in deterministic mode, in order to configure
themselves. For tests of the determinism feature specifically,
+deterministic must be explicitly passed to the compiler within the
relevant test cases.
|
|/ |
|
|
|
|
| |
This reverts commit a2c8df222e6d02fa518d5d6cbbea75a9dd720d30.
|
| |
|
|
|
|
| |
This reverts commit 435bc5e68dd45ff6f7992077998930519208e910.
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
* maint:
Updated OTP version
Prepare release
Update copyright year
|
| | |
|
| | |
|
| |
| |
| |
| | |
This reverts commit 95f5a792610ed4c87457863cb03b047414ad4a14.
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | | |
Pass Anno to ExternalFunctionHandler in erl_eval
OTP-17925
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This allows code using `erl_eval` to provide better
stacktraces if desired. For this purpose, we also
make sure all errors raised from `erl_eval` pass
through the ExternalFunctionHandler.
|
|\ \ \
| | |/
| |/| |
|
| | |
| | |
| | |
| | |
| | |
| | | |
index_expr needs to be translated before returned.
Fixes #5571
|
| |/
|/| |
|
|\ \
| | |
| | | |
Remove undocumented {value, Value, Ann} in erl_eval
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The shell relies on an implicit contract
with erl_eval where value triplet is allowed.
Unfortunately, to support this, evaluating
anonymous functions would require a look-ahead
traversal to hide any value triplet from
erl_lint and this affected performance negatively.
This patch removes this undocumented contract
and removes the lookahead. To address this,
we took different approaches:
1. v(N) was expanded to a value before evaluated.
Now, we process and validate the arguments,
but communicate with the shell process to get
the value, similar to how history() works
2. References, Ports, and PIDs were converted to
variables and then replaced to values. Now,
we expand `#PID<0.13.0>` into an expression
such as `erlang:list_to_pid("#PID<0.13.0>").`
3. Finally, the prompt evaluation would use values,
but it only had to pass `[{history,integer()}]`,
which can be manually converted to AST
With this change, evaluating anonymous functions in
a loop gets considerably faster, up to 10% in a
macro benchmark.
|
| | | |
|
|\ \ \
| | |/
| |/|
| | |
| | | |
* maint:
Update copyright year
|
| | | |
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
* lukas/kernel/xdg-erlang-config/OTP-17554/OTP-17821:
stdlib: Fix filename:basedir documentation
erl_docgen: Better missing module fault indication
debugger: Fix debugger settings to use XDG
dialyzer: Place default plt in $XDG_CACHE_HOME
stdlib: Search $XDG_CONFIG_HOME for .erlang.crypt
kernel: Search $XDG_CONFIG_HOME for .erlang
kernel: Search $XDG_CONFIG_HOME for erlang cookie
|
| | |/
| |/| |
|
|/ /
| |
| |
| | |
Co-authored-by: Björn Gustavsson <bgustavsson@gmail.com>
|
|/
|
|
|
|
| |
Hoisting the fun check outside these loops lets us skip error
checks on the fun calls themselves, which is very nice for
functions like foldl/3.
|
| |
|
|
|
|
|
|
| |
Removing ?t retained for backward compatibility allows to
search for test_server callsites easier.
Replace ?t:fail and test_server:fail with ct:fail.
|
|
|
|
|
| |
Required an update, the copied funcitonality uses a new function from erl_parse
that is new.
|
|
|
|
|
|
| |
Didn't not work, seems that stc is stealing keyboard presses,
disable all stc keyboard shortcuts and make them explicit in menus and
in buttons.
|
|
|
|
| |
Format module records in bindings area and in evaluator area.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Before this commit, step or next over a record update required several
clicks, since the record update is re-written to several expressions.
Having to step several times for a record update is annoying.
To be able to handle that, ieval needs to know when we update an
record, thus iload can not use erl_expand_records:module/2 anymore.
Therefore, much functionality has been directly copied from erl_expand_records to
the iload module.
erl_expand_records also re-wrote imported functions and translated
bif calls to external erlang:bif calls, which have also been added
to iload.
|
| |
|
| |
|
|
|
|
| |
This reverts commit 221e41bd32e433f6e08bbfedb013fc49c9aa1283.
|
| |
|
|
|
|
| |
This reverts commit 1cc1d15c4e54c1d9d8c34a4c66193a95b10c479a.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Funs can be used to hide local variables. Example:
a() ->
A = fun() -> A = 21, 2 * A end(),
foo:bar(A).
To avoid the slight runtime cost for such use of funs, teach the
compiler to inline funs that are used only once immediately after
creation.
Resolves #4019.
|
|
|
|
| |
This reverts commit bbc0f3386c2546af25936730742d8dee1664f1dd.
|
| |
|
|\
| |
| |
| |
| | |
Support IEEE 754-2008 16-bits floats in bitstrings
OTP-17207
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This format is often used with computer graphics and
AI, also in cases where data is large enough that the
decreased bandwidth and storage compensates the loss
of precision.
The _Float16 data type is defined in the C11 extension
ISO/IEC TS 18661-3:2015. Recent compilers and platforms
provide support for it and recent CPUs provide specific
instruction sets for them too. In some, _Float16 is storage
only, which is enough for our use cases. If _Float16 is not
available, functions for conversion from float to half-floats
are used, ported from https://github.com/Maratyszcza/FP16.
|
|/
|
|
|
| |
Can be suppressed with the 'brief' compiler option.
Moves message formatting code to a separate module.
|