Ohjelmointi

Ruosteen opetusohjelma: Aloita Rust-kielen käyttö

Viimeisten parin vuoden aikana Rust on siirtynyt Mozillan työntekijän laboratoriossa syntyneestä uteliaisuudesta vahvaksi kilpailijaksi uuden sukupolven natiivisovellusten ja paljasmetalliratkaisujen kirjoittamiseen. Mutta nämä edistykset tulevat siitä, että Rust tarjoaa oman työkaluketjun ja komponenttienhallintajärjestelmän - omien ominaisuuksiensa ja omituisuutensa ohella.

Tässä artikkelissa käydään läpi perusteet työympäristön luomiseen Rustiin, IDE: n määritykseen ja Rustin tarjoaman työkalusarjan hyödyntämiseen parhaalla mahdollisella tavalla.

Liittyvä video: Turvallisempien ohjelmistojen kehittäminen Rustin kanssa

Nopea nopeasti uudella tulokkaalla Rust, joka on suunniteltu luomaan nopeita, järjestelmätason ohjelmistoja. Tämä kahden minuutin animoitu selitin osoittaa, kuinka Rust ohittaa muistin ja hallinnan tuskalliset ohjelmointikysymykset.

Ymmärrä Rustin öiset, beeta- ja vakaat julkaisut

Rustin työkaluketju koostuu pääasiassa Rust-kääntäjästä, ruostesekä työkalut Rust-asennuksen hallintaan. Koska Rustia kehitetään jatkuvasti, Rust-työkaluketju on suunniteltu olevan helppo pitää ajan tasalla.

Ohjelmistoprojektit toimitetaan usein useiden kanavien kautta koodin vakaan ja beta-version erottamiseksi. Rustin työkaluketju toimii samalla tavalla ja tarjoaa työkaluketjulleen kolme kanavaa:

  • Vakaa: Suurimmat pistepäästöt, jotka ilmestyvät noin kuuden viikon välein.
  • Beeta: Ehdokkaat seuraavaan suurempaan piste-julkaisuun, joka nousee esiin useammin.
  • Iltaisin: Välittömin rakenne, jolla on pääsy uusimpiin ominaisuuksiin, mutta ei takuita niiden vakaudesta.

Kuten kehittäjä Karol Kuczmarski on huomauttanut, on parasta ajatella joka ilta Rust-kanavaa omana kielenä. Jotkut Rust-ominaisuudet, kuten kääntäminen WebAssemble -palveluun, ovat käytettävissä vain yökanavalla, ja ne voidaan aktivoida vain erityisillä kääntäjädirektiiveillä. Toisin sanoen he eivät edes koosta beeta- tai vakailla kanavilla.

Se on suunniteltu, koska ei ole takeita siitä, että yön ominaisuuksia tuetaan missään muualla. Monet näistä ominaisuuksista siirtyvät kuitenkin lopulta yökanavalta beta- ja vakaisiin julkaisuihin. (Esimerkiksi WebAssemble-kokoelma toimii vakaasti Rust 1.30: sta lähtien.)

Lyhyesti:

  1. Käyttää vakaa todelliseen tuotantotyöhön.
  2. Käyttää beeta testata nykyisiä ohjelmistoja tuleviin versioihin nähden, onko päivityksessä mahdollista rikkoa mitään.
  3. Käytä vain iltaisin hiekkalaatikkokokeisiin Rustin uusimpien ominaisuuksien kanssa.

Valitse käyttöjärjestelmä Rust-kehitykseen

Rust tukee kaikkia kolmea pääalustaa - Windows, Linux ja MacOS - sekä 32- että 64-bittisissä inkarnaatioissa, ja kullekin on viralliset binäärit. Joillakin muilla alustoilla on myös virallisia binäärejä, mutta niillä ei ole samanlaista automaattisen testauksen kattavuutta. Näihin toisen luokan alustoihin kuuluvat ARMv6 ja ARMv7 iOS: lle, Androidille ja Linuxille; MIPS Linux ja MIPS64 Linux; X86: n iOS, Windows ja Linux 32-bittiset versiot; ja WebAssembly. Muita alustoja, kuten Windows XP tai kokeellinen HaikuOS, tuetaan epävirallisilla koontiversioilla.

