Izdanje Rust programskog jezika 1.54

Objavljeno je izdanje sistemskog programskog jezika Rust 1.54, utemeljenog na projektu Mozilla, ali sada razvijenog pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža sredstva za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća ili vremena izvođenja (vrijeme izvođenja je smanjeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustovo automatsko upravljanje memorijom uklanja pogreške prilikom manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što je pristup memorijskoj regiji nakon što je oslobođena, dereferenciranje nultog pokazivača, prekoračenje međuspremnika, itd. Za distribuciju knjižnica, osiguranje sklapanja i upravljanje ovisnostima, projekt razvija upravitelja paketa Cargo. Repozitorij crates.io podržan je za smještaj knjižnica.

Glavne inovacije:

  • Dodana je mogućnost korištenja makronaredbi sličnih funkcijama unutar atributa (proceduralne makronaredbe i makronaredbe stvorene pomoću makronaredbe "macro_rules!"). Takve se makronaredbe od funkcija razlikuju simbolom “!” nakon naziva (makro!(...)) i zamjenom izvornog teksta makronaredbe 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 datoteke README i rezultat izvršavanja skripte, možete navesti: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" "), "/generated.rs" )] mod generiran;
  • Ugrađene funkcije prevoditelja (Intrinsics) za wasm32 platformu su stabilizirane, dopuštajući korištenje SIMD instrukcija u WebAssembly. 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, što vam omogućuje da ponovno izgradite samo promijenjene dijelove koda, što može značajno smanjiti vrijeme potrebno za izgradnju projekta prilikom ponovnog kompajliranja nakon manjih izmjena. Inkrementalna kompilacija bila 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 prebačen je 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
  • Opcije su dodane cargo-tree-u: “—prune ” za uklanjanje paketa iz grafikona ovisnosti, “—depth” za prikaz samo elemenata zadane razine ugniježđenja u stablu ovisnosti, “—edges no-proc- makro” za skrivanje ovisnosti proceduralnih makronaredbi.

Izvor: opennet.ru

Dodajte komentar