Hacker News new | past | comments | ask | show | jobs | submit login

Very interesting and well described! If I were to have one nitpick, it would be the use of "Unix" when it's more specific to Linux. Ex. "The libc typically used on Unix systems is glibc" However I'm sure all of the concepts still apply on BSD, Solaris, etc.



Go is also famous for bypassing libc and issuing syscalls directly on quite a few platforms.


I thought I'd read they backed off of that and started using posix as an abstraction layer.


Go used to do raw syscalls on macOS but changed. Same with some BSDs.

Go always did ~libc on Windows (and Solaris) and still does.

Go still does raw syscalls on Linux, as that's a stable ABI.


libc is a UNIX concept, as the OS API surface, as described by POSIX.

On any other no-UNIX derived OS, it is the C compiler standard library, covering only the ISO C specifies.

All the remaining OS services are exposed by other libraries, which in Windows case, the bare minimum is user, kernel and gdi dlls for the Win32 personality.

Systems like IBM i, IBM z, ClearPath MCP, .... also have similar set of libraries, as do non-POSIX RTOS for embedded.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: