Sent from my iPhone

> On Sep 5, 2016, at 2:46 PM, Goffredo Marocchi <pana...@gmail.com> wrote:
> 
> 
> 
> Sent from my iPhone
> 
>> On 5 Sep 2016, at 20:01, Douglas Gregor <dgre...@apple.com> wrote:
>> 
>> 
>> 
>> Sent from my iPhone
>> 
>>> On Sep 5, 2016, at 11:20 AM, Goffredo Marocchi <pana...@gmail.com> wrote:
>>> 
>>> 
>>> Sent from my iPhone
>>> 
>>>> On 5 Sep 2016, at 18:59, Douglas Gregor <dgre...@apple.com> wrote:
>>>> 
>>>> 
>>>> 
>>>> Sent from my iPhone
>>>> 
>>>>> On Sep 4, 2016, at 11:48 PM, Goffredo Marocchi <pana...@gmail.com> wrote:
>>>>> 
>>>>> Hey Doug,
>>>>> 
>>>>> How do I use it in Swift code without a wrapper, which is understandably 
>>>>> a bit pointless, if I still support iOS 9?
>>>> 
>>>> #if or a wrapper are your best options. 
>>>> 
>>> 
>>> This is confusing to me as the WWDC talk they specifically said not to use 
>>> wrappers as it would pick up the wrong context
>> 
>> Ah, right. I forgot about that. 
>> 
>>> and using the #if directive at every call site would make for a lot of 
>>> repeated code... hard to use.
>> 
>> Yes, using #if can be boilerplate-y here. 
>> 
> 
> Oh well, if it cannot be helped there is an area I will have to butt heads in 
> code reviews...
> 
>>> It would be good if macro support for Swift landed in the not too distant 
>>> future as cases like this make its lack of sorely missed.
>> 
>> Macro support is not likely to be a priority for  quite a while. 
> 
> I hope you will not find it too impolite, but this feels like a more dogmatic 
> decision than I would like. I agree that macro's do not feel pure, but they 
> allow you to adapt to some of the ugliness of real world use cases (the fact 
> that Swift forces people to write a lot of boilerplate or to give up on this 
> pushes people that support iOS9 and want to go full Swift to drop the idea of 
> using os_log... do we rather have that than compromise slightly on purity 
> perhaps?). Sorry for the long aside, but maybe shedding all the C part of 
> Objective-C did hurt a bit the ease of adaptation. 

A macro system isn't a "slight" compromise. It's a major feature whose 
existence would forever change the way libraries are written in Swift. It's not 
a feature to be taken lightly. The C preprocessor is the single worst part of 
the C language from a tooling perspective, and even very well-designed macro 
systems (e.g., Scala's macro system is fairly interesting) have taken numerous 
iterations. 

> Very few people can go iOS 10+ only and I do find a lot of great value in the 
> new logging system and Objective-C allows me to use it a lot sooner thanks to 
> macro support.

Objective-C "sorta" lets you use the feature sooner; you can log differently on 
iOS 9 with your own implementation of os_los, but the OS provides far better 
logging support with a real os_log implementation. That's the real point here, 
though: os_log is not a Swift feature. It's an OS feature available in Swift, 
and it is very very rare to have an OS-level feature that works on previous 
OS's. 

  - Doug

>> 
>>   - Doug
>> 
>>> 
>>>>   - Doug
>>>> 
>>>>> 
>>>>> Sent from my iPhone
>>>>> 
>>>>>> On 5 Sep 2016, at 05:05, Brandon Knope via swift-evolution 
>>>>>> <swift-evolution@swift.org> wrote:
>>>>>> 
>>>>>> Where should the lack of {public} be reported then?
>>>>>> 
>>>>>> This seems like it falls under jira and not radar because it's in swift 
>>>>>> open source but I'm not 100 percent 
>>>>>> 
>>>>>> Brandon 
>>>>>> 
>>>>>> Sent from my iPad
>>>>>> 
>>>>>>> On Sep 4, 2016, at 11:48 PM, Douglas Gregor <dgre...@apple.com> wrote:
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> Sent from my iPhone
>>>>>>> 
>>>>>>>> On Sep 3, 2016, at 11:32 AM, Ben Rimmington via swift-evolution 
>>>>>>>> <swift-evolution@swift.org> wrote:
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> On 3 Sep 2016, at 19:13, Brandon Knope <bkn...@me.com> wrote:
>>>>>>>>> 
>>>>>>>>> Thank you! I was looking for this last night and failed. 
>>>>>>>>> 
>>>>>>>>> Why do you think {public} isn't included?
>>>>>>>> 
>>>>>>>> I don't know, but trying to reimplement __builtin_os_log_format in the 
>>>>>>>> overlay seems wrong. It would be better to have a variant of 
>>>>>>>> __builtin_os_log_format which takes a va_list.
>>>>>>> 
>>>>>>> 
>>>>>>> __builtin_os_log_format is implemented by Clang, not a library, and is 
>>>>>>> quite involved. Implementing os_log in an overlay to provide near 
>>>>>>> feature-compatibility with the C API is the right approach for Swift 3, 
>>>>>>> where a more comprehensive solution (say, a general logging API based 
>>>>>>> on string interpolation or similar) is way out of scope. 
>>>>>>> 
>>>>>>>   - Doug
>>>>>>> 
>>>>>>> 
>>>>>>>> 
>>>>>>>> -- Ben
>>>>>>>> 
>>>>>>>> _______________________________________________
>>>>>>>> swift-evolution mailing list
>>>>>>>> swift-evolution@swift.org
>>>>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
>>>>>> _______________________________________________
>>>>>> swift-evolution mailing list
>>>>>> swift-evolution@swift.org
>>>>>> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to