Avaldatud on Rust 1.52 süsteemikeele uus versioon, mis põhineb Mozilla projektil, kuid mida arendab nüüd sõltumatu mittetulundusühing Rust Foundation. Keel keskendub mäluga turvalisele töötlemisele, tagab automaatse mälu haldamise ja pakub vahendeid kõrge ülesannete täitmise paralleelsuse saavutamiseks, ilma et oleks vaja kasutada prügikoristusprotsessi ja runtime'it (runtime piirdub põhialuste initsialiseerimise ja standardraamatukogu 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.
Põhilised uuendused:
- Eemaldatud on käskude „cargo check“ ja „cargo clippy“ täitmise järjekorra seos. Varem ei toonud „cargo clippy“ käitamine pärast „cargo check‘i“ clippy (linter'i) käivitamist, kuna nende kontrollirežiimide vahelist cache'i ei eristatatud. Nüüd on see probleem lahendatud ja „cargo clippy“ ja „cargo check“ käitamise järjekord ei loe enam.
- A new batch of APIs has been promoted to stable, including the stabilization of the following methods:
- Arguments::as_str
- char::MAX
- char::REPLACEMENT_CHARACTER
- char::UNICODE_VERSION
- char::decode_utf16
- char::from_digit
- char::from_u32_unchecked
- char::from_u32
- slice::partition_point
- str::rsplit_once
- str::split_once
- Märgistus „const”, mis määratleb kasutamise võimaluse mis tahes kontekstis konstantide asemel, on rakendatud meetodites:
- char::len_utf8
- char::len_utf16
- char::to_ascii_uppercase
- char::to_ascii_lowercase
- char::eq_ignore_ascii_case
- u8::to_ascii_uppercase
- u8::to_ascii_lowercase
- u8::eq_ignore_ascii_case
- Lisatud lint-kontroll unsafe_op_in_unsafe_fn, et tuvastada unsafe-koodi kaitsmist unsafe-blockidega, mis on kasutusel unsafe-funktsioonides.
- Lubatud on muudetavate pointerite muutmine massiivi tüüpide pointeriteks, nagu elemendi tüüp. let mut x: [usize; 2] = [0, 0]; let p = &mut x as *mut usize; let p = &mut x as *const usize;
- Clippy (linter) on lisatud 9 uut kontrolli.
- Paketihalduris cargo on rakendatud JSON-i väljade "manifest_path" toetamist. Repositooriumisse crates.io on lisatud toetuse teabe määramine litsentside kohta formaatn SPF 3.11.
- Lubatud on mitu filtrit testide käitamisel, näiteks "cargo test -- foo bar" käivitab kõik testid, mis vastavad maskidele "foo" ja "bar".
- Vaikimisi kasutatav LLVM tööriistakomplekt on uuendatud versioonile LLVM 12.
- Tugitaseme kolmas tase on rakendatud platvormidele s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ja powerpc-unknown-openbsd. Kolmas tase tähendab põhitoetust, kuid ilma automatiseeritud testimise, ametlike koostamiste avaldamise ja koodi kokkupaneku kontrollimiseta.
Allikas: opennet.ru
