Erts/Otp onLoad

Tony Rogvall tony@REDACTED
Wed May 19 08:23:24 CEST 2004

Hello list!

I have a small suggestion for new functionality in the Erlang/Erts 
[Otp] system.
I would like to see that a call to a function called M:onLoad() (or 
something) was
made by the runtime system when a module M that exports such a function 
was loaded
and before any other code was executed (not a requirement).

Ideally the M:onLoad function [in a new version of M] should be called 
before the new version
of M was "registered". In the current state of the Erlang system this 
is not possible since only
the latest version of a module M will be accessible for remote calls.

Typical use will be to have modules to register functionality when 
loaded, think of
plug and play or plugins etc. (linux kernel drivers also have  this)

possibly a function M:unLoad could be called when the module M is 
(garbage collected) or replaced with a newer version.

Having Module as separate objects (wanted feature) then:

	{ok, Bin} = file:read_file("M.beam"),
	Mid = binary_to_term(Bin),
	catch apply(Mid, onLoad, []),          %% note call to unregistered 
	register_module(m, Mid).



More information about the erlang-questions mailing list