Rust 2021 (1.56) programmeerimiskeele vÀljalaskmine

Avaldatud on Rust 1.56 sĂŒsteemikeele vĂ€ljaanne, mis pĂ”hineb Mozilla projektist, kuid mida arendatakse nĂŒĂŒd sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation eesotsas. Peale tavaversiooni numbri on vĂ€ljaanne tĂ€histatud ka kui Rust 2021 ning see tĂ€histab kolme viimase aasta jooksul ettepanekute stabiliseerimist. Rust 2021 toimib samuti aluseks funktsionaalsuse arendamiseks jĂ€rgmise kolme aasta jooksul, sarnaselt sellele, kuidas Rust 2018 vĂ€ljaanne oli aluseks keele arengule viimase kolme aasta jooksul.

Arenduse ajal vĂ”ivad arendajad oma programmides kasutada mĂ€rke "2015", "2018" ja "2021", et seostada programmid keele olekute lĂ”ikega, mis vastavad valitud Rusti vĂ€ljaannetele. Need vĂ€ljaanded kasutusele vĂ”eti, et eristada ĂŒhilduvaid muudatusi ja neid seadistatakse cargo pakettide metainfos lĂ€bi vĂ€ljaande "edition" vĂ€ljaandeseosas. NĂ€iteks vĂ€ljaanne "2018" hĂ”lmab stabiliseeritud funktsionaalsust, mis kehtis 2018. aasta lĂ”puks ja sisaldab kĂ”iki edasisi muudatusi, mis ei kahjusta ĂŒhilduvust. VĂ€ljaanne "2021" sisaldab lisaks ĂŒhilduvust rikkuvaid uuendusi, mis on pakutud praeguses versioonis 1.56 ja kinnitatud tulevikus rakendamiseks. VĂ€ljaanded ei kĂ€sitle ainult keelt, vaid arvestavad ka tööriistade ja dokumentatsiooni seisundit.

Peamised ĂŒhilduvuse probleemid, mis on registreeritud Rust 2021-s:

  • Üksikute nimede saamine sulgudes — sulud saavad nĂŒĂŒd haarata eraldi vĂ€ljanimed kogu identifikaatori asemel. NĂ€iteks "|| a.x + 1" haarab ainult "a.x" asemel "a".
  • IntoIterator tĂŒĂŒbid massiivide jaoks: array.into_iter() vĂ”imaldab massiivi elementide iteratsiooni vÀÀrtuste, mitte viidete kaudu.
  • ĐŒĐ°Đșrorules on muudetud «|» (loogiline OR) tehete töötlemine malle — «:pat» spetsiifika musterse nĂŒĂŒd arv mudeleid «A | B».
  • paketihaldurisse cargo on vaikimisi lisatud teine versioon vĂ”ime mÀÀratlejat (feature resolver), mille toetust on pakutud Rust 1.51.
  • TĂŒĂŒbid (trait) TryFrom, TryInto ja FromIterator on lisatud standardbiblioteegi prelude'i.
  • Makrosid panic!(..) ja assert!(expr, ..) kasutatakse nĂŒĂŒd alati stringide vormindamiseks format_args!(..), sarnaselt println!() funktsiooniga.
  • Keeles reserveeritud vĂ€ljendid ident#, ident» » ja ident’
’ on.
  • Hoiatused bare_trait_objects ja ellipsis_inclusive_range_patterns on muudetud vigadeks.

Uudised Rust 1.56:

  • Cargo.toml failis sektoris «[package]» on lisatud rust-version vĂ€li, millega saab mÀÀrata minimaalne toetatud Rusti versioon crate-paketi jaoks. Kui praegune versioon ei vasta mÀÀratud parameetrile, katkestab Cargo töö ja vĂ€ljastab vea.
  • Mugavamas iseloomus isikule seondumisel „binding @ pattern“ lake on ellujĂ”udmine lisade kĂ€sitsemiseks (nt „let matrix @ Matrix { row_len, .. } = get_matrix();“).
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
    • std::os::unix::fs::chroot
    • UnsafeCell::raw_get
    • BufWriter::into_parts
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • String::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • Rottel 'const', mis mÀÀrab vĂ”imaluse kasutada seda igas kontekstis konstantide asemel, on rakendatud funktsioonides.
    • std::mem::transmute
    • [T]::first
    • [T]::split_first
    • [T]::last
    • [T]::split_last
  • Kompilaator on ĂŒle viidud LLVM 13 versiooni kasutusele.
  • Teise taseme tugi aarch64-apple-ios-sim platvormi jaoks on rakendatud ning kolmas tase platvormidele powerpc-unknown-freebsd ja riscv32imc-esp-espidf. Kolmas tase tĂ€hendab pĂ”hilist tuge, kuid ilma automatiseeritud testimiseta, ametlike koostiste vĂ€ljaandmiseta ja koodi koostamise vĂ”imaluste kontrollimiseta.

Tuletame meelde, et Rusti keel keskendub mĂ€luga ohutule töötlusele, tagab automaatse mĂ€luhalduse ja pakub vahendeid ĂŒlesannete kĂ”rge paralleelsete tĂ€itmise taseme saavutamiseks, ilma et oleks vaja jÀÀtme kogumise sĂŒsteemi ja runtime'i (runtime piirdub pĂ”hiinitsialiseerimise ja standardteegi hooldusega).

Rustis tagab automaatne mĂ€lu haldus arendajale kaitse, vabastades ta erinevate nĂ€idikute kĂ€sitlemise vigadest ja kaitstes mĂ€luga madalat tööd tehes tekkivate probleemide eest, nagu juurdepÀÀs vabastatud mĂ€lu alale, nullviidete lahtimuukimine, puutumatuse ĂŒletamine jne. Raamatukogude jagamiseks, ehitamise tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldur Cargo. Raamatukogude majutamiseks toetatakse reposiiti crates.io.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster