Programski jezik Rust 1.54 izdanje

Objavljeno je izdanje sistemskog programskog jezika Rust 1.54, čiji je osnivač Mozilla projekat, a sada razvijen pod okriljem nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije, obezbjeđuje automatsko upravljanje memorijom i obezbjeđuje sredstva za postizanje visokog paralelizma zadataka bez korištenja sakupljača smeća ili vremena izvođenja (vrijeme izvođenja je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rust-ovo automatsko upravljanje memorijom spašava programere od grešaka prilikom manipulacije pokazivačima i štiti od problema koji nastaju zbog manipulacije memorijom niskog nivoa, kao što je pristup memorijskom području nakon što je oslobođeno, dereferenciranje nultih pokazivača, prekoračenje bafera itd. Za distribuciju biblioteka, izradu i upravljanje ovisnostima, projekt razvija Cargo paket menadžer. Crates.io spremište je podržano za hostovanje biblioteka.

Glavne inovacije:

  • Dodata je mogućnost korištenja makroa nalik funkcijama unutar atributa (proceduralni makroi i makroi kreirani korištenjem makroa „macro_rules!“). Takvi makroi se razlikuju od funkcija simbolom "!" nakon imena (makro!(...)) i zamjena izvornog teksta makroa umjesto generiranja poziva funkcije. Pozivanje makronaredbi unutar atributa može biti korisno za uključivanje sadržaja iz drugih datoteka u dokumentiranje komentara. Na primjer, da biste umetnuli sadržaj README datoteke i rezultat izvršavanja skripte, možete odrediti: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR "), "/generated.rs" )] mod generisan;
  • Ugrađene funkcije kompajlera (Intrinsics) za wasm32 platformu su stabilizirane, omogućavajući korištenje SIMD instrukcija u WebAssembly-u. Većina funkcija, kao što je v128_bitselect, dostupna je u "sigurnom" načinu rada, ali neke funkcije koje rade s pokazivačima (na primjer, v128_load) ostaju "nesigurne".
  • Vratila se zadana upotreba inkrementalne kompilacije, koja vam omogućava da ponovo izgradite samo izmijenjene dijelove koda, što može značajno smanjiti vrijeme potrebno za izgradnju projekta prilikom ponovnog kompajliranja nakon manjih izmjena. Inkrementalna kompilacija je onemogućena u izdanju 1.52.1 zbog skrivenih grešaka koje su se pojavile nakon dodavanja dodatne provjere za učitavanje podataka iz predmemorije diska.
  • Novi dio API-ja je prebačen u stabilnu kategoriju, uključujući sljedeće stabilizirane:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • Dodane su opcije u cargo-stablo: “—prune ” za uklanjanje paketa iz grafa zavisnosti, “—dubina” za prikaz samo elemenata datog nivoa ugniježđenja u stablu zavisnosti, “—ivice bez proc- makro” za skrivanje zavisnosti proceduralnih makroa.

izvor: opennet.ru

Dodajte komentar