Rustin kehitystiimi on todennut, että se ei kuulu Rustin tehtäviin olla mahdollisimman laaja kannettava. Esimerkiksi, vaikka Rustia on saatavana monissa ARM-arkkitehtuureissa, ei voida taata, että Rustia tuetaan virallisesti alhaisimmilla laitteistoalustoilla.

Siitä huolimatta suurimmalle osalle tavallisista yleiskäyttötapauksista - 32- ja 64-bittisille Windows-, Linux- ja MacOS-käyttöjärjestelmille - tulisi olla tuettu Rust-rakennelma.

Jos aiot kehittää Rustia Windowsissa, pidä työkaluketjut mielessä. Rust tukee kahta työkaluketjua Windowsissa:

  • Natiivi Microsoft Visual C (MSVC) ABI
  • GCC-linkkimen käyttämä Gnu ABI.

Koska melkein kaikki Windowsin sisäänrakennetut C / C ++ -ohjelmistot käyttävät joka tapauksessa MSVC: tä, sinun kannattaa käyttää suurimman osan ajasta MSVC-työkaluketjua. Jos tarvitset joskus GCC: tä, se on todennäköisesti tarkoitettu yhteistyöhön kolmansien osapuolten kirjastojen kanssa, jotka on rakennettu Windowsiin GCC: n kanssa.

Hyvä uutinen on, että Rustin työkaluketjun hallintajärjestelmän avulla voit pitää molemmat MSVC: n ja GCC-työkaluketjut on asennettu, ja sen avulla voit vaihtaa niiden välillä projektikohtaisesti.

Yksi Rustin kokoamiskohteista on WebAssembly, mikä tarkoittaa, että voit kirjoittaa Rustiin ja käyttää verkkoselainta. WebAssembly itsessään on edelleen karkea reunojen ympäri, samoin kuin Rustin tuki sille. Mutta jos olet kunnianhimoinen ja haluat saada kädet sotkuisiksi, lue Rustin ja WebAss Assemblyn kehittäjien laatima kirja, jossa kerrotaan yksityiskohtaisesti WebAss Assemblyn Rust-kokoonpanosta. Kirja sisältää opastuksen yksinkertaiselle projektille, Conway's Game of Life -sovelluksen toteutuksen, joka on kirjoitettu Rustiin ja joka on otettu käyttöön WebAssembly-nimisenä.

Aloita Rust-määritys ruostuminen

Rust tarjoaa all-in-one-asennusohjelman ja työkaluketjun ylläpitojärjestelmän nimeltä ruostuminen. ladata ruostuminen ja aja sitä; se hankkii Rust-työkaluketjun uusimmat versiot ja asentaa ne sinulle.

Kriittisimmät työkalut, joita ylläpitää ruostuminen ovat:

  • ruostuminen itse. Aina uusia versioita ruostuminen tai muita työkaluja on julkaistu, voit vain suorittaa ruostepäivitys ja päivitä kaikki automaattisesti.
  • ruoste, Rust-kääntäjä.
  • Cargo, Rustin paketti- ja työtilan hallinta.

Oletuksena, ruostuminen asentaa Rust vakaan kanavan. Jos haluat käyttää beeta- tai öisiä versioita, sinun on asennettava nuo kanavat (esimerkiksirustup asentaa joka ilta), ja aseta Rust käyttämään niitä oletuksena (ruostuminen oletuksena joka ilta). Voit myös määrittää manuaalisesti kanavan, jota käytetään Rust-sovellusta koottaessa, joten sinun ei tarvitse asettaa ja palauttaa oletusasetuksia aina, kun siirryt projektista toiseen.

Voit myös käyttääruostuminen mukautettujen työkaluketjujen asentamiseksi ja ylläpitämiseksi. Näitä käyttävät tyypillisesti epäviralliset, kolmannen osapuolen Rust-versiot tukemattomille alustoille, koska ne edellyttävät tyypillisesti omia linkkejä tai muita alustakohtaisia ​​työkaluja.

Määritä IDE ruostetta varten

Huolimatta siitä, että Rust on suhteellisen uusi kieli, se on jo saanut vahvaa tukea monilta tavallisilta IDE-käyttäjiltä. Kehittäjä Manuel Hoffman ylläpitää projektia tuen tilan seuraamiseksi verkkosivustolla areweideyet.com.

Rustin saaminen toimimaan hyvin IDE: n kanssa on sen kehitystiimin selkeä tavoite Rust Language Server (RLS) -ominaisuuden kautta. RLS tarjoaa reaaliaikaista palautetta kyseisestä koodista Rustin omalta kääntäjältä, eikä kolmannen osapuolen jäsentäjältä.

