19 Punkte von GN⁺ 2026-01-04 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Eine weiterentwickelte Sprache, die Syntax und Semantik von C übernimmt und zugleich Sicherheit und Benutzerfreundlichkeit verbessert, sodass die gewohnte Umgebung für bestehende C-Entwickler erhalten bleibt
  • Bietet vollständige C-ABI-Kompatibilität und kann daher direkt in C/C++-Projekte integriert werden; es gibt einen Fall, in dem Teile von vkQuake nach C3 konvertiert und mit dem Compiler c3c gebaut wurden
  • Verbessert Codestruktur und Ausdruckskraft durch Modulsystem, Operator Overloading und Compile-Time-Makros
  • Enthält moderne Funktionen wie vertragsbasierte Programmierung (Gradual Contracts), Zero-Overhead-Fehlerbehandlung sowie Runtime- und Compile-Time-Reflection
  • Stellt im Debug-Modus automatisch Sicherheitsprüfungen und detaillierte Stacktraces bereit, was bei Fehlererkennung und Stabilität vorteilhaft ist

Überblick über C3

  • C3 ist eine Programmiersprache, die auf Syntax und Semantik der Sprache C aufbaut und diese weiterentwickelt
    • Ziel ist es, die vertraute Form für bestehende C-Programmierer beizubehalten und die Sprache zugleich weiterzuentwickeln
  • Unterstützt präzises und zweckgerichtetes Operator Overloading
    • Ohne die komplexe Overloading-Struktur von C++ lassen sich Vektor-, Matrix- und Fixed-Point-Berechnungen natürlich ausdrücken
  • Unterstützt vertragsbasierte Programmierung, sodass sich Einschränkungen zur Laufzeit und zur Compile-Zeit explizit angeben lassen
    • Das stärkt die Stabilität des Codes und die Konsistenz der Spezifikation
  • Kombiniert die Vorteile von Result-basierter Fehlerbehandlung und Exceptions
    • Bietet eine Struktur für Fehlermanagement, die sich natürlich in C-Code integriert
  • Unterstützt Type Introspection sowohl zur Compile-Zeit als auch zur Laufzeit
  • Inline-Assembly: ohne Strings oder komplexe Constraints lässt sich Assembly wie normaler Code schreiben
  • Im Debug-Modus werden zur Laufzeit automatisch Bounds Checks und Value Checks eingefügt
  • Die C3-Standardbibliothek bietet in Debug-Builds standardmäßig detaillierte Stacktraces
    • Statt eines schlichten „segmentation fault“ lässt sich die genaue Fehlerstelle erkennen

Ergonomics and Safety

  • Optionals sorgen für sichere Fehler- und Null-Behandlung
  • Die defer-Syntax unterstützt die Automatisierung der Ressourcenfreigabe
  • Mit slices und foreach ist sichere Iteration möglich
  • Mit kommentarbasierten contracts lassen sich Code-Einschränkungen explizit festlegen
  • Im @pool-Kontext wird automatische Speicherfreigabe unterstützt

Performance by default

  • Durch direkt geschriebene SIMD-Vektoren ist Kontrolle auf Hardware-Ebene möglich
  • Die Auswahl verschiedener Memory Allocators unterstützt feine Performance-Abstimmung
  • Für die Fehlerbehandlung wird ein overheadfreies Design verwendet
  • Schnelle Compile-Zeiten und Optimierungen des LLVM-Backends werden genutzt
  • Bietet einfach nutzbare Inline-Assembly

Batteries included standard library

  • Bietet Standarddatenstrukturen einschließlich dynamischer Container und Strings
  • Sichert durch Cross-Platform-Abstraktion Portabilität zwischen Plattformen
  • Erlaubt bei Bedarf nativen Plattformzugriff

Leverage existing C or C++ libraries

  • C3 ist vollständig kompatibel zur C ABI, daher sind keine separaten „C-kompatiblen Typen“ oder Funktionsdeklarationen erforderlich
  • C-Code kann in C3 gelinkt werden, und C3-Code kann auch in C gelinkt werden

Modules are simple

  • Ein einfaches und intuitives Modulsystem
    • Die Voreinstellungen sind sinnvoll gewählt und behindern den Entwicklungsfluss nicht
  • Bietet Namespace-Verwaltung über Module
  • Vereinfacht durch explizite Kontrolle die Kapselungsstruktur
  • Über Interfaces lassen sich gemeinsame Verhaltensweisen definieren
  • Bietet generic modules, mit denen sich generische Typen einfach und klar umsetzen lassen
  • Unterstützt Strukturwiederverwendung durch Struct-Subtyping

Macros without a PhD

  • Compile-Time-Makros lassen sich in einer Form schreiben, die gewöhnlichen Funktionen ähnelt
  • Unterstützt typbewusste Makros, die Typinformationen des Codes verstehen
  • Bietet klarere und leistungsfähigere Codegenerierung als der Präprozessor von C

Noch keine Kommentare.

Noch keine Kommentare.