Rust 1.55 programmeerimiskeele väljalase

Ilmus Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all arendatud süsteemi programmeerimiskeele Rust 1.55 väljalase. Keel keskendub mälu ohutusele, pakub automaatset mäluhaldust ja pakub vahendeid ülesannete suure paralleelsuse saavutamiseks ilma prügikogujat või käitusaega kasutamata (käitusaeg taandub standardse teegi põhikäivitamise ja hoolduseni).

Rusti automaatne mäluhaldus välistab osutitega manipuleerimisel tekkivad vead ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälupiirkonnale juurdepääs pärast selle vabastamist, null-osuti viited, puhvri ületamised jne. Teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks arendatakse projektis Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Peamised uuendused:

  • Cargo paketihalduril on võimalus liita ehitamise ajal ilmnevad dubleerivad vead ja hoiatused. Käskude (nt "cargo test" ja "cargo check -- all-targets") täitmisel, mille tulemuseks on erinevate parameetritega paketi mitu ehitamist, näidatakse kasutajale nüüd korduva probleemi esinemise kokkuvõtet, selle asemel, et kuvada. mitu identset hoiatust sama asja korduvalt koostamisel. $ cargo +1.55.0 check —all-targets Kontrollitakse foo v0.1.0 hoiatust: funktsiooni ei kasutata kunagi: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = märkus: '#[warn(dead_code)]' on vaikimisi sisse lülitatud hoiatus: 'foo' (lib) genereeris 1 hoiatushoiatuse: 'foo' (lib test) genereeris 1 hoiatuse (1 duplikaat) Lõppenud arendaja [optimeerimata + silumisinfo] sihtmärk (s) 0.84 sekundiga
  • Ujukoma parsimise kood standardses teegis on üle viidud, et kasutada kiiremat ja täpsemat Eisel-Lemire'i algoritmi, mis on lahendanud mõned varem täheldatud probleemid väga suure arvu numbritega numbrite ümardamisel ja sõelumisel.
  • Võimalus määrata mallides sulgemata vahemikke on stabiliseeritud (“X...” tõlgendatakse vahemikuna, mis algab väärtusega X ja lõpeb täisarvu tüübi maksimaalse väärtusega): vaste x kui u32 { 0 => println! ("null!"), 1.. => println!("positiivne arv!"), }
  • Laiendatud veavariandid, mida katab std::io::ErrorKind (liigitab vead sellistesse kategooriatesse nagu NotFound ja ShouldBlock). Varem sattusid vead, mis olemasolevatesse kategooriatesse ei mahtunud, kategooriasse ErrorKind::Other, mida kasutati ka kolmanda osapoole koodi vigade puhul. Nüüd on olemas eraldi sisemine kategooria ErrorKind::Uncategorized vigade jaoks, mis ei sobi olemasolevatesse kategooriatesse, ja ErrorKind::Other kategooria piirdub vigadega, mida standardteegis ei esine (standardsed teegifunktsioonid, mis tagastavad io::Error ei kasuta enam kategooriat ErrorKind:: Muu).
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • Seotud::kloonitud
    • Äravool::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::oletame_init_ref
    • MaybeUninit::write
    • massiiv::kaart
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis, kasutatakse meetodis str::from_utf8_unchecked.
  • Kolmas tugitase on rakendatud platvormi powerpc64le-unknown-freebsd jaoks. Kolmas tase hõlmab põhituge, kuid ilma automaatse testimiseta, ametlike järelversioonide avaldamise või koodi loomiseta.

Allikas: opennet.ru

Lisa kommentaar