C++ Alliance propaguje v C++ mechanizmy bezpečnej práce s pamäťou, vyskúšané v Rust

Prezident organizácie C++ Alliance oznámil prácu na špecifikácii, ktorá pridáva do jazyka C++ rozšírenia pre bezpečnú prácu s pamäťou, pripomínajúce možnosti implementované v jazyku Rust. Na realizáciu projektu bol prizvaný Sean Baxter, autor experimentálneho C++ kompilátora Circle, ktorý rozvíja nápady na zvýšenie bezpečnosti kódu C++, implementované na strane kompilátora bez použitia garbage collectora. V rámci projektu Sean zverejnil dokument s analýzou uplatniteľnosti rôznych ochranných opatrení navrhnutých v jazyku Rust, hodnotením možnosti ich implementácie pre C++ a návrhmi na pridanie rozšírení do jazyka C++, ktoré zvyšujú bezpečnosť kódu.

Upozorňuje sa, že iniciatíva bola spustená v reakcii na rastúcu potrebu developerov po bezpečných metódach programovania a zameriava sa na integráciu nových možností do jazyka C++, ktoré umožnia chrániť sa pred bežnými chybami vznikajúcimi pri práci s pamäťou, ako sú prístupy k už uvoľnenej pamäti a prekročenie hraníc pridelených búferov. Tieto doplnky sa vyvíjajú ako možnosti, ktoré umožnia postupne prenášať projekty na bezpečné metódy, pričom sa zachová kompatibilita s už existujúcim "nebezpečným" kódom.

Bezpečnosť práce s pamäťou sa navrhuje zabezpečiť pomocou mechanizmov implementovaných v štádiu kompilácie, ktoré nevedú k dodatočným nákladom, vlastným jazykov, používajúcich garbage collectory. Medzi hlavné navrhované metódy zabezpečenia bezpečnosti patrí sledovanie vlastníctva objektov, kontrola požičiavania premenných (borrow checker), použitie bezpečného kontextu (safe), a vytvorenie rozhraní std2::send a std2::sync. Práca sa tiež týka vytvorenia chránenej verzie štandardnej knižnice, ktorá ponúka implementácie algoritmov a dátových štruktúr, umožňujúcich bezpečne manipulovať s pamäťou.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster