[erlang-questions] load_file() and purge()

Per Hedeland per@REDACTED
Fri Nov 25 13:38:46 CET 2016

On 2016-11-25 13:20, Salikhov Dinislam wrote:
> Let's assume there is a module forty_two.beam loaded by VM.
> Then the module is updated and hot loaded:
>     > code:load_file(forty_two).
>     {module, forty_two}
> Then let's assume that there is no process using an old version of the module (for example, the module contains only pure functions).
> Despite of that following attempt to update the module fails:
>     > code:load_file(forty_two).
>     Loading of forty_two.beam failed: not_purged
>     {error,not_purged}
> Is there any rationale why the old code is not automatically purged?

code:load_file/1 *never* purges old code. Try the handy shell function
l/1, defined in c.erl:

l(Mod) ->

> IMO, it would be convenient if _unused_ old version of the code would be implicitly removed in such case.

You could define your own load function with appropriate use of
code:soft_purge/1 for that.

--Per Hedeland

More information about the erlang-questions mailing list