Programovanie

Začnite s programom Rust v programovaní systému Windows

Môže Microsoft prejsť z používania jazyka C, C ++ a C # na iné jazyky? Nedávny blogový príspevok z centra Microsoft Security Response Center (MSRC) naznačil, že by sa mohli hľadať alternatívy s cieľom znížiť riziká pre jeho kód. Ako Gavin Thomas, hlavný manažér bezpečnostného inžinierstva v MSRC, poznamenal, že jednou z hlavných príčin chýb v kóde Microsoft nahlásených MSRC je poškodenie pamäte, chyby, ktoré umožňujú prepísanie pamäte alebo prístup k chránenej pamäti.

Udržiavanie pamäti v bezpečí

Bezpečnosť pamäte bola dlho významným problémom, ale štatistická práca vykonaná MSRC ukázala, že problém nezmizne. Máte veľa nástrojov, ktoré vám pomôžu pri písaní zabezpečeného kódu, od vlastného životného cyklu zabezpečeného vývoja spoločnosti Microsoft až po používanie novších jazykov bezpečných pre pamäť, ako je C #. Ale tieto prístupy majú svoje kompromisy: Kód, ktorý produkujú, je pomalší a funguje na vyššej úrovni ako C ++.

To nie je problém pre kód orientovaný na zákazníka. Medzi užívateľskou skúsenosťou C ++ - vývojovou a postavenou v C # nie je žiadny percepčný rozdiel. Ale systémová úroveň, kód používaný na zostavenie operačných systémov a ovládačov zariadení, je veľký rozdiel. Procesorové cykly sú dôležité, keď pracujete na systémovej úrovni. Ako zdôrazňuje Thomas vo svojom blogu, nechránené jazyky ako C ++ a C sú skutočne jediné nástroje, ktoré na tejto úrovni historicky fungujú.

Je zrejmé, že prístupy bezpečné z pamäte používané v jazykoch vyšších úrovní nefungujú na systémovej úrovni. Mnoho problémov, ktoré trápili neúspech projektu Longhorn od spoločnosti Microsoft, bolo spôsobených pokusom o vybudovanie celého OS na platforme .NET. Ako teda môžeme priniesť bezpečnosť pamäte na základy vývoja systému?

Predstavujeme Rust

Odpoveď prichádza s novou generáciou systémových programovacích jazykov, ako sú Go a Rust, jazyky, ktoré majú pamäťovo bezpečný dizajn .Net s rýchlosťou C a C ++. Spoločnosť Microsoft už Go intenzívne používa v Azure, pretože je to jazyk, v ktorom je napísaný Kubernetes. Tieto prístupy sa však zatiaľ nedostali do systému Windows, kde je C ++ stále kráľom programovania systémov.

Vo svojom blogovom príspevku Thomas argumentuje tým, že používa Mozilla’s Rust ako bezpečný systémový jazyk pre Windows. Je to zaujímavý návrh, ktorý už získal jeden veľký dôkaz v jeho prospech: Jazykový dizajnér Mozilla ho už používa vo svojich najnovších vydaniach webových prehľadávačov, v ktorých poháňa súčasné a nasledujúce generačné motory Mozilly. Medzi ďalších veľkých používateľov Rust patrí úložisko modulov JavaScript, NPM, Dropbox a Oracle. Už ho používa aj Microsoft, pričom v niektorých svojich nástrojoch Azure IoT Edge má Rust kód.

Nastavenie vývojového prostredia Windows Rust

Zjavným miestom, kde začať s vývojom Rustu, je Visual Studio Code. Na jeho trhu s rozšíreniami nájdete niekoľko rozšírení, ktoré inštalujú server jazykov Rust a ktoré majú úplnú jazykovú podporu a tiež nástroje na vytváranie aplikácií Rust z Visual Studio Code. Používal som oficiálne rozšírenie Rust od jazykového tímu Rust. Ostatné nástroje poskytujú podporu pre útržky kódu na naštartovanie vývoja, ako aj ďalšie ladiace a testovacie nástroje. Pre váš kód existujú dokonca aj nástroje na dokumentáciu budov. Stojí za to nainštalovať si rozširujúci balík Rust ako súčasť vášho prostredia Visual Studio Code Ruse, pretože to pridáva ďalšie nástroje na prácu s vlastnými vývojovými nástrojmi spoločnosti Rust.

Najprv musíte nainštalovať kompilátor Rust a správcu balíkov Cargo. Oficiálna stránka inštalácie Rust zistí verziu systému Windows, ktorú používate, a poskytne príslušné stiahnutie. Existujú dokonca aj pokyny na inštaláciu Rustu na Windows Subsystem for Linux (WSL), ak používate WSL ako súčasť reťazca vývojových nástrojov Unixu. Spustenie inštalátora Rustup stiahne jazykové komponenty a nastaví Windows CESTA. Máte možnosť prispôsobiť si inštaláciu, ale v praxi je najlepšie prijať predvolené hodnoty.

