Rust (ohjelmointikieli)
Rust on ohjelmointikieli, jonka on kehittänyt Mozilla Foundation.[2]
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 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
- ↑ (en) Announcing Rust 1.82.0, (viitattu ). Tieto on haettu Wikidatasta.
- ↑ The Rust Language Lambda The Ultimate. 8.7.2010. Viitattu 4.9.2016. (englanniksi)
- ↑ 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)
- ↑ a b c The Rust Programming Language The Rust Project Developers. Viitattu 22.10.2016. (englanniksi)
- ↑ a b The Rust Reference – 10 Memory model 2011. The Rust Project Developers. Viitattu 22.10.2016. (englanniksi)
- ↑ Rustup: The Rust Toolchain Installer Rustup. GitHub. Viitattu 9.9.2017. (englanniksi)
- ↑ Cargo, Rust’s Package Manager Crates. Viitattu 22.10.2016. (englanniksi)
- ↑ 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)
- ↑ Serdar Yegulalp: Mozilla's Rust-based Servo browser engine inches forward InfoWorld. 3.4.2015. Viitattu 28.2.2019. (englanniksi)
- ↑ 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)
- ↑ Sebastian Hahn: Määritä nimeke! lists.torproject.org. Fri Mar 31 21:23:27 UTC 2017. Viitattu 28.2.2019.
- ↑ 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
- Virallinen rust-asennustyökalu rustup (Windows, Linux, Unix) (englanniksi)
- Rust-leikkikenttä Rust Languagessa Kokeile Rust-kieltä selaimellasi (englanniksi)
- Rust-leikkikenttä integer32.com:issa Kokeile Rust-kieltä selaimellasi (englanniksi)
- Dunham, E: Rust 101 Käytännön johdatus Rustiin Australaasian Linux-konferenssissa. (webm-video) Wikimedia Commons. (englanniksi)