Comparing Rust to Carbon
19 hours ago
- #Carbon
- #Rust
- #C++
- Chandler Carruth presented at RustConf 2025 about interoperability between Rust and C/C++, highlighting the challenges and differences in approaches between Rust and Carbon.
- Carbon is an experimental language designed to be a C++ alternative, focusing on better syntax and memory safety while maintaining full compatibility with C++ for incremental upgrades.
- Carbon aims to allow file-by-file migration from C++ without changing the compiler or build system, though it is not yet usable as complex details are still being worked on.
- Rust's interoperability tools (e.g., bindgen, cxx crate, Crubit) are not ideal for brownfield C++ projects, which are tightly coupled and harder to decompose compared to greenfield projects.
- Carbon's design prioritizes meeting C++ where it is, inheriting complexities like separate compilation and header files, making it more suited for gradual migration of entrenched C++ codebases.
- Carbon introduces 'alias sets' to handle pointer aliasing in APIs, a feature Rust lacks, making it easier to represent complex C++ APIs without refactoring.
- Carbon allows patterns the compiler cannot prove memory-safe to be warnings instead of errors, offering flexibility Rust's strict safety checks do not.
- Rust and Carbon are seen as complementary, with Rust targeting greenfield development and Carbon focusing on incremental migration of existing C++ codebases.