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

Lini i programimit Rust 1.99 është publikuar, i bazuar në projektin Mozilla, por tani po zhvillohet nën mbikëqyrjen e një organizate të pavarur jofitimprurëse, Rust Foundation. Gjuha fokusohet në punën e sigurt me kujtesën dhe ofron mjete për të arritur një paralelizëm të lartë në ekzekutimin e detyrave, duke u menaxhuar pa përdorimin e mbledhësit të plehrave dhe runtime (runtime reduktohet në inicializimin bazë 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 pĂ«r krijimin e funksioneve nĂ« gjuhĂ«n Rust me numĂ«r variativ argumentesh (variadic), tĂ« eksportuara pĂ«r thirrje nga projekte nĂ« gjuhĂ«n C (C ABI). Si elementi pĂ«rfundimtar i listĂ«s sĂ« parametrave nĂ« kĂ«to funksione mund tĂ« pĂ«rdoret konstrukti « », i cili trajtohet nĂ« Rust me njĂ« tip tĂ« veçantĂ« VaList, qĂ« 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) } }
  • JanĂ« stabilizuar funksionet Layout::for_value_raw, mem::size_of_val_raw dhe mem::align_of_val_raw, tĂ« cilat lejojnĂ« tĂ« pĂ«rcaktohet sigurtĂ« madhĂ«sia dhe pĂ«rputhshmĂ«ria pĂ«r treguesit e papĂ«rpunuar (raw pointer), duke pĂ«rfshirĂ« pĂ«rdorimin e llojeve me madhĂ«si dinamike, siç janĂ« slices, pa nevojĂ«n pĂ«r tĂ« krijuar referenca pĂ«r tĂ« dhĂ«nat.
  • NĂ« dokumentacion Ă«shtĂ« shtuar rekomandimi pĂ«r tĂ« shmangur çlirimin e kujtesĂ«s, pĂ«r tĂ« cilĂ«n Ă«shtĂ« marrĂ« njĂ« referencĂ« statike me njĂ« kohĂ« tĂ« pakufizuar ( &'static) pĂ«rmes thirrjes Box::leak (round-trip unleaking), pasi njĂ« veprim i tillĂ« potencialisht mund tĂ« shkaktojĂ« probleme pĂ«r shkak tĂ« mos pĂ«rputhshmĂ«risĂ« 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Ă«s, 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, mundĂ«sitĂ« pĂ«r debugs dhe zhvillim planifikohen tĂ« ndahen). Kur ndĂ«rtohet nĂ« CI, kompulimi inkremental Ă«shtĂ« i çaktivizuar si standard.
  • Platformat e synuara riscv64-unknown-linux-musl janĂ« e kaluar nĂ« nivelin e dytĂ« tĂ« mbĂ«shtetjes, i cili nĂ«nkupton garantimin e ndĂ«rtimit, por pa garanci gjatĂ« kalimit tĂ« setit tĂ« testeve.

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

  • Kompania Microsoft e ka kaluar Rust nĂ« gjuhĂ«t e nivelit tĂ« parĂ« dhe do tĂ« ofrojĂ« mbĂ«shtetje tĂ« plotĂ« pĂ«r tĂ« nĂ« tĂ« gjitha fazat e zhvillimit brenda kompanisĂ«. Deri tani, niveli i parĂ« i mbĂ«shtetjes brenda kompanisĂ« ishte ofruar pĂ«r gjuhĂ«t C++, C# dhe TypeScript. VĂ«rehet se Rust tashmĂ« pĂ«rdoret nĂ« mĂ« shumĂ« se 100 repo tĂ« Microsoft. NdĂ«r tĂ« tjera, komponentĂ«t nĂ« Rust janĂ« tashmĂ« tĂ« implementuar nĂ« produkte tĂ« tilla 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 për përdorimin e Rust në Microsoft përmendet forcimi i sigurisë së kodit, i rëndësishëm për sigurinë. Sipas drejtorit teknik të Microsoft Azure, rreth 70% e të gjitha vulnerabiliteteve në Windows shkaktohen nga probleme në menaxhimin e memories, të cilat mund të shmangen duke përdorur Rust.

  • Kompania Google e ka hequr nga bĂ«rthama Linux implementimin e vjetĂ«r tĂ« mekanizmit tĂ« ndĂ«rveprimit midis proceseve Binder, tĂ« shkruar nĂ« gjuhĂ«n C, nĂ« favor tĂ« njĂ« drejtorie tĂ« re Binder IPC, e shkruar nĂ« Rust. VĂ«rehet se gjatĂ« 15 viteve ekzistencĂ« tĂ« drejtorisĂ« sĂ« vjetĂ«r, janĂ« grumbulluar njĂ« borxh i madh teknik dhe njĂ« bollĂ«k ndĂ«rlikimesh, qĂ« e kanĂ« vĂ«shtirĂ«suar gjetjen e gabimeve, mbĂ«shtetje dhe shtimin e funksionaliteteve tĂ« reja. Drejtoria Binder IPC nĂ« Rust Ă«shtĂ« pranuar si kryesorja dhe nuk ofrohet mĂ« si njĂ« zhvillim eksperimental.
  • ËshtĂ« publikuar versioni Arti 2.7.0, njĂ« implementim i mjetit Tor, i shkruar nĂ« gjuhĂ«n Rust. Kur kodi Arti tĂ« arrijĂ« njĂ« nivel qĂ« mund tĂ« zĂ«vendĂ«sojĂ« plotĂ«sisht versionin nĂ« C, zhvilluesit e Tor kanĂ« nĂ« plan t'i japin Arti statusin e implementimit kryesor tĂ« Tor-it dhe gradualisht tĂ« ndalojnĂ« mbĂ«shtetje pĂ«r implementimin nĂ« C. NĂ« versionin e ri Ă«shtĂ« ngritur zhvillimi i funksionaliteteve pĂ«r relay. serverĂ«sh autoriteti i dosjeve (Directory Authority), i lidhur me analizimin e dokumenteve, mbĂ«shtetje pĂ«r pasqyrimin e serverĂ«ve tĂ« dosjeve dhe pĂ«rpunimin e trafikut DNS. ËshtĂ« shtuar implementimi i RPC pĂ«r ndryshimin dhe verifikimin e konfiguracionit. JanĂ« eliminuar disa vulnerabilitete - administratorĂ«t e shĂ«rbimeve onion 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