Like any great systems programming language, it doesn’t take much of anything to get C up and running on a new platform.

In fact, a minimal C “runtime” (typically called crt0) only consists of a short prelude that zeroes out the .bss section and hands off execution to main.

That’s it!

Compared to other popular programming languages, which require substantial runtime machinery to operate (e.g: Java’s virtual machine, Go’s garbage collector, etc…), C’s extremely minimal approach to language design has allowed it to run on just about any platform.

Unfortunately, while C is effectively dependency free at the language level, the same can’t be said about its standard library.