<div>Hi Rob,</div><div><br></div>Good point and awesomely true, and your advice provides invaluable insight into the caution needed when releasing new code to long-running systems in prod (and the need for code change callback implementations). <div><br></div><div>However, I've found that during development I rarely need that level of control, so make:all([load]) is more than enough for most purposes in dev that I have faced. </div><div><br></div><div>"as simple as possible, but no simpler"</div><div><br></div><div>I guess the trick is to decide what is simple enough for the purpose.</div><div><br></div><div>/s<br><br>On Friday, June 14, 2013 6:11:40 AM UTC-5, Roberto Aloi wrote:<blockquote class="gmail_quote" style="margin: 0;margin-left: 0.8ex;border-left: 1px #ccc solid;padding-left: 1ex;"><p dir="ltr">In Erlang, two and only two versions of the same module can coexist in the run time system (an old version and a new version). Processes running the old version of the code will keep running that version (even if you load a new version of the module) until they make a fully qualified call to the module itself (I.e. M:F(A)). If you add a third version of the code in the system (e.g. you load a module twice) the "very old" version gets purged and those processes executing the obsolete version get killed. You can also use code:purge and code:soft_purge to "force" this behaviour. Look at the "code" module for more options.</p>
</blockquote></div>