Tässä ovat IDE: t, jotka tukevat Rustia:

  • Microsoftin Visual Studio -koodilla on Rust-kielen tukilaajennus, jonka on luonut Rustin oma kehitystyökalutiimi. Tämän tason integraatio tekee siitä yhden Rustin parhaiten tuetuista IDE: stä.
  • Eclipse-käyttäjät voivat ladata valmiiksi pakatun version Eclipse for Rust -kehityksestä tai käyttää erillistä Corrosion-laajennusta Eclipse Photon -ohjelmaan. (Aikaisempaa pakettia, RustDT, ei enää ylläpidetä.)
  • Jos olet Emacsin tai Vimin fani, muut kaltaiset kehittäjät ovat kirjoittaneet Rust-kohtaiset lisäosat molemmille toimittajille. Emacsilla on ruostekohtainen tila, ja Vimillä on laajennus syntaksin korostamiseksi ja muotoilemiseksi. RLS-tuki on käytettävissä sekä Emacsille että Vimille, mutta se on lisättävä ja määritettävä manuaalisesti.
  • IntelliJ Idea- ja Atom-käyttäjät voivat lisätä laajennuksia Rust-tuen täydentämiseksi.
  • Sublime Textillä on Rust-syntaksituki laatikosta, ja laajennukset tarjoavat syvemmän tuen muille ominaisuuksille.
  • Projektia yksinkertaisen IDE: n luomiseksi erityisesti Rustille, SolidOak, kehitettiin jonkin aikaa, mutta se on sittemmin pysähtynyt. Paras veto on mennä sellaisen olemassa olevan IDE: n kanssa, jolla on jo tukea.

Luo ensimmäinen Rust-projekti

Rustoprojekteilla on tarkoitus olla johdonmukainen hakemistorakenne, johon koodit ja projektin metatiedot on tallennettu tietyillä tavoilla. Koodi on tallennettu a src alihakemisto ja yksityiskohdat projektista tallennetaan kahteen tiedostoon projektin juurihakemistoon,Cargo.toml (hankkeen perustiedot) ja Rahti. Lukko (automaattisesti luotu luettelo riippuvuuksista). Voit luoda kyseisen hakemistorakenteen ja metatiedot käsin, mutta on helpompaa käyttää vain Rustin omia työkaluja työn tekemiseen.

Kärki:Rust by Example -opas Rustin oppimiseen tarjoaa interaktiivisia koodinäytteitä, joita voidaan muokata ja suorittaa suoraan selaimessa. Se koskettaa melkein jokaista suurta Rust-käsitettä, vaikka jotkut tärkeimmistä käsitteistä, kuten lainanotto ja käyttöajat, esitellään suhteellisen myöhään keskustelussa.

Rust's Cargo -työkalu hallitsee sekä Rust-projekteja että niiden käyttämiä kirjastoja tai laatikoita. Kehittää uusi Rust-projekti nimeltä minun projektini kirjoita omaan hakemistoonsa lasti uusi my_project. (Cet-kehittäjille, jotka työskentelevät .Net Core -sovelluksen kanssa, ajattele dotnet uusi -komento.) Uusi projekti näkyy alihakemistossa, jolla on sama nimi, yhdessä perusprojektiluettelon - Cargo.toml tiedosto - ja tynkä projektin lähdekoodille, a src alihakemisto.

Kun luot uuden projektin, amain.rs tiedosto luodaan automaattisesti src projektin hakemisto. Tämä tiedosto sisältää "Hello world" -sovelluksen, joten voit testata Rust-työkaluketjuasi heti kääntämällä ja suorittamalla sen.

"Hello world" -sovelluksen lähdekoodi:

fn main () {

println! (“Hei maailma!”);

}

Voit rakentaa ja suorittaa sen kirjoittamalla projektihakemiston juuren ja kirjoittamalla lastiajo. Huomaa, että Cargo rakentaa oletuksena projektit virheenkorjaustilassa. Suorita vapautustilassa käyttämällä lastiajo - julkaisu. Binaarit on rakennettu kohde / virheenkorjaus tai kohde / vapauta projektin alihakemisto sen mukaan, mitä kokoamisprofiilia käytät.

Työskentele ruostelaatikoiden kanssa

