Rust (ohjelmointikieli)

Wikipediasta
Tämä on arkistoitu versio sivusta sellaisena, kuin se oli 29. syyskuuta 2019 kello 11.55 käyttäjän Ipr1 (keskustelu | muokkaukset) muokkauksen jälkeen. Sivu saattaa erota merkittävästi tuoreimmasta versiosta.
Siirry navigaatioon Siirry hakuun
Rust
Paradigma moniparadigma, käännettävä, funktionaalinen, imperatiivinen
Tyypitys staattinen, vahva
Yleinen suoritusmalli käännettävä
Muistinhallinta RAII
Julkaistu 2010
Kehittäjä Graydon Hoare, Rust -projektin kehittäjät
Vakaa versio 1.82.0 ()[1]
Merkittävimmät toteutukset Rust
Vaikutteet C++
Käyttöjärjestelmä Android, FreeBSD, iOS, Linux, macOS, Windows
Verkkosivu Rust Language

Rust on ohjelmointikieli, jonka on kehittänyt Mozilla Foundation.[2]

Rust on suunniteltu suorituskykyiseksi järjestelmätason ohjelmointikieleksi, joka välttäisi tyypillisten C- tai C++-ohjelmien muistinhallintaan liittyvät virhetilat. Sen syntaksi muistuttaa C-kieltä, mutta muuten eroaa siitä ominaisuuksiltaan, sisältäen muun muassa nimiavaruudet, rinnakkainajon, sulkeumat ja tyypinpäättelyn.[3]

Rust on käännettävä kieli, jota kirjoitetaan unicode-merkistöllä.

Ominaisuudet

Rust tarjoaa korkean abstraktiotason kielen ominaisuudet matalalla prosessointitasolla. Rustin päämäärinä ovat turvallisuus, nopeus ja rinnakkaisuus.[4] Rustilla voidaan kirjoittaa käyttöjärjestelmiä, laiteajureita ja se voidaan sulauttaa toisiin ohjelmiin.[4] Tärkeitä alueita rustille ovat myös pelikehitys ja webpalvelut.

Muistinhallinta

Rust ratkaisee muistinhallinnan ongelmat käyttämällä datan omistajan, lainaamisen ja turvattoman (unsafe) käsitteitä.[5] Tämä mahdollistaa automaattista roskienkeruutakin paremmat ominaisuudet: deterministisen muistivapautuksen, ei kilpailutilanteita (data race) ja iteroijien tarkistus (ei muokata ja viitata samanaikaisesti).

Muistinhallinnan käsitteistö

Rust-ohjelmien muistialue koostuu kahdesta alueesta: pino ja keko (stack, heap) – aivan kuten C-kielessäkin. Pinossa olevat muuttujat omistaa joku keossa oleva laatikko (box). Laatikoiden omistamia muuttujia, tavaroita (items), voi vaihdella funktioiden kesken jos ne ovat muuttumattomia (static). Muuttuvien muuttujien (avainsana mut) jakaminen on mahdollista lainaamalla niitä funktioilta tai säikeiltä toisille (borrowing).[5] Nämä ratkaisut mahdollistavat turvallisen rinnakkaisajon ja estävät segmentaatiovirheet, jotka C-kielessä johtuvat luvattomien muistialueiden käsittelystä.

Turvattoman (unsafe) muistihallinnan kautta rust-ohjelmat voivat kommunikoida toisten järjestelmäprosessien ja eri kielellä kirjoitettujen ohjelmien kanssa ilman ristiriitoja, ja tarvittaessa rikkoa omistukseen liittyviä sääntöjä.

Rust Standard Library

RSL sisältää tärkeimmät ominaisuudet ohjelmointia varten. Moduulit sisältävät kirjastoja muistialueiden, primitiivityyppien, kokoelmien ja virheiden käsittelyyn, iterointiin, IO-operaatioihin, säikeistykseen ja prosessien hallintaan, sekä joukon makroja.[4]

Ympäristö

Rust-kielen asennus

Rust-projekti käyttää rustin asentamiseen rustup-työkalua, joka asentaa kohdeympäristöön virallisia kanavia pitkin julkaistun rust-version. Se toimii kaikissa rust-kielen tukemissa käyttöjärjestelmissä, mukaan lukien Windows.[6]

