Challenge 3: Why C Has No Official Package Manager or Build Tool — Possible Solution ==================================================================== This isn't a missing feature so much as a difference in WHEN each language was designed relative to when "package manager" became a standard idea a language was expected to ship with. C was created in the early 1970s, long before the internet made a centralized package registry (like Rust's crates.io) a practical, expected thing to bundle into a language's own official tooling. Software distribution at the time C was designed simply didn't work that way -- there was no established convention for a language to define, let alone provide official tooling for. Rust and Go, by contrast, were both designed in an era (2009+) where centralized package registries, a single official build tool, and one-command compile-and-run workflows were already the expected norm for a new language -- npm, PyPI, and similar registries had already proven the model. Rust and Go's designers built `cargo` and `go build` with that expectation baked in from day one, specifically because skipping it would have felt like a glaring omission to developers coming from those other ecosystems. C, having no such expectation to meet when it was created, was never retrofitted with an official equivalent later -- the ecosystem instead grew its OWN separate, unofficial tools (make, CMake, and others) to fill that gap, tools that exist alongside the language rather than being built into it. This is why C's situation is a genuine difference in kind, not just C being "behind": the tools that exist for C were built by the wider community over decades, addressing a need C's original design never anticipated having to solve itself. WHY THIS WORKS AS AN ANSWER ------------------------------ This explains the ACTUAL historical reason (C predates the very expectation of language-bundled package management) rather than treating it as a simple deficiency, and correctly distinguishes "no official tool" from "no tools at all" -- make/CMake exist, just unofficially, exactly as the chapter itself states.