The remote call bar:hello() will always call the newest version of bar:hello/0. The calling module is irrelevant, even if the call happens from the old version of bar the newest version will always be called using that syntax. A local call from bar to hello() (or an equivalent closure) would use the current version referenced by that process.<div>
<br></div><div>Modules are not linked together in any way so how or when they were compiled is not so relevant. <br><div><br>On Saturday, March 1, 2014, t x <<a href="mailto:txrev319@gmail.com">txrev319@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
  I'm reading Chapter 8 of Programming Erlang, and I want to verify if<br>
my mental model of erlang code reloading is correct. My erlang is a<br>
bit weak, so I'm going to use C++ notation.<br>
<br>
<a href="https://gist.github.com/anonymous/9299344" target="_blank">https://gist.github.com/anonymous/9299344</a><br>
<br>
  Is the above correct with respect to *compile* and *lookup* ?<br>
<br>
  It seems to me the defining characteristics of erlang's code hot reloading is:<br>
<br>
  * we have an "old" and a "new"<br>
  * the new becomes the old, and we kill all processes spawned by the old<br>
<br>
  Suppose we have<br>
<br>
  * module foo, module bar;<br>
  * foo:hi(), refers to bar:hello();<br>
<br>
  * we recompile bar; now, all foo's references to bar, uses the<br>
_latest_ bar, not the bar that existed when foo was compiled<br>
<br>
If I have misunderstood anything, please correct me.<br>
<br>
Thanks!<br>
_______________________________________________<br>
erlang-questions mailing list<br>
<a href="javascript:;" onclick="_e(event, 'cvml', 'erlang-questions@erlang.org')">erlang-questions@erlang.org</a><br>
<a href="http://erlang.org/mailman/listinfo/erlang-questions" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br>
</blockquote></div></div>