yep and and it forces every application to deal with the C FFI. It's beautiful in linux that I can access the full kernel API from an int 0x80/syscall instruction + a few register loads without having to link against crap. I can write a simple cat utility in a dozen or so lines of assembly.

FFI is a different term. i called LIBC bloatware because it comes with many stuff that is not needed and things that are not appropriate for the system API layer, like memory allocator, string primitives etc. it also has an old style naming, like_this_one_supposed_to_be_nice or whtabthis1?

windows's NTDLL (at least early versions) naming is much better and the layer is much thiner, the problem is that it is "undocumented". also its rigid portability, while libc binding makes NIX software non-portable. NT also has syscalls through the interrupt btw.