checkedc/checkedc
FreeChecked C is an extension to C that lets programmers write C code with bounds checking and improved type-safety. The goal is to let people easily make their existing C code type-safe and eliminate entire classes of errors.
About checkedc/checkedc
Checked C is an open-source extension to the C programming language that adds bounds checking and improved type safety to help programmers retrofit existing C code for enhanced security. Developed as a fork of LLVM/clang, Checked C provides a specification, compiler releases for Windows, macOS, and Ubuntu, sample code, and test code. Key innovations include checked pointers, array pointers with bounds annotations, and fat pointers for temporal memory safety. The project also features a semi-automated conversion tool called 3C (C to Checked C by 3C) that assists in transforming legacy C code. Checked C has been formally modeled and published in academic venues, with ongoing research into temporal safety and incremental adoption strategies.
Key Features
Pros & Cons
- Open-source and free to use
- Integrates seamlessly with the LLVM/clang ecosystem
- Provides both static and dynamic checking for bounds violations
- Semi-automated conversion tool reduces migration effort
- Active research community with published papers and ongoing development
- Supports incremental adoption – can be applied to parts of a codebase
- Requires manual annotation in some places, especially for complex pointer usage
- Limited industrial adoption compared to other memory-safe approaches (e.g., Rust)
- Learning curve for programmers unfamiliar with the type system extensions
- Compiler fork may lag behind mainline LLVM/clang updates
- Not a full rewrite – legacy code may still contain unchecked regions