<div dir="ltr"><div>I&#39;d like an <b>opt-in</b> way to verify and prevent <b>unintentional strong references</b> in Swift.</div><div><br></div><div>This can be used to verify ownership structures, and ultimately avoid retain cycles.<br></div><div><br></div><div>Read a draft proposal here:</div><div><a href="https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md">https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md</a><br></div><div><br></div><div><div>TL;DR:</div><div><br></div><div><div>If you have any questions please read the proposal before asking here.</div></div><div><br></div><div><div>It&#39;s an opt-in attribute that defines a whitelist of types something can own. For example:</div><div><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><br></p><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><span style="color:rgb(187,44,162)">@owns</span>(TypeA, TypeB) <span style="color:rgb(187,44,162)">struct </span>TypeC { ... }</p><p style="margin:0px;font-size:11px;line-height:normal;font-family:menlo"><br></p></div></div></div><div>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:</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"><span style="color:rgb(0,0,0);white-space:pre-wrap">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.</span> </blockquote><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"><br></blockquote><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"> - <a href="https://lists.swift.org/pipermail/swift-evolution/Week-of-Mon-20160725/025676.html">Chris</a></blockquote><div><br></div><div>----</div><div><br></div><div>Here&#39;s a link to the version of the <a href="https://github.com/therealbnut/swift-evolution/commit/6ab167825d802c7826804e1957eb515d3009743a">proposal</a> when I sent this email.</div></div>