<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="">On Jan 27, 2017, at 11:35 AM, Tino Heth via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""><blockquote type="cite" class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">I don’t disagree with your overall point, but I do want to emphasize that forcing apps to bundle the stdlib and runtime is more than just suboptimal.</div></blockquote><br class=""></div><div class="">Wouldn't it be possible to have several versions of the runtime bundled with the OS? Frameworks on macOS still have a filesystem layout that is build around the idea of having several versions in one bundle.</div></div></div></blockquote><div><br class=""></div><div>I have personally thought about this as well, but it would also mean that the OS frameworks would need to come in several versions - imagine the following scenario:</div><div><br class=""></div><div>Swift 4 libraries are included with macOS 10.13, some frameworks in the system link against them (e.g. AppKit).</div><div><br class=""></div><div>Then, with macOS 10.14, Swift 5 comes along with ABI incompatible changes. AFAICT, if you want apps written compiled with Swift 4 to work under 10.14, you'll need:</div><div><br class=""></div><div>- runtime libraries for Swift 4</div><div>- all system frameworks will need to contain two variants - one compatible with Swift 4 and one with Swift 5. This is IMHO absolutely unmaintainable in the long run. For how long would you need to keep several versions of the framework around? What happens when Swift 6 comes along with another breaking changes? Would each system framework have 3 versions embedded?</div><br class=""><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">Also, breaking ABI isn't that uncommon: C++ did so in the past (and imho that language did things that are worse ;-)</div><div class=""><br class=""></div><div class="">I guess the problem is at least partly a phycological one:</div><div class="">ABI stability was supposed to be one major feature of Swift 3, and it's somewhat depressing when big goals are delayed over and over.</div><div class=""><br class=""></div><div class="">Maybe you could "stabilise" the ABI temporarily, and plan for a breaking change in two or three years, when the dust has settled?</div><div class="">Doing so would reduce the pressure, and long-term Mac developers are used to huge breaking changes anyway ;-)</div><div class="">It could also free resources to work on features and ideas that help to realise shortcomings worth to be addressed in a "really stable" ABI.</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>