> On Aug 25, 2016, at 3:11 PM, Jordan Rose via swift-dev <swift-dev@swift.org>
> wrote:
>
>>
>> On Aug 25, 2016, at 14:58, Douglas Gregor <dgre...@apple.com
>> <mailto:dgre...@apple.com>> wrote:
>>
>>>
>>> On Aug 25, 2016, at 2:48 PM, Jordan Rose <jordan_r...@apple.com
>>> <mailto:jordan_r...@apple.com>> wrote:
>>>
>>>>
>>>> On Aug 25, 2016, at 9:38, Douglas Gregor <dgre...@apple.com
>>>> <mailto:dgre...@apple.com>> wrote:
>>>>
>>>>>
>>>>> On Aug 24, 2016, at 3:57 PM, Jordan Rose <jordan_r...@apple.com
>>>>> <mailto:jordan_r...@apple.com>> wrote:
>>>>>
>>>>> Hey, all. I’m here to propose predefining a macro __swift__ when C code
>>>>> is compiled with Swift. We’ve gotten a few requests for it in the past
>>>>> and haven’t done it so that people don’t write header files that
>>>>> arbitrarily restrict features when used from Swift, or check for "Swift"
>>>>> when they really should be checking for modules support, or Objective-C
>>>>> mode, or nullability support. (Or worse, they guard code under __swift__
>>>>> and then don’t ever test it, leading to failures to import the module
>>>>> from Swift.)
>>>>>
>>>>> However, with Swift 3, it’s now become important for Objective-C authors
>>>>> to be able to control how their APIs look in modern Swift 3 without
>>>>> disrupting existing clients on Swift 2.3. (Or just because Swift 3 style
>>>>> looks out-of-place in Swift 2.3.) The most obvious way to do this would
>>>>> be to define a macro that has the Swift version in it. For Swift version
>>>>> X.Y.Z, we could use something like
>>>>>
>>>>> -D__swift__=XYYZZ
>>>>>
>>>>> e.g.
>>>>>
>>>>> -D__swift__=30001
>>>>>
>>>>> for Swift 3.0.1.
>>>>>
>>>>> This is option (1).
>>>>
>>>> Option (1) sounds good to me. We don’t need to make this complicated.
>>>
>>> Okay. Next question: two digits or three digits for the minor and patch
>>> versions?
>>>
>>> - Two digits: if we ever switch to year/month combinations like C/C++,
>>> those will be higher values (unless we get to Swift 20 first).
>>> - Three digits: better for "fake" versions like 3.0.100.
>>
>>
>> I think we can just stick with 2 digits.
>
> Okay. PR here: https://github.com/apple/swift/pull/4510/
> <https://github.com/apple/swift/pull/4510/>.
>
> Jordan
Thanks Jordan!
FWIW, it would be great if this was documented *somewhere*. Not certain if we
have a handy place to put documentation on Clang Importer behavior for Swift
developers.
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev