Simple, Fast and Safe Manual Memory Management (2017) [pdf]
microsoft.com
microsoft.com
Is there any sensible thing to do when this exception is caught, appart from halting the program? If the answer is "no", why have an exception at all?
Then they can patch it and re-deploy.
Note that they still need to rewrite object references, which is a lot like a GC. EDIT: No, sorry, they lazy patch references, though this requires some overhead.
Also, this does nothing to protect against leaks.
Interesting idea, but too-little-too-late. I think Rust is the better answer for now.
EDIT: Great question from the Q&A of the video, "why are you not getting killed by TLB misses?", and the presenter did not know. This is a really important question.
> We do not guarantee that all dereferences to deleted objects will throw an exception.
What happens in the case where the dereference doesn’t throw an exception? Execution proceeds as if the dangling pointer pointed to the “zombie” object?
Of course, there is probably some huge painfull punishment in store if you try this in real life. I just wonder which. Your average GUI process that shuts down every day or so maybe wouldn't suffer too much.