Pakettien hallinta on keskeinen osa modernia ohjelmointiympäristöä. Tätä varten Rust tarjoaa "laatikoita", jotka ovat kolmannen osapuolen kirjastoja, jotka on pakattu jaettavaksi Rustin työkaluilla. Löydät laatikot virallisesta Rust-pakettirekisteristä, Crates.io.

Jos projektisi riippuu tietystä laatikosta, sinun on määritettävä kyseinen laatikko muokkaamalla projektia Cargo.toml tiedosto. Tavallinen tapa tehdä tämä on manuaalisesti eli yksinkertaisesti muokkaamalla Cargo.toml suoraan tekstieditorilla. Seuraavan kerran, kun projekti rakennetaan uudelleen, Rust hankkii tarvittavat riippuvuudet automaattisesti.

Kärki: Kaksi työkalua, lastin muokkaus ja lasti-muokkaa-paikallisesti, voi päivittää riippuvuudet komentoriviltä, ​​vaikka ne ovat epävirallisia kolmannen osapuolen projekteja.

Kun rakennat ulkoisista laatikoista riippuvan Rust-projektin, Cargo etsii oletusarvoisesti Crates.io: sta. sinun ei tarvitse hankkia niitä manuaalisesti. Voit myös viitata projektin laatikoihin URL-osoitteen eikä laatikon nimen mukaan, jos tarvitset laatikkoa, jota ei ole rekisterissä, kuten jotain yksityisestä arkistosta.

Huomaa, että jotkut laatikot ovat vain asentaa ja rakentaa Rustin yökanavalle, koska ne käyttävät kokeellisia ominaisuuksia, joita ei ole saatavana muilla kanavilla. Jos olet julkaisukanavalla ja yrität asentaa tällaisen laatikon, et saa mitään varoitusta, ennen kuin itse kokoaminen epäonnistuu. Laatikkoasiakirjoissa mainitaan yleensä, vaatiiko se yökanavan vai ei, joten lue ennen sisällyttämistä, puhumattakaan kääntämisestä.

Laatikoihin voi tulla binäärejä. Jotkut ovat komentorivityökaluja, joita käytetään Rust-kehityksessä; toiset ovat yleiskäyttöisiä työkaluja (kutenripgrep). Kirjoita yksi näistä laatikoista vain kirjoittamalla lastin asennus . Tämä ei ole vain tapa levittää Rustilla luotua binaaria, mutta se on kätevä tapa Rustin kehittäjille hankkia ne osana Rust-työkaluja sisältävää työnkulkua.

Risti käännä Rust toiselle alustalle

Koska Rust tukee useita työkaluketjuja, jopa samassa Rust-asennuksessa, voit kääntää Rust-sovellukset kohde-käyttöjärjestelmään ja ympäristöön, joka poikkeaa niistä, joissa käännät.

Tällainen ristikokoaminen vaatii työskentelyalustalla työkaluketjun, joka vastaa kohdealustaa. Joskus, kuten ristikääntämisen yhteydessä Linuxiin Windowsissa tai päinvastoin, tämä tarkoittaa vain vähän enemmän kuin GCC-linkittimen käyttöä. Mutta muina aikoina se on monimutkaisempi. Esimerkiksi ristikokoamiseen MacOS: iin tarvitaan työn viimeistelyyn Xcode IDE -kirjastot - cctools (Applen vastaava binutils) ja MacOS SDK.

Kolmannen osapuolen työkalut tarjoavat joitain tapoja kiertää nämä vaikeudet:

  • Yksi tällainen työkalu on Trust, Travis CI ja AppVeyor -malli, joka voi automaattisesti julkaista Rust-projektin binaarijulkaisut. Se voidaan rakentaa Linuxille, Windowsille ja MacOS: lle, vaikka se vaatii Travis CI- ja AppVeyor-palvelujen käyttöä ja vaatii projektisi isännöimän GitHubissa.
  • Toinen projekti, Cross, toimii suoraan 64-bittisellä x86 Linux -isännällä, mutta tarjoaa sen luojan kuvaaman "nollakokoonpanon" ristikokoamisen monille erilaisille kohteille, mukaan lukien 64-bittinen Windows ja MIPS.
  • Ristirakennushanke tarjoaa moniarkkitehtuurisen Docker-kuvan, jota voidaan käyttää rakentamiseen kaikkien kolmen tärkeimmän alustan välillä.