Money software cannot afford a whole class of bugs
Bitcoin Core is written in C++, and for a long time that was simply the default for any serious node software. But over the last several years, nearly every major new project in the ecosystem, BDK, LDK, Fedimint, most Miniscript tooling, has chosen Rust instead. The reason isn't fashion. Rust's ownership model and borrow checker eliminate use-after-free, data races, and null pointer dereferences at compile time, without needing a garbage collector to do it at runtime. For a node that holds private keys in memory and validates transactions moving real money, an entire category of memory-corruption bugs that has historically produced critical CVEs in C and C++ codebases simply cannot compile in the first place.
The lack of a garbage collector matters specifically for Bitcoin infrastructure because GC pauses are unpredictable, and unpredictability is dangerous in code that needs to respond to peer messages, relay transactions, and manage Lightning channel timeouts on a schedule. Rust gives you memory safety and deterministic performance at the same time, which is a combination C++ doesn't offer without extreme discipline, and garbage-collected languages don't offer at all.
