> On Jan 5, 2018, at 4:19 PM, Jordan Rose via swift-dev <[email protected]>
> wrote:
>
> Hi, all. Swift 4.1 is off on its own branch and going well, but we never
> quite came up with an answer for a particular problem developers might have:
> "am I running a Swift 4.1 compiler?”.
I agree, this is getting bad. Ted mentioned that something like __has_feature
in clang is probably the best way to go, so people could check the specific
thing they care about, instead of a set of global version numbers.
Another thing that could help is something along the lines of:
#if swift_stdlib(>=5.0)
which would presumably be active in any language mode when the 5.0 standard
library is available. It would be even better to use a generalized
availability system for this: the standard library version could be treated
just like Foundation versions are handled, for example.
-Chris
>
> #if swift(>=3.2)
> // Swift 3.2 (4.0 in compatibility mode)
> // Swift 3.3 (4.1 in compatibility mode)
> // Swift 4.0
> // Swift 4.1
> #endif
>
> #if swift(>=3.3)
> // Swift 3.3 (4.1 compatibily mode)
> // Swift 4.0
> // Swift 4.1
> // this one is probably not very useful
> #endif
>
> #if swift(>=4.0)
> // Swift 4.0
> // Swift 4.1
> #endif
>
> #if ???
> // Swift 3.3
> // Swift 4.1
> #endif
>
> I don't think this is going to come up a lot, but given that we do have
> changes to the standard library and to the language, I can see people wanting
> it. Right now the only way to do it is the rather unwieldy:
>
> #if swift(>=4.1) || (swift(>=3.3) && !swift(>=4.0))
> print("new")
> #else
> print("old")
> #endif
>
> Do we need something better here, or do you think people will be okay with
> this? I'm realizing I don't really know how many people try to keep their
> libraries working across Swift versions and run into compatibility issues.
>
> (Strictly speaking this problem is already present with Swift 4.0.2 with
> 3.2.2 compatibility mode, but that's much less likely to come up.)
>
> Jordan
> _______________________________________________
> swift-dev mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-dev
_______________________________________________
swift-dev mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-dev