Lëshimi i Rust 1.98.0. Komprometimi i paketës arrayref, e cila ka 53 million shkarkime në 3 muaj.

ËshtĂ« publikuar versioni Rust 1.98 i gjuhĂ«s sĂ« programimit, e krijuar fillimisht nga projekti Mozilla, por qĂ« tani zhvillohet nĂ«n kujdesin e organizatĂ«s sĂ« pavarur jofitimprurĂ«se Rust Foundation. Gjuha fokusohet nĂ« punĂ« tĂ« sigurt me memorien dhe ofron mjete pĂ«r arritjen e njĂ« niveli tĂ« lartĂ« paralelizmi nĂ« ekzekutimin e detyrave, pa pĂ«rdorur garbage collector dhe runtime (runtime kufizohet nĂ« inicializimin bazĂ« dhe mirĂ«mbajtjen e bibliotekĂ«s 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:

  • PĂ«r tipet me presje lĂ«vizĂ«se f32 dhe f64 janĂ« implementuar metoda algjebrike pĂ«r mbledhje, zbritje, shumĂ«zim, pjesĂ«tim dhe gjetjen e mbetjes, qĂ« ofrojnĂ« optimizim tĂ« ngjashĂ«m me opsionin «-ffast-math» nĂ« kompilatorĂ«t C/C++. KĂ«to metoda lejojnĂ« ndryshimin e rendit tĂ« operacioneve kur kjo Ă«shtĂ« e nevojshme pĂ«r optimizime si vektorizimi i cikleve. PĂ«r shembull, gjatĂ« llogaritjes sĂ« «a + b + c + d», me mbledhje tĂ« zakonshme kompilatori gjithmonĂ« do ta kryejĂ« llogaritjen nĂ« njĂ« rend tĂ« vetĂ«m «((a + b) + c) + d», ndĂ«rsa me metodĂ«n algebraic_add mund ta grupojĂ« shprehjen si «(a + b) + (c + d)» dhe tĂ« ekzekutojĂ« «(a + b)» dhe «(c + d)» paralelisht me ndihmĂ«n e instruksioneve SIMD. Kostoja e pĂ«rdorimit tĂ« metodave algjebrike Ă«shtĂ« jodeterminizmi i rezultateve tĂ« llogaritjes, tĂ« cilat mund tĂ« ndryshojnĂ« brenda kufirit tĂ« gabimit.
  • PĂ«r tĂ« gjitha tipet primitive tĂ« numrave tĂ« plotĂ« Ă«shtĂ« implementuar metoda e integruar «format_into» pĂ«r shndĂ«rrimin e numrave nĂ« vargje, e cila mund tĂ« pĂ«rdoret nĂ« vend tĂ« paketĂ«s itoa. Si parametĂ«r jepet buferi NumBuffer, madhĂ«sia e tĂ« cilit garantohet tĂ« jetĂ« e mjaftueshme pĂ«r tĂ« shkruar çdo vlerĂ« tĂ« tipit tĂ« pĂ«rdorur nĂ« formĂ« dhjetore. NĂ« dalje kthehet vargu i formatuar &str, jetĂ«gjatĂ«sia e tĂ« cilit Ă«shtĂ« e lidhur me buferin.
  • NdĂ«rveprimi mes mbĂ«shtjellĂ«sit ManuallyDrop dhe smart pointer-it Box tani nuk çon mĂ« nĂ« sjellje tĂ« papĂ«rcaktuar.
  • NjĂ« grup i ri API u kalua nĂ« kategorinĂ« e stabilizuar, pĂ«rfshirĂ« stabilizimin e metodave dhe implementimeve tĂ« trait-Ă«ve:
    • str::substr_range
    • [T]::subslice_range
    • core::fmt::NumBuffer
    • ::format_into
    • Send/Sync pĂ«r std::process::CommandArgs
    • {fN}::algebraic_add
    • {fN}::algebraic_sub
    • {fN}::algebraic_mul
    • {fN}::algebraic_div
    • {fN}::algebraic_rem
    • NonZero::from_str_radix
    • String::from_utf16le
    • String::from_utf16le_lossy
    • String::from_utf16be
    • String::from_utf16be_lossy
    • [T]::strip_circumfix
    • str::strip_circumfix
    • Atomic::from_mut
    • Atomic::get_mut_slice
    • Atomic::from_mut_slice
    • std::range::legacy
  • Platformat e synuara thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf dhe thumbv8r-none-eabihf janĂ« kaluar nĂ« nivelin e dytĂ« tĂ« mbĂ«shtetjes, i cili garanton ndĂ«rtimin, por nuk jep garanci pĂ«r kalimin e paketĂ«s sĂ« testeve.
  • ËshtĂ« shtuar mbĂ«shtetja pĂ«r platformat powerpc64-unknown-linux-gnuelfv2 dhe aarch64-unknown-linux-pauthtest, pĂ«r tĂ« cilat ofrohet niveli i tretĂ« i mbĂ«shtetjes. Niveli i tretĂ« pĂ«rfshin mbĂ«shtetje bazĂ«, por pa testim tĂ« automatizuar, publikim tĂ« build-eve zyrtare dhe verifikim tĂ« mundĂ«sisĂ« sĂ« ndĂ«rtimit tĂ« kodit.

Gjithashtu vlen të theksohet komprometimi i crate-paketës së njohur arrayref, e cila ka regjistruar mbi 53 milionë shkarkime gjatë 90 ditëve të fundit dhe përdoret si varësi nga 403 paketa. Sulmuesit publikuan në depozitën crates.io paketa të reja proc-macro1, proc-macro-en, aovine, arone, aronenao dhe tinymember, që përmbanin kod keqdashës. Më pas, në depozitë u publikuan versione të reja të paketave arrayref 0.3.10, internment 0.8.7 dhe append-only-vec 0.1.9, ku si varësi u shtua paketa keqdashëse proc-macro1. Versioni keqdashës i paketës arrayref u publikua më 20 gusht në orën 10:15 (MSK) dhe mbeti i disponueshëm deri në 11:41, pas së cilës u hoq nga administratorët e crates.io.

Me mirĂ«mbajtĂ«sin e arrayref ende nuk Ă«shtĂ« arritur tĂ« vendoset kontakt pĂ«r tĂ« sqaruar situatĂ«n, por supozohet se kredencialet e tij janĂ« komprometuar nga keqbĂ«rĂ«sit. NĂ« paketĂ«n proc-macro1, ndryshimi keqdashĂ«s ndodhej nĂ« skriptin e build-it dhe kryente shkarkimin e njĂ« skedari tĂ« ekzekutueshĂ«m nga njĂ« burim i jashtĂ«m serverĂ«. Skedari i shkarkuar nĂ« sistemet Unix ruhej si /tmp/rust-setup, ndĂ«rsa nĂ« Windows — %TEMP%\rust-setup.ps1 ose %TEMP%\rust-setup-launch.vbs.

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