Microsoft hat am 16. Juni 2016 Checked C vorgestellt, eine Erweiterung der Programmiersprache C für Bounds Checking und mehr Typsicherheit. Das Projekt soll bestehende C-Codebasen schrittweise gegen Speicherfehler absichern, ohne sie vollständig in eine andere Sprache übertragen zu müssen.
Checked C ergänzt C um geprüfte Zeigertypen und Regeln für markierte Speicherzugriffe. Ziel sind unter anderem Fehlerklassen wie Pufferüberläufe. Die Spezifikation, Beispielcode und Tests stehen im offiziellen Repository offen zur Verfügung. Zum Projekt gehört außerdem ein auf LLVM und Clang basierender Compilerzweig.
Bestehenden C-Code schrittweise absichern
Der Ansatz richtet sich an Teams, die vorhandenen C-Code weiterverwenden und einzelne Bereiche nach und nach mit zusätzlichen Prüfungen versehen wollen. Die Erweiterung verändert damit nicht nur die Compilerseite, sondern auch die Regeln, nach denen Entwickler Pointer und Speichergrenzen im Quelltext beschreiben.
Compiler und Spezifikation als offenes Projekt
Microsoft veröffentlicht neben der Spezifikation auch den Quellcode für den Checked-C-Compiler und die zugehörigen Tests. Für technische Teams ist damit nachvollziehbar, wie die Erweiterung in die bestehende Werkzeugkette integriert wird. Ein früherer Beitrag zu LLVM und Clang beschreibt die zugrunde liegende Compilerbasis.
