Izdanje Rust programskog jezika 1.68

Objavljen je programski jezik opće namjene Rust 1.68, 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 i repozitorij crates.io stabilizirali su podršku za protokol Sparse, koji definira novi način rada s indeksom koji odražava dostupne verzije svih paketa koji postoje u repozitoriju. Novi protokol omogućuje značajno povećanje brzine rada s crates.io i rješavanje problema skaliranja s daljnjim rastom broja paketa u repozitoriju.

    Kako bi se smanjila kašnjenja uzrokovana preuzimanjem cijelog indeksa, Sparse umjesto pristupa indeksu pomoću Gita uključuje izravno preuzimanje preko HTTPS-a samo potrebnih podataka indeksa, pokrivajući ovisnosti određenog projekta. Nova usluga, index.crates.io, koristi se za pružanje podataka indeksa. Prema zadanim postavkama novi protokol planira se koristiti u grani Rust 1.70, a prije toga, da biste ga omogućili, možete postaviti varijablu okruženja "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" ili dodati parametar 'protocol =' u "[registri. crates-io]" odjeljak datoteke .cargo/config.toml 'sparse'.

  • Dodana je makronaredba “pin!”, koja vam omogućuje da stvorite strukturu Pin<&mut T> iz izraza “T” s lokalnim pričvršćivanjem njenog stanja (za razliku od Box::pin, ne dodjeljuje memoriju na gomili, već veže na razini stoga).
  • Predložen je zadani rukovatelj pogreškom dodjele memorije, koji se koristi kada se koristi standardni paket za dodjelu. Aplikacije koje omogućuju samo alloc (bez std) sada će pozvati rukovatelj "panic!" kada dodjela memorije ne uspije, što se po izboru može presresti pomoću "#[panic_handler]". Programi koji koriste std biblioteku nastavit će ispisivati ​​informacije o pogrešci u stderr i srušit će se.
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
    • {core,std}::pin::pin!
    • impl From za {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut za PathBuf
  • Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se u funkciji VecDeque::new.
  • Za rad na Android platformi sada je potreban najmanje NDK r25 (API 19), tj. Minimalna podržana verzija Androida podignuta je na 4.4 (KitKat).
  • Treća razina podrške implementirana je za platformu Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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.

Izvor: opennet.ru

Dodajte komentar