<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 ! </div><div class=""><br class=""></div><div class="">Thanks guys for all for the hard work! </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=""> The compiler(s) 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, </div><div class=""><br class=""></div><div class="">It then has however the disadvantage that one cannot</div><div class="">combine older language elements from </div><div class="">e.g. version 3.0 and 4.0 or higher together in a single source file? </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 </div><div class="">have no doubt this removal is disturbing many </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 </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=""> -= Maybe it’s not too late =- </div><div class="">For the moment the classical for ;; could simply </div><div class="">remain activated (Yes) in 3.0. because: </div><div class=""> </div><div class=""> - It doesn’t conflict at all with all other language elements,</div><div class=""><br class=""></div><div class=""> - most important: there are still no good alternative for iterations like these </div><div class=""> for var x:Float = -60; x < 60; x += w * 1.2</div> {<br class=""> for var y: Float = 130; y > 60; y -= backtrack<div class=""> // etc.</div><div class=""> // especially for iterations using Floating point numbers!</div><div class=""><br class=""></div><div class=""> for these, one has to fall back on tedious do-while constructs.</div><div class=""><br class=""></div><div class=""> - There are more sane reasons, but a few months ago</div><div class=""> I have written extensively about this subject.</div><div class=""><br class=""></div><div class="">So, yes, obviously my recommendation is </div><div class=""><br class=""></div><div class="">Please don’t remove the for ;; from 3.0</div><div class=""> </div><div class=""><div class="">and replace the current compile cry:</div><div class=""> “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=""> “ The for ;; statement, although being used successfully in many other languages</div><div class=""> is in conflict with the attitude and believe of some of us with a lot of theoretical experience.</div><div class=""> Therefore it will be removed in a future version of Swift. </div><div class=""> 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=""> “Warning! This for ;; statement should only be used by highly skilled </div><div class=""> programmers with a more pragmatical attitude.</div><div class=""> Use at your own risk, like with any other Swift statement.” </div><div class=""><br class=""></div><div class="">Just leave it in. (but I guess it could be to late) </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 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) </div><div class=""><br class=""></div><div class=""><a href="http://www.tedvg.com" class="">www.tedvg.com</a> </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 <<a href="mailto:kremenek@apple.com" class="">kremenek@apple.com</a>><br class="">To: <a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>, <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 <<a href="mailto:swift-dev@swift.org" class="">swift-dev@swift.org</a>><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. <br class=""><br class=""></blockquote> <snip><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>