Rust 1.82 vÀljaanne. Uus veebibrauser Rustis. Rusti kasutamine Volvos.

Avaldatud on ĂŒldotstarbelise programmeerimiskeele Rust 1.82 versioon, mille on loonud Mozilla, kuid mis on nĂŒĂŒd arendatud sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation all. Keel keskendub mĂ€luga ohutule töötamisele ja pakub liideseid, et saavutada kĂ”rge paralleelsus ĂŒlesannete tĂ€itmisel, samal ajal vĂ€ltides prĂŒgikoristajat ja runtime'i (runtime koosneb ainult pĂ”hi-initsialiseerimisest ja standardraamatukogu toetamisest).

Rustis olevad mĂ€luhaldusmeetodid vabastavad arendajad probleemidest, mis on seotud osutitega, ning kaitsevad madala taseme mĂ€lutöötlusest tulenevate probleemide, nagu vabanenud mĂ€lu alale juurdepÀÀs, nullosutite de-referentseerimine, mĂ€lupiiride ĂŒletamine jne. Raamatukogude levitamiseks, projekti koostamise ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude paigutamiseks toetatakse repo crates.io.

Rust tagab turvalise mĂ€lutöötluse kompilatsiooni ajal, kontrollides viiteid, jĂ€lgides objektide omandit, arvestades objektide elutsĂŒklit (nĂ€htavust) ja hinnates mĂ€lule juurdepÀÀsu Ă”igsust koodi kĂ€itamise ajal. Rust pakub ka meetmeid enamike tĂ€isarvude ĂŒletamiste vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste algvÀÀrtustamist enne kasutamist, kĂ€sitleb vigasid paremini oma standardraamatukogus, rakendab immutamatuse (immutable) kontseptsiooni viidetes ja muutujates vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade minimeerimiseks.

PÔhilised uuendused:

  • Paketihaldurisse cargo on lisatud kĂ€sk „info”, mis prindib teavet paketi kohta reposs.
  • Lisatud on toetust sĂŒntaksile „use” „impl Trait” keeles, mis mÀÀratleb teavet varjatud tĂŒĂŒpide kohta. NĂ€iteks „impl Trait + use” nĂ€itab, et varjatavas tĂŒĂŒbiks on lubatud kasutada vaid parameetreid „x” ja „T”.
  • Pakutakse eraldi sĂŒntaks raw-viidete loomise jaoks, mis asendab varem kasutatud makrosid: makro „addr_of!(expr)” on asendatud operaatoriga „&raw const expr”, ja makro „addr_of_mut!(expr)” on asendatud operaatoriga „&raw mut expr”. struct Packed { not_aligned_field: i32, } fn main() { let p = Packed { not_aligned_field: 1_82 }; // Vanar stiil raw-viidete loomise jaoks let ptr = std::ptr::addr_of!(p.not_aligned_field); // Uus stiil raw-viidete loomise jaoks let ptr = &raw const p.not_aligned_field; let val = unsafe { ptr.read_unaligned() }; }
  • Selle kaudu on vĂ”imalik mÀÀratleda ohutud funktsioonid ja konstantid, mille eluiga on 'static', extern-blokkides, kus on „unsafe” mĂ€rge (varem vĂ”isid kĂ”ik elemendid „unsafe extern” sisaldada ainult „unsafe” mĂ€rget): unsafe extern { pub safe static TAU: f64; pub safe fn sqrt(x: f64) -> f64; pub unsafe fn strlen(p: *const u8) -> usize; }
  • MĂ€rgid no_mangle, link_section ja export_name, mis vĂ”ivad pĂ”hjustada mÀÀramatut kĂ€itumist, loetakse nĂŒĂŒd ohtlikuks ja nĂ”uavad selget mĂ€rki „unsafe”, nĂ€iteks: #[unsafe(no_mangle)] pub fn my_global_function() { }
  • MusterjĂ€rjendusel on lubatud vahele jĂ€tta tĂŒhjad tĂŒĂŒbid, nagu „enum Void {}” vĂ”i struktuurid, millel on nĂ€htav tĂŒhi vĂ€li. use std::convert::Infallible; pub fn unwrap_without_panic(x: Result) -> T { let Ok(x) = x; // „Err” vĂ”ib vahele jĂ€tta x }
  • Kaudsete numbrite tĂŒĂŒpide (f32 ja f64) puhul on standardiseeritud kĂ€itumine mittearvuliste vÀÀrtuste NaN (0.0/0.0) töötlemisel, samuti on lubatud ujuva koma operatsioonide kasutamine const fn-is.
  • Assempleris on vĂ”imalik kasutada operandaid, millel on „const” mĂ€rk, et otse kasutada tĂ€isarvulisi vÀÀrtusi ilma nende eelneva salvestamiseta registrisse. const MSG: &str = "Hello, world!\n"; unsafe { core::arch::asm!( "mov rdx, {LEN} // luuakse kĂ€sk 'mov rdx, 14'", LEN = const MSG.len(), 
 ); }
  • Lubatud on vĂ€ljendite adresseerimine, millel on „static” mĂ€rk, ohutuskontekstis ilma unsafe ploki mÀÀratlemiseta (operaatorid „&raw mut” ja „&raw const” ei mĂ”juta operandide vÀÀrtust ning loovad ainult viite): static mut STATIC_MUT: Type = Type::new(); extern „C” { static EXTERN_STATIC: Type; } fn main() { let static_mut_ptr = &raw mut STATIC_MUT; let extern_static_ptr = &raw const EXTERN_STATIC; }
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
    • std::thread::Builder::spawn_unchecked
    • std::str::CharIndices::offset
    • std::option::Option::is_none_or
    • [T]::is_sorted
    • [T]::is_sorted_by
    • [T]::is_sorted_by_key
    • Iterator::is_sorted
    • Iterator::is_sorted_by
    • Iterator::is_sorted_by_key
    • std::future::Ready::into_inner
    • std::iter::repeat_n
    • impl DoubleEndedIterator for Take

      Allikas: opennet.ru
Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster