"POSIX Has Become Outdated", ;login: issue: Fall 2016, Vol. 41, No. 3
Simple, yes the lower levels of the stack are still C and C++, but that is about it, the very low level layers.
OS X, yes it is a certified UNIX, but the software world is more than command line tools and UNIX daemons.
Any OS X, iOS, tvOS, iOS application that regular users actually want to use, rely in Objective-C APIs making use of classes, categories and protocols, with some of them actually being nowadays implemented in Swift, like the new audio stack.
ChromeOS, yes it is built on the Linux kernel, however the whole stack is built to manage Chrome instances. Only web apps count. Any developer creating applications to ChromeOS only deals with the web stack.
Android, oh sure it is built on top of a forked Linux kernel, stripped out of any signs of UNIX V IPC, but regular application developers only see Java APIs. Surely there is the NDK, which exposes about 5% of Android APIs, has a very limited set of official C and C++, and any attempt to link to on-device libraries not part of the sanctioned list, terminates the application, as of Android 7.
Windows, sure the kernel is built on a mix of C and C++, both Win32 and UWP build on top of that. However .NET Native is also able to produce UWP components, just like C++/CX. Watch any Microsoft conference since the launch of Windows 10, and you will see in which direction the wind is blowing on the whole .NET Native vs C++/CX for UWP applications.
Tizen, yep they built it on top of Linux kernel, offer some native API that has already gone through three reboots, but guess what. The main APIs are their web stack, native is not even allowed on Tizen for TVs and now their are adopting .NET Core as the new API stack.
As for POSIX and mobile OS, maybe you haven't been paying attention to the news.
"POSIX has become outdated" -- http://www.cs.columbia.edu/~vatlidak/resources/POSIXmagazine...
That is wishful thinking.
Android is 90% Java frameworks. C and C++ applications are only allowed to use these libraries from the underlying OS.
Trying to link to anything else will terminate the application, starting with Android 7.
ChromeOS is a browser based OS, that happens to have Linux underneath.
On Android Things, the NDK is even more constrained to the point that the device drivers API is mostly exposed via Java.
In all cases, their fork of Linux has some POSIX API removed.
So, Google could tomorrow replace Linux by anything else and only OEMs writing drivers would notice.
Which is actually what they are doing with their Fuchsia project.
ANSI C and POSIX aren't the same thing.
POSIX is more like the extended runtime that C needs to be portable outside UNIX walls, which isn't being fully implemented on iOS and Android.
Have you ever used the NDK?
Android apps are only allowed to link to these specific set of libraries.
To put an hand to the cowboy programmers that were linking to system libraries not part of that list, starting with Android 7, they will be terminated if they try to do so.
The only form of binaries allowed on a standard Android device are shared objects.
The Native Activity is actually just the native method calls of https://developer.android.com/reference/android/app/NativeAc... that loads a shared object with a predefined name.
None of the stable NDK APIs are GNU/Linux specific and the POSIX layer isn't fully compliant with the standard, many APIs like e.g. SYS V IPC are missing.
Rooted devices don't count, as that is not what people get on the store when they buy an Android device.