Skip to content

This repo contains a version of clang that is being modified to support Checked C. Checked C is an extension to C that lets programmers write C code that is guaranteed by the compiler to be type-safe.

Notifications You must be signed in to change notification settings

checkedc/checkedc-clang

Repository files navigation

The Checked C clang repo

This repo contains a version of the LLVM/Clang toolchain that has been modified to support Checked C. Checked C extends C with bounds checking and improved type-safety. The Checked C specification is available at the Checked C repo release page.

Trying out Checked C

You can install the Checked C compiler and the 3C tool from the Checked C LLVM Project releases page. There are versions available for Ubuntu 22.04, Windows 10/11, and MacOS. The compiler user manual is here. For more information on Checked C and pointers to example code, see the Checked C wiki. If you want to build your own copy of the compiler, see the directions on the Checked C LLVM Project wiki.

You can use clangd built from this repository to get similar IDE support for editing Checked C code as upstream clangd provides for C code. For example, you can jump to definition/references and get a real-time display of errors and warnings, etc. Here is more information about Checked C's clangd.

3C: Semi-automated conversion of C code to Checked C

This repository includes a tool called 3C that partially automates the conversion of C code to Checked C. Quick documentation links:

More information

For more information on the Checked C clang compiler, see the Checked C LLVM Project wiki.

Automated testing status

Checked C Clang CI [Linux]

Checked C Clang CI [MacOS]

Checked C Clang CI [WINDOWS]

Contributing

We welcome contributions to the Checked C project. To get involved in the project, see Contributing to Checked C.

For code contributions, we follow the standard Github workflow. See Contributing to Checked C for more detail.

Code of conduct

This project has adopted a code of conduct.