Prezydent organizacji C++ Alliance ogłosił prace nad specyfikacją, która doda do języka C++ rozszerzenia zapewniające bezpieczną pracę z pamięcią, przypominające funkcjonalności wdrożone w języku Rust. Do realizacji projektu zaangażowany został Sean Baxter, autor eksperymentalnego kompilatora C++ Circle, rozwijającego pomysły na zwiększenie bezpieczeństwa kodu C++, które są realizowane po stronie kompilatora bez użycia zbierania śmieci. W ramach projektu Sean opublikował dokument z analizą zastosowania różnych środków ochrony proponowanych w języku Rust, oceną możliwości ich wdrożenia w C++ oraz sugestiami dotyczącymi dodania do języka C++ rozszerzeń zwiększających bezpieczeństwo kodu.
Zauważono, że inicjatywa została uruchomiona w odpowiedzi na rosnącą wśród deweloperów potrzebę bezpieczeństwa w metodach programowania, a jej celem jest integracja w języku C++ nowych możliwości, które umożliwią ochronę przed powszechnymi błędami związanymi z pamięcią, takimi jak dostęp do już zwolnionej pamięci i przekroczenie granic alokowanych buforów. Dodatki są rozwijane jako opcje, które pozwolą stopniowo przekształcać projekty na bezpieczne metody, jednocześnie zachowując kompatybilność z istniejącym „niebezpiecznym” kodem.
Bezpieczeństwo pracy z pamięcią ma być zapewnione poprzez mechanizmy realizowane na etapie kompilacji, które nie generują dodatkowych kosztów, charakterystycznych dla języków korzystających ze zbieraczy śmieci. Wśród głównych proponowanych metod zapewnienia bezpieczeństwa wymienia się śledzenie własności obiektów, sprawdzanie pożyczania zmiennych (borrow checker), używanie bezpiecznego kontekstu (safe), oraz tworzenie interfejsów std2::send i std2::sync. Prace obejmują również stworzenie zabezpieczonej wersji standardowej biblioteki, oferującej implementacje algorytmów i struktur danych, które umożliwiają bezpieczną pracę z pamięcią.
Źródło: opennet.ru
