Does Rebar3 deploy Dialyzer modules with HiPE?
When you run Dialyzer autonomously, it compiles its modules with HiPE to speed up analysis:
dialyzer --src -r .
Checking whether the PLT /home/foo/.dialyzer_plt is up-to-date... yes
Compiling some key modules to native code... done in 0m12.27s
Proceeding with analysis...
This can make a big difference in runtime when there are many modules to analyze.
Does Rebar3 do this when running the command rebar3 dialyzer
? the documentation doesn't say anyway.
source to share
As Dogbert mentioned in the comments, rebar3 uses the original format by default. The native has a pending pull request ( https://github.com/erlang/rebar3/pull/1493 ) to switch to HiPE format when available, but in the context of the rebar3 panel, the non-native version compares as faster, and so far we have not combined it.
I just updated the PR discussion there to make sure it cannot be enabled even though it is enabled by default.
source to share
Coming back to this much later, starting with Erlang / OTP 22.0.6, the HiPE compilation feature was removed from Dialyzer, and therefore Rebar3 cannot activate this feature. From the release announcement :
OTP-15949 Application(s): dialyzer, hipe *** POTENTIAL INCOMPATIBILITY *** The HiPE compiler would badly miscompile certain try/catch expressions, so it will now refuse to compile modules containing try or catch. As a consequence of this, dialyzer will no longer compile key modules to native code.
source to share