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.

Last updated: Revision 2021-10-20.

Features

  • Full C ABI compatibility
  • Module system
  • Generic modules
  • Zero overhead errors
  • Struct subtyping
  • Safe array access using sub arrays
  • Zero cost simple gradual & opt-in pre/post conditions. [IN PROGRESS]
  • High level containers and string handling. [IN PROGRESS]
  • C to C3 conversion (for a subset of C) TODO
  • 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).