Age | Commit message (Collapse) | Author |
|
|
|
Add {continue, Term} and handle_continue/2 to gen_server
|
|
|
|
|
|
|
|
A missing call to ets:safe_fixtable/2 meant that information
was sometimes lost when merging PLT:s.
|
|
If the gen_server process needs to perform an action immediately
after initialization or to break the execution of a callback into
multiple steps, it can return {continue, term()} in place of the
time-out or hibernation value, which will immediately invoke the
handle_continue/2 callback with the given term.
This provides a more accessible approach to after initialization
compared to proc_lib+enter_loop that is also guaranteed to be
safe.
It also allows callbacks that need to do lengthy or stateful work
to checkpoint the state throughout multiple iterations. This can
be useful, for example, when implementing behaviours on top of
gen_server.
|
|
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.
|
|
|
|
Memory consumption is marginally reduced.
|
|
Instead of two records, #plt{} with dict:s and #mini_plt{} with ETS
tables, one record is used for representing PLT:s in RAM.
The #mini_plt{} is the one now used throughout analyses, but it is
called #plt{}.
When writing the PLT to file, another record is used, #file_plt{} (as
before). When creating #file_plt{}, the #plt{} is deleted (it cannot
be used for further analyses).
|
|
|
|
Avoid some ETS-lookups. Marginal speed-ups.
|
|
|
|
The arguments of calls to a debug function are no longer evaluated.
|
|
|
|
In typesig: do not look up the module's types unless it is necessary.
|
|
|
|
This reverts commit eaf8ca41dfa4850437ad270d3897399c9358ced0.
|
|
|
|
This reverts commit dc57404252c47520f352834ad9be45ad684f96c9.
|
|
|
|
|
|
* maint:
Updated OTP version
Prepare release
inets: Add missing release note
dialyzer: Fix a bug regarding unknown types
erl_mseg.c: don't use invalid indices in - > cache_powered_node[]
Fix release note for OTP-14290
Conflicts:
OTP_VERSION
erts/emulator/sys/common/erl_mseg.c
erts/vsn.mk
lib/dialyzer/src/dialyzer_analysis_callgraph.erl
|
|
|
|
Due to a bug in Dialyzer, unknown types have been introduced.
|
|
Since commit 12b3790 Dialyzer has not reported unknown types.
|
|
Introduce new "Dbgi" chunk
OTP-14369
|
|
The new Dbgi chunk returns data in the following format:
{debug_info_v1, Backend, Data}
This allows compilers to store the debug info in different
formats. In order to retrieve a particular format, for
instance, Erlang Abstract Format, one may invoke:
Backend:debug_info(erlang_v1, Module, Data, Opts)
Besides introducing the chunk above, this commit also:
* Changes beam_lib:chunk(Beam, [:abstract_code]) to
read from the new Dbgi chunk while keeping backwards
compatibility with old .beams
* Adds the {debug_info, {Backend, Data}} option to
compile:file/2 and friends that are stored in the
Dbgi chunk. This allows the debug info encryption
mechanism to work across compilers
* Improves dialyzer to work directly on Core Erlang,
allowing languages that do not have the Erlang
Abstract Format to be dialyzer as long as they emit
the new chunk and their backend implementation is
available
Backwards compatibility is kept across the board except
for those calling beam_lib:chunk(Beam, ["Abst"]), as the
old chunk is no longer available. Note however the "Abst"
chunk has always been optional.
Future OTP versions may remove parsing the "Abst" chunk
altogether from beam_lib once Erlang 19 and earlier is no
longer supported.
The current Dialyzer implementation still supports earlier
.beam files and such may also be removed in future versions.
|
|
* zandra/stdlib/optional-callbacks/OTP-13801:
wx: make wx_object callbacks optional
stdlib: Make gen_fsm callbacks optional
stdlib: Make gen_event callbacks optional
stdlib: Make gen_server callbacks optional
|
|
|
|
* bjorn/dialyzer/add-typer/OTP-14336:
Add smoke test for TypER
Add back TypEr to the main OTP repository
|
|
|
|
It turned out that the dependencies between Dialyzer
and TypEr makes it impractical to have TypEr in a
separate repository.
Add it back to the OTP repository, but put the Erlang
module 'typer' in the dialyzer application.
|
|
The same checks are also performed by the Dialyzer.
|
|
* maint:
Updated OTP version
Prepare release
Conflicts:
OTP_VERSION
lib/typer/doc/src/notes.xml
lib/typer/vsn.mk
|
|
|
|
* hasse/fix_erl_anno_use:
parsetools: Fix handling of locations and annotations
diameter: Fix handling of locations and annotations
kernel: Fix handling of locations and annotations
compiler: Fix handling of locations and annotations
eunit: Fix handling of locations and annotations
Update preloaded
erts: Fix handling of locations and annotations
dialyzer: Fix handling of annotations in a test
debugger: Fix handling of locations and annotations
stdlib: Extend functions in erl_parse to handle form_info()
stdlib: Fix handling of locations and annotations
erts: Correct the documentation of abstract end-of-file
stdlib: Add debug tests to the erl_parse module
stdlib: improve the erl_anno module's debug tests
stdlib: Improve the erl_pp module's debug tests
|
|
|
|
|
|
|
|
* maint:
dialyzer: Improve a warning
dialyzer: Fix a weird warning
dialyzer: Fix an opaque bug
dialyzer: Minor fix
Conflicts:
lib/dialyzer/src/dialyzer_dataflow.erl
|
|
* hasse/dialyzer/fix_warnings/OTP-14177:
dialyzer: Improve a warning
dialyzer: Fix a weird warning
dialyzer: Fix an opaque bug
dialyzer: Minor fix
|
|
|
|
* siri/ct_hooks/callbacks-on-skip/OTP-10599:
[ct] Update built-in ct hooks with new Suite parameter
[cth_surefire] Handle skips from test spec
[ct] Remove excessive skipped/failed tag in hook function
[ct] Send tc_start event on force_stop and failed sequence
[ct] Correctly handle process died in init and end_per_testcase
[ct] Fix faulty hook callbacks for skipped tests
Add dummy end_per_suite/1
[ct] Fix hooks and fail when one of init/end_per_* does not exit
[ct] Add Suite argument to hook callback functions
[ct] Fix function_clause in ct_framework when hook function crashes
|
|
* maint:
tools: Use portable lookup of home directory
dialyzer, observer: Use portable lookup of home directory
|
|
Fix typos: lenght -> length
|
|
Use init:get_argument(home) to find the location of the home
directory. That will work on all platforms (including Windows).
Note that the run-time system will fail to start if HOME
(or the equivalent on Windows) is not set. Therefore, it can
be assumed that init:get_argument(home) will not fail.
ERL-161
|
|
* maint:
typer: Update runtime dependencies
dialyzer: Update runtime dependencies
Correct documentation of get_modules message
|
|
|