[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Issue: HASH-TABLE-GC (no proposal)
- To: KMP@STONY-BROOK.SCRC.Symbolics.COM
- Subject: Issue: HASH-TABLE-GC (no proposal)
- From: Jon L White <jonl@lucid.com>
- Date: Mon, 17 Oct 88 20:19:26 PDT
- Cc: CL-Cleanup@SAIL.Stanford.EDU
- In-reply-to: Kent M Pitman's message of Thu, 13 Oct 88 17:54 EDT <881013175448.2.KMP@BOBOLINK.SCRC.Symbolics.COM>
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 --