Президентът на организацията C++ Алианс обяви, че работи по спецификация, която добавя разширения за безопасна работа с паметта в езика C++, сходни на възможностите, реализирани в езика Rust. За осъществяване на проекта е привлечен Шон Бакстър (Sean Baxter), автор на експериментален C++ компилатор Circle, който развива идеи за повишаване на безопасността на кода C++, реализирани на страната на компилатора без използване на събиране на боклук. В рамките на проекта Шон публикува документ с анализ на приложимостта на различни защитни мерки, предлагани в езика Rust, оценка на възможността за тяхното реализиране в C++ и предложения за добавяне на разширения в езика C++, повишаващи безопасността на кода.
Отбелязва се, че инициативата е стартирана в отговор на нарастващата нужда сред разработчиците от безопасни методи на програмиране, и е насочена към интеграция в езика C++ на нови възможности, позволяващи защита от често срещани грешки, възникващи при работа с паметта, като обращение към вече освободена памет и излизане извън границите на разпределените буфери. Допълненията се развиват като опции, които ще позволят постепенно преминаване на проекти към безопасни методи, запазвайки същевременно съвместимост с вече съществуващия "несигурен" код.
Безопасността на работата с паметта се предлага да се осигури чрез механизми, реализирани на етапа на компилация и не довеждащи до допълнителни разходи, характерни за езици, използващи събирачи на боклук. Като основни предлагани методи за осигуряване на безопасност се споменава проследяване на собствеността на обектите, проверка за заемане на променливи (borrow checker), използване на безопасен контекст (safe) и създаване на интерфейси std2::send и std2::sync. Работата обхваща и създаването на защитен вариант на стандартната библиотека, предлагаща реализации на алгоритми и структури от данни, позволяващи безопасна работа с паметта.
Източник: opennet.ru