Rustilla kirjoitettujen ohjelmien asennus

Rust käyttää kirjastojen ja valmiiden rust-ohjelmien hallintaan Cargo-paketinhallintaa, joka perustuu Rubyn Bundler-paketinhallintaan. Cargo asentaa crate-ohjelmistopaketit crates.io-verkkopalvelusta.[7] Cargo toimii myös työvälineenä rust-ohjelmien rakentamiseen, korvaten historiallisen maken.

Historia

Ohjelmointikieli-insinööri Graydon Hoare aloitti rustin kehittämisen vuonna 2006. Hoare esitteli rustia työnantajalleen Mozilla-säätiössä, jonka jälkeen Mozilla perusti tiimin toteuttamaan rustilla tehdyn selainmoottorin, Servon.[3]

Steve Klabnik tunnistaa rustin historiassa neljä aikakautta: henkilökohtainen (2006–2010), Graydonin vuodet (2010–2012), tyyppijärjestelmävuodet (2012–2014) ja julkaisuaika (2015 – toukokuu 2016).[8] Kieltä kehitettäessä lähestymistapa on Klabnikin mukaan ollut empiirinen iteraatio, jossa implementoitujen ominaisuuksien toimivuus kokeillaan ennen niiden hyväksymistä.

Rust 1.0.0 julkaistiin 15. toukokuuta 2015. Julkaisuvuonna rustc-kääntäjän toteutuksessa oli 1410 osallistujaa.[8] Hoare käytti rustin toteuttamiseen aluksi OCamlilla kirjoitettua tulkkia. Nykyisin rust on kirjoitettu rustilla.[8]

Kulttuuri

Klabnikin mukaan projektissa pidetty tärkeänä itse kielen ominaisuuksien lisäksi ekosysteemiä, työkaluohjelmia, vakautta ja yhteisöä.[8] Rust-yhteisössä tärkeitä ovat myös käytöskoodi, inhimillinen käytös ja turhan työn automaatio. Rust-projektin koodirepositorio tervehtii automaattisesti uusia toteuttajia, ja muutokset koodikantaan valitaan formalisoidun automaation avulla, jotta vältytään sosiaalisilta ristiriitatilanteilta.

Rustin käyttö

Rust-koodia käyttävät muun muassa:

Lähteet

  1. (en) Announcing Rust 1.82.0, (viitattu ). Tieto on haettu Wikidatasta.
  2. The Rust Language Lambda The Ultimate. 8.7.2010. Viitattu 4.9.2016. (englanniksi)
  3. a b Avram, Abel: Interview on Rust, a Systems Programming Language Developed by Mozilla InfoQ. 3.8.2012. C4Media Inc. Viitattu 4.9.2016. (englanniksi)
  4. a b c The Rust Programming Language The Rust Project Developers. Viitattu 22.10.2016. (englanniksi)
  5. a b The Rust Reference – 10 Memory model 2011. The Rust Project Developers. Viitattu 22.10.2016. (englanniksi)
  6. Rustup: The Rust Toolchain Installer Rustup. GitHub. Viitattu 9.9.2017. (englanniksi)
  7. Cargo, Rust’s Package Manager Crates. Viitattu 22.10.2016. (englanniksi)
  8. a b c d Klabnik, Steve: The History of Rust. Applicative 2016, 1.1.2016. New York: Association for Computing Machinery. doi:10.1145/2959689.2960081 (englanniksi)
  9. Serdar Yegulalp: Mozilla's Rust-based Servo browser engine inches forward InfoWorld. 3.4.2015. Viitattu 28.2.2019. (englanniksi)
  10. Go-ing to Rust: Optimizing Storage at Dropbox | QCon San Francisco 2016 going-rust-optimizing-storage-dropbox.html. 14.7.2016. Viitattu 28.2.2019. (englanniksi)
  11. Sebastian Hahn: Määritä nimeke! lists.torproject.org. Fri Mar 31 21:23:27 UTC 2017. Viitattu 28.2.2019.
  12. The Rust Project Developers: Rust Case Study: Community makes Rust an easy choice for npm 2019. Rust-lang.org. Viitattu 28.2.2019.

Aiheesta muualla