Rust (ohjelmointikieli)

Wikipediasta
Tämä on arkistoitu versio sivusta sellaisena, kuin se oli 28. helmikuuta 2019 kello 23.29 käyttäjän Λ (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.33[1] (12. lokakuuta 2018)
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.

Rust-koodia käyttävät muun muassa Firefox-selain versiosta 45 lähtien, Dropbox. Skylight.io-rubygemselvennä sisältää rustin ja sen on raportoitu kaatuneen vain kahdesti neljän vuoden aikana.[8]

Lähteet

  1. The Rust Release Team: Announcing Rust 1.33.0 – The Rust Programming Language Blog blog.rust-lang.org. 28.2.2019. Viitattu 20.10.2018.
  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 e Klabnik, Steve: The History of Rust. Applicative 2016, 1.1.2016. New York: Association for Computing Machinery. doi:10.1145/2959689.2960081 (englanniksi)

Aiheesta muualla