C3 ist eine moderne Systemprogrammiersprache, die von Christoffer Lernö (zuvor C2) als Weiterentwicklung von C konzipiert wurde. Sie behält die vertraute C-Syntax weitgehend bei, ergänzt sie aber um Sicherheits- und Komfort-Features — von Treibern und Embedded-Software bis zu Spielen, Servern und Desktop-Anwendungen skaliert C3 von Low-Level bis High-Level. Das Referenz-Compiler-Programm heißt c3c und läuft auf Windows, Linux und macOS.

Erste Schritte

// c3c compile hello.c3
module hello;
import std::io;

fn void main() {
    io::printn("Hello, C3!");
}

Wichtige Konzepte und Befehle

  • fn deklariert Funktionen; Module werden mit module und import organisiert.
  • Optionals (Type?) behandeln Fehler und null sicher, ohne Exceptions.
  • defer räumt Ressourcen am Ende eines Scopes zuverlässig auf.
  • Slices und foreach ermöglichen sichere, typsichere Iteration.
  • Structs ersetzen die klassischen C-Structs und können Methoden, Contracts und Default-Werte tragen.
  • Der Compiler wird mit c3c compile, c3c run und c3c build (Release-Build) aufgerufen; c3c init erzeugt ein neues Projekt.

Abgrenzung zu C und C++

Im Gegensatz zu C bietet C3 eingebaute Typ-Sicherheit, Module statt Header-Dateien, Optionals und einen @pool-Kontext, in dem Speicher automatisch freigegeben wird. Die ABI-Kompatibilität zu C bleibt erhalten, sodass bestehende C-Bibliotheken direkt eingebunden werden können — C3 ist also eine evolutionäre, keine revolutionäre Sprache.

Verwandte Grundlagen: C und C++, Zig-Befehle, Carbon-Befehle, Vale-Befehle.