Der Präsident der C++ Alliance hat angekündigt, an einer Spezifikation zu arbeiten, die dem C++-Sprache Erweiterungen hinzufügt, um sicheren Umgang mit Speicher zu ermöglichen, ähnlich den Möglichkeiten, die in der Programmiersprache Rust realisiert sind. Für das Projekt wurde Sean Baxter, der Autor des experimentellen C++-Compilers Circle, gewonnen, der Ideen zur Verbesserung der Sicherheit von C++-Code entwickelt, die auf der Seite des Compilers ohne Verwendung von Garbage Collection umgesetzt werden. Im Rahmen des Projekts hat Sean ein Dokument veröffentlicht, das die Anwendbarkeit verschiedener Schutzmaßnahmen analysiert, die in Rust vorgeschlagen werden, die Umsetzbarkeit für C++ bewertet und Vorschläge zur Hinzufügung von Erweiterungen, die die Sicherheit des Codes erhöhen, unterbreitet.
Es wird darauf hingewiesen, dass die Initiative als Antwort auf das wachsende Bedürfnis von Entwicklern nach sicheren Programmiermethoden gestartet wurde und darauf abzielt, neue Möglichkeiten in die C++-Sprache zu integrieren, die Schutz vor gängigen Fehlern bieten, die beim Umgang mit Speicher auftreten können, wie zum Beispiel der Zugriff auf bereits freigegebenen Speicher und das Überschreiten von Grenzen zugewiesener Puffer. Die Ergänzungen entwickeln sich zu Optionen, die einen schrittweisen Übergang zu sicheren Methoden ermöglichen, während die Kompatibilität mit bereits bestehendem 'unsicheren' Code gewahrt bleibt.
Die Sicherheit im Umgang mit Speicher soll durch Mechanismen gewährleistet werden, die während der Kompilierung implementiert werden und keine zusätzlichen Aufwendungen verursachen, wie sie in Sprachen mit Garbage Collectors üblich sind. Zu den vorgeschlagenen Hauptmethoden zur Gewährleistung der Sicherheit gehört das Tracking des Eigentums an Objekten, die Überprüfung der Ausleihe von Variablen (borrow checker), die Verwendung eines sicheren Kontexts (safe) sowie die Erstellung der Schnittstellen std2::send und std2::sync. Die Arbeit umfasst auch die Schaffung einer geschützten Version der Standardbibliothek, die Implementierungen von Algorithmen und Datenstrukturen bietet, die einen sicheren Umgang mit Speicher ermöglichen.
Quelle: opennet.ru
