This sounds a bit like software transactional memory (STM), in the sense of giving threads the illusion of total freedom while keeping them separate in reality. In STM data races are solved by unwinding the victim thread, essentially allowing threads to ask for forgiveness instead of permission.
Crucially, this new scheme still allows for mutation of shared data structures as long as they were allocated before the thread's birth. You can enjoy parallel execution managed by the compiler, but maintain your ability to footcannon if you need to, and don't have anywhere near the bookkeeping overhead of STM.Reply
This seems cool, but this blog article doesn't really delve into what the "provably" part is -- I can see how the structure they're describing of having processors handle GC for a collection of heaps which are structurally linked might make GC more efficient, but they don't really talk about what is proved or how.
I guess, even from a practical perspective, how does this end up comparing with GC in something like the JVM with functional languages like scala?Reply