Izdanje Rust programskog jezika 1.55

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

  • Upravitelj paketa Cargo ima mogućnost spajanja dupliciranih pogrešaka i upozorenja koja se pojavljuju tijekom izgradnje. Prilikom izvršavanja naredbi kao što su "cargo test" i "cargo check --all-targets" koje rezultiraju višestrukim izgradnjama paketa s različitim parametrima, korisniku se sada prikazuje sažetak pojavljivanja problema koji se ponavlja, umjesto višestruka identična upozorenja prilikom uzastopne izgradnje iste stvari. $ cargo +1.55.0 check —all-targets Provjera foo v0.1.0 upozorenje: funkcija se nikad ne koristi: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = napomena: '#[warn(dead_code)]' uključeno prema zadanim postavkama upozorenje: 'foo' (lib) generira 1 upozorenje upozorenje: 'foo' (lib test) generira 1 upozorenje (1 duplikat) Završeno dev [unoptimized + debuginfo] target (s) za 0.84 s
  • Kod za raščlanjivanje pomičnog zareza u standardnoj biblioteci premješten je na brži i točniji Eisel-Lemireov algoritam, koji je riješio neke ranije uočene probleme sa zaokruživanjem i raščlanjivanjem brojeva s vrlo velikim brojem znamenki.
  • Sposobnost određivanja nezatvorenih raspona u predlošcima je stabilizirana (“X..” se tumači kao raspon koji počinje s vrijednošću X i završava s maksimalnom vrijednošću tipa integer): podudaraj x kao u32 { 0 => println! (“nula!”), 1.. => println!("pozitivan broj!"), }
  • Proširene varijante pogrešaka koje pokriva std::io::ErrorKind (klasificira pogreške u kategorije kao što su NotFound i WouldBlock). Prethodno su pogreške koje se nisu uklapale u postojeće kategorije spadale u kategoriju ErrorKind::Other, koja se također koristila za pogreške u kodu treće strane. Sada postoji zasebna interna kategorija ErrorKind::Uncategorized za pogreške koje se ne uklapaju u postojeće kategorije, a kategorija ErrorKind::Other ograničena je na pogreške koje se ne pojavljuju u standardnoj biblioteci (funkcije standardne biblioteke koje vraćaju io::Error više ne koristite kategoriju ErrorKind:: Other).
  • Novi dio API-ja premješten je u kategoriju stabilnih, uključujući metode i implementacije karakteristika koje su stabilizirane:
    • Vezano::klonirano
    • Odvod::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MoždaUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MoždaUninit::write
    • niz::mapa
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • U metodi str::from_utf8_unchecked koristi se atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti.
  • Treća razina podrške implementirana je za powerpc64le-unknown-freebsd platformu. 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