A Flexible Type System for Fearless Concurrency (2022) [pdf]
Their approach lines up pretty well with how we do regions in Vale. [0]<p>Specifically, we consider the &quot;spine&quot; of a linked list to be its own private &quot;region&quot;, separate from the elements&#x27; region. This lets us freeze the spine region, while keeping the elements region mutable.<p>This mechanism is particularly promising because it likely means one can iterate over a collection with zero run-time overhead, without the normal restrictions of a more traditional Rust&#x2F;Cyclone-like borrow checker. We&#x27;ll know about this iterating benefit for sure when we finish part 3 (one-way isolation [1]); part 1 landed in the experimental branch only a couple weeks ago [2].<p>The main difference between the two approaches is that Vale doesn&#x27;t assume that all elements are self-isolated fields, it allows references between elements and even references to the outside world. However, this does mean that Vale sometimes needs &quot;region annotations&quot;, whereas the paper&#x27;s system doesn&#x27;t need any annotations at all, and that&#x27;s a real benefit of their method.<p>Other languages are experimenting with regions too, such as Forty2 [3] and Verona [4] though they&#x27;re leaning more towards a garbage-collection-based approach, where Vale is more like a memory-safe C++.<p>Pretty exciting time for languages!<p>[0] <a href="https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;zero-cost-borrowing-regions-overview" rel="nofollow">https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;zero-cost-borrowing-regions-overvi...</a><p>[1] <a href="https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;zero-cost-borrowing-regions-part-3-one-way-isolation" rel="nofollow">https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;zero-cost-borrowing-regions-part-3...</a><p>[2] <a href="https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;regions-prototype" rel="nofollow">https:&#x2F;&#x2F;verdagon.dev&#x2F;blog&#x2F;regions-prototype</a><p>[3] <a href="http:&#x2F;&#x2F;forty2.is&#x2F;" rel="nofollow">http:&#x2F;&#x2F;forty2.is&#x2F;</a><p>[4] <a href="https:&#x2F;&#x2F;github.com&#x2F;microsoft&#x2F;verona">https:&#x2F;&#x2F;github.com&#x2F;microsoft&#x2F;verona</a>