VĂ€lja on antud programmeerimiskeel Rust 1.73

Avalikustatud ĂŒldotstarbelise programmeerimiskeele Rust 1.73 vĂ€ljaanne, mille on loonud Mozilla, kuid mida arendab praegu sĂ”ltumatu mittetuluorganisation Rust Foundation. Keele keskmes on ohutu mĂ€lu haldus ning see pakub vahendeid ĂŒlesannete kĂ”rge paralleelsuse saavutamiseks, samal ajal vĂ€ltides prĂŒgikorjaja ja vĂ€ljavaate (runtime'i) kasutamist, mis piirdub ainult pĂ”hialustamise ja standardraamatukogu hooldamisega.

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:

  • Uuendatud on vaikimisi programmivigu kĂ€sitleva kĂ€skluse (panic) vĂ€ljastatavate teadete kujundust. Makros "panic!" antud tekst kuvatakse nĂŒĂŒd eraldi real ilma jutumĂ€rkideta, mis parandab sĂ”numi loetavust ja kĂ”rvaldab vĂ”imaliku segaduse, kui seal on siseruumi jutumĂ€rke vĂ”i ridade jagunemist. fn main() { let file = "ferris.txt"; panic!("oh ei! {file:?} ei leitud!"); } Varem thread ‘main’ panicked at ‘oh ei! "ferris.txt" ei leitud!’, src/main.rs:3:5 NĂŒĂŒd thread ‘main’ panicked at src/main.rs:3:5: oh ei! "ferris.txt" ei leitud!

    Sama moodi on uuendatud ka makrode "assert_eq" ja "assert_ne" vigade vĂ€ljastamise. fn main() { assert_eq!("🩀", "🐟", "ferris ei ole kala"); } Varem thread ‘main’ panicked at ‘assertion failed: `(left == right)` left: `"🩀"`, right: `"🐟"`: ferris ei ole kala’, src/main.rs:2:5 NĂŒĂŒd thread ‘main’ panicked at src/main.rs:2:5: assertion `left == right` failed: ferris ei ole kala left: "🩀" right: "🐟"

  • RFC 3184 kohaselt on lisatud vĂ”imalus otse manipuleerida niidile (thread_local) kohandatud vĂ”tmetega LocalKey<Cell> ja LocalKey<RefCell> meetodite get(), set(), take() ja replace() abil, selle asemel, et kasutada sulgud "with(|inner| 
)", mis vĂ”imaldab vĂ€ltida tĂ€iendava initsialiseerimise koodi tĂ€itmist vaikimisi vÀÀrtuste jaoks, mis on mÀÀratud uustele niidele makros "thread_local!" abil. thread_local! { static THINGS: Cell<Vec> = Cell::new(Vec::new()); } fn f() { // varem THINGS.with(|i| i.set(vec![1, 2, 3])); // nĂŒĂŒd THINGS.set(vec![1, 2, 3]); // 
 // varem let v = THINGS.with(|i| i.take()); // nĂŒĂŒd let v: Vec = THINGS.take(); }
  • Stabiilsete versioonide hulka on lisatud uus komplekt API-sid, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒpide rakendused:
    • Unsigned {integer}::div_ceil
    • Unsigned {integer}::next_multiple_of
    • Unsigned {integer}::checked_next_multiple_of
    • std::ffi::FromBytesUntilNulError
    • std::os::unix::fs::chown
    • std::os::unix::fs::fchown
    • std::os::unix::fs::lfchown
    • LocalKey::<Cell>::get
    • LocalKey::<Cell>::set
    • LocalKey::<Cell>::take
    • LocalKey::<Cell>::replace
    • LocalKey::<RefCell>::with_borrow
    • LocalKey::<RefCell>::with_borrow_mut
    • LocalKey::<RefCell>::set
    • LocalKey::<RefCell>::take
    • LocalKey::<RefCell>::replace
  • Konstantse mĂ€rgendiga `const`, mis mÀÀrab vĂ”imaluse kasutada konstandina igas kontekstis, on rakendatud funktsioonides:
    • rc::Weak::new
    • sync::Weak::new
    • NonNull::as_ref
  • Kompilaatoris on tagatud versiooniteabe salvestamine jaotises ".comment", sarnaselt GCC ja Clang'iga.
  • On rakendatud kolmas toetuse tase platvormidele aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl ja x86_64-unknown-linux-ohos. Kolmas tase vĂ”imaldab pĂ”hitoetust, kuid ilma automatiseeritud testimise, ametlike kogumite vĂ€ljastamise ja koodikogumise kontrollimiseta.
  • On rakendatud teine toetuse tase sihtplatvormile wasm32-wasi-preview1-threads. Teine tase tagab kogumise.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster