Rust 1.98.0 vÀljaanne. Paketi arrayref kompromiteerimine, mis on kogunud 53 miljonit allalaadimist kolme kuu jooksul.

KĂ€esolev on Rust 1.98 programmikeele vĂ€ljaanne, mis pĂ”hineb Mozilla projektis, kuid mida arendab praegu sĂ”ltumatu mittetulundusĂŒhing Rust Foundation. Keele fookus on mĂ€lu ohutu töötlemine ning see pakub vahendeid ĂŒlesannete tĂ€itmise kĂ”rgparalleelsuse saavutamiseks, kasutamata prĂŒgikoristajat ja runtime'i (runtime piirdub pĂ”hialustamise ja standardraamatukogu toetamisega).

Rust'i mĂ€lu töötlemise meetodid on suunatud pointerite manipuleerimise vigade vĂ€ltimisele ja probleemide kaitsmisele, mis tulenevad madala taseme mĂ€lu töötlemisest, nagu juurdepÀÀs vabastatud mĂ€lupiirkondadele, nullpointerite de-referentseerimine, mĂ€lupuhvri ĂŒletamine jne. Raamatukogude levitamiseks, ehituste tagamiseks ja sĂ”ltuvuste haldamiseks arendatakse pakihaldurit Cargo. Raamatukogude majutamiseks toetatakse repotites crates.io.

MĂ€luhĂŒgieen Rust'is tagatakse kompileerimise ajal viidete kontrollimise, objektide omandi jĂ€lgimise, objektide eluaja (vaateala) arvestamise ja mĂ€lule juurdepÀÀsu korrektuse hindamise kaudu koodi tĂ€itmise ajal. Rust pakub ka vahendeid tĂ€isarvude ĂŒlevoolude vĂ€ltimiseks, nĂ”uab muutujate vÀÀrtuste kohustuslikku initsialiseerimist enne kasutamist, kĂ€sitleb vigu paremini standardraamatukogus, rakendab muutumatuse (immutable) mĂ”istet viidete ja muutujate jaoks vaikimisi ning pakub tugevat staatilist tĂŒĂŒpimist loogiliste vigade vĂ€hendamiseks.

Peamised uuendused:

  • Liikide f32 ja f64 jaoks on rakendatud algebralisi meetodeid liitmiseks, lahutamiseks, korrutamiseks, jagamiseks ja jÀÀgi leidmiseks, mis rakendavad optimeerimist, mis sarnaneb C/C++ kompilaatorites kasutatava valikuga "-ffast-math". Sellised meetodid lubavad operatsioonide jĂ€rjekorra muutumist, kui see on vajalik optimeerimise jaoks, nĂ€iteks silmade vektoriiseerimise korral. NĂ€iteks kui arvutada "a + b + c + d", siis tavapĂ€rase liitmise korral kompilaator alati arvutab jĂ€rjestuses "((a + b) + c) + d", kuid algebralise meetodi algebraic_add kasutamise korral vĂ”ib see vĂ€ljendi grupeerida kui "(a + b) + (c + d)" ja teostada "(a + b)" ja "(c + d)" paralleelselt SIMD juhiste abil. Algebraliste meetodite rakendamise hind on arvutustulemustes ettearvamatuse olemasolu, mis vĂ”ib varieeruda taluvuse piires.
  • KĂ”igi primitiivsete tĂ€isarvutĂŒĂŒpide jaoks on rakendatud sisseehitatud meetod "format_into" numbrite stringideks muutmiseks, mida saab kasutada itoa paketi asemel. Parameetrina antakse NumBuffer puhver, mille suurus on garantii, et see on igasuguste kasutatava tĂŒĂŒbi vÀÀrtuste dekimaalseks kirjutamiseks piisav. VĂ€ljundina tagastatakse vormindatud string &str, mille eluea jooksul on seos puhvri elueaga.
  • ManuallyDrop'i ja Box'i vahelised interaktsioonid ei too enam kaasa mÀÀramatust.
  • Uus hulk API-d on viidud stabiilsuse tasemele, sealhulgas on stabiliseeritud meetodid ja tĂŒĂŒbispetsiifikatsioonide rakendused:
    • str::substr_range
    • [T]::subslice_range
    • core::fmt::NumBuffer
    • ::format_into
    • Send/Sync std::process::CommandArgs jaoks
    • {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
  • Sihtplatvormid thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf ja thumbv8r-none-eabihf on tĂ”lgitud teisele tasemele, mis tagab kokkupaneku, kuid ei garanteeri testkomplekti lĂ€bimist.
  • Tugiteenuste kolmas tase on lisatud platvormidele powerpc64-unknown-linux-gnuelfv2 ja aarch64-unknown-linux-pauthtest. Kolmas tase katab pĂ”hitugi, kuid ilma automatiseeritud testimise, ametlike kompositsioonide avaldamise ja koodi kokkupaneku vĂ”imaluse kontrollimiseta.

Tuleb mĂ€rkida ka populaarselt crate-pakendilt arrayref, millel on viimase 90 pĂ€eva jooksul ĂŒle 53 miljoni allalaadimise ja mida kasutatakse 403 paketi sĂ”ltuvusena. RĂŒndajad on paigaldanud crates.io sisse uued paketid proc-macro1, proc-macro-en, aovine, arone, aronenao ja tinymember, mis sisaldavad pahatahtlikku koodi. PĂ€rast seda avaldati uus vĂ€ljaanne pakettidest arrayref 0.3.10, internment 0.8.7 ja append-only-vec 0.1.9, milles sĂ”ltuvusena lisati pahatahtlik pakett proc-macro1. Pahatahtlik arrayref'i versioon postitati 20. augustil kell 10:15 (MSK) ja oli kohal kuni 11:41, pĂ€rast mida kustutati see crates.io haldajate poolt.

Arrayref'i arendajaga ei ole seni Ă”nnestunud ĂŒhendust vĂ”tta, et olukorda selgitada, kuid arvatakse, et tema kasutajateave on kurjategijate poolt vangistatud. Paketis proc-macro1 oli pahatahtlik muudatus, mis laadis alla vĂ€lise tĂ€itmisfaili. serveridAllalaaditud fail salvestati Unix-sĂŒsteemidesse nimega /tmp/rust-setup ja Windowsis - %TEMP%\rust-setup.ps1 vĂ”i %TEMP%\rust-setup-launch.vbs.

Allikas: opennet.ru

Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega veebisaitidele, VPS VDS serverid - ProHoster