Rust (język programowania)
![]() Logo języka | |
Pojawienie się |
2010 |
---|---|
Paradygmat |
wieloparadygmatowy (obiektowy, imperatywny, funkcyjny, strukturalny, współbieżny) |
Aktualna wersja stabilna |
1.80.1 |
Twórca | |
Licencja | |
Platforma sprzętowa | |
Platforma systemowa |
wieloplatformowy |
Strona internetowa |
Rust – kompilowany język programowania ogólnego przeznaczenia. Stworzony z myślą o „bezpieczeństwie, współbieżności i praktyczności”.
Historia
[edytuj | edytuj kod]Język zaprojektował Graydon Hoare w 2006 roku, w 2009 projekt został przyjęty pod skrzydła Mozilla Foundation[2]. W 2010 Mozilla upubliczniła informację o języku[3]. W 2011 roku kompilator języka, znany jako rustc, został z powodzeniem skompilowany przez samego siebie.
Pierwsza numerowana wersja alfa została wydana w 2012 roku[4]. 15 maja 2015 ukazała się wersja 1.0[5].
8 lutego 2021 pięć firm (Mozilla, AWS, Google, Microsoft i Huawei) ogłosiły utworzenie Fundacji Rust[6][7].
6 kwietnia 2021 Google ogłosił wsparcie dla języka Rust w ramach Android Open Source Project jako alternatywę dla języków C/C++[8][9].
Rust wykorzystuje Cargo jako menadżer pakietów[10].
Wiele organizacji wykorzystuje ten język programowania w zastosowaniach produkcyjnych[11]. Obecnie[kiedy?] dwoma największymi otwartymi projektami korzystającymi z języka Rust są: Servo oraz kompilator Rusta[12].
Cechy języka
[edytuj | edytuj kod]Najważniejsze cechy języka Rust to[13][14]:
- bezpieczeństwo pamięci,
- zarządzanie pamięcią poprzez Resource Acquisition Is Initialization[15],
- bezpieczeństwo współbieżności w koncepcji Ownership i Borrowing,
- system typów obsługujący mechanizm podobny do klas typów, zwany cechami, inspirowany językiem Haskell.
Przykłady
[edytuj | edytuj kod]fn main() {
println!("Hello, world!");
}
fn main() {
let max = 101;
for i in 1..max {
if i % 15 == 0 {
println!("{}", "FizzBuzz")
} else if i % 5 == 0 {
println!("{}", "Buzz")
} else if i % 3 == 0 {
println!("{}", "Fizz")
} else {
println!("{}", i)
}
}
}
fn rot13(string: String) -> String {
let mut bytes: Vec<u8> = string.into();
for byte in &mut bytes {
match *byte {
b'a'...b'm' | b'A'...b'M' => *byte += 13,
b'n'...b'z' | b'N'...b'Z' => *byte -= 13,
_ => {}, //nic nie rób
}
}
String::from_utf8(bytes).unwrap()
}
fn main() {
let a = rot13("abc".to_owned());
assert_eq!(a, "nop");
}
Krytyka
[edytuj | edytuj kod]Rust, a właściwie stworzona wokół niego wspólnota jest często krytykowana za nieprzestrzeganie własnych założeń. Opiera się to na fakcie, że podstawową funkcją tego języka jest bezpieczeństwo, czyli m.in. uniknięcie niebezpieczeństw związanych z zarządzaniem pamięci programu, ale ogromna ilość narzędzi deweloperskich oraz bibliotek została zbudowana, ignorując to założenie i używając bloku unsafe
. Przez to istnieje brak gwarancji poprawności kodu, a zarazem kodu jakiegokolwiek programu bazującego na tych bibliotekach[16][17].
Przypisy
[edytuj | edytuj kod]- ↑ Copyright. GitHub. [dostęp 2018-05-31]. (ang.).
- ↑ Michał Olber: Rust 0.1 – nowy język programowania od Fundacji Mozilla. OSWorld.pl, 2012-01-27. [dostęp 2018-12-08]. (pol.).
- ↑ Chris Double: A Quick Look at the Rust Programming Language. Bluish Coder, 2011-03-31. [dostęp 2017-02-05]. (ang.).
- ↑ Brian Anderson: The Rust compiler 0.1 is unleashed. Mozilla Mailing Lists, 2012-01-20. [dostęp 2017-02-05]. (ang.).
- ↑ The Rust Core Team: Announcing Rust 1.0. The Rust Programming Language Blog, 2015-05-15. [dostęp 2019-07-11]. (ang.).
- ↑ Rust Foundation [online], foundation.rust-lang.org [dostęp 2021-08-20] (ang.).
- ↑ Mozilla Welcomes the Rust Foundation - The Mozilla Blog [online], web.archive.org, 8 lutego 2021 [dostęp 2021-08-20] [zarchiwizowane z adresu 2021-02-08] .
- ↑ Ron Amadeo , Google is now writing low-level Android code in Rust [online], Ars Technica, 7 kwietnia 2021 [dostęp 2021-08-20] (ang.).
- ↑ Integrating Rust Into the Android Open Source Project [online], Google Online Security Blog [dostęp 2021-08-20] (ang.).
- ↑ Introduction - The Cargo Book [online], doc.rust-lang.org [dostęp 2024-06-08] .
- ↑ Users. The Rust Programming Language. [dostęp 2018-12-08]. (ang.).
- ↑ Frequently Asked Questions – What examples are there of large Rust projects?. The Rust Programming Language. [dostęp 2018-12-08]. [zarchiwizowane z tego adresu (2018-11-19)]. (ang.).
- ↑ 7 języków programowania, które warto poznać jeszcze w 2020 roku - cz. I (Rust i Go) [online], Blog IT-Leaders, 8 czerwca 2020 [dostęp 2021-09-02] (pol.).
- ↑ Abel Avram , Interview on Rust, a Systems Programming Language Developed by Mozilla [online] [zarchiwizowane z adresu 2013-07-24] .
- ↑ Rust RAII [online] [zarchiwizowane z adresu 2019-04-21] .
- ↑ Unsafe in Rust: Syntactic Patterns [online], cs.stanford.edu [dostęp 2022-11-29] .
- ↑ Vytautas Astrauskas i inni, How do programmers use unsafe rust?, „Proceedings of the ACM on Programming Languages”, 4 (OOPSLA), 2020, s. 1–27, DOI: 10.1145/3428204, ISSN 2475-1421 [dostęp 2022-11-29] (ang.).