Hi folks.
So, I was fooling around with various combinations of ERL_COMPILER_OPTIONS="[native,{hipe, [verbose, o3]}]"
and forcing dependency compiles with Mix, erlc_options: [:native, {:hipe, [:verbose, :o3]}]
in mix.exs, and this small utility that calls :hipe.c
on all modules that have native: false
.
Somewhat predictably, I ended up in a situation where every single loaded module’s module_info
(sticky ones included!) reported native: true
. No amount of uninformed fooling with :c
/ :code
/ :compiler
has seemed to get rid of all the native modules, and changes often don’t seem to stick after I quit iex -S mix
- What are the possible downsides of this?
- Since the BEAM files contain both native and bytecode formats, how do I force
iex
/mix
/erlc
/etc to ignore the native code / prefer bytecode? - How can I undo this? Do I need to? Can I just delete
*.beam
from under Erlang’s and Elixir’s prefixes, and runmix compile
in some project directory?