- 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.