[erlang-questions] hot code reloading

Bob Ippolito <>
Sun Mar 2 09:10:43 CET 2014


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.

Modules are not linked together in any way so how or when they were
compiled is not so relevant.

On Saturday, March 1, 2014, t x <> wrote:

> Hi,
>
>   I'm reading Chapter 8 of Programming Erlang, and I want to verify if
> my mental model of erlang code reloading is correct. My erlang is a
> bit weak, so I'm going to use C++ notation.
>
> https://gist.github.com/anonymous/9299344
>
>   Is the above correct with respect to *compile* and *lookup* ?
>
>   It seems to me the defining characteristics of erlang's code hot
> reloading is:
>
>   * we have an "old" and a "new"
>   * the new becomes the old, and we kill all processes spawned by the old
>
>   Suppose we have
>
>   * module foo, module bar;
>   * foo:hi(), refers to bar:hello();
>
>   * we recompile bar; now, all foo's references to bar, uses the
> _latest_ bar, not the bar that existed when foo was compiled
>
> If I have misunderstood anything, please correct me.
>
> Thanks!
> _______________________________________________
> erlang-questions mailing list
>  <javascript:;>
> http://erlang.org/mailman/listinfo/erlang-questions
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20140302/bb8061b8/attachment.html>


More information about the erlang-questions mailing list