IznÄcis Mozilla projekta dibinÄtÄs, bet tagad neatkarÄ«gÄs bezpeļÅas organizÄcijas Rust Foundation paspÄrnÄ izstrÄdÄtÄs sistÄmas programmÄÅ”anas valodas Rust 1.56 izlaidums. Papildus parastajam versijas numuram izlaidums ir arÄ« apzÄ«mÄts ar Rust 2021 un iezÄ«mÄ pÄdÄjo trÄ«s gadu laikÄ ierosinÄto izmaiÅu stabilizÄÅ”anos. Rust 2021 kalpos arÄ« par pamatu funkcionalitÄtes palielinÄÅ”anai nÄkamo trÄ«s gadu laikÄ, lÄ«dzÄ«gi kÄ Rust 2018 izlaidums kļuva par pamatu valodas attÄ«stÄ«bai pÄdÄjo trÄ«s gadu laikÄ.
Lai saglabÄtu saderÄ«bu, izstrÄdÄtÄji savÄs programmÄs var izmantot etiÄ·etes "2015", "2018" un "2021", ļaujot saistÄ«t programmas ar valodas stÄvokļa ŔķÄlÄm, kas atbilst atlasÄ«tajiem Rust izdevumiem. Izdevumi tika ieviesti, lai atdalÄ«tu nesaderÄ«gas izmaiÅas, un tie ir konfigurÄti kravas paku metadatos, izmantojot lauku āizdevumsā sadaÄ¼Ä ā[paka]ā. PiemÄram, izdevums ā2018ā ietver funkcionalitÄti, kas stabilizÄta 2018. gada beigÄs, kÄ arÄ« visas turpmÄkÄs izmaiÅas, kas nepÄrkÄpj saderÄ«bu. 2021. gada izdevumÄ papildus ir iekļautas sadarbspÄju traucÄjoÅ”as funkcijas, kas ierosinÄtas paÅ”reizÄjÄ 1.56 laidienÄ un apstiprinÄtas turpmÄkai ievieÅ”anai. Papildus paÅ”ai valodai redaktori Åem vÄrÄ arÄ« rÄ«ku un dokumentÄcijas stÄvokli.
GalvenÄs Rust 2021 reÄ£istrÄtÄs nesaderÄ«bas:
- AtseviŔķa tverÅ”ana slÄgÅ”anÄ ā tagad slÄgÅ”anÄ var tvert atseviŔķus lauku nosaukumus, nevis visu identifikatoru. PiemÄram, "|| ax + 1" tver tikai "ax", nevis "a".
- IntoIterator iezÄ«me masÄ«viem: array.into_iter() ļauj atkÄrtot masÄ«va elementus pÄc vÄrtÄ«bÄm, nevis pÄc atsaucÄm.
- Izteicienu ā|ā apstrÄde ir mainÄ«ta macro_rules (BÅ«la VAI) modeļos ā atbilstÄ«bas specifikÄcija ":pat" tagad attiecas uz "A | B".
- Kravas pakotnes pÄrvaldnieks pÄc noklusÄjuma ietver funkciju atrisinÄtÄja otro versiju, kuras atbalsts parÄdÄ«jÄs Rust 1.51.
- TryFrom, TryInto un FromIterator iezÄ«mes ir pievienotas prelÅ«dijas standarta bibliotÄkas modulim.
- Panic!(..) un assert!(expr, ..) makro tagad vienmÄr izmanto format_args!(..), lai formatÄtu virknes, lÄ«dzÄ«gi kÄ println!().
- Izteicieni ident#, identĀ»..." un ident'...' ir rezervÄti valodas sintaksÄ.
- Bare_trait_objects un ellipsis_inclusive_range_patterns brÄ«dinÄjumi ir pÄrvietoti uz kļūdÄm.
Jaunums Rust 1.56:
- VietnÄ Cargo.toml sadaÄ¼Ä ā[package]ā ir pievienots lauks Rust-version, caur kuru var noteikt minimÄli atbalstÄ«to Rust versiju kastes pakotnei. Ja paÅ”reizÄjÄ versija neatbilst norÄdÄ«tajam parametram, Cargo pÄrtrauks darbu ar kļūdas ziÅojumu.
- Veidojot saskaÅoÅ”anu, izmantojot izteiksmes "binding @ pattern", tiek nodroÅ”inÄts atbalsts papildu saiÅ”u norÄdÄ«Å”anai (piemÄram, "let matrix @ Matrix { row_len, .. } = get_matrix();").
- Jauna API daļa ir pÄrvietota uz stabilo kategoriju, tostarp ir stabilizÄtas pazÄ«mju metodes un ievieÅ”anas:
- 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
- FunkcijÄs tiek izmantots atribÅ«ts āconstā, kas nosaka iespÄju izmantot jebkurÄ kontekstÄ, nevis konstantes
- std::mem::transmute
- [T]::pirmais
- [T]::sadalīt_pirmais
- [T]::pÄdÄjais
- [T]::split_last
- Kompilators ir pÄrslÄgts uz LLVM versiju 13.
- Otrais atbalsta lÄ«menis ir ieviests platformai aarch64-apple-ios-sim un treÅ”ais lÄ«menis platformÄm powerpc-unknown-freebsd un riscv32imc-esp-espidf. TreÅ”ais lÄ«menis ietver pamata atbalstu, taÄu bez automatizÄtas testÄÅ”anas, oficiÄlu bÅ«vÄjumu publicÄÅ”anas vai pÄrbaudes, vai kodu var izveidot.
AtgÄdiniet, ka Rust ir vÄrsta uz atmiÅas droŔību, nodroÅ”ina automÄtisku atmiÅas pÄrvaldÄ«bu un nodroÅ”ina lÄ«dzekļus, lai sasniegtu augstu paralÄlismu darba izpildÄ, neizmantojot atkritumu savÄcÄju vai izpildlaiku (izpildlaiks tiek samazinÄts lÄ«dz standarta bibliotÄkas pamata inicializÄÅ”anai un uzturÄÅ”anai).
Rust automÄtiskÄ atmiÅas pÄrvaldÄ«ba novÄrÅ” kļūdas, manipulÄjot ar rÄdÄ«tÄjiem, un aizsargÄ pret problÄmÄm, kas rodas no zema lÄ«meÅa atmiÅas manipulÄcijÄm, piemÄram, piekļuves atmiÅas apgabalam pÄc tÄ atbrÄ«voÅ”anas, nulles rÄdÄ«tÄju novirzÄm, bufera pÄrtÄriÅiem utt. BibliotÄku izplatÄ«Å”anai, komplektÄÅ”anas nodroÅ”inÄÅ”anai un atkarÄ«bu pÄrvaldÄ«bai projektÄ tiek izstrÄdÄts Cargo pakotÅu pÄrvaldnieks. Crates.io repozitorijs tiek atbalstÄ«ts bibliotÄku mitinÄÅ”anai.
Avots: opennet.ru