Rust
Logo języka Rust
Logo języka
Pojawienie się

2010

Paradygmat

wieloparadygmatowy (obiektowy, imperatywny, funkcyjny, strukturalny, współbieżny)

Aktualna wersja stabilna

1.96
(28 maja 2026) [±]

Twórca

Graydon Hoare

Licencja

Apache 2.0, MIT[1]

Platforma sprzętowa

wieloplatformowy

Platforma systemowa

wieloplatformowy

Strona internetowa

Rustkompilowany język programowania ogólnego przeznaczenia. Stworzony z myślą o „bezpieczeństwie, współbieżności i praktyczności”.

Historia

edytuj

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[4].

Pierwsza numerowana wersja alfa została wydana w 2012 roku[5]. 15 maja 2015 ukazała się wersja 1.0[6].

8 lutego 2021 pięć firm (Mozilla, AWS, Google, Microsoft i Huawei) ogłosiły utworzenie Fundacji Rust[7][8].

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++[9][10].

W grudniu 2022 język Rust uzyskał wsparcie w rozwoju jądra Linuxa[11].

Rust wykorzystuje Cargo jako menadżer pakietów[12].

Wiele organizacji wykorzystuje ten język programowania w zastosowaniach produkcyjnych[13]. Obecnie[kiedy?] dwoma największymi otwartymi projektami korzystającymi z języka Rust były w 2018 r. Servo oraz kompilator Rusta[14].

Cechy języka

edytuj

Najważniejsze cechy języka Rust to[15][16]:

Przykłady

edytuj

Hello world:

fn main() {
    println!("Hello, world!");
}

Fizz buzz:

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)
        }
    }
}

ROT13:

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

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[18][19].

Przypisy

edytuj
  1. Copyright. GitHub. [dostęp 2018-05-31]. (ang.).
  2. Michał Olber: Rust 0.1 – nowy język programowania od Fundacji Mozilla. OSWorld.pl, 2012-01-27. [dostęp 2018-12-08]. (pol.).
  3. Chris Double: A Quick Look at the Rust Programming Language. Bluish Coder, 2011-03-31. [dostęp 2017-02-05]. (ang.).
  4. Brian Anderson, The Rust Compilation Model Calamity [online], TiDB, 30 stycznia 2020 [dostęp 2025-11-12] (ang.).
  5. Brian Anderson: The Rust compiler 0.1 is unleashed. Mozilla Mailing Lists, 2012-01-20. [dostęp 2017-02-05]. (ang.).
  6. The Rust Core Team: Announcing Rust 1.0. The Rust Programming Language Blog, 2015-05-15. [dostęp 2019-07-11]. (ang.).
  7. Rust Foundation [online], foundation.rust-lang.org [dostęp 2021-08-20] (ang.).
  8. 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].
  9. Ron Amadeo, Google is now writing low-level Android code in Rust [online], Ars Technica, 7 kwietnia 2021 [dostęp 2021-08-20] (ang.).
  10. Integrating Rust Into the Android Open Source Project [online], Google Online Security Blog [dostęp 2021-08-20] (ang.).
  11. Linux 6.1 Officially Adds Support for Rust in the Kernel [online], InfoQ [dostęp 2024-10-26] (ang.).
  12. Introduction - The Cargo Book [online], doc.rust-lang.org [dostęp 2024-06-08].
  13. Users. The Rust Programming Language. [dostęp 2018-12-08]. (ang.).
  14. 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.).
  15. 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.).
  16. Abel Avram, Interview on Rust, a Systems Programming Language Developed by Mozilla [online] [zarchiwizowane z adresu 2013-07-24].
  17. Rust RAII [online] [zarchiwizowane z adresu 2019-04-21].
  18. Unsafe in Rust: Syntactic Patterns [online], cs.stanford.edu [dostęp 2022-11-29].
  19. Vytautas Astrauskas, Christoph Matheja, Federico Poli, Peter Müller, Alexander J. Summers, How do programmers use unsafe rust?, „Proceedings of the ACM on Programming Languages”, 4 (OOPSLA), 2020, s. 1–27, DOI10.1145/3428204, ISSN 2475-1421 [dostęp 2022-11-29] (ang.).

Linki zewnętrzne

edytuj

📚 Artikel Terkait di Wikipedia

C (język programowania)

wspieranych. W 1978 opublikowane zostało pierwsze wydanie książki The C Programming Language (wyd. polskie Język C, 1987), autorstwa Briana Kernighana i Dennisa

Lista skrótów i skrótowców używanych w informatyce

Institute AOSP – Android Open Source Project AP – Access Point APFS – Apple File System API – Application Programming Interface APIC – Advanced Programmable

.NET Framework

opracowana przez Microsoft, obejmująca środowisko uruchomieniowe (Common Language Runtime – CLR) oraz biblioteki klas dostarczające standardowej funkcjonalności

José Valim

współtwórcą kilku projektów open source związanych z ekosystemem Elixira. Valim jest związany z projektami open source w ekosystemie Elixira, między innymi

PyTorch

VentureBeat. Uber AI Labs Open Sources Pyro, a Deep Probabilistic Programming Language, 2017-11-03, Uber Engineering Blog. PyTorch strengthens its governance

Formatowanie kodu

Guidelines The NetBSD source code style guide (znane wcześniej jako BSD Kernel Normal Form) Code Conventions for the Java Programming Language. java.oracle.com

Kod źródłowy

Doing Source Code Review [online], Medium, 1 lutego 2025 [dostęp 2026-02-25]  (ang.). Separating Modules into Different Files – The Rust Programming Language

Limbo (język programowania)

Sys->PATH; sys->print("Hello World!\n"); } Dennis M. Ritchie: The Limbo Programming Language. [dostęp 2011-08-27]. Cytat: A quick glance at the program reveals