Programski jezik Rust 1.55 izdanje

Objavljeno je izdanje sistemskog programskog jezika Rust 1.55, č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:

  • Cargo paket menadžer ima mogućnost spajanja duplikata grešaka i upozorenja koja se javljaju tokom izgradnje. Prilikom izvršavanja naredbi kao što su "cargo test" i "cargo check --all-targets" koje rezultiraju višestrukim izradom paketa s različitim parametrima, korisniku se sada prikazuje sažetak pojavljivanja problema koji se ponavlja, umjesto da bude prikazan više identičnih upozorenja kada se ista stvar gradi više puta. $ cargo +1.55.0 check —svi ciljevi Provera foo v0.1.0 upozorenje: funkcija se nikada ne koristi: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = napomena: '#[warn(dead_code)]' uključeno po defaultu upozorenje: 'foo' (lib) generira 1 upozorenje: 'foo' (lib test) generira 1 upozorenje (1 duplikat) Završen dev [neoptimizirani + debuginfo] cilj (s)za 0.84s
  • Kod za raščlanjivanje s pomičnim zarezom u standardnoj biblioteci je premješten da koristi brži i precizniji Eisel-Lemire algoritam, koji je riješio neke ranije uočene probleme sa zaokruživanjem i raščlanjivanjem brojeva sa vrlo velikim brojem cifara.
  • Sposobnost specificiranja nezatvorenih opsega u šablonima je stabilizirana („X..” se tumači kao opseg koji počinje vrijednošću X i završava se sa maksimalnom vrijednošću cjelobrojnog tipa): uskladiti x kao u32 { 0 => println! (“nula!”), 1.. => println!("pozitivan broj!"), }
  • Proširene varijante greške pokrivene std::io::ErrorKind (klasificira greške u kategorije kao što su NotFound i WouldBlock). Ranije su greške koje se nisu uklapale u postojeće kategorije spadale u kategoriju ErrorKind::Other, koja se takođe koristila za greške u kodu treće strane. Sada postoji posebna interna kategorija ErrorKind::Uncategorized za greške koje se ne uklapaju u postojeće kategorije, a kategorija ErrorKind::Other je ograničena na greške koje se ne javljaju u standardnoj biblioteci (standardne funkcije biblioteke koje vraćaju io::Error više ne koristite ErrorKind:: kategoriju Ostalo).
  • Novi dio API-ja je premješten u kategoriju stabilnih, uključujući metode i implementacije osobina koje su stabilizirane:
    • Vezano::klonirano
    • Drain::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::write
    • array::map
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atribut “const”, koji određuje mogućnost njegove upotrebe u bilo kojem kontekstu umjesto konstanti, koristi se u metodi str::from_utf8_unchecked.
  • Treći nivo podrške je implementiran za platformu powerpc64le-unknown-freebsd. 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