Summary of weak pointer and finalization features available in
some popular Common Lisp implementations:
This summary was generated from information kindly
supplied by members of lisp user community and vendor
organisations during August '95. This information
is undoubtably incomplete but is posted however
as perhaps a starting point from which to urge some
standardisation but more importantly promote discussion
of this topic and also the broader issue of standard programmatic
interfaces to "under the bonnet" implementation details
particulary in the area of common-lisp storage management.
All errors stand to be corrected and it is not my purpose
to comment upon any common lisp implementation either
by inclusion or omission from this summary.
Many thanks to all that replied by posting in comp.lang.{lisp,clos}
or by email. Simon Beaumont, BT Labs, 30 August 1995.
Implementation Has
----------------------------------------------------------------------
Allegro CL 4.2 weak-vectors, finalize
Allegro CL Windows 2.0 finalize (1)
CLISP finalize
CMU CL weak-pointers
Harlequin CL (LispWorks 3.2.2) weak-vectors (2), weak-hash-tables (3)
ILOG Talk weak-hash-tables (4)
Lucid CL 4.1.1 (Harlequin LCL) weak-sets, weak-hash-tables (5)
Macintosh CL 3.0 weak-sets, weak-hash-tables (6)
Poplog CL weak-hash-tables (7)
_________
Notes.
(1) Weak vectors promised in a future release
(2) (array t *)
(3) :value
(4) Not known which of :key :value or :both
(5) :key :value & :both
(6) :key or :value not :both
(7) :key or :value, not known if :both
Harlequin LispWorks also offers finalization, via the functions
FLAG-SPECIAL-FREE-ACTION
FLAG-NOT-SPECIAL-FREE-ACTION
ADD-SPECIAL-FREE-ACTION
REMOVE-SPECIAL-FREE-ACTION
Lawrence G. Mayka
Summary of weak pointer and finalization functionality
available in some popular Common Lisp implementations.
(2nd. ed. of September 1995)
Many thanks for the time taken to point out errors and
omissions.
CL Implementation Has
----------------------------------------------------------------------
Allegro CL 4.2 weak vector, finalize
Allegro CL Windows 2.0 finalize (1)
CLISP finalize
CMU CL weak-pointers, weak hash-table (8)
Harlequin CL (LispWorks 3.2.2) finalize, weak array (2), weak hash-table (3)
ILOG Talk finalize, weak hash-table (4)
Lucid CL 4.1.1 (Harlequin LCL) weak set, weak hash-table (5)
Macintosh CL 3.0 population (9), weak hash-table (6)
Poplog CL weak hash-table (7)
Other Lisp Implementations
----------------------------------------------------------------------
MIT Scheme weak pair, weak hash-table
_________
Notes.
(1) Weak vectors promised in a future release
(2) set-array-weak (array t *)
(3) set-hash-table-weak -> weak value
(4) :key
(5) :key :value & :both
(6) :key or :value not :both
(7) :key or :value not known if both
(8) Keyword :weak-p t -> weak values
(9) A weak list