6 ms·
You seem to either forget or not be aware in the first place that the purpose of libc and posix is to allow portability between different operating systems, so
by seemslegit 7y ago
You seem to either forget or not be aware in the first place that the purpose of libc and posix is to allow portability between different operating systems, so it makes complete sense that linux-specific capabilities are not exposed, it has nothing to do with disagreement about kernel design.
- quotemstr 7y agoNo, that is not the primary purpose of libc. The primary purpose of libc is to run programs that the user wants to run, and removing random things make that harder. Whether the standard allows something is irrelevant: what matters is whether any given change is good for the user.
- seemslegit 7y agoThis says absolutely nothing, for any given change you can find a user who benefits from it and a user who doesn't, hence a coordination device called a standard has been invented.
- cryptonector 7y agoExcept that the whole Linux ecosystem, starting with the kernel and going from there, simply doesn't really care about POSIX. Now, that Musl does is... well, would have been, long ago... a breath of fresh air. But the ship has sailed. The Linux kernel ABI has won. Solaris, Illumos, the *BSDs, Windows -- all tried to emulate the Linux kernel ABI, and could not do a good enough job, so they all pretty much abandoned the project. The Linux kernel ABI won and that's that. Well, if we could convince devs that static linking is bad... But even then, the Linux kernel ABI leaks for all sorts of things, starting with /proc. And yes, static linking is bad, for a variety of reasons, the biggest of which is that static linking is stuck with 1970s semantics that suck because accidental symbol interposition happens all too easily. That doesn't mean that static linking couldn't grow ELF-like semantics, but if it hasn't over the past 40+ years... Still, even assuming that, there would be other reasons not to love static linking. If we could convince people to ship only dynamically-linked executables, then the ABI to emulate would be smaller, but still huge.
- seemslegit 7y agoIf the ecosystem doesn't care about POSIX it can hardly complain about choices made by a library whose purpose is to implement the POSIX standard. It also has nothing to do with ABIs - the idea of a standard is to provide a common subset of functionality supported by all platforms that it targets. Nothing about musl or any other libc implementation prevents developers from including the linux headers and using whatever linux-specific functionality they like.
- saagarjha 7y ago> Solaris, Illumos, the *BSDs, Windows -- all tried to emulate the Linux kernel ABI, and could not do a good enough job, so they all pretty much abandoned the project. The Linux kernel ABI won and that's that. I think the fact that they tried to emulate the ABI is a much stronger argument for the ABI than the fact that they abandoned doing so…
- cryptonector 7y agoWell, it means they felt the need to support Linux executables on non-Linux kernels, and that the Linux kernel ABI turned out to be too big and too fast a moving target to manage the feat.
- saagarjha 7y agoThe Linux ABI is actually quite small and quite well-defined. Perhaps the most so out of all common kernel interfaces today.
- cryptonector 7y agoIt is most certainly not small. Besides the system calls, the ioctls, and the fcntls, including all the various driver ioctls, there's also /proc. /proc is quite large an interface.
- saagarjha 7y ago