Programování

Začněte s programováním Rust v programování Windows

Mohl by Microsoft přejít z používání jazyka C, C ++ a C # do jiných jazyků? Nedávný blogový příspěvek z Microsoft Security Response Center (MSRC) naznačil, že by se mohlo dobře dívat na alternativy s cílem snížit rizika pro jeho kód. Jak poznamenal Gavin Thomas, hlavní manažer bezpečnostního inženýrství v MSRC, jednou z hlavních příčin chyb v kódu Microsoft hlášených MSRC je poškození paměti, chyby, které umožňují přepsání paměti nebo přístup k chráněné paměti.

Udržování paměti v bezpečí

Bezpečnost paměti byla po dlouhou dobu významným problémem, ale statistická práce prováděná MSRC ukazuje, že problém nezmizí. Máte spoustu nástrojů, které vám pomohou psát zabezpečený kód, od vlastního životního cyklu zabezpečeného vývoje společnosti Microsoft až po používání novějších jazyků bezpečných pro paměť, jako je C #. Ale tyto přístupy mají svá kompromisy: Kód, který produkují, je pomalejší a funguje na vyšší úrovni než C ++.

To není problém pro zákaznický kód. Mezi uživatelským zážitkem C ++ - develoepd a postaveným v C # není žádný vnímavý rozdíl. Ale systémová úroveň, kód používaný k vytváření operačních systémů a ovladačů zařízení, je velký rozdíl. Procesorové cykly jsou důležité, když pracujete na systémové úrovni, a jak Thomas ve svém příspěvku na blogu zdůrazňuje, nechráněné jazyky jako C ++ a C jsou skutečně jedinými nástroji, které na této úrovni historicky fungují.

Je jasné, že přístupy bezpečné pro paměť používané jazyky vyšších úrovní nefungují na systémové úrovni. Mnoho problémů, které trápily neúspěšný projekt společnosti Longhorn společnosti Microsoft, bylo způsobeno pokusem o vybudování celého operačního systému na platformě .NET. Jak tedy můžeme přinést bezpečnost paměti na základy vývoje systému?

Představujeme Rust

Odpověď přichází s novou generací systémových programovacích jazyků, jako jsou Go a Rust, jazyky, které mají paměťově bezpečný design .Net s rychlostí C a C ++. Microsoft již v Azure intenzivně používá Go, protože je to jazyk, ve kterém je napsán Kubernetes. Tyto přístupy se však dosud nedostaly do Windows, kde je C ++ stále králem programování systémů.

Ve svém příspěvku na blogu Thomas argumentuje tím, že používá Mozillův Rust jako bezpečný systémový jazyk pro Windows. Jedná se o zajímavý návrh, který již má jeden velký důkaz ve svůj prospěch: Jazykový designér Mozilla jej již používá ve svých nejnovějších vydáních webových prohlížečů, kde pohání současné i příští generace vykreslovacích modulů Mozilly. Mezi další velké uživatele Rust patří úložiště modulů JavaScriptu NPM, Dropbox a Oracle. I Microsoft ji již používá, s Rust kódem v některých svých nástrojích Azure IoT Edge.

Nastavení vývojového prostředí Windows Rust

Zjevné místo, kde začít s vývojem Rustu, je Visual Studio Code. Na jeho trhu s rozšířeními najdete několik rozšíření, která instalují Rust Language Server a která přicházejí s plnou jazykovou podporou a také s nástroji pro vytváření vašich Rust aplikací z Visual Studio Code. Používal jsem oficiální rozšíření Rust od jazykového týmu Rust. Jiné nástroje poskytují podporu pro fragmenty kódu, které mají zahájit vývoj, a také další nástroje pro ladění a testování. K vašemu kódu existují dokonce i nástroje pro dokumentaci budov. Stojí za to nainstalovat balíček rozšíření Rust jako součást vašeho prostředí Visual Studio Code Ruse, protože to přidává další nástroje pro práci s vlastními vývojovými nástroji Rust.

Nejprve musíte nainstalovat kompilátor Rust a správce balíků Cargo. Oficiální web instalace Rust zjistí verzi systému Windows, kterou používáte, a poskytne příslušné stažení. Existují dokonce i pokyny pro instalaci Rustu na Windows Subsystem pro Linux (WSL), pokud používáte WSL jako součást řetězce vývojových nástrojů Unixu. Spuštěním instalačního programu Rustup se stáhnou jazykové komponenty a nastaví se Windows CESTA. Máte možnost přizpůsobit instalaci, ale v praxi je nejlepší přijmout výchozí nastavení.

