C++ Alliance продвигает в C++ механизмы безопасной работы с памятью, опробованные в Rust

Президент организации C++ Alliance объявил о работе над спецификацией, добавляющей в язык C++ расширения для безопасной работы с памятью, напоминающих возможности, реализованные в языке Rust. Для осуществления проекта привлечён Шон Бакстер (Sean Baxter), автор экспериментального C++-компилятора Circle, развивающего идеи по повышению безопасности кода C++, реализуемые на стороне компилятора без использования сборки мусора. В рамках проекта Шон опубликовал документ с анализом применимости тех или иных мер защиты, предлагаемых в языке Rust, оценкой возможности их реализации для C++ и предложениями по добавлению в язык C++ расширений, повышающих безопасность кода.

Отмечается, что инициатива запущена в ответ на растущую в среде разработчиков потребность в безопасных методах программирования, и нацелена на интеграцию в язык C++ новых возможности, позволяющих защититься от распространённых ошибок, возникающих при работе с памятью, таких как обращение к уже освобождённой памяти и выход за границы выделенных буферов. Дополнения развиваются в качестве опций, которые позволят постепенно переводить проекты на безопасные методы, сохраняя при этом совместимость с уже существующим «небезопасным» кодом.

Безопасность работы с памятью предлагается обеспечить при помощи механизмов, реализуемых на этапе компиляции и не приводящих в дополнительным накладным расходам, свойственным языкам, использующих сборщики мусора. В качестве основных предлагаемых методов обеспечения безопасности упоминается отслеживание владения объектами, проверка заимствования переменных (borrow checker), использование безопасного контекста (safe), создание интерфейсов std2::send и std2::sync.
Работа также охватывает создание защищённого варианта стандартной библиотеки, предлагающего реализации алгоритмов и структур данных, позволяющих безопасно работать с памятью.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61878