<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Hi Richard,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">It seems to me that code module would be the proper place for it, since that detection is directly related to code loading, which in turn could call the beam_lib's helper functions.</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif">Serge</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 8, 2016 at 4:42 PM, Richard Carlsson <span dir="ltr"><<a href="mailto:carlsson.richard@gmail.com" target="_blank">carlsson.richard@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hi Serge (and everyone else)! I've actually got an improved version of that module change detection (i.e., based on md5) that I was going to clean up and submit to OTP as a standard part of the shell. I think the original snippets have been drifting around on the interwebs for aeons, and I'm not sure who wrote them originally. We've been using them at Klarna forever. But we needed something more reliable (that works even if you have made a completely new build of every module, but not actually changing more than a few), so I started by pushing some patches to OTP that made the md5 of loaded modules easily available in module_info. Then based on that I wrote an improved shell function like you just did - we've now tried it out for a while and found it stable, so it's a good time to push this as well.<br><br></div>I think my only hesitation is where to put the core "module changed" functionality if I'm to submit it as part of OTP: the code module? beam_lib? somewhere else? Any opinions out there?<br><br><div class="gmail_extra"><div>        /Richard</div>
<br><div class="gmail_quote">2016-04-08 15:37 GMT+02:00 Serge Aleynikov <span dir="ltr"><<a href="mailto:serge@aleynikov.org" target="_blank">serge@aleynikov.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div style="font-family:arial,helvetica,sans-serif">​Thank you!</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">I updated the <a href="https://github.com/saleyn/util/blob/master/src/user_default.erl" target="_blank">https://github.com/saleyn/util/blob/master/src/user_default.erl</a> per your suggestion.</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Apr 8, 2016 at 8:54 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">On Fri, Apr 8, 2016 at 2:28 PM, Serge Aleynikov <<a href="mailto:serge@aleynikov.org" target="_blank">serge@aleynikov.org</a>> wrote:<br>
> I've been relying on module's compilation time for figuring out the changed<br>
> modules (see below).<br>
><br>
> In the absence of {time, CompileTime}, would there be a way to determine the<br>
> modification time stamp of the file at the time it was loaded by code<br>
> loader?<br>
<br>
Yes. Use Mod:module_info(md5) to calculate MD5 for<br>
the loaded module and compare it to beam_lib:md5(Mod).<br>
<br>
Example:<br>
<br>
13> c:module_info(md5).<br>
<<79,26,188,243,168,60,58,45,34,69,19,222,138,190,214,118>><br>
14> beam_lib:md5(code:which(c)).<br>
{ok,{c,<<79,26,188,243,168,60,58,45,34,69,19,222,138,<br>
         190,214,118>>}}<br>
<br>
/Bjorn<br>
</blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
erlang-questions mailing list<br>
<a href="mailto:erlang-questions@erlang.org" target="_blank">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>
<br></blockquote></div><br></div></div>
</blockquote></div><br></div>