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.

+4


source to share


2 answers


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.

+3


source


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.

      

+1


source







All Articles