Pharo does not GC objects with circular references in some circumstances:
miniblog.
Related Posts
Today I learnt that Emacs defines a ring structure using just a fixed size array, to give you the convenience of circular structures and dynamically sized arrays!
Creating a circular data structure should be impossible with immutability, right? Amazingly, laziness enables this:
Lispers aren't afraid of C macros, and that leads to remarkable loop constructs that handle circular lists: