C is a low-level, statically typed programming language first developed in the early 1970s and still one of the most widely used languages in systems programming. It gives programmers direct control over memory allocation and hardware, with no garbage collector, no built-in safety guardrails, and a compiler that produces small, fast, native binaries. That control comes with responsibility: managing memory manually opens the door to bugs like buffer overflows and use-after-free errors that memory-safe languages are designed to prevent. Despite decades of newer languages built to replace it, C remains the language operating systems, embedded devices, and performance-critical libraries are written in.
C shows up heavily in projects that need to talk directly to hardware or squeeze out maximum performance: databases, machine learning runtimes, media processing, and language interpreters. It's also the language most other languages' runtimes and standard libraries are implemented in, since nearly every language provides a way to call into C code through a foreign function interface. Its portability, minimal runtime, and decades-long stability make it the default choice when a project needs to run on everything from microcontrollers to supercomputers.
Repos on this page with significant C codebases include Redis, an in-memory data store where C's speed and low overhead matter for every operation, PostgreSQL, and llama.cpp, which relies on C for the performance-critical parts of running large language models on consumer hardware. Neovim also keeps parts of its core in C for the same reasons.