PublicÄts vispÄrÄjas nozÄ«mes programmÄÅ”anas valodas Rust 1.60 izlaidums, kas dibinÄts ar Mozilla projektu, bet tagad izstrÄdÄts neatkarÄ«gÄs bezpeļÅas organizÄcijas Rust Foundation paspÄrnÄ. Valoda koncentrÄjas uz atmiÅas droŔību un nodroÅ”ina lÄ«dzekļus, lai sasniegtu augstu darba paralÄlismu, vienlaikus izvairoties no atkritumu savÄcÄja un izpildlaika izmantoÅ”anas (izpildlaiks tiek samazinÄts lÄ«dz standarta bibliotÄkas pamata inicializÄÅ”anai un uzturÄÅ”anai).
Rust atmiÅas apstrÄdes metodes pasargÄ izstrÄdÄtÄju no kļūdÄm, manipulÄjot ar rÄdÄ«tÄjiem, un aizsargÄ pret problÄmÄm, kas rodas zema lÄ«meÅa atmiÅas apstrÄdes dÄļ, piemÄram, piekļūŔana atmiÅas apgabalam pÄc tÄ atbrÄ«voÅ”anas, nulles rÄdÄ«tÄju atsauÄu atcelÅ”ana, bufera pÄrtÄriÅi utt. Lai izplatÄ«tu bibliotÄkas, nodroÅ”inÄtu bÅ«vÄjumus un pÄrvaldÄ«tu atkarÄ«bas, projekts izstrÄdÄ Cargo pakotÅu pÄrvaldnieku. Crates.io repozitorijs tiek atbalstÄ«ts bibliotÄku mitinÄÅ”anai.
AtmiÅas droŔība tiek nodroÅ”inÄta Rust kompilÄÅ”anas laikÄ, pÄrbaudot atsauces, sekojot lÄ«dzi objekta Ä«paÅ”umtiesÄ«bÄm, sekojot lÄ«dzi objektu kalpoÅ”anas laikam (tvÄrumam) un novÄrtÄjot atmiÅas piekļuves pareizÄ«bu koda izpildes laikÄ. RÅ«sa arÄ« nodroÅ”ina aizsardzÄ«bu pret veselu skaitļu pÄrpildÄ«Å”anu, pieprasa obligÄtu mainÄ«go vÄrtÄ«bu inicializÄciju pirms lietoÅ”anas, labÄk apstrÄdÄ kļūdas standarta bibliotÄkÄ, pÄc noklusÄjuma piemÄro nemainÄ«gu atsauÄu un mainÄ«go jÄdzienu, piedÄvÄ spÄcÄ«gu statisko rakstÄ«Å”anu, lai samazinÄtu loÄ£iskÄs kļūdas.
Galvenie jauninÄjumi:
- Rustc kompilatoram ir stabilizÄta uz LLVM balstÄ«ta sistÄma pÄrklÄjuma datu Ä£enerÄÅ”anai, ko izmanto koda pÄrklÄjuma novÄrtÄÅ”anai testÄÅ”anas laikÄ. Lai montÄžas laikÄ iespÄjotu pÄrklÄjuma datus, ir jÄizmanto karodziÅÅ” ā-Cinstrument-coverageā, piemÄram, sÄkot montÄžu ar komandu āRUSTFLAGS=ā-C instrument-coverageā cargo buildā. PÄc Å”ÄdÄ veidÄ kompilÄtÄ izpildÄmÄ faila palaiÅ”anas paÅ”reizÄjÄ direktorijÄ tiks saglabÄts fails default.profraw, kura apstrÄdei varat izmantot utilÄ«tu llvm-profdata no komponenta llvm-tools-preview. Llvm-profdata apstrÄdÄto izvadi pÄc tam var nodot llvm-cov, lai Ä£enerÄtu anotÄtu koda pÄrklÄjuma pÄrskatu. InformÄcija par saiti uz avota kodu tiek Åemta no pÄrbaudÄmÄ izpildÄmÄ faila, kas ietver nepiecieÅ”amos datus par pÄrklÄjuma skaitÄ«tÄju un koda savienojumu. 1| 1|fn main() { 2| 1| println!("Sveika, pasaule!"); 3| 1|}
- Kravas pakotnes pÄrvaldniekÄ ir stabilizÄts ā-timingsā karoga atbalsts, kas ietver detalizÄtas atskaites Ä£enerÄÅ”anu par bÅ«vÄÅ”anas gaitu un katra soļa izpildes laiku. PÄrskats var bÅ«t noderÄ«gs, lai optimizÄtu montÄžas procesa veiktspÄju.
- Kravas pakotnes pÄrvaldnieks piedÄvÄ jaunu sintaksi nosacÄ«juma kompilÄcijas un izvÄles atkarÄ«bu atlases mehÄnismam, kas konfigurÄts Cargo.toml failÄ, sadaÄ¼Ä [funkcijas] uzskaitot nosaukto rekvizÄ«tu sarakstu un aktivizÄts, iespÄjojot rekvizÄ«tus pakotnes veidoÅ”anas laikÄ. izmantojot karogu ā--featuresā. JaunajÄ versijÄ ir pievienots atbalsts atkarÄ«bÄm atseviŔķÄs nosaukumvietÄs un vÄjÄs atkarÄ«bÄs.
PirmajÄ gadÄ«jumÄ sadaÄ¼Ä ā[funkcijas]ā ir iespÄjams izmantot elementus ar prefiksu ādep:ā, lai nepÄrprotami izveidotu saiti uz neobligÄtu atkarÄ«bu, netieÅ”i neatspoguļojot Å”o atkarÄ«bu kÄ lÄ«dzekli. OtrajÄ gadÄ«jumÄ ir pievienots atbalsts atzÄ«mÄÅ”anai ar ā?ā zÄ«mi. ("pakotnes nosaukums?/funkcijas nosaukums") neobligÄtÄs atkarÄ«bas, kas jÄiekļauj tikai tad, ja kÄdÄ citÄ rekvizÄ«tÄ ir ietverta norÄdÄ«tÄ neobligÄtÄ atkarÄ«ba. PiemÄram, zemÄk esoÅ”ajÄ piemÄrÄ, iespÄjojot rekvizÄ«tu serde, tiks iespÄjota atkarÄ«ba āserdeā, kÄ arÄ« rekvizÄ«ta āserdeā atkarÄ«bai ārgbā, bet tikai tad, ja atkarÄ«ba ārgbā ir iespÄjota citur: [atkarÄ«bas] serde = { version = " 1.0.133", optional = true } rgb = { version = "0.8.25", optional = true } [funkcijas] serde = ["dep:serde", "rgb?/serde"]
- Ir atgriezts atbalsts pakÄpeniskajai kompilÄcijai, kas tika atspÄjots pÄdÄjÄ laidienÄ. Ir novÄrsta kompilatora kļūda, kas izraisÄ«ja funkcijas atspÄjoÅ”anu.
- AtrisinÄtas dažas problÄmas, nodroÅ”inot tÅ«lÄ«tÄjus taimerus ar monotoniskas laika garantiju, kas Åem vÄrÄ laiku, ko sistÄma pavada miega režīmÄ. IepriekÅ”, kad vien tas bija iespÄjams, taimera darbinÄÅ”anai tika izmantota OS API, kas neÅÄma vÄrÄ problemÄtiskas situÄcijas, kas pÄrtrauc laika vienmuļību, piemÄram, aparatÅ«ras problÄmas, virtualizÄcijas izmantoÅ”anu vai kļūdas operÄtÄjsistÄmÄ.
- Jauna API daļa ir pÄrvietota uz stabilo kategoriju, tostarp ir stabilizÄtas pazÄ«mju metodes un ievieÅ”anas:
- Arc::new_cyclic
- Rc::jauns_ciklisks
- ŔķÄle::EscapeAscii
- <[u8]>::escape_ascii
- u8::escape_ascii
- Vec::rezerves_kapacitÄte_mut
- MaybeUninit::assume_init_drop
- MaybeUninit::assume_init_read
- i8::abs_diff
- i16::abs_diff
- i32::abs_diff
- i64::abs_diff
- i128::abs_diff
- izmÄrs::abs_diff
- u8::abs_diff
- u16::abs_diff
- u32::abs_diff
- u64::abs_diff
- u128::abs_diff
- izmantot::abs_diff
- Displejs io::ErrorKind
- No ExitCode
- Ne priekÅ” ! (ierakstiet "nekad")
- _Op_PieŔķirt<$t>
- arch::is_aarch64_feature_detected!
- TreÅ”ais atbalsta lÄ«menis ir ieviests platformÄm mips64-openwrt-linux-musl* un armv7-unknown-linux-uclibceabi (softfloat). 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.
- Kompilators ir pÄrslÄgts uz LLVM 14 izmantoÅ”anu.
TurklÄt varat atzÄ«mÄt:
- Pievienots atbalsts rustc kompilatora sÄknÄÅ”anai, izmantojot rustc_codegen_gcc aizmugursistÄmu, kas ļauj izmantot GCC projekta libgccjit bibliotÄku kÄ koda Ä£eneratoru programmÄ rustc, kas ļauj rustc nodroÅ”inÄt atbalstu GCC pieejamajÄm arhitektÅ«rÄm un optimizÄcijÄm. Kompilatora veicinÄÅ”ana nozÄ«mÄ iespÄju izmantot rustc uz GCC balstÄ«tu koda Ä£eneratoru, lai izveidotu paÅ”u rustc kompilatoru. No praktiskÄ viedokļa Ŕī funkcija ļauj izveidot rÅ«sas programmas arhitektÅ«rÄm, kuras iepriekÅ” netika atbalstÄ«tas rustc.
- Ir pieejams uutils coreutils 0.0.13 rÄ«kkopas izlaidums, kura ietvaros tiek izstrÄdÄts Rust valodÄ pÄrrakstÄ«tÄs GNU Coreutils pakotnes analogs. ProgrammÄ Coreutils ir vairÄk nekÄ simts utilÄ«tu, tostarp sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln un ls. Projekta mÄrÄ·is ir izveidot starpplatformu alternatÄ«vu Coreutils ievieÅ”anu, kas spÄj darboties uz Windows, Redox un Fuchsia platformÄm, kÄ arÄ« izplatÄ«t saskaÅÄ ar pieļaujamo MIT licenci, nevis GPL copyleft licenci.
JaunajÄ versijÄ ir uzlabota daudzu utilÄ«tu ievieÅ”ana, tostarp ievÄrojami uzlabota cp, dd, df, split un tr utilÄ«tu savietojamÄ«ba ar lÄ«dziniekiem no GNU projekta. Tiek nodroÅ”inÄta tieÅ”saistes dokumentÄcija. Clap parsÄtÄjs tiek izmantots komandrindas argumentu parsÄÅ”anai, kas ir uzlabojis karoga ā--helpā izvadi un pievienojis atbalstu garu komandu saÄ«sinÄjumiem (piemÄram, varat norÄdÄ«t āls -colā, nevis āls -colorā. ā).
Avots: opennet.ru