Rust as a High Level Language

Please don't ignore what I wrote when responding to it:

Freed memory can be compacted. There is no need for an indirection pointer.

Separately I will point out that when we need to GC to manage the temporary local objects, perhaps it can reuse memory pools of same sized objects, so that it doesn't need to do compaction. It would just advance a pointer to the next freed area.

Refer to my aforementioned idea of employing memory pools for same sized temporary objects. The block of pointers for the temporary objects may also be localized as they are created locally in the function composition locality.

Afaik, temporary objects is where most of the performance bottleneck is. The generational GC doesn't run until the generation period, so afaics the temporary objects shouldn't be interrupted/moved. (and I am not saying we don't need indirection if we rely on the GC)