> On Jan 5, 2018, at 4:19 PM, Jordan Rose via swift-dev <swift-dev@swift.org> > 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 > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev