<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="">Hi Ted !&nbsp;</div><div class=""><br class=""></div><div class="">Thanks guys for all for the hard work!&nbsp;</div><div class="">What you wrote makes sense, is a relief, and gives me faith in Swift’s future!</div><div class=""><br class=""></div><div class=""></div><blockquote type="cite" class=""><div class="">The Swift team at Apple has reflected on this and decided what it "means" for Swift 3 to be source compatible with Swift 4 and later releases going forward. Our goal is to allow app developers to combine a mix of Swift modules (e.g., SwiftPM packages), where each module is known to compile with a specific version of the language (module A works with Swift 3, module B works with Swift 3.1, etc.), then combine those modules into a single binary. The key feature is that a module can be migrated from Swift 3 to 3.1 to 4 (and beyond) independently of its dependencies.</div></blockquote><div class=""><br class=""></div><div class="">This sounds like a reasonable solution...</div><div class="">If I understand you correctly;</div><div class="">&nbsp; &nbsp;The compiler(s) &nbsp;would be able to compile sources from 3.0 and future versions?</div><div class=""><br class=""></div><div class="">well, that solves most source breaking issues,&nbsp;</div><div class=""><br class=""></div><div class="">It then has however the disadvantage that one cannot</div><div class="">combine older &nbsp;language elements from&nbsp;</div><div class="">e.g. version 3.0 &nbsp;and 4.0 or higher together in a single source file?&nbsp;</div><div class="">However, if so, I can live with that.</div><div class=""><br class=""></div><div class="">Does this method have further compatibility issues that at the moment don’t cross my mind?</div><div class=""><br class=""></div><div class="">Unfortunately that doesn’t go back to 2.2, unfortunately</div><div class="">because in 3.0 the classical for ; ; loop will be deactivated.</div><div class=""><br class=""></div><div class=""><div class="">I regard this as a serious mistake and&nbsp;</div><div class="">have no doubt this removal is disturbing many&nbsp;</div><div class="">experienced and more pragmatical programmers.</div></div><div class=""><br class=""></div><div class="">It made my alarm bells ringing and it was the main&nbsp;</div><div class="">reason I have climbed in to Swift-Evolution</div><div class="">to discuss this.</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; -= Maybe it’s not too late =-&nbsp;</div><div class="">For the moment the classical for ;; &nbsp;could simply&nbsp;</div><div class="">remain activated &nbsp;(Yes) &nbsp;in 3.0. because: &nbsp;</div><div class="">&nbsp;&nbsp;</div><div class="">&nbsp; - It doesn’t conflict at all with all other language elements,</div><div class=""><br class=""></div><div class="">&nbsp; - most important: there are still no good alternative for iterations like these &nbsp;</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp;for var x:Float = -60; &nbsp;&nbsp;&nbsp;x &lt; 60; &nbsp;&nbsp;&nbsp;x += w * 1.2</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br class="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for var y: Float = 130; &nbsp;&nbsp;&nbsp;y &gt; 60; &nbsp;&nbsp;&nbsp;y -= backtrack<div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // etc.</div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // especially for iterations using Floating point numbers!</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;for these, one has to fall back on tedious do-while constructs.</div><div class=""><br class=""></div><div class="">&nbsp; - There are more sane reasons, but a few months ago</div><div class="">&nbsp; &nbsp; &nbsp;I have written extensively about this subject.</div><div class=""><br class=""></div><div class="">So, yes, obviously my recommendation is&nbsp;</div><div class=""><br class=""></div><div class="">Please don’t remove the for ;; from 3.0</div><div class="">&nbsp;</div><div class=""><div class="">and replace the current compile cry:</div><div class="">&nbsp; &nbsp; “C-style for statement is deprecated and will be removed in a future version of Swift”</div><div class=""><br class=""></div><div class="">which I currently perceive like this:</div><div class=""><br class=""></div><div class="">&nbsp; &nbsp;“ The for ;; statement, although being used successfully in many other languages</div><div class="">&nbsp; &nbsp; &nbsp; is in conflict with the attitude and believe of some of us with a lot of theoretical experience.</div><div class="">&nbsp; &nbsp; &nbsp;Therefore it will be removed in a future version of Swift.&nbsp;</div><div class="">&nbsp; &nbsp; &nbsp;Please resort to using the do-while statement instead.”</div><div class=""><br class=""></div><div class="">the new compiler warning could be then:</div><div class="">&nbsp; “Warning! This for ;; statement should only be used by highly &nbsp;skilled&nbsp;</div><div class="">&nbsp; &nbsp;programmers with a more pragmatical attitude.</div><div class="">&nbsp; &nbsp;Use at your own risk, like with any other Swift statement.”&nbsp;</div><div class=""><br class=""></div><div class="">Just leave it in. &nbsp;(but I guess it could be to late)&nbsp;</div><div class=""><br class=""></div><div class="">If it is really removed in 3.0, then I promise I will write</div><div class="">an official &nbsp;proposal to bring it back in 3.x and further.</div><div class="">some help with that is appreciated.</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">Kind Regards</div><div class=""><br class=""></div><div class="">Yet another Ted :o)&nbsp;</div><div class=""><br class=""></div><div class=""><a href="http://www.tedvg.com" class="">www.tedvg.com</a>&nbsp;</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><br class=""><blockquote type="cite" class="">Date: Wed, 27 Jul 2016 12:38:51 -0700<br class="">From: Ted Kremenek &lt;<a href="mailto:kremenek@apple.com" class="">kremenek@apple.com</a>&gt;<br class="">To:&nbsp;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>,&nbsp;<a href="mailto:swift-evolution-announce@swift.org" class="">swift-evolution-announce@swift.org</a>,<br class=""><span class="Apple-tab-span" style="white-space: pre;">        </span>swift-dev &lt;<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>&gt;<br class="">Subject: [swift-evolution] End of source-breaking changes for Swift 3<br class=""><br class="">Dear friends,<br class=""><br class="">Today is July 27 — and the last planned day to take source-breaking changes for Swift 3. It has been an incredible ride to this point, so let's take stock of where we are.&nbsp;<br class=""><br class=""></blockquote>&nbsp;&lt;snip&gt;<br class=""><blockquote type="cite" class="">Thank you again to everyone for making Swift 3 such as fantastic release!<br class=""><br class="">Ted</blockquote></div></body></html>