Just to throw a little light into this discussion: On Symbolics systems there is a list of forms to be evaluated before any gc flip (ephemeral or dynamic). It's possible to implement whatever kind of weak pointers strategy you want by explicitly clearing whatever pointers are "weak" before the flip occurs. The list is called SI:GC-EVERY-FLIP-LIST