Longstanding issues: structs & standalone Erlang

Thomas Lindgren thomasl_erlang@REDACTED
Wed Feb 15 15:50:04 CET 2006

--- Romain Lenglet <lenglet@REDACTED>

> The equivalent solution in Erlang would be to always
> specify the 
> version of a module when using it, and to modify the
> runtime 
> accordingly, e.g.:
> {io, '2.1'}:format("hello~n", []).
> Problem are: 1) that looks ugly in Erlang, 2) module
> versions are 
> optional, 3) modules are not a unit of installation
> / 
> configuration (applications are such units, and it
> is their 
> versions that are important), 4) how to do dynamic
> code updates?

If Erlang had an explicit notion of linking, it might
work, e.g., by specifying somewhere that 'io' actually
refers to module io with -vsn("2.1"). and that the
code of io:format is the function found in the code
object named (io, "2.1"). Calls to apply/3 would have
to use a runtime association mapping atoms to actual
modules. Code change could perhaps be done by explicit
relinking, etc, (While Erlang's code change model is a
pretty good local optimum, it doesn't seem to
generalize very far beyond that point.) But I think
this needs a bit more thought.

Also, note that in practice, modules actually _are_ a
unit of installation. Some projects or companies don't
use applications or releases; other projects install
smaller patches by loading new modules.  (At this
time, I have actually worked in more Erlang companies
that _don't_ use fullblown OTP than such that do :-)


Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 

More information about the erlang-questions mailing list