De toekomst van veilig programmeren in C++ is opnieuw onderwerp van discussie binnen de standaardisatiegemeenschap. Het zogeheten Safe C++ voorstel, dat een jaar geleden werd gepresenteerd als een manier om sterkere veiligheidsgaranties in de taal te integreren, zal niet verder worden uitgewerkt.
Dat blijkt uit recente discussies en berichten op onder meer Reddit. Sean Baxter, een van de oorspronkelijke auteurs, bevestigt het nieuws.
Safe C++ was bedoeld als een optionele context waarin code dezelfde sterke garanties zou krijgen als in Rust. Denk daarbij aan geheugenveiligheid, typeveiligheid en bescherming tegen race conditions. Het idee was dat bestaande code gewoon zou blijven functioneren, terwijl nieuw geschreven of aangepaste onderdelen binnen een veilige context konden draaien. Daarmee leek het voorstel een brug te slaan tussen de huidige praktijk en een veiliger toekomst voor C++. Toch bleef het concept omstreden.
Volgens Baxter gaf de werkgroep Safety and Security Study Group de voorkeur aan het zogenoemde Profiles-project. Dit initiatief beoogt eveneens meer veiligheid, maar doet dat door middel van beperkingen en regels die ontwikkelaars vrijwillig kunnen inschakelen. In plaats van nieuwe taalconstructies te introduceren, legt Profiles vooral compile-time restricties op. Ze worden aangevuld met enkele runtime-controles. Wie een profiel activeert, commit zich aan die regels, maar zonder profiel blijft C++ functioneren zoals altijd.
Plannen te weinig concreet
Het voordeel van deze aanpak is volgens voorstanders dat het meer aansluit bij de bestaande taalfilosofie en daardoor beter te adopteren is in de praktijk. Bjarne Stroustrup, de grondlegger van C++, heeft in verschillende contexten laten weten dat hij achter Profiles staat. Tegelijkertijd wijst The Register erop dat critici de plannen nog weinig concreet vinden. Er is nog geen brede implementatie, en sommigen betwijfelen of de beloofde garanties voldoende ver gaan.
Tijdens stemmingen binnen het comité bleek dat Safe C++ wel degelijk aanhang kende, maar niet genoeg om door te zetten. Ongeveer twintig leden spraken steun uit voor verdere uitwerking, terwijl een meerderheid de voorkeur gaf aan Profiles. Daarmee is het voorstel niet formeel verboden, maar de aandacht van de gemeenschap ligt nu elders.
Voor ontwikkelaars betekent dit dat C++26, de volgende grote standaard, vooral veiligheidsverbeteringen zal brengen via deze profielen en via aanscherpingen in de standaardbibliotheek. Een afzonderlijke veilige bibliotheek, zoals door Safe C++ voorgesteld, komt er niet. Het is een meer pragmatische koers, met minder ingrijpende veranderingen dan aanvankelijk gedacht.