Programmēšana

Sāciet darbu ar Rust Windows programmēšanā

Vai Microsoft varētu pāriet no C, C ++ un C # lietošanas uz citām valodām? Nesenā Microsoft drošības reaģēšanas centra (MSRC) emuāra ziņā tika norādīts, ka tas, iespējams, meklē alternatīvas, lai samazinātu tā koda riskus. Kā MSRC galvenais drošības inženierijas vadītājs Gevins Tomass atzīmēja, ka viens no galvenajiem MSRC ziņoto Microsoft koda kļūdu cēloņiem ir atmiņas bojājums, kļūdas, kas ļauj pārrakstīt atmiņu vai piekļūt aizsargājamai atmiņai.

Droša atmiņa

Atmiņas drošība ilgu laiku ir bijusi nozīmīga problēma, taču MSRC veiktais statistikas darbs rāda, ka problēma nepazūd. Jums ir daudz rīku, kas palīdzēs rakstīt drošu kodu, sākot no paša Microsoft drošās izstrādes dzīves cikla līdz pat jaunāku atmiņā drošu valodu, piemēram, C #, lietošanai. Bet šīm pieejām ir kompromisi: kods, ko tās rada, ir lēnāks un darbojas augstākā līmenī nekā C ++.

Tas nav problēma ar kodu, kas vērsts uz klientu. Uztveres atšķirības starp C ++ - develoepd lietotāja pieredzi un iebūvēto C # nav. Bet sistēmas līmenī, kodā, ko izmanto operētājsistēmu un ierīču draiveru veidošanai, ir liela atšķirība. Procesora cikliem ir nozīme, ja strādājat sistēmas līmenī, un, kā Tomass savā emuāra ziņā norāda, tādas neaizsargātas valodas kā C ++ un C patiešām ir vienīgie rīki, kas vēsturiski darbojas šajā līmenī.

Ir skaidrs, ka atmiņā drošas pieejas, ko izmanto augstāka līmeņa valodas, nedarbojas sistēmas līmenī. Daudzas no problēmām, kas skāra Microsoft abortīvo Longhorn projektu, radās, mēģinot izveidot .NET platformā veselu OS. Tātad, kā mēs varam nodrošināt atmiņas drošību sistēmas attīstības pamatos?

Iepazīstinām ar Rūsu

Atbilde nāk ar jaunas paaudzes sistēmu programmēšanas valodām, piemēram, Go un Rust, valodām, kurām ir atmiņā drošs .Net dizains ar ātrumu C un C ++. Microsoft jau plaši izmanto Go Azure, jo tā ir Kubernetes valoda. Bet šīs pieejas vēl nav sasniegušas Windows, kur C ++ joprojām ir sistēmu programmēšanas karalis.

Savā emuāra ziņā Tomass izvirza argumentu par Mozilla Rust izmantošanu kā drošu sistēmu valodu operētājsistēmai Windows. Tas ir interesants ieteikums, un tas jau ir ieguvis vienu lielu pierādījumu par labu: Valodas dizainers Mozilla to jau izmanto jaunākajos tīmekļa pārlūkprogrammas izlaidumos, kur tas nodrošina Mozilla pašreizējās un nākamās paaudzes renderēšanas dzinējus. Citi lielie Rust lietotāji ietver JavaScript moduļa krātuvi NPM, Dropbox un Oracle. Pat Microsoft to jau izmanto, dažos Azure IoT Edge rīkos ir Rust kods.

Windows Rust izstrādes vides iestatīšana

Acīmredzama vieta, kur sākt ar Rust izstrādi, ir Visual Studio Code. Savā paplašinājumu tirgū varat atrast vairākus paplašinājumus, kas instalē valodas serveri Rust un kuriem tiek nodrošināts pilns valodas atbalsts, kā arī rīkus Rust lietojumprogrammu veidošanai no Visual Studio koda. Esmu izmantojis oficiālo Rust paplašinājumu no Rust valodu komandas. Citi rīki nodrošina atbalstu koda fragmentiem, lai sāktu attīstību, kā arī papildu atkļūdošanas un pārbaudes rīkus. Jūsu kodam ir pat rīki ēkas dokumentācijai. Ir vērts instalēt paplašināšanas paketi Rust kā daļu no jūsu Visual Studio Code Ruse vides, jo tas papildina papildu rīkus darbam ar paša Rust izstrādes rīkiem.

Vispirms jums jāinstalē Rust kompilators un Cargo pakotņu pārvaldnieks. Oficiālā Rust instalēšanas vietne noteiks jūsu izmantoto Windows versiju un nodrošinās atbilstošu lejupielādi. Ir pat instrukcijas, kā instalēt Rust Windows apakšsistēmā Linux (WSL), ja izmantojat WSL kā daļu no Unix izstrādes rīku ķēdes. Palaidot Rustup instalēšanas programmu, tiek lejupielādēti valodas komponenti un iestatīts Windows CELS. Jūs saņemat iespēju pielāgot instalēšanu, taču praksē vislabāk ir pieņemt noklusējumus.

