<div dir="ltr"><div><div>Are stored properties in extensions already being discussed elsewhere? Is this one of those deferred-but-not-indexed-anywhere subjects?<br><br></div>I wonder how stored properties could potentially be implemented, I can only think of two ways:<br><br></div>1. An extra pointer per instance (with resulting ABI compatability implications) to hold a collection of the stored items.<br><div><br></div><div>2. A global lookup for any instance where stored properties have been set.<br></div><div><br></div><div>I&#39;m not a language implementation expert, or familiar with 
the swift implementation, so there may be other/better ways - I&#39;d like to know if there are?<br><br></div><div>If not, and option 2 was employed, a little foresight might enable the mechanism to be overloaded in the future for other dynamic features too. A bit flag (I&#39;m hoping there&#39;s a spare bit in an existing flags field somewhere?) could indicate whether any feature had caused the object to be added to this lookup and deinit could check this bit and make sure the object is removed, thus any stored properties are nilled. The lookup value could be a struct with one member (extensionStoredProperties), and additional members can be added in future for new features.<br><br></div><div>I get the impression from the associated objects discussion that perhaps there are much better, more optimal, more ingenious, more unknown-by-me ways of doing such things, so apologies if this whole idea is way-off the mark :D<br><br></div><div>Jay<br><br></div><div>P.S. Note that stored properties in extensions could enable developers to implement their own dynamic features in Swift.. so such desires could be satisfied in the short term until they could be done properly in the language.<br></div><div><br><div class="gmail_quote"><div dir="ltr">On Sat, 1 Oct 2016 at 00:49 Chris Lattner via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sep 30, 2016, at 2:51 PM, Ted F.A. van Gaalen via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg">
&gt; Is it possible to have best of (these completely different) both worlds?<br class="gmail_msg">
<br class="gmail_msg">
Yes, of course it is.  Your email spends a lot of words trying to form a false dichotomy.  Swift can definitely have both awesome dynamic features while still having performance, predictability and safety.<br class="gmail_msg">
<br class="gmail_msg">
&gt; Would it be possible in Swift to have facilities to generate objects<br class="gmail_msg">
&gt; dynamically at runtime? and, if desirable, how can such be implemented?<br class="gmail_msg">
<br class="gmail_msg">
Here’s an extant implementation that you can use today:<br class="gmail_msg">
<a href="https://github.com/Zewo/Reflection" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/Zewo/Reflection</a><br class="gmail_msg">
<br class="gmail_msg">
I’m sure it isn’t ideal, but it proves that it can be done.  When we have bandwidth to reevaluate this area from first principles, I’m sure we can make improvements on it.<br class="gmail_msg">
<br class="gmail_msg">
I will grant you that Smalltalk is a beautiful language in its simplicity, but for that simplicity it makes many tradeoffs that we’re not willing to make.  We are willing to make the internal implementation of Swift complex if that means that we get a beautiful model for programmers - one that preserves the virtues of safety-by-default, predictability, performance, and joy-to-develop-in.<br class="gmail_msg">
<br class="gmail_msg">
The meme of “Swift can never (or will never) support dynamic features” is tired, and also wildly inaccurate.<br class="gmail_msg">
<br class="gmail_msg">
-Chris<br class="gmail_msg">
<br class="gmail_msg">
_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div></div></div>