Obvious choice, plus all engines that matter already support Metal.
Same situation on PS4, XBox and UWP.
The ability to easily integrate the wealth of C libraries directly into your high-level code (as opposed to, say, the verbosity of implementing a JNI) is one of the strengths of Swift.
The biggest theme on Linux Security Summit 2018 was taming security exploits on Linux kernel due to C's lack of security.
I count at least 10 talks about this subject.
https://www.youtube.com/user/TheLinuxFoundation/videos
So apparently the review process, approvals and current static validation is still not enough.
For one, the learning curve is much smoother: you can get something up on screen quickly, but only later discover the advanced features like argument buffers, manual hazard tracking, etc.
What's a C++14 shader? Metal uses MSL last time I checked...
> manually compilation of shaders
The toolchain for this in Vulkan is pretty solid. It's actually nice to be able to write shaders in a high-level language, and then compile them down to SPIR-V which is more likely to be interpreted consistently across drivers than a high-level language.
https://developer.apple.com/documentation/metal/hello_triang...
But the walled garden approach seems counterproductive here. In the days of Microsoft's dominance Apple made an effort to make windows formats usable on Apple because that meant it would be easier for consumers to switch to Apple without worrying about losing all their stuff from Windows. With regard to applications in which graphics API's are relevant (i.e. games) Apple still has a minuscule market-share, and it seems like they would be well served by adopting the dominant technology. Lock-in only works if you're already winning.
An advantage of all proprietary 3D APIs is the amount of out-of-box infrastructure code, debugging tools and having progressed beyond C, while Khronos APIs are still mostly C, and requiring creating mini-engine from scratch after fishing for libs.
I don't really see the issue with C APIs. IMO C is a fantastic integration point for a library which wants to have the widest reach possible. Interoperability with C is a solved problem in a wide variety of languages, so C APIs tend to be easy to integrate. Also since C is a fairly thin abstraction on top of what a computer actually does, good C APIs tend not to be opinionated about how they should be integrated.
I would consider working with C APIs to be a basic programming skill.
https://www.hpe.com/us/en/insights/articles/making-c-less-da...
Plus it is about time to move from 70s style APIs.
Except Metal is the dominant API on almost all Apple platforms. Metal supported-iOS devices are at 700 million (last year's WWDC stat) and majority of games are using Metal on iOS. You can't ignore that market, iOS games are very profitable.
Fortnite made $3M in sales in the first three days on iOS: https://www.tweaktown.com/news/61266/fortnite-mobile-makes-1...
And even on your own devices, you need to reinstall every few (days? weeks?) because the certificate expired.