Pochopenie bezpečnosti proti hrdzi a pamäti

Ak ste naprogramovali C alebo C ++, prechod na Rust je pomerne jednoduchý. Medzi jazykmi existuje veľká podobnosť, aj keď vďaka Rustovej koncepcii vlastníctva je pamäť bezpečná. Vlastníctvo umožňuje Rustovi spravovať rozsah premenných, čo im umožňuje platiť iba vtedy, keď sú v rozsahu. Ak sa nepoužívajú, nie sú v pamäti. Niektoré premenné sú literály, nemenné hodnoty pevne naprogramované do vášho kódu. Zložitejšie typy premenných však môžu vyžadovať pamäť, keď sú nastavené. Proces, ktorý v mnohých iných jazykoch vyžaduje, musíte explicitne vyhradiť pamäť a potom ju uvoľniť, keď už premenná alebo objekt nie sú potrebné. Rust to automatizuje a využitie pamäte spracováva ako súčasť svojej správy rozsahu.

Tím spoločnosti Mozilla, ktorý vytvoril Rust, sa hlboko zamyslel nad bezpečnosťou pamäte a kompromismi, ktoré sa môžu stať v bezpečnom prostredí. Výsledkom je jazyk, ktorý je bezpečný a rýchly, s nástrojmi, ktoré spravujú hromadné pamäte aj hromady. Priradením hodnoty funkcii sa zmení jej vlastníctvo a presunie sa z jedného rozsahu do druhého; podobný proces spravuje hodnoty, ktoré sa vrátia z volania funkcie.

Vlastníctvo je komplexný koncept, ale je dôležitý. Chráni pamäť a umožňuje jej meniť iba funkcie, ktoré vlastnia hodnotu, a to aj v prípade, že používate odkaz na premennú. Pretože Rust zaobchádza s referenciou ako s požičiavaním premennej, pokus o jej úpravu vygeneruje iba chybu, pokiaľ ju nevyhlásite za premenlivú.

Budúcnosť systému Rust v systéme Windows

Je dôležité mať na pamäti, že Rust je stále mladý jazyk a veľa z toho, čo vo vývoji Windows považujete za samozrejmosť, tu nie je. Neexistuje žiadna priama integrácia s Win32 alebo inými základnými sadami Windows SDK a nenájdete žiadnu podporu pre nástroje grafického používateľského rozhrania Windows bez inštalácie ďalších knižníc. To však nie je až taký problém, ako si možno myslíte: Rust, rovnako ako Go, je programovací jazyk systémov. Je to nástroj na nízkej úrovni, rýchly a bezpečný. To je ideálne riešenie pre zostavovanie kódu, ktorý manipuluje s vašimi údajmi, kritickým počtom čísel a spracovaním polí. Namiesto toho, aby ste pri práci s veľkým množstvom pamäte používali rutiny C ++, použite namiesto toho Rust, aby ste znížili riziko spojené s poškodením pamäte.

Ak chcete vyvíjať aplikácie GUI v Ruste, máte možnosť použiť jednu z niekoľkých knižníc používateľského rozhrania. Asi najjednoduchšie je použitie Kiss-ui, ktoré podporuje vývoj grafického používateľského rozhrania pre Windows aj Linux, s prístupom k Win32 API a podporou cross-platform GTK. Ostatné knižnice pridávajú hlbšiu podporu rozhrania Win32 API.

Aj keď spoločnosť Microsoft neskončí s podporou Rusta priamo, existuje veľa podpory pre komunitu. Aj keď zostavenie celého reťazca nástrojov môže byť stále otázkou výberu rôznych prvkov, ktoré potrebujete, a použitia nástrojov, ako je Rustup, na ich inštaláciu, zdá sa, že príchod rozšírení a balíkov rozšírení Visual Studio Code zjednodušuje postup. Pravidelné aktualizácie ukazujú, že sa jedná o veľmi živý projekt, na ktorom pracuje tím Rust a množstvo prispievateľov tretích strán.

Základný princíp používania jazykov bezpečných v pamäti je dôležitý a je určite dobré vidieť ľudí, ktorí sa na MSRC zaoberajú týmto problémom. Až do oficiálneho vydania programovacieho jazyka nízkoúrovňových systémov bezpečného v pamäti určite stojí za to dať Rustovi jednu správu. Ak sa to Microsoft rozhodne, budete v dostatočnom predstihu pred zápasom.

Mimo Windows je Rust kľúčovým jazykom pre vývoj WebAssembly a mal by pomôcť dodať oveľa výkonnejšie webové aplikácie v nadchádzajúcom vydaní Edge pre Chrome - ďalší dôvod na dôkladný pohľad.

$config[zx-auto] not found$config[zx-overlay] not found