Izdanje Rust programskog jezika 1.62

Objavljen je programski jezik opće namjene Rust 1.62, utemeljen na projektu Mozilla, ali sada razvijen pod pokroviteljstvom nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe skupljača smeća i vremena izvođenja (vrijeme izvođenja je smanjeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programere od pogrešaka pri manipuliranju pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskoj razini, kao što je pristup memorijskom području nakon što je ono oslobođeno, dereferenciranje nultih pokazivača, prekoračenje međuspremnika, itd. Za distribuciju biblioteka, pružanje nadogradnji i upravljanje ovisnostima, projekt razvija upravitelja paketa Cargo. Repozitorij crates.io podržan je za smještaj knjižnica.

Sigurnost memorije osigurana je u Rustu tijekom kompajliranja provjerom referenci, praćenjem vlasništva objekta, praćenjem životnih vijekova objekta (opsega) i procjenom ispravnosti pristupa memoriji tijekom izvođenja koda. Rust također pruža zaštitu od prekoračenja cjelobrojnih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje pogreške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli prema zadanim postavkama, nudi snažno statično tipkanje za smanjenje logičkih pogrešaka.

Glavne inovacije:

  • Upravitelj paketa “cargo” nudi naredbu “add” koja vam omogućuje dodavanje novih ovisnosti u manifest Cargo.toml ili promjenu postojećih ovisnosti iz naredbenog retka. Naredba vam također omogućuje određivanje pojedinačnih značajki i verzija, na primjer: cargo add serde — značajke izvode cargo add nom@5
  • Dodana je mogućnost korištenja “#[derive(Default)]” s enumima u kojima je zadana opcija definirana pomoću atributa “#[default]”. #[derive(Default)] enum Maybe { #[default] Ništa, nešto(T), }
  • Na platformi Linux koristi se kompaktnija i brža implementacija mehanizma sinkronizacije Mutex, koja se temelji na korištenju futexa koje pruža Linux kernel. Za razliku od prethodno korištene implementacije temeljene na biblioteci pthreads, nova verzija koristi samo 5 bajtova umjesto 40 za pohranjivanje stanja Mutexa.Slično tome, mehanizmi zaključavanja Condvar i RwLock prebačeni su u futex.
  • Implementirana je druga razina podrške za ciljnu platformu x86_64-unknown-none, dizajnirana za generiranje izvršnih datoteka koje mogu raditi bez operativnog sustava. Na primjer, navedena ciljna platforma može se koristiti prilikom pisanja komponenti jezgre. Druga razina podrške uključuje jamstvo za montažu.
  • Treća razina podrške implementirana je za platforme aarch64-pc-windows-gnullvm i x86_64-pc-windows-gnullvm. Treća razina uključuje osnovnu podršku, ali bez automatiziranog testiranja, objavljivanja službenih međugradnji ili provjere može li se kod izgraditi.
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
    • bool::then_some
    • f32::total_cmp
    • f64::total_cmp
    • Stdin::linije
    • windows::CommandExt::raw_arg
    • impl zadana vrijednost za AssertUnwindSafe
    • Od> za Rc
    • Od > do Luk
    • FusedIterator za EncodeWide

    Izvor: opennet.ru

Dodajte komentar