Pochopení bezpečnosti proti korozi a paměti

Pokud jste naprogramovali C nebo C ++, přechod na Rust je relativně snadný. Mezi jazyky je spousta podobnosti, i když díky Rustově pojetí vlastnictví je paměť bezpečná. Vlastnictví umožňuje Rustovi spravovat rozsah proměnných, což jim umožňuje platit pouze v rozsahu. Pokud se nepoužívají, nemají na paměti. Některé proměnné jsou literály, neměnné hodnoty pevně zakódované do vašeho kódu. Složitější typy proměnných však mohou vyžadovat paměť, když jsou nastaveny, což je proces, který v jiných jazycích vyžaduje, abyste explicitně přidělili paměť a poté ji uvolnili, když proměnná nebo objekt již nejsou potřeba. Rust to automatizuje a využití paměti zpracovává jako součást své správy rozsahu.

Tým společnosti Mozilla, který vytvořil Rust, hluboce přemýšlel o bezpečnosti paměti a kompromisech, ke kterým může dojít v bezpečném prostředí. Výsledkem je jazyk, který je bezpečný i rychlý, s nástroji, které spravují jak zásobníky paměti, tak hromady. Přiřazení hodnoty funkci změní její vlastnictví a přesune ji z jednoho oboru do jiného; podobný proces spravuje hodnoty, které jsou vráceny z volání funkce.

Vlastnictví je komplexní koncept, ale je důležitý. Chrání paměť a umožňuje ji měnit pouze funkcím, které vlastní hodnotu, i když používáte odkaz na proměnnou. Protože Rust považuje referenci za půjčující si proměnnou, pokus o její úpravu vygeneruje pouze chybu, pokud ji neprohlásíte za proměnlivou.

Budoucnost Rust ve Windows

Je důležité si uvědomit, že Rust je stále mladý jazyk a mnoho z toho, co ve vývoji Windows považujete za samozřejmost, tam není. Neexistuje žádná přímá integrace s Win32 nebo jinými základními sadami Windows SDK a bez instalace dalších knihoven nenajdete žádnou podporu pro nástroje Windows GUI. To však není tak velký problém, jak si možná myslíte: Rust, stejně jako Go, je programovací jazyk systémů. Je to nízkoúrovňový nástroj, rychlý a bezpečný. Díky tomu je ideální pro vytváření kódu, který manipuluje s vašimi daty, křupavými čísly a zpracováním polí. Místo rutin C ++, kde pracujete s velkým množstvím paměti, použijte místo toho Rust, čímž snížíte riziko spojené s poškozením paměti.

Pokud chcete vyvíjet aplikace GUI v Rustu, máte možnost použít jednu z několika knihoven uživatelského rozhraní. Snad nejjednodušší použití je Kiss-ui, který podporuje vývoj grafického uživatelského rozhraní Windows i Linux, s přístupem k rozhraní Win32 API a podporou cross-platform GTK. Jiné knihovny přidávají hlubší podporu rozhraní Win32 API.

I když Microsoft neskončí s podporou Rusta přímo, existuje spousta podpory komunity. Zatímco sestavování celého řetězce nástrojů může být stále otázkou výběru různých prvků, které potřebujete, a použití nástrojů, jako je Rustup k jejich instalaci, zdá se, že příchod rozšíření a balíčků sady Visual Studio Code zjednodušuje proces. Pravidelné aktualizace ukazují, že se jedná o živý projekt, na kterém pracuje tým Rust a řada přispěvatelů třetích stran.

Základní princip používání jazyků bezpečných v paměti je důležitý a je jistě dobré vidět lidi, kteří se na MSRC zabývají tímto problémem. Dokud nebude oficiálně vydán programovací jazyk nízkoúrovňových systémů bezpečný pro paměť, rozhodně stojí za to dát Rustovi příležitost. Pokud si to Microsoft zvolí, budete v dostatečném předstihu.

Mimo Windows je Rust klíčovým jazykem pro vývoj WebAssembly a měl by pomáhat dodávat mnohem výkonnější webové aplikace v nadcházejícím vydání Edge založeném na Chromu - další důvod, proč si jej pečlivě prohlédnout.

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