Rust 1.60 programmēŔanas valodas izlaidums

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

Pievieno komentāru