Developers
Port existing software
Porting existing C or C++ to CHERI exposes pointer assumptions and helps a team decide what must change for hybrid or pure-capability operation.
What you’ll do
Porting existing C or C++ to CHERI is an evidence-gathering process. Compiler warnings and runtime faults reveal assumptions about pointer size, integer conversions, bounds and authority that conventional systems may leave implicit.
Before you begin
The aim is not only to make the program run, but to preserve intended behaviour while narrowing unnecessary authority.
Steps
1. Inventory
Map source, assembly, build logic, generated code, libraries and platform interfaces; choose a small representative target.
2. Compile
Enable capability warnings, fix pointer-integer and layout assumptions deliberately, and avoid casts that merely silence diagnostics.
3. Test
Exercise normal, boundary and malformed inputs; record faults, source changes, performance and remaining unsupported dependencies.
Check your result
A successful hybrid build does not provide the same coverage as a pure-capability build, and a clean compile does not prove temporal safety or correct compartment design.
Record the architecture, platform, ABI, release, source revision and complete commands. A second developer should be able to reproduce the result.