Programski jezik Rust 1.68 izdanje

Objavljeno je izdanje Rust 1.68 programskog jezika opšte namjene, koji je osnovan od strane Mozilla projekta, a koji je sada razvijen pod okriljem nezavisne neprofitne organizacije Rust Foundation. Jezik se fokusira na sigurnost memorije i pruža sredstva za postizanje visokog paralelizma poslova uz izbjegavanje upotrebe sakupljača smeća i vremena izvođenja (vrijeme izvođenja je svedeno na osnovnu inicijalizaciju i održavanje standardne biblioteke).

Rustove metode rukovanja memorijom spašavaju programera od grešaka prilikom manipulacije pokazivačima i štite od problema koji nastaju zbog rukovanja memorijom na niskom nivou, kao što je pristup memorijskoj oblasti nakon što je ona oslobođena, 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.

Sigurnost memorije je osigurana u Rustu u vrijeme kompajliranja kroz provjeru referenci, praćenje vlasništva nad objektom, praćenje životnog vijeka objekata (opsega) i procjenu ispravnosti pristupa memoriji tokom izvršavanja koda. Rust također pruža zaštitu od prekoračenja cijelih brojeva, zahtijeva obaveznu inicijalizaciju vrijednosti varijabli prije upotrebe, bolje obrađuje greške u standardnoj biblioteci, primjenjuje koncept nepromjenjivih referenci i varijabli po defaultu, nudi snažno statičko kucanje kako bi se minimizirale logičke greške.

Glavne inovacije:

  • Cargo paket menadžer i crates.io spremište imaju stabiliziranu podršku za Sparse protokol, koji definira novi način rada sa indeksom koji odražava dostupne verzije svih paketa koji postoje u spremištu. Novi protokol vam omogućava da značajno povećate brzinu rada sa crates.io i riješite probleme skaliranja uz daljnji rast broja paketa u spremištu.

    Da bi se smanjila kašnjenja uzrokovana preuzimanjem cijelog indeksa, Sparse umjesto pristupa indeksu pomoću Git-a uključuje direktno preuzimanje preko HTTPS-a samo potrebnih indeksnih podataka, koji pokrivaju ovisnosti određenog projekta. Nova usluga, index.crates.io, koristi se za pružanje indeksnih podataka. Prema zadanim postavkama, novi protokol se planira 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 "[registre. crates-io]" odjeljak .cargo/config.toml datoteke 'sparse'.

  • Dodan je makronaredba "pin!", koja vam omogućava da kreirate Pin<&mut T> strukturu iz izraza "T" sa lokalnim zakačenjem svog stanja (za razliku od Box::pin, on ne dodeljuje memoriju na hrpu, već se vezuje na nivou steka).
  • Predložen je podrazumevani obrađivač grešaka pri dodjeli memorije, koji se koristi kada se koristi standardni paket za dodjelu. Aplikacije koje omogućavaju samo dodjelu (bez standardnog standarda) sada će pozvati "manifikator panike" kada dodjela memorije ne uspije, što se opciono može presresti pomoću "#[panic_handler]!" Programi koji koriste std biblioteku će nastaviti da štampaju informacije o grešci u stderr i padaju.
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina 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 barem NDK r25 (API 19), tj. Minimalna podržana verzija Androida je podignuta na 4.4 (KitKat).
  • Treći nivo podrške je implementiran za Sony PlayStation Vita platformu (armv7-sony-vita-newlibeabihf). Treći nivo uključuje osnovnu podršku, ali bez automatskog testiranja, objavljivanja službenih verzija ili provjere da li se kod može izgraditi.

izvor: opennet.ru

Dodajte komentar