Rust 1.98.0 útgáfa: Brot á arrayref pakkanum, sem hefur verið sóttur 53 milljón sinnum á 3 mánuðum.

Forritunarmálið Rust 1.98, sem var stofnað af Mozilla verkefninu en nú þróað undir verndarvæng hins óháða, hagnaðarlausa Rust Foundation, hefur verið gefið út. Tungumálið leggur áherslu á minnisöryggi og býður upp á verkfæri til að ná mikilli samsíða verkefnaframkvæmd, án þess að nota ruslsafnara og keyrslutíma (keyrslutíminn er styttur í grunn frumstillingu og viðhald á staðlaða bókasafninu).

Aðferðir Rust við minnisstjórnun eru hannaðar til að útrýma villum í meðhöndlun bendla og vernda gegn vandamálum sem stafa af lágstigs minnisstjórnun, svo sem aðgangi að minni eftir að það hefur verið losað, afvísun á núllbendum, ofhleðslu á biðminni og svo framvegis. Verkefnið er að þróa Cargo pakkastjórann til að dreifa bókasöfnum, auðvelda smíði og stjórna ósjálfstæði. Geymslan crates.io er viðhaldið til að hýsa bókasöfn.

Minni öryggi er veitt í Rust á þýðingu tíma með tilvísun athugun, halda utan um eignarhald hlut, halda utan um líftíma hlut (umfang) og meta réttmæti minni aðgangs meðan kóða er keyrt. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökfræðilegar villur.

Helstu nýjungar:

  • Fyrir flýtitölutegundirnar f32 og f64 eru algebrulegar aðferðir fyrir samlagningu, frádrátt, margföldun, deilingu og afgang útfærðar, sem útfæra svipaðar hagræðingar og "-ffast-math" valkostinn í C/C++ þýðendum. Þessar aðferðir gera kleift að breyta röð aðgerða þegar þörf krefur fyrir hagræðingar eins og lykkjuvigrun. Til dæmis, þegar reiknað er út "a + b + c + d" með venjulegri samlagningu, mun þýðandinn alltaf framkvæma útreikninginn í sömu röð: "((a + b) + c) + d", en með því að nota algebraic_add aðferðina getur hann flokkað segðina sem "(a + b) + (c + d)" og keyrt "(a + b)" og "(c + d)" samsíða með því að nota SIMD skipanir. Kostnaðurinn við að nota algebrulegar aðferðir er óákveðni útreikningsniðurstaðnanna, sem geta verið breytilegar innan villumarka.
  • Allar frumstæðar heiltölutegundir hafa innbyggða „format_into“ aðferð til að breyta tölum í strengi, sem hægt er að nota í staðinn fyrir itoa pakkann. NumBuffer biðminni er sent sem breyta. , sem er tryggt að sé nægjanleg stærð til að skrifa hvaða gildi sem er af þeirri gerð sem notuð er í tugabrotsformi. Úttakið er sniðinn strengur &str, en líftími hans er bundinn við biðminni.
  • Samspil milli ManuallyDrop beisliskerfisins og snjallvísisins í Box leiðir ekki lengur til óskilgreindrar hegðunar.
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • str::substr_range
    • [T]::undirsneiðarsvið
    • kjarna::fmt::NumBuffer
    • <{heiltala}>::format_into
    • Senda/Samstilla fyrir std::process::CommandArgs
    • {fN}::algebruleg_add
    • {fN}::algebruleg_undirtegund
    • {fN}::algebruleg_mul
    • {fN}::algebruleg_div
    • {fN}::algebruleg_frávik
    • Ekki núll<{heiltala}>::frá_str_radix
    • Strengur::from_utf16le
    • Strengur::from_utf16le_lossy
    • Strengur::from_utf16be
    • Strengur::from_utf16be_lossy
    • [T]::ræma_umkringingarfesting
    • str::ræma_umferðarfesting
    • Atóm ::frá_mut
    • Atóm ::fá_breyta_sneið
    • Atóm ::frá_mut_sneið
    • std::range::legacy
  • Markpallarnir thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7r-none-eabi, thumbv7r-none-eabihf og thumbv8r-none-eabihf hafa verið færðir á annað stuðningsstig, sem felur í sér ábyrgð á smíði en enga ábyrgð á að standast prófunarpakkann.
  • Stuðningur hefur verið bætt við fyrir powerpc64-unknown-linux-gnuelfv2 og aarch64-unknown-linux-pauthtest kerfin, sem eru nú á 3. stigi. 3. stig inniheldur grunnstuðning, en felur ekki í sér sjálfvirkar prófanir, opinberar útgáfur eða sannprófanir á byggingum.

Að auki var vinsæli crate-pakkinn arrayref, sem hefur verið sóttur yfir 53 milljón sinnum á síðustu 90 dögum og er notaður sem ósjálfstæði af 403 pökkum, í hættu. Árásarmenn birtu nýja pakka sem innihéldu skaðlegan kóða í crates.io-geymslunni: proc-macro1, proc-macro-en, aovine, arone, aronenao og tinymember. Í kjölfarið voru nýjar útgáfur af arrayref 0.3.10, internment 0.8.7 og append-only-vec 0.1.9 birtar í geymslunni, þar sem hver um sig bætti við skaðlega proc-macro1-pakkanum sem ósjálfstæði. Illgjarna útgáfan af arrayref-pakkanum var birt 20. ágúst klukkan 10:15 (MSK) og var virk til klukkan 11:41, eftir það fjarlægðu stjórnendur crates.io hana.

Ekki hefur enn verið haft samband við viðhaldsaðila arrayref til að skýra málið, en talið er að árásarmenn hafi stolið innskráningarupplýsingum þeirra. Í proc-macro1 pakkanum var illgjarn breyting til staðar í byggingarhandritinu og hlóð inn keyrsluskrá úr utanaðkomandi möppu. miðlaraSkráin sem sótt var var vistuð sem /tmp/rust-setup á Unix kerfum og í Windows — %TEMP%\rust-setup.ps1 eða %TEMP%\rust-setup-launch.vbs.

Heimild: opennet.ru

Kauptu áreiðanlega hýsingu fyrir síður með DDoS vernd, VPS VDS netþjónum 🔥 Kauptu áreiðanlega vefhýsingu með DDoS vörn, VPS VDS netþjónum | ProHoster