Skip to content

The C3 Reference

What is C3?

C3 is a system programming language based on C. It is an evolution of C enabling the same paradigms and retaining the same syntax as far as possible.

C3 started as an extension of the C2 language by Bas van den Berg. It has evolved significantly, not just in syntax but also in regard to error handling, macros, generics and strings.

The C3 compiler can be found on github: https://github.com/c3lang/c3c.

Binaries are directly downloadable for the following platforms:

Official forums:

  1. Discord: invite link: https://discord.gg/qN76R87
  2. Discourse: https://c3lang.discourse.group

Features

  • Full C ABI compatibility
  • Module system
  • Generic modules
  • Design by contract
  • Zero overhead errors
  • Semantic macro system
  • First-class SIMD vector types
  • Struct subtyping
  • Safe array access using slices
  • Easy to use inline assembly
  • Cross-platform standard library which includes dynamic containers and strings
  • LLVM backend

Design principles

  • Procedural “get things done”-type of language.
  • Stay close to C - only change where there is a significant need.
  • Flawless C integration.
  • Learning C3 should be easy for a C programmer.
  • Dare add conveniences if the value is great.
  • Data is inert and zero is initialization.
  • Avoid “big ideas”.
  • Avoid the kitchen sink language trap.

Thank yous

Special thank-yous to: Bas van der Berg (Author of C2), Jon Goodwin (Author of Cone) and Andrey Penechko (Author of Vox).