[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue: HASH-TABLE-GC (no proposal)

re: My notes from Fairfax meeting...
     . . . 
     JonL, RWK: Nervous about this because it's "new technology".
     Gregor: It IS implemented -- just not in Lisp. It is NOT new technology.

I still stand by my note of caution -- meaning I would oppose any such
item being included in the standard as early as January 1989.

Although several other languages have something vaguely reminiscent of what 
has been talked about for so long on the Common-Lisp mailing list, there is 
no justification at all for claiming that they set precedent for Common Lisp.
There are just too many differences as to what a "garbage collector" is, and 
what a "hash table" is, and what a "weak pointer" is.  [Not sure I used just
the bare word "technology", but was implying that this is new and non-obvious 
for Common Lisp].

In particular, Cedar's "finalization" technology is heavily involved with 
its reference counting garbage collector [or, "used to be" -- my reference 
is circa 1984].  Many commercial Common Lisps do not in fact "collect" the 
garbage, but instead  "abandon" the garbage by copying the living structure.
There are ways out, but they are by no means easy choices.

Similarly, whether "weakness" should be expressed as a property of
   (1) hash-table keys
   (2) locative properties
   (3) attribute properties [a la Pop11?]
is a crucial question.  For example, the consistency of what MAPHASH
will find is in question if (1) is chosen; and serious implementational
questions arise if "weakness" is to be ascribable to any old random 
SETF'able place.

Note that PDP10 MacLisp had "weak" tables for interned symbols back in 
the early 1970's;  what it didn't have was a user-extensible notion of 
"weakness", and that is the point of this (non-) proposal.

What this (non-) proposal needs is some implementation to give it a try,
based on an indentified, actual need.  [Please, no suggestions as to what 
someone "might need" -- there's been a surfeit of that on the CL mailing
list already].  At the CLOS symposium, I heard one case of "actual need" 
that could be satisfied by a very minimal version of (1) above.  I called 
that situation a "cache table" in that it was a hash-table used as a kind 
of performance accelerator; at any time, any element in the table may be 
randomly deleted, and no program operation other than speed is affected.

Anyone else know of other "actual needs"?

-- JonL --