> To dereference a generational reference, we do a "liveness check" to see whether the allocation's generation number still matches our reference's target generation.
How does this work with threading (use after check)? Or are allocations always limited to a single thread?
> This will safely halt the program
So it’s not statically memory-safe. That’s not hugely attractive I have to say.