This resulted in about half of the heap being non-pointer, thereby cutting the garbage collection scanning in half. Then in Suneido's main message loop, if there are no messages waiting it removes values from the queue and calls finalize on them. I modified SuFile to derive from SuFinalize, and renamed it's close method to finalize. Voila, files are now automatically closed if you forget to do it. Of course, there's no guarantee on the timing of finalization.
Reference counting can detect unreferenced objects immediately and predictably.
But conservative garbage collection is not quite so predictable. I'll have to define a Handle type and change the dll definitions. One of the columns I always read is Michael Swaine's Programming Paradigms. He doesn't really give any opinion of it, positive or negative, but the fact that he mentioned it seems positive in itself. A mention of Suneido on the Dr. Dobbs website gave us a lot of traffic, so hopefully the magazine will be even better.