Izpratne par rūsu un atmiņas drošību

Ja esat ieprogrammējis C vai C ++, pāreja uz Rust ir samērā vienkārša. Valodās ir daudz līdzību, lai gan tas ir Rust īpašumtiesību jēdziens, kas padara to drošu atmiņā. Īpašumtiesības ļauj Rust pārvaldīt mainīgo darbības jomu, ļaujot tiem būt derīgiem tikai darbības jomā. Ja tie netiek izmantoti, tie nav atmiņā. Daži mainīgie ir burtiski, nemaināmas vērtības, kas kodēti kodētas jūsu kodā. Bet sarežģītāki mainīgo tipi var pieprasīt atmiņu, kad tie ir iestatīti - process, kas citās daudzās valodās prasa skaidri piešķirt atmiņu un pēc tam atbrīvot to, kad mainīgais vai objekts vairs nav vajadzīgs. Rūss to automatizē, apstrādājot atmiņas lietojumu kā daļu no tā darbības jomas pārvaldības.

Mozilla komanda, kas izveidoja Rust, ir dziļi domājusi par atmiņas drošību un kompromisiem, kas var notikt drošā vidē. Rezultāts ir droša un ātra valoda ar rīkiem, kas pārvalda gan atmiņas krājumus, gan kaudzes. Vērtības piešķiršana funkcijai maina tās īpašumtiesības, pārvietojot to no vienas darbības jomas uz citu; līdzīgs process pārvalda vērtības, kas tiek atgrieztas no funkciju izsaukuma.

Īpašumtiesības ir sarežģīts jēdziens, taču tas ir svarīgs. Tas aizsargā atmiņu un ļauj to mainīt tikai funkcijām, kurām pieder vērtība, pat ja izmantojat atsauci uz mainīgo. Tā kā Rust atsauci uzskata par mainīgā aizņēmumu, mēģinot to modificēt, radīsies tikai kļūda, ja vien jūs to nepaziņosit par mainīgu.

Rūsas nākotne sistēmā Windows

Ir svarīgi atcerēties, ka rūsa joprojām ir jauna valoda, un daudz kas no tā, ko jūs uzskatāt par pašsaprotamu Windows izstrādē, nav pieejams. Nav tiešas integrācijas ar Win32 vai citiem galvenajiem Windows SDK, un, neinstalējot papildu bibliotēkas, jūs neatradīsit nekādu atbalstu Windows GUI rīkiem. Tomēr tas nav tik liels jautājums, kā jūs domājat: Rūss, tāpat kā Go, ir sistēmu programmēšanas valoda. Tas ir zema līmeņa rīks, ātrs un drošs. Tas padara to ideāli piemērotu celtniecības kodam, kas manipulē ar jūsu datiem, skaitļu griešanai un masīvu apstrādei. Tā vietā, lai izmantotu C ++ rutīnas, kurās strādājat ar lielu atmiņas apjomu, izmantojiet Rust, samazinot ar atmiņas bojājumiem saistīto risku.

Ja jūs vēlaties izstrādāt GUI lietojumprogrammas Rust, jums ir iespēja izmantot vienu no vairākām UI bibliotēkām. Varbūt visvieglāk ir izmantot Kiss-ui, kas atbalsta gan Windows, gan Linux GUI izstrādi ar Win32 API piekļuvi, kā arī atbalstu starpplatformu GTK. Citas bibliotēkas pievieno dziļāku Win32 API atbalstu.

Pat ja Microsoft nebeidzas tieši atbalstīt Rust, ir daudz kopienas atbalsta. Lai gan pilnas rīku ķēdes salikšana joprojām var būt jautājums par dažādu nepieciešamo elementu izvēli un to instalēšanai izmantot tādus rīkus kā Rustup, šķiet, ka Visual Studio koda paplašinājumu un paplašinājumu pakotņu ierašanās ir vienkāršota. Regulāri atjauninājumi liecina, ka tas ir ļoti aktīvs projekts, kurā strādā Rust komanda un daudzi trešo pušu līdzautori.

Atmiņā drošo valodu izmantošanas pamatprincips ir svarīgs, un noteikti ir labi redzēt, kā MSRC cilvēki risina problēmu. Kamēr nav oficiāli izlaista atmiņā droša zema līmeņa sistēmu programmēšanas valoda, noteikti ir vērts kārtējo reizi piešķirt Rust. Ja Microsoft to izvēlas, jūs būsiet krietni priekšā spēlei.

Ārpus Windows Rust ir WebAssemble izstrādes galvenā valoda, un tam vajadzētu palīdzēt piegādāt daudz jaudīgākas tīmekļa lietojumprogrammas gaidāmajā ar Edium Chromium darbināmajā laidienā - vēl viens iemesls, kāpēc tas uzmanīgi jāizskata.

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