Il presidente dell'organizzazione C++ Alliance ha annunciato il lavoro su una specifica che aggiunge al linguaggio C++ estensioni per la gestione sicura della memoria, simili alle funzionalità realizzate nel linguaggio Rust. Per realizzare il progetto è stato coinvolto Sean Baxter, autore di un compilatore C++ sperimentale chiamato Circle, che sviluppa idee per migliorare la sicurezza del codice C++, realizzabili a livello di compilatore senza l'uso della raccolta dei rifiuti. Nell'ambito del progetto, Sean ha pubblicato un documento che analizza l'applicabilità di varie misure di protezione proposte nel linguaggio Rust, valutando la possibilità della loro implementazione in C++ e proponendo modifiche per aggiungere al linguaggio C++ estensioni che migliorano la sicurezza del codice.
Si segnala che l'iniziativa è stata lanciata in risposta alla crescente necessità nel settore degli sviluppatori di metodi di programmazione sicuri, ed è focalizzata sull'integrazione nel linguaggio C++ di nuove funzionalità che consentano di proteggere da errori comuni relativi alla gestione della memoria, come l'accesso a memoria già liberata e l'overflow dei buffer. Questi miglioramenti vengono sviluppati come opzioni che permetteranno la transizione graduale dei progetti a metodi sicuri, mantenendo al contempo la compatibilità con il codice "non sicuro" esistente.
La sicurezza della gestione della memoria viene garantita attraverso meccanismi implementati in fase di compilazione senza comportare costi aggiuntivi, tipici dei linguaggi che utilizzano i garbage collector. I metodi principali proposti per garantire la sicurezza includono il monitoraggio della proprietà degli oggetti, il controllo del prestito delle variabili (borrow checker), l'uso del contesto sicuro (safe), e la creazione delle interfacce std2::send e std2::sync. Il lavoro affronta anche la creazione di una versione protetta della libreria standard che offre implementazioni di algoritmi e strutture dati per una gestione sicura della memoria.
Fonte: opennet.ru
