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)

[zarchiwizowane z adresu 2008-02-22]  (ang.). Python Software Foundation, python/cpython: The Python programming language [online], GitHub [dostęp 2022-06-10] 

Qt

(Qyoto/Kimono, QtSharp), Pascal, Perl (Perl Qt4), PHP (PHP-Qt), Ruby (QtRuby) i Python (PyQt, PySide). Charakteryzują się w pełni obiektową architekturą. Zawierają

Standardy kodowania

Przykładami takich standardów są: Python: PEP 8 – Style Guide for Python Code. C++: C++ Core Guidelines. Java: Java Programming Style Guidelines. C: SEI CERT

C Sharp

wykonywanego w środowisku uruchomieniowym takim jak .NET Framework, .NET Core, Mono lub DotGNU. Wykonanie skompilowanego programu przez system operacyjny

PHP

php.net – PHP: Description of core php.ini directives. PHP: Reflection – Manual. PHP: PHP Usage Stats. The PHP Programming Language. Usage Statistics and

Historia macOS

Mailboxes aplikacja Mail, QuickTime 7, Safari 2, Automator, VoiceOver, Core Image oraz Core Video. Zmodyfikowaną wersję OS X 10.4 wykorzystano w pierwszej wersji

Active Server Pages

wspierane oznaczone czcionką wytłuszczoną): VBScript C# JScript PerlScript Python Ruby Delphi Szereg dodatkowych można uzyskać przez doinstalowanie niezależnych

Spring Framework

Framework zapewnia obsługę programowania aspektowego (ang. Aspect Oriented Programming, AOP) zapewniające takie usługi jak zarządzanie transakcjami. AOP dostarcza