<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="">The <font face="Menlo" class="">@available()</font> and <font face="Menlo" class="">if #available</font> constructs are not sufficient as they fall under the same limitations that your proposal addresses: they <i class="">require</i>&nbsp;that the non-valid branch not be parsed. For example, an API that has changes with a new language feature, such as variadic generic arguments, would not be able to be defined.</div><div class=""><br class=""></div><div class="">If we look at the grammar, I don’t see why the grammar for “availability-argument” couldn’t look like this:</div><div class=""><br class=""></div><div class=""><font face="Menlo" class=""><i class="">&nbsp; &nbsp; availability-argument:&nbsp;(platform-name | language-name | package-name) version.</i></font></div><div class=""><section class="section" style="padding: 0px; margin: 30px 0px 0px; font-size: 10px;"><div class="syntax-defs" style="border-width: 0px 0px 0px 5px; border-left-style: solid; border-left-color: rgb(233, 233, 233); font-size: 1.4em; margin: 20px 0px; outline: 0px; padding: 0px 0px 0px 15px; vertical-align: baseline; line-height: 20.299999237060547px;"><p class="syntax-defs-name" style="border: 0px; font-size: 0.63em; margin: 0px 0px 8px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); letter-spacing: 2px; text-transform: uppercase;">GRAMMAR OF AN AVAILABILITY CONDITION</p><div class="syntax-defs-group" style="font-family: Helvetica, Arial, sans-serif; border: 0px; margin: 0px 0px 12px; outline: 0px; padding: 0px; vertical-align: baseline;"><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/swift/grammar/availability-condition" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">availability-condition&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">#available­</code><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">(­</code><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/availability-arguments" data-renderer-version="2" data-id="//apple_ref/swift/grammar/availability-arguments" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">availability-arguments</a>­</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">)­</code></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/swift/grammar/availability-arguments" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">availability-arguments&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;"><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/availability-argument" data-renderer-version="2" data-id="//apple_ref/swift/grammar/availability-argument" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">availability-argument</a>­</span>&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;">&nbsp;<span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/availability-argument" data-renderer-version="2" data-id="//apple_ref/swift/grammar/availability-argument" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">availability-argument</a>­</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">,­</code><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/availability-arguments" data-renderer-version="2" data-id="//apple_ref/swift/grammar/availability-arguments" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">availability-arguments</a>­</span></span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/swift/grammar/availability-argument" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">availability-argument&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/platform-name" data-renderer-version="2" data-id="//apple_ref/swift/grammar/platform-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">platform-name</a>­</span><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Statements.html#//apple_ref/swift/grammar/platform-version" data-renderer-version="2" data-id="//apple_ref/swift/grammar/platform-version" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">platform-version</a>­</span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/doc/uid/TP40014097-CH33-NoLink_734" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">availability-argument&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">*­</code></div></div><div class="syntax-defs-group" style="font-family: Helvetica, Arial, sans-serif; border: 0px; margin: 0px 0px 12px; outline: 0px; padding: 0px; vertical-align: baseline;"><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/swift/grammar/platform-name" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-name&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;"><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">iOS­</code>&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;">&nbsp;<code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">iOSApplicationExtension­</code></span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/doc/uid/TP40014097-CH33-NoLink_736" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-name&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;"><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">OSX­</code>&nbsp;</span><span class="alternative" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; display: inline;">&nbsp;<code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">OSXApplicationExtension­</code></span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/doc/uid/TP40014097-CH33-NoLink_737" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-name&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">watchOS­</code></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/swift/grammar/platform-version" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-version&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/doc/uid/TP40014097-CH33-NoLink_739" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-version&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">.­</code><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span></div><div style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline;" class=""><a name="//apple_ref/doc/uid/TP40014097-CH33-NoLink_740" style="border: 0px; margin: -85px 0px 0px; outline: 0px; padding: 85px 0px 0px; vertical-align: baseline; display: block; width: 0px; height: 0px; color: rgb(0, 136, 204);" class=""></a><span class="syntax-def-name" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(128, 128, 128); font-style: italic;">platform-version&nbsp;</span><span class="arrow" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 0px 0px 4px; vertical-align: baseline; color: rgb(128, 128, 128);">→&nbsp;</span><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">.­</code><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span><code class="literal" style="border: 0px; font-size: 0.86em; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-family: Menlo, monospace; font-weight: 600; word-wrap: break-word;">.­</code><span class="syntactic-cat" style="border: 0px; margin: 0px; outline: 0px; padding: 0px 4px; vertical-align: baseline; font-style: italic; word-break: keep-all;"><a href="https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/LexicalStructure.html#//apple_ref/swift/grammar/decimal-digits" data-renderer-version="2" data-id="//apple_ref/swift/grammar/decimal-digits" style="border: 0px; margin: 0px; outline: 0px; padding: 0px; vertical-align: baseline; color: rgb(0, 136, 204); text-decoration: none;" class="">decimal-digits</a>­</span></div></div></div></section><section class="section" style="padding: 0px; margin: 30px 0px 0px; font-family: Helvetica, Arial, sans-serif; font-size: 10px;"></section></div><div class="">I’d further argue that the <font face="Menlo" class="">version</font> argument properly adhere to the semver spec:&nbsp;<a href="http://semver.org" class="">http://semver.org</a>.</div><div class=""><br class=""></div><div class="">The above change, in addition to the change for the&nbsp;<span style="font-family: Menlo;" class="">if #available&nbsp;</span>statement to <i class="">not</i>&nbsp;parse the unavailable path would seem to provide the solution you want to have in addition to the solution that many package developers could use as well.</div><div class=""><br class=""></div><div class="">The nice thing is that this could be done in stages:</div><div class=""><br class=""></div><div class="">1. Add support for the language condition and change #available to <i class="">not </i>parse the non-valid paths</div><div class="">2. Add support for package names</div><div class="">3. Add support for proper semver versioning.</div><div class=""><br class=""></div><div class="">The only breaking change is #1. When/if semver was supported, the version could still take the decimal digits while adding semver support.</div><div class=""><br class=""></div><div class="">-David</div><div class=""><br class=""></div><div><blockquote type="cite" class=""><div class="">On Jan 4, 2016, at 4:02 PM, David Farler &lt;<a href="mailto:dfarler@apple.com" class="">dfarler@apple.com</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="">We already have @- and #-prefixed availability-like constructs, so I would prefer something more specific to the task – I wouldn't want to dilute the meaning of a package name argument by supplying it with the magic package "swift", for example. Changes to the language can be highly disruptive to all Swift code, so that's why I think it warrants its own build configuration.&nbsp;<div class=""><div class=""><br class=""></div><div class="">David</div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 20, 2015, at 10:45 PM, David Owens II 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="">If we are going to support something like this, I’d rather see it be something everyone could leverage as there are many use cases for this feature:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Menlo" class="">#if available("package-name", "1.2.*")</font></div><div class=""><font face="Menlo" class="">#endif</font></div></blockquote><div class=""><br class=""></div><div class="">Then at least everyone can opt-in to using it for availability checks. This should of course tie into the Swift Package Manager and use proper semver syntax (might as well use node’s example:&nbsp;<a href="https://docs.npmjs.com/misc/semver" class="">https://docs.npmjs.com/misc/semver</a>).</div><div class=""><br class=""></div><div class=""><div class="">Another solution would be to simply factor out the code into separate files and add each to the appropriate build configuration. Then nothing new needs to be added.</div></div><div class=""><br class=""></div><div class="">-David</div><br class=""><div class=""><blockquote type="cite" class=""><div class="">On Dec 20, 2015, at 2:01 PM, James Campbell 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=""><div class="">Also in future versions features may go away meaning older libraries may assume that greater than swift 2 is all that is needed to imply compatibility. Also libraries may be written against features they may not know which version of swift it will get into. Additionally certain features aren't available across platforms so how do you know what swift 2 means across platforms ? <br class=""><br class="">Swift version conditionals are a useful fallback but we should also try and make feature conditionals a first class citizen too. <br class=""><br class="">I love the @supports syntax in CSS, if we could do that then that would be awesome :) &nbsp;it's a great way of handling implementations across platforms <br class=""><br class="">Sent from my iPhone<br class=""><br class="">On 20 Dec 2015, at 21:00, Andrey Tarantsov via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""><br class=""><blockquote type="cite" class=""><blockquote type="cite" class="">I suspect with the race to a stable language, the plan is to design features as if the language were to stay solid.<br class=""></blockquote><br class="">Are you implying that Swift 4 will have zero new features? Nothing that libraries will want to use conditionally when available?<br class=""><br class="">A.<br class=""><br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></blockquote>_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></div></blockquote></div><br class="">
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=CeLTg4c6gzJGPH9L0mzZhhYTiKMjRs3ez-2F5o4hxY0YwCbqUN8ZCfwMSQzu7xBDOwdBkQBx9eDHeSnVNtFtr4lOgFccTg7hVG1DEioXAXLZ3FYpgKfH3Q6-2Fmh1C71GlApKh-2FT5DS7fhXQtBmDKTNhp0c6LbZCzY6ZQnL4GRZu0RH4-2FoFp3rw7jnWEeigCUUHyCkQdx-2BTd9lNnIJ-2BPzeVVB9767nNYd1lWIpb6CGORd20-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;" class="">
</div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class=""><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class=""></div></blockquote></div><br class=""></div></div></div></div></blockquote></div><br class=""></body></html>