[erlang-questions] effect of destructive updates on GC implementation

Jonathan Amsterdam <>
Tue Jan 29 23:02:44 CET 2008


> The core Erlang developers are well aware of the techniques
> needed to support destructive updates in GC:d heaps.

Apologies if my tone came across as patronizing. I just wanted to
explain my position without assuming anything.

> 2. As soon as destructive updates are supported, people
>    will use them. From what I've heard from Ericsson folks,
>    the lack of destructive updates is actually a positive
>    thing for them, presumably due to program reliability and
>    programmer productivity.

This is something I've wondered about. Are there any
production-quality, scalable programs that do not use mnesia, d/ets
tables or process dictionaries?  That would be cool, but it seems to
me that when you're dealing with huge amounts of real-world data that
can change, the copying involved in purely functional data structures
would kill you.

> 3. The combination of message passing and mutable data breaks
>    the semantics of Erlang, or that of mutable data, and limits
>    the choices the Erlang implementors can make. Suppose P1
>    sends a term T to P2. P2 inspects it. Later, P1 updates
>    some part of T. Should P2 observe that change?
>    - if yes, the semantics of Erlang is now fundamentally altered,
>    - if no, the semantics of mutable data is severely restricted.
>    Furthermore, each choice creates new hard constraints on how
>    the runtime system may implement process heaps and message
>    passing.
>

This is the most compelling reason, for me.



More information about the erlang-questions mailing list