<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">This is very interesting, but it'll probably be a little while before I can fully get my head around it.</div><div class=""><br class=""></div><div class="">One query though; an example mentioned is adding @owns(Element) to the Generator protocol, but associated types feel a little different to me; you mention using the strong keyword as an alternative, but I wonder if that might actually be a better fit for the associated type case, while @owns works elsewhere, or perhaps strong could even be made a shorthand for simpler cases? Just thinking out loud I guess, it would be nice to hear the thought process around associated types; most (possibly all I don't remember) cases in which I've used associated types it has been for strong references, so it seems like that should be as easy as possible to do under the new opt-in approach.</div><div class=""><br class=""></div><div class="">But yeah, I generally agree that this ought to be opt-in, as it's an area I do stumble upon quite a bit myself (in many languages).</div><br class=""><div><blockquote type="cite" class=""><div class="">On 30 Jul 2016, at 02:42, Andrew Bennett via swift-evolution <<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">I'd like an <b class="">opt-in</b> way to verify and prevent <b class="">unintentional strong references</b> in Swift.</div><div class=""><br class=""></div><div class="">This can be used to verify ownership structures, and ultimately avoid retain cycles.<br class=""></div><div class=""><br class=""></div><div class="">Read a draft proposal here:</div><div class=""><a href="https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md" class="">https://github.com/therealbnut/swift-evolution/blob/therealbnut-explicit-ownership/proposals/NNNN-explicit-ownership-type-attribute.md</a><br class=""></div><div class=""><br class=""></div><div class=""><div class="">TL;DR:</div><div class=""><br class=""></div><div class=""><div class="">If you have any questions please read the proposal before asking here.</div></div><div class=""><br class=""></div><div class=""><div class="">It's an opt-in attribute that defines a whitelist of types something can own. For example:</div><div class=""><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><br class=""></div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><span style="color:rgb(187,44,162)" class="">@owns</span>(TypeA, TypeB) <span style="color:rgb(187,44,162)" class="">struct </span>TypeC { ... }</div><div style="margin: 0px; font-size: 11px; line-height: normal; font-family: menlo;" class=""><br class=""></div></div></div></div><div class="">I wrote this a few months ago, but we weren't accepting additive proposals. Now we're explicitly looking for something like this:</div><div class=""><br class=""></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="white-space: pre-wrap;" class="">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", 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 class=""></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" class="">Chris</a></blockquote><div class=""><br class=""></div><div class="">----</div><div class=""><br class=""></div><div class="">Here's a link to the version of the <a href="https://github.com/therealbnut/swift-evolution/commit/6ab167825d802c7826804e1957eb515d3009743a" class="">proposal</a> when I sent this email.</div></div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></body></html>