Lëshimi i Rust 1.99.0. Microsoft e shpuri Rust në mesin e gjuhëve primare

Kjo është lançuar publikimi i gjuhës së programimit Rust 1.99, e cila fillimisht ishte një projekt nga Mozilla, por tani zhvillohet nën mbështetje të një organizate jo-fitimprurëse të pavarur, Rust Foundation. Gjuha fokusohet në punën e sigurt me kujtesën dhe ofron mjete për të arritur një paralelizëm të lartë të ekzekutimit të detyrave, duke shmangur përdorimin e mbledhësit të plehrave dhe runtime të gjerë (runtime reduktohet në inicializimin e bazës dhe mbështetje për bibliotekën standarde).

Metodat e punës me memorie në Rust janë të orientuara për të eliminuar gabimet gjatë manipulimit të treguesve dhe për të mbrojtur nga problemet që lindin nga puna me nivel të ulët me memorinë, siç janë akseset në zona memorien pas lirimit të saj, dereferencimi i treguesve null, tejkalimi i kufijve të bufeve etj. Për shpërndarjen e bibliotekave, sigurinë e ndërtimit dhe menaxhimin e varësive, projekti zhvillohet me ndihmën e menaxherit të paketave Cargo. Mbështetet një depo për bibliotekat, crates.io.

Puna e sigurt me kujtesën sigurohet në Rust gjatë kompilimit përmes verifikimit të referencave, ndjekjes së pronësisë së objekteve, llogaritjes së kohëzgjatjes së jetës së objekteve (fushave të dukshmërisë) dhe vlerësimit të saktësisë së qasjes në kujtesë gjatë ekzekutimit të kodit. Rust gjithashtu ofron mjete për mbrojtjen nga tejkalimet e numrave të plotë, kërkon inicializimin e detyrueshëm të vlerave të variablave para përdorimit, trajton më mirë gabimet në bibliotekën standarde, aplikon konceptin e referencave dhe variablave të pandryshueshëm (immutable) si standard dhe ofron tipizimin e fortë statik për të minimizuar gabimet logjike.

Novitetet kryesore:

  • ËshtĂ« ofruar mundĂ«sia e krijimit tĂ« funksioneve nĂ« gjuhĂ«n Rust me njĂ« numĂ«r variabĂ«l argumentesh (variadic), tĂ« eksportuara pĂ«r t'u thirrur nga projekte nĂ« gjuhĂ«n C (C ABI). Si elementi i fundit nĂ« listĂ«n e parametrave nĂ« kĂ«to funksione mund tĂ« specohet struktura "
", e cila pĂ«rpunuar nĂ« Rust me ndihmĂ«n e njĂ« tipi tĂ« veçantĂ« VaList, funksionon nĂ« mĂ«nyrĂ« tĂ« ngjashme me va_list nĂ« C. unsafe extern "C" fn sum(mut args: 
) -> i32 { let a = unsafe { args.next_arg::() }; let b = unsafe { args.next_arg::() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Funksionet Layout::for_value_raw, mem::size_of_val_raw dhe mem::align_of_val_raw janĂ« stabilizuar, duke lejuar pĂ«rcaktimin e sigurt tĂ« madhĂ«sisĂ« dhe pĂ«rputhjes pĂ«r treguesit e papĂ«rpunuar (raw pointer), pĂ«rfshirĂ« pĂ«rdorimin e tipeve me madhĂ«si dinamike, siç janĂ« slice, pa nevojĂ«n pĂ«r tĂ« krijuar referenca pĂ«r tĂ« dhĂ«nat.
  • Dokumentacioni Ă«shtĂ« plotĂ«suar me njĂ« rekomandim pĂ«r tĂ« shmangur çlirimin e kujtesĂ«s, pĂ«r tĂ« cilĂ«n u mor njĂ« referencĂ« statike me njĂ« jetĂ«gjatĂ«si tĂ« pakufizuar (&’static) pĂ«rmes thirrjes Box::leak (round-trip unleaking), pasi njĂ« veprim i tillĂ« mund tĂ« shkaktojĂ« probleme pĂ«r shkak tĂ« moskompatibilitetit me optimizimet e ardhshme tĂ« kompajlerit dhe mekanizmat e lidhur pĂ«r alokimin e kujtesĂ«s. NĂ« vend tĂ« krijimit tĂ« njĂ« referencĂ« statike pĂ«r njĂ« transferim tĂ« pĂ«rkohshĂ«m tĂ« pronĂ«sisĂ«, rekomandohet pĂ«rdorimi i treguesve tĂ« papĂ«rpunuar, pĂ«r shembull, pĂ«rmes thirrjes Box::into_non_null.
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • IntoIterator pĂ«r Box
    • IntoIterator pĂ«r &Box
    • IntoIterator pĂ«r &mut Box
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator pĂ«r StepBy
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • NĂ« menaxherin e paketave cargo Ă«shtĂ« implementuar njĂ« profil i ri i integruar "debug", i ngjashĂ«m me profilin "dev" (nĂ« tĂ« ardhmen pritet tĂ« ndahen mundĂ«sitĂ« pĂ«r debuggim dhe zhvillim). GjatĂ« ndĂ«rtimit nĂ« CI, kompilimi inkremental Ă«shtĂ« aktivizuar si parazgjedhje.
  • Platformat e targetit riscv64-unknown-linux-musl Ă«shtĂ« çuar nĂ« nivelin e dytĂ« tĂ« mbĂ«shtetjes, i cili pĂ«rfshin garancinĂ« e ndĂ«rtimit, por pa garanci gjatĂ« kalimit tĂ« paketĂ«s testuese.

Gjithashtu mund të theksohet projektet dhe ngjarjet e shpallura së fundmi të lidhura me Rust:

  • Kompania Microsoft ka ndĂ«rmarrĂ« Rust nĂ« kategorinĂ« e gjuhĂ«ve tĂ« nivelit tĂ« parĂ« dhe do t'i ofrojĂ« mbĂ«shtetje tĂ« plotĂ« nĂ« tĂ« gjitha fazat e zhvillimit brenda kompanisĂ«. Nga mĂ« parĂ«, mbĂ«shtetje e nivelit tĂ« parĂ« brenda kompanisĂ« ishte ofruar pĂ«r gjuhĂ«t C++, C# dhe TypeScript. VĂ«rehet se Rust pĂ«rdoret tashmĂ« nĂ« mĂ« shumĂ« se 100 depo tĂ« Microsoft. PjesĂ« tĂ« ndryshme tĂ« shkruara nĂ« Rust janĂ« pĂ«rdorur nĂ« produkte si Microsoft 365 dhe Copilot, dhe pĂ«r kompilatorin MSVC Ă«shtĂ« pĂ«rgatitur njĂ« backend i veçantĂ« rustc_codegen_utc pĂ«r Rust, i bazuar nĂ« kompilatorin rustc.

    Si qëllim kryesor i përdorimit të Rust në Microsoft përmendet përforcimi i sigurisë së kodit, i rëndësishëm nga pikëpamja e sigurisë. Sipas drejtorit teknik të Microsoft Azure, rreth 70% e të gjitha vulnerabiliteteve në Windows shkaktohen nga probleme të menaxhimit të memories, të cilat mund të evitohen duke përdorur Rust.

  • Kompania Google e ka hequr nga bĂ«rthamja e Linux-it implementimin e vjetĂ«r tĂ« mekanizmit tĂ« komunikimit ndĂ«rproçesor Binder, tĂ« shkruar nĂ« gjuhĂ«n C, nĂ« favor tĂ« njĂ« drejtori tĂ« ri Binder IPC, i rikoduar nĂ« Rust. VĂ«rehet se nĂ« 15 vjet ekzistence tĂ« drejtuesit tĂ« vjetĂ«r, ai ka akumuluar njĂ« borxh teknik tĂ« konsiderueshĂ«m dhe njĂ« shumicĂ« komplikimesh qĂ« e ka bĂ«rĂ« tĂ« vĂ«shtirĂ« gjetjen e defekteve, mirĂ«mbajtjen dhe shtimin e mundĂ«sive tĂ« reja. Drejtori Binder IPC nĂ« Rust Ă«shtĂ« pranuar si kryesor dhe nuk konsiderohet mĂ« si njĂ« zhvillim eksperimental.
  • ËshtĂ« publikuar versioni Arti 2.7.0, njĂ« implementim i instrumenteve Tor, i shkruar nĂ« gjuhĂ«n Rust. Kur kodi Arti arrin nivelin qĂ« mund tĂ« zĂ«vendĂ«sojĂ« plotĂ«sisht variantin nĂ« C, zhvilluesit e Tor kanĂ« ndĂ«rmend t'i japin Arti statusin e implementimit kryesor tĂ« Tor dhe gradualisht tĂ« ndalin mirĂ«mbajtjen e implementimit nĂ« C. NĂ« versionin e ri Ă«shtĂ« shtruar zhvillimi i funksionalitetit pĂ«r rrelet dhe serverĂ«sh direktori (Directory Authority), e cila Ă«shtĂ« e lidhur me pĂ«rpunimin e dokumenteve, mbĂ«shtetje pĂ«r pasqyrimin e serverĂ«ve tĂ« direktorive dhe pĂ«rpunimin e trafikut DNS. U shtua implementimi i RPC pĂ«r ndryshimin dhe verifikimin e konfiguracionit. U eliminuan disa vulnerabilitete — administratorĂ«ve tĂ« shĂ«rbimeve onion u rekomandohet tĂ« azhurnojnĂ« menjĂ«herĂ« sistemet e tyre.

Burimi: opennet.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster