<div dir="ltr">Interesting, I&#39;m not familiar with the history of the feature in Rust. Are you able to provide more details on what went wrong in practice?<div><div><br></div><div>This proposal may be different, this is not attempting to do it without GC. What I&#39;m suggesting still uses ARC (assuming you were counting ARC as GC). It does provide the compiler many opportunities to optimise ARC though.</div><div><br></div><div>I really like what Rust ended up with, but I&#39;m concerned that it&#39;s very complicated, and I want to explore alternatives. From <a href="https://doc.rust-lang.org/book/ownership.html">https://doc.rust-lang.org/book/ownership.html</a>:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">However, this system does have a certain cost: learning curve. Many new users to Rust experience something we like to call ‘fighting with the borrow checker’.</blockquote><div><br></div><div> </div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jul 30, 2016 at 1:22 PM, Joe Groff via swift-evolution <span dir="ltr">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank">swift-evolution@swift.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">Rust attempted this sort of type-directed cycle prevention early in its development, when it was attempting to provide language-supported shared references without GC, and it didn&#39;t work out well for them in practice.<br>
<br>
-Joe<br>
<br>
&gt; On Jul 29, 2016, at 6:42 PM, Andrew Bennett via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br>
&gt;<br>
&gt; I&#39;d like an opt-in way to verify and prevent unintentional strong references in Swift.<br>
&gt;<br>
&gt; This can be used to verify ownership structures, and ultimately avoid retain cycles.<br>
&gt;<br>
&gt; Read a draft proposal here:<br>
&gt; <a href="https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md" rel="noreferrer" target="_blank">https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md</a><br>
&gt;<br>
&gt; TL;DR:<br>
&gt;<br>
&gt; If you have any questions please read the proposal before asking here.<br>
&gt;<br>
&gt; It&#39;s an opt-in attribute that defines a whitelist of types something can own. For example:<br>
&gt;<br>
&gt; @owns(TypeA, TypeB) struct TypeC { ... }<br>
&gt;<br>
&gt; I wrote this a few months ago, but we weren&#39;t accepting additive proposals. Now we&#39;re explicitly looking for something like this:<br>
&gt;<br>
&gt; Memory ownership model: Adding an (opt-in) Cyclone/Rust inspired memory ownership model to Swift is highly desired by systems programmers and folks who want predictable and deterministic performance (for example, in real time audio processing code).  More pertinent to the goals of Swift 4, this feature is important because it fundamentally shapes the ABI.  It informs code generation for “inout&quot;, how low-level “addressors” work in the ABI, impacts the Swift runtime, and will have a significant impact on the type system and name mangling.<br>
&gt;<br>
&gt; - Chris<br>
&gt;<br>
&gt; ----<br>
&gt;<br>
&gt; Here&#39;s a link to the version of the proposal when I sent this email.<br>
&gt; _______________________________________________<br>
&gt; swift-evolution mailing list<br>
&gt; <a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
&gt; <a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
<br>
<br>
_______________________________________________<br>
swift-evolution mailing list<br>
<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br>
</div></div></blockquote></div><br></div>