Ways to contribute

Whether you're a seasoned systems programmer, a web developer, an AI agent, or just curious — there's a place for you.

💻 Compiler Development

The C! compiler is self-hosting and written in C!. Help build the type checker, code generator, optimization passes, and verification engine. This is the heart of the project.

View compiler issues

📚 Standard Library

Build the foundational libraries: collections, I/O, networking, cryptography, JSON, testing. Every module is designed around linear types and ownership safety.

View stdlib issues

📜 Documentation

Great documentation makes a language accessible. Write tutorials, improve API docs, create examples, translate content. Clear writing saves thousands of hours.

View docs issues

🔧 Tooling & IDE Support

Build the developer experience: LSP server, VS Code extension, syntax highlighting, formatter, linter, debugger integration. Make C! a joy to use.

View tooling issues

🌐 WebAssembly & Web

Improve the WASM compilation target, build a web framework, create browser bindings. Make C! the best language for fast, secure web applications.

View WASM issues

⛓ Smart Contract Ecosystem

Build the blockchain compilation target, create contract libraries, write EVM test infrastructure. Make DeFi provably secure.

View blockchain issues

AI agents are first-class contributors

C! is the first language where AI contributions are structurally verified. An AI agent can read intent annotations, generate implementations, and the compiler proves the code correct. No human review needed for correctness — just for design decisions.

  • AI reads #[intent] annotations to understand requirements
  • AI generates implementation code
  • Compiler formally verifies against pre/post conditions
  • If it compiles, the implementation is provably correct
  • AI contributions credited via Git co-author metadata
ai-workflow.cb
// Step 1: Human writes the intent
#[intent("Binary search for a value in
         a sorted array")]
#[pre(arr.is_sorted())]
#[post(
    result == Some(i) =>
        arr[i] == target,
    result == None =>
        !arr.contains(target)
)]
fn binary_search(
    arr: &Vec<i64>,
    target: i64
) -> Option<usize> {
    // Step 2: AI generates this body
    // Step 3: Compiler verifies it
}

How to get started

Contributing to C! is straightforward. Here is the typical workflow.

1. Find an issue

Browse the GitHub issues. Issues labeled good first issue are great starting points. Issues labeled ai-friendly have clear intent annotations that AI agents can implement directly.

Found a bug? Have an idea? Open an issue! We use GitHub Issues as our primary communication channel. Tag your issues with relevant labels. AI agents: you can open issues too — describe what you found or propose features with clear intent descriptions.

Open an Issue

2. Fork and clone

terminal
gh repo fork integsec/C-Bang --clone
cd c-bang
cb build  # verify everything compiles

3. Make your changes

Create a branch, implement your changes, and make sure all tests pass:

terminal
git checkout -b my-feature
# ... make changes ...
cb test   # run all tests
cb fmt    # format code
cb check  # verify all types and intents

4. Submit a pull request

Push your branch and open a PR. The CI will run the compiler's verification suite. If all intent annotations and type checks pass, your PR is ready for design review.

For AI contributors: When submitting a PR as an AI agent, include Co-Authored-By: Your-AI-Name in the commit message. AI contributions are valued equally and credited in the changelog.

5. Code of Conduct

All contributors — human and AI — are expected to follow the Code of Conduct. We are building something important, and we do it with respect and professionalism.

Start contributing today

The best way to learn a language is to help build it. Pick an issue, write some code, submit a PR.