<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=""><br class=""><div><blockquote type="cite" class=""><div class="">Le 3 août 2017 à 17:44, Taylor Swift via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><div class=""><div dir="ltr" class=""><br class=""><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 3, 2017 at 8:20 PM, Karl Wagner via swift-evolution <span dir="ltr" class="">&lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt;</span> wrote:<br class=""><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><span class=""><div class=""><blockquote type="cite" class=""><div class=""><div style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap:break-word" class=""><div class=""><br class=""></div><div class="">The root cause, of course, is that the VLAs require new stack allocations each time, and the stack is only deallocated as one lump when the frame ends.</div></div></div></blockquote><div class=""><br class=""></div><div class="">That is true of alloca(), but not of VLAs.&nbsp; VLAs are freed when they go out of scope.</div><div class=""><br class=""></div></div></div></blockquote></div><br class=""></span><div class="">Learned something today.</div><div class=""><br class=""></div><div class="">Anyway, if the goal is stack allocation, I would prefer that we explored other ways to achieve it before jumping to a new array-type. I’m not really a fan of a future where [3; Double] is one type and (Double, Double, Double) is something else, and Array&lt;Double&gt; is yet another thing.</div></div></blockquote><div class=""><br class=""></div><div class="">They are completely different things. <br class=""><br class=""></div><div class="">[3; Double] is three <i class="">contiguous</i> Doubles which may or may not live on the stack. <br class=""><br class=""></div><div class="">(Double, Double, Double) is three Doubles bound to a single variable <i class="">name</i>, which the compiler can rearrange for optimal performance and may or may not live on the stack. <br class=""></div></div></div></div></div></blockquote><div><br class=""></div>To be clear, there is no Swift value type that guarantees that the order in which fields are laid out is the same as the order in which they're declared. It's not just tuples. (Structs imported from C are always laid out with their C layout, of course.)</div><div><br class=""></div></body></html>