4 ms·
Talking of Apple Clang as a crippled compiler comes across as very uneducated opinion to me. It goes through an extensive validation / stabilization for many mo
by Joky 9y ago
Talking of Apple Clang as a crippled compiler comes across as very uneducated opinion to me. It goes through an extensive validation / stabilization for many months before being released. So yes it adds some delay in getting new shiny features, but calling it "crippled" seems like a very much uneducated opinion here.
You can have an idea about the integration exactly what version from upstream Apple is integrating by looking at Swift (they somehow have to be in sync).
I guess the last Xcode update was: https://github.com/apple/swift-clang/commits/swift-4.1-branch https://github.com/apple/swift-clang/commits/swift-4.1-branc...
The next minor update will likely be this one: https://github.com/apple/swift-clang/commits/swift-4.2-branch https://github.com/apple/swift-clang/commits/swift-4.2-branc... ; so judging at the history I bet you'll get a version of clang that is based of clang-5.0 upstream.
And likely the next major Xcode (10?) would be based of this: https://github.com/apple/swift-llvm/tree/swift-5.0-branch https://github.com/apple/swift-llvm/tree/swift-5.0-branch ; which is based off clang-6.0. Note that this branch will very likely get many bug fixes in the next ~6 months.
(the above are only guesses based on past release, I don't know anything about their current plan or schedule).
The Apple engineers will try to build all variants of the Apple OS for all the HW they ship with this new clang-6.0 based branch. The usual process is to fix upstream the development of clang-7.0 and cherry-pick in these branches.
So the compiler that you'll get with the next major Xcode, even if based of clang-6.0 will have many/most of the bug-fixes that will be in clang-7.0 (release in July), but not most of the new features (and new bugs!).
Caveat: this apply only to ARM64 and X86, of course Apple does not try to backport bugfixes for platform they don't support.
(Note that libc++ is handled a bit differently.)
Disclaimer: I was part of the Apple clang team until ~1y ago.
- cozzyd 9y agoI'm sure a lot of work goes into it, but often features that are present in upstream clang seem to be removed or heavily delayed. Fom the perspective of a Linux "developer" whose software (C++ scientific tools) sometimes gets compiled with the Xcode clang++, I've seen (i.e. been told of by Apple users) all sorts of problems that don't happen with upstream clang or modern gcc. The fact that the versioning isn't coherent with upstream clang makes things even more confusing.
- pertymcpert 9y agoWhat features?
- cozzyd 9y agoWell the one I'm familiar with is Apple's explicit disabling of thread-local storage for a long time. See e.g. https://stackoverflow.com/a/23850891 https://stackoverflow.com/a/23850891, which thankfully has been fixed since then (but it took something like 2 years).
- m1h4 9y agoThank you for the info/insight. I assumed that the specified language features, especially ones also depending on core libraries like libc++, would most likely be released as part of the next major OS update (since these are very essential for the complete system and need to be tested along side it as one whole). I didn't check the macOS 10.13.4 beta, but I'm assuming that the features I mentioned are coming as part of macOS 10.14 and Xcode 10.