<div dir="ltr"><div class="gmail_default" style=""><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">I've been relying on module's compilation time for figuring out the changed modules (see below).</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">In the absence of {time, CompileTime}, would there be a way to determine the modification time stamp of the file at the time it was loaded by code loader?</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif">Serge</font></div><div class="gmail_default" style=""><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default" style=""><font face="monospace, monospace">modified_modules() -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">    [M || {M, _} <-  code:all_loaded(), module_modified(M) == true].</font></div><div class="gmail_default" style=""><font face="monospace, monospace"><br></font></div><div class="gmail_default" style=""><font face="monospace, monospace">module_modified(Module) -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">    case code:is_loaded(Module) of</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    {file, preloaded} -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">        false;</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    {file, Path} -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">        CompileOpts = proplists:get_value(compile, Module:module_info()),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        CompileTime = proplists:get_value(time, CompileOpts),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        Src = proplists:get_value(source, CompileOpts),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        module_modified(Path, CompileTime, Src);</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    _ -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">        false</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    end.</font></div><div class="gmail_default" style=""><font face="monospace, monospace"><br></font></div><div class="gmail_default" style=""><font face="monospace, monospace">module_modified(Path, PrevCompileTime, PrevSrc) -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">    case find_module_file(Path) of</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    false -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">        false;</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    ModPath -></font></div><div class="gmail_default" style=""><font face="monospace, monospace">        {ok, {_, [{_, CB}]}} = beam_lib:chunks(ModPath, ["CInf"]),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        CompileOpts =  binary_to_term(CB),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        CompileTime = proplists:get_value(time, CompileOpts),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        Src = proplists:get_value(source, CompileOpts),</font></div><div class="gmail_default" style=""><font face="monospace, monospace">        not (CompileTime == PrevCompileTime) and (Src == PrevSrc)</font></div><div class="gmail_default" style=""><font face="monospace, monospace">    end.</font></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 8, 2016 at 6:32 AM, Björn Gustavsson <span dir="ltr"><<a href="mailto:bjorn@erlang.org" target="_blank">bjorn@erlang.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As long as anyone can remember, the compilation time has been included<br>
in BEAM files (and can be retrieved using module_info()).<br>
<br>
As far as I know, the inclusion of the time has only caused problems.<br>
I can't remember that anyone has found any use for the compilation<br>
time.<br>
<br>
So if we decide to remove the compilation time by default in OTP 19...<br>
<br>
... would it cause any problem for someone in some workflow?<br>
<br>
... would we need an option to include the compilation time?<br>
<br>
/Bjorn<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Björn Gustavsson, Erlang/OTP, Ericsson AB<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</font></span></blockquote></div><br></div>