erlang Rebar3是否使用HiPE编译透析器模块?

vpfxa7rd  于 2022-12-08  发布在  Erlang
关注(0)|答案(2)|浏览(190)

当透析器独立运行时,其使用HiPE编译其模块,以加速分析:

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...

当有许多模块需要分析时,这会对运行时间产生很大的影响。
当你运行rebar3 dialyzer命令时,Rebar3会这样做吗?文档没有说明这样或那样的方法。

k4ymrczo

k4ymrczo1#

正如Dogbert在评论中提到的,rebar3中的默认设置是使用源格式。原生版本有一个挂起的pull请求(https://github.com/erlang/rebar3/pull/1493),要求在可用时切换到HiPE格式,但在rebar3的上下文中,非原生版本的基准测试速度更快,到目前为止我们还没有将其合并。
我刚刚更新了公关讨论,看看它是否可以包括在内,即使没有启用默认。

mkshixfv

mkshixfv2#

稍后再回到这一点,从Erlang/OTP 22.0.6开始,HiPE编译功能已经从Dialyzer中删除,因此Rebar 3无法激活该功能。

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.

此外,根据this mailing list thread,Erlang/OTP 24中将完全删除HiPE。这在this pull request中已完成。

相关问题