5 ms·
> Linux has a stable system call ABI This is a noble but practically worthless ideal. Hardly anything is written against the kernel ABI except glibc itself. En
by delta_p_delta_x 28d ago
> Linux has a stable system call ABI
This is a noble but practically worthless ideal. Hardly anything is written against the kernel ABI except glibc itself. End-user application developers don't write against the kernel interface. Platform library and application developers like KDE and GNOME don't really write against the kernel interface either. Nowadays even driver developers don't entirely write against the kernel interface, instead also linking in glibc and lib{std}c++ for things like shader compilers (which is nowadays usually just a fork of Clang). Like it or not, glibc is the singular entry point for desktop Linux, which is the point of essentially every comment under this post.
That 'desktop Linux ≡ glibc' is something that I daresay the kernel developers also have to take responsibility for, rather than shrugging their shoulders and pawning it off to GNU. Linux's unstable user-mode is the entire reason for Docker's existence. It is bodge upon bodge and has led to much gnashing of teeth. The GNU/Linux community (I don't care for Stallman's meme rant here) have to grow a backbone and understand that an OS is much more than just a kernel, it is a platform, and currently the Linux platform is a disparate set of communities with highly divergent goals.
That's why I've always said the best Linux is Android, because Android is a platform.
- matheusmoreira 28d ago> Hardly anything is written against the kernel ABI except glibc itself. I'm working hard to change that. Here's an entire lisp interpreter written in freestanding C using nothing but Linux system calls: https://github.com/lone-lang/lone https://github.com/lone-lang/lone It has a system-call primitive too, which means it can do anything. Here's a TCP echo server written in lone lisp: https://github.com/lone-lang/lone/blob/master/examples/tcp-echo.ln https://github.com/lone-lang/lone/blob/master/examples/tcp-e... It works, and you don't need libc. > Like it or not, glibc is the singular entry point for desktop Linux Well I don't like it, and I've made it my mission to fix it. Maybe lisp isn't the answer, Rust is. I've revived my liblinux crate too. https://github.com/matheusmoreira/liblinux https://github.com/matheusmoreira/liblinux I'm going to add system calls to this thing every day until I have every single one. Then I'll use them to make all of my applications. Already have my first project planned: a custom Rust network stack for my QEMU virtual machines so I can firewall them off in userspace without root access. > the Linux platform The linux platform is these system calls. Everything else is userspace. This is exactly what makes it special. https://www.matheusmoreira.com/articles/linux-system-calls https://www.matheusmoreira.com/articles/linux-system-calls
- delta_p_delta_x 28d ago> The linux platform is these system calls. Everything else is userspace. This is exactly what makes it special. This is exactly the attitude I meant by 'the kernel developers also have to take responsibility for, rather than shrugging their shoulders and pawning it off to GNU' and 'an OS is much more than just a kernel, it is a platform'. By 'platform', I mean windowing toolkits, such as Wayland. Audio libraries like ALSA and PipeWire. Desktop idioms and libraries like DBus, and the entire freedesktop.org effort including Mesa and more. Init systems like systemd. Bootloaders like GRUB/systemd-boot. Networking, including systemd-networkd, iwd, and NetworkManager. Power and device management including PowerDevil, Bluez. If all of this is considered 'user space' then my point is strongly vindicated. On most competitor OSs these comprise the 'platform'. You won't ever encounter a Windows or OS X developer arguing that USER32.DLL or Foundation is 'userspace' even if it is technically true and code from those libraries may only ever run in ring 3. From the average user's point of view, the only 'userspace' are end-user applications that they have installed, like Chrome, video games, etc. From that perspective, even purely user-mode applications that ship with the distro ought to considered 'platform'. This includes such trivia like calculator and camera applications. We need to talk about the practical realities of a platform, not a theoretical, unattainable, and as I mentioned, useless ideal. These practical realities mean shipping a unified set of useful 'batteries included' user-mode libraries and applications. If one wants to develop the platform itself, then sure, the kernel has a nice stable interface, but on most Linux distributions the kernel is built from source anyway, so even that nicety is moot.
- matheusmoreira 28d ago> By 'platform', I mean You mean Linux distributions. > From that perspective, even purely user-mode applications that ship with the distro ought to considered 'platform'. Every Linux distribution is its own platform. You decried Stallman's meme rant yet you just rewrote the entire rant in your own terms. Linux is the kernel, GNU's just the stuff on top. You can get rid of it if you want and make your own. Android did exactly that.
- yjftsjthsd-h 28d agoIt's more than a little funny that you disparage syscalls being Linux's stable interface, and then immediately praise Android, which only works because glibc isn't uniquely privileged the way you seem to want. Also, I daily drive Alpine Linux (using musl) and I'm quite happy to assure you that glibc really is only one option, not at all mandatory for desktop Linux.
- delta_p_delta_x 28d ago> It's more than a little funny that you disparage syscalls being Linux's stable interface, and then immediately praise Android, which only works because glibc isn't uniquely privileged the way you seem to want. I never disparaged it; I said having it doesn't make it any more useful that OSs that don't, because the practical reality is that the kernel interface is narrow and highly technical, and a stable kernel binary interface has little to do with a user's day-to-day experience with an OS. I daresay Android would still work pretty well even sans the kernel ABI stability, because the kernel is usually built from source, and if it isn't, then every Android source tree has kernel prebuilts for the kernel version shipping. I also never said nor implied glibc should be uniquely privileged; I think you have misrepresented my comment.