new syntax - a provocation

Robert Virding robert.virding@REDACTED
Sat Oct 18 23:53:28 CEST 2003

----- Original Message ----- 
From: "Joe Armstrong" <joe@REDACTED>
To: "Richard A. O'Keefe" <ok@REDACTED>
Cc: <erlang-questions@REDACTED>
Sent: Thursday, September 25, 2003 11:12 AM
Subject: Re: new syntax - a provocation

>   Yes -  I spent about 10 years  thinking about "how to  garb the atom
> table" just to realise that I'd been thinking about the wrong problem.
>   The problem statement should have  been "How to design a system that
> does not need an atom table".
>   Garbing atom tables is *difficult* - a redesign that does not need an
> atom table is much easier - I came up with two or three schemes for this
> after a couple of days thought.

No, garbing atom tables is *easy*. I mean it.

Sorry you have the wrong problem statement. It should be "How do
I design a system that has a simple but efficient implementation of atoms?".

It is not inherently difficult to garbage atom tables! The reason that it is
difficult to collect atoms in the BEAM/JAM is because of the per process
heaps. If you use a single heap implementation (with an truly incremental
collector) then collecting the atom table is trivial. I KNOW because I
have done it.

What this means is that designing the heap structure, object formats within
the heap and the gc algorithm are intertwined and you cannot separate
them. So choosing easier per process heaps makes gc atoms more difficult
or slower while a more complex single heap makes it easy. This also
means that some objects will be implemented completely differently, or
at least should be.


P.S. Sorry for answering so long after but I haven't had much time lately
to follow the list and this issue interests me.

P.P.S. Do all of you realise what a truly crappy system Windows is?
I have to work in it. :-)

More information about the erlang-questions mailing list