A consequence of using `__thread` on Apple is that initializers for thread
locals are required to be constant expressions. This is not the case for
the c++11 standard `thread_local`.

Can you expand on the benefits of 'thread_local'? Is the above statement 
alluding to tech debt or preventing new features or performance?



@vinodkone

> On Dec 20, 2016, at 7:04 PM, Michael Park <mp...@apache.org> wrote:
> 
> Joris, I don't have a strong stance here. I was just providing a data point
> of what people may experience out of the box.
> 
> Am I correct in understanding the following implications?
>  - 10.10 would require brew-installed clang to work
>  - 10.11 would require a Xcode upgrade
>  - 10.12 would work out of the box
> 
>> On Mon, Dec 19, 2016 at 6:27 PM, James Peach <jor...@gmail.com> wrote:
>> 
>> 
>>> On Dec 19, 2016, at 3:00 PM, Joris Van Remoortere <jo...@mesosphere.io>
>> wrote:
>>> 
>>> Thanks for your input Zameer.
>>> 
>>> Is it common for developers on mac to use XCode as their compilation
>>> environment as well? I would think if you used clang on the command line
>>> then you could still install an updated version of clang without having
>> to
>>> do a system upgrade from Yosemite?
>> 
>> Xcode provides both the integrated development environment (typically not
>> used with Mesos) and one or more toolchains and SDKs (used by Mesos).
>> Whether the modern toolchain can be used with an older release depends on
>> whether the Xcode release is considered supported on that release.
>> 
>>> 
>>> I'm getting the impression that it's reasonable to make this change
>> without
>>> a deprecation cycle. Please let me know if you (anyone) disagrees.
>>> 
>>> —
>>> *Joris Van Remoortere*
>>> Mesosphere
>>> 
>>>> On Mon, Dec 19, 2016 at 2:17 PM, Zameer Manji <zma...@apache.org> wrote:
>>>> 
>>>> I believe this thread_local support is in XCode 8.2. From the link you
>>>> shared:
>>>> 
>>>>> Xcode 8.2 requires a Mac running macOS 10.11.5 or later
>>>> 
>>>> This means that users can upgrade the compiler on El Capitan just fine
>>>> without a system upgrade.
>>>> 
>>>> Users on Yosemite need to do a system upgrade to pick up the new
>> compiler
>>>> however.
>>>> 
>>>> On Mon, Dec 19, 2016 at 12:33 PM, Joris Van Remoortere <
>>>> jo...@mesosphere.io>
>>>> wrote:
>>>> 
>>>>> Is my understanding incorrect regarding the ability to upgrade the
>>>> compiler
>>>>> version on Yosemite and El Capitan without requiring a full system
>>>> upgrade?
>>>>> 
>>>>> @Mpark are you making a case for not updating to `thread_local` just
>> yet?
>>>>> 
>>>>> —
>>>>> *Joris Van Remoortere*
>>>>> Mesosphere
>>>>> 
>>>>> On Fri, Dec 16, 2016 at 11:11 AM, Michael Park <mp...@apache.org>
>> wrote:
>>>>> 
>>>>>> Brief survey from the #dev channel: https://mesos.slack.com/
>>>>>> archives/dev/p1481760285000430
>>>>>> 
>>>>>> Yosemite 10.10: Fail. Compilation error. (by @hausdorff
>>>>>> https://mesos.slack.com/archives/dev/p1481760552000435)
>>>>>> El Capitan 10.11: Fail. Compilation error. (by @zhitao
>>>>>> https://mesos.slack.com/files/zhitao/F3F7WUCNM/-.diff)
>>>>>> Sierra 10.12: Success (by @mpark)
>>>>>> 
>>>>>> On Wed, Dec 14, 2016 at 3:27 PM, Joris Van Remoortere <
>>>>> jo...@mesosphere.io
>>>>>>> 
>>>>>> wrote:
>>>>>> 
>>>>>>> The time has come and we finally have `thread_local` support in the
>>>>> Apple
>>>>>>> tool chain:
>>>>>>> https://developer.apple.com/library/content/releasenotes/Dev
>>>>>>> eloperTools/RN-Xcode/Introduction.html
>>>>>>> 
>>>>>>> In our code base we have a special exception for Apple that defines
>>>> our
>>>>>>> thread local to be `__thread` rather than the c++11 standard
>>>>>>> `thread_local`.
>>>>>>> https://github.com/apache/mesos/blob/812e5e3d4e4d9e044a1cfe6
>>>>>>> cc7eaab10efb499b6/3rdparty/stout/include/stout/thread_local.hpp
>>>>>>> 
>>>>>>> A consequence of using `__thread` on Apple is that initializers for
>>>>>> thread
>>>>>>> locals are required to be constant expressions. This is not the case
>>>>> for
>>>>>>> the c++11 standard `thread_local`.
>>>>>>> 
>>>>>>> I would like to propose that we remove this exception on the Apple
>>>>>> platform
>>>>>>> now that the Apple toolchain supports the c++11 standard.
>>>>>>> 
>>>>>>> As I am not a common user of the Apple development experience I would
>>>>>> like
>>>>>>> to ask for some input from the community as to whether requiring this
>>>>>>> toolchain update is acceptable, and if we need a deprecation period
>>>> or
>>>>> if
>>>>>>> we can just make this change now.
>>>>>>> 
>>>>>>> I am leaning towards no deprecation period as I am not aware of
>>>>>> production
>>>>>>> environments running on systems that define `__APPLE__`.
>>>>>>> —
>>>>>>> *Joris Van Remoortere*
>>>>>>> Mesosphere
>>>>>>> 
>>>>>> 
>>>>> 
>>>>> --
>>>>> Zameer Manji
>>>>> 
>>>> 
>> 
>> 

Reply via email to