avatar_Muchomorek

Rust – kompilowany język programowania..

Zaczęty przez Muchomorek, Dzisiaj o 07:46:53

Poprzedni wątek - Następny wątek

0 użytkowników i 2 Gości przegląda ten wątek.

Muchomorek

Ogólnego przeznaczenia. Stworzony z myślą o ,,bezpieczeństwie, współbieżności i praktyczności.


Historia

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 są Servo oraz kompilator Rusta[14].
Cechy języka

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

    bezpieczeństwo pamięci,
    zarządzanie pamięcią poprzez Resource Acquisition Is Initialization[17],
    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

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");




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 Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj. 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].

Rust zdobywa popularność jako język o wysokiej wydajności i bezpieczeństwie, co czyni go atrakcyjnym dla programistów i firm. Według ankiety StackOverflow, Rust przez wiele lat (m.in. 2016–2021) był uznawany za najbardziej lubiany język przez programistów. Jego rozwój jest dynamiczny, a społeczność aktywnie pracuje nad ulepszaniem języka i jego ekosystemu.
Ostatnia wersja Rust, 1.89.0, została wydana 7 sierpnia 2025 i przyniosła szereg ulepszeń zwiększających wydajność i wygodę programowania. Dzięki szerokiemu zastosowaniu w programowaniu systemowym i rosnącej adaptacji w innych dziedzinach (np. blockchain), Rust ma szansę na dalszy wzrost znaczenia w branży IT.

    Copyright. GitHub. [dostęp 2018-05-31]. (ang.).
    Michał Olber: Rust 0.1 – nowy język programowania od Fundacji Mozilla. Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj, 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 Compilation Model Calamity [online], TiDB, 30 stycznia 2020 [dostęp 2025-11-12] (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], Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj [dostęp 2021-08-20] (ang.).
    Mozilla Welcomes the Rust Foundation - The Mozilla Blog [online], Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj, 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.).
    Linux 6.1 Officially Adds Support for Rust in the Kernel [online], InfoQ [dostęp 2024-10-26] (ang.).
    Introduction - The Cargo Book [online], Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj [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], Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj [dostęp 2022-11-29].
    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, DOI: 10.1145/3428204 [dostęp 2022-11-29] (ang.).

żródło Nie masz uprawnień do wyświetlania linków. Zarejestruj się lub Zaloguj

You cannot view this attachment.
You cannot view this attachment.