@nateberkopec @byroot it still needs to free up some space for objects (or allocate).
I could maybe see a pattern where it just runs incremental GC and then sets a flag, but I don’t think you can ever eliminate a full sweep as there is always the case that that even a major GC won’t free up what it needs and it will have to allocate.
Maybe it could allocate with a small amount naively and then set a flag and we could ask Ruby to be consider freeing that extra allocation.