Útgáfa Rust 1.81 almennt forritunarmálsins, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið leggur áherslu á minnisöryggi og veitir leiðina til að ná mikilli samhliða vinnu á sama tíma og forðast notkun á sorphirðu og keyrslutíma (keyrslutími minnkar í grunnuppsetningu og viðhald á venjulegu bókasafni).
Minni meðhöndlunaraðferðir Rust bjarga þróunaraðilanum frá villum við meðhöndlun ábendinga og vernda gegn vandamálum sem koma upp vegna minnis meðhöndlunar á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísun núllbenda, offramkeyrsla á biðminni o.s.frv. Til að dreifa bókasöfnum, útvega smíði og stjórna ósjálfstæði, þróar verkefnið farmpakkastjórann. Crates.io geymslan er studd 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:
- Kjarna::villu::villueiginleikinn, sem skilgreinir sýndar villulýsingar, hefur verið stöðugur. Breytingin gerir þér kleift að nota stakan villueiginleika í ýmsum söfnum, óháð umhverfi, þar á meðal í söfnum sem ekki eru bundin við venjulegt bókasafn, með því að nota „#![no_std]“ eigindina.
- Stöðugum og óstöðugum flokkunaraðgerðum í staðlaða bókasafninu hefur verið breytt til að nota ný reiknirit sem sýna fram á meiri afköst og lægri samantektartíma. Við innleiðingu nýrra flokkunaralgríma er hægt að greina rangt skilgreindar Ord tegundir og gefa út villu (læti) í slíkum tilfellum í stað gagna sem eru flokkuð af handahófi.
- Linter innleiðir nýtt athugunarstig „búast“ (“#[búast við(lint)]“), sem gerir þér kleift að sannreyna að athuguninni hafi verið lokið og birta viðvörun ef athuguninni er ekki lokið (vegna villu í útfærslunni eða slökkva á ávísuninni). Til dæmis, þegar þú flytur kóðagrunn til að nota Clippy's undocumented_unsafe_blocks athugun, geturðu tilgreint "#[vænta(clippy::undocumented_unsafe_blocks)]" til að tryggja að allar óöruggar blokkir séu skjalfestar á meðan á umskiptum stendur. Clippy útfærir einnig clippy::allow_attributes og clippy::allow_attributes_without_reason checks, sem gerir það auðvelt að skipta út "#[allow]" eiginleikum með "#[búast(lint)]".
- Möguleikinn á að skjalfesta ástæðuna fyrir því að skipta um ávísunarstig (lint) er veitt, sem veitir nýjum forriturum upplýsingar um ástæðurnar fyrir því að bæta við tiltekinni ávísun, úttak sem þýðandaskilaboð. Til dæmis: #![neta(clippy::float_arithmetic, ástæða = „engin stuðningur við vélbúnaðarfljót“)]
- 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:
- kjarna::villa
- vísbending::assert_unchecked
- fs:: er til
- AtomicBool::fetch_not
- Lengd::abs_diff
- IoSlice :: fyrirfram
- IoSlice::advance_slices
- IoSliceMut :: fyrirfram
- IoSliceMut::advance_slices
- PanicHookInfo
- PanicInfo::skilaboð
- PanicMessage
"const" eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í föllum:
- char::from_u32_unchecked (aðgerð)
- char::from_u32_unchecked (aðferð)
- CStr::count_bytes
- CStr::frá_ptr
Gerðinni std::panic::PanicInfo hefur verið breytt í std::panic::PanicHookInfo (virkni gamla nafnsins er haldið, en frá næstu útgáfu mun notkun þess leiða til viðvörunar). Í þessu tilviki verður core::panic::PanicInfo áfram eins og það er, en verður þróað sem aðskilin tegund. Að aðskilja gerðir mun leyfa þér að innleiða mismunandi aðferðir í þeim sem eru sértækar fyrir framkvæmd í samhengi við snd og no_std.
- Umskipti yfir í C-unwind ABI („ytri „C-unwind““) hefur verið lokið, sem er frábrugðið ABI án „-unwind“ viðskeytisins („extern „C““) með því að viðhalda öruggri hegðun ef afslöppunarferlið er ), sem koma af stað þegar forrit hrynur eða undantekningu í C++-stíl er hent, fer yfir ABI-mörk (til dæmis þegar undantekning sem er hent í kóða á einu forritunarmáli er vinda ofan af með því að snerta stafla sem tengist kóða á öðru forritunarmáli). Frá því að Rust 1.81 kom út hefur „ytri „C““ ABI verið gert kleift að hrynja við ómerkt afslöppun.
- Þriðja stig stuðnings hefur verið innleitt fyrir pallana i686-unknown-redox, xtensa-esp32-none-elf, xtensa-esp32s2-none-elf, xtensa-esp32s3-none-elf, xtensa-esp32-espidf, xtensa-esp32s2 -espidf, xtensa- esp32s3-espidf. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar, útgáfu opinberra smíða eða athuga hvort hægt sé að smíða kóðann.
- Annað stig stuðnings fyrir markpallana loongarch64-unknown-linux-musl og arm64ec-pc-windows-msvc hefur verið innleitt. Annað stig stuðnings felur í sér samsetningarábyrgð.
- Fyrir Linux-kerfi á LoongArch kerfinu eru með fullkomnu verkfærakistu og prófílbúnaði.
- Veikleiki (CVE-2024-43402) í std::process::Command sem hefur aðeins áhrif á kerfið hefur verið lagfærður. Windows og útrýmir lausn til að nýta sér áður lagfærða BatBadBut veikleika, sem fól í sér meðhöndlun sérstakra tákna þegar Command::arg og Command::args köll voru notuð, sem eru hönnuð til að senda færibreytur beint til ferlis án þess að skipanatúlkurinn vinni úr þeim. Í raun og veru, þegar bat og cmd forskriftir voru keyrðar, var cmd.exe ferlið ræst, sem hefur sína eigin rökfræði til að aðgreina færibreytur. Hliðrunarferlið byggist á þeirri staðreynd að Windows fjarlægir bil og punkta í slóðum, þ.e. skrá með endingunni „.bat“ er unnin sem „.bat“.
Einnig er athyglisvert að Wedson Almeida Filho hefur sagt upp störfum sem verkefnastjóri Rust fyrir... Linux, tekur þátt í kjarnaútfærslu Linux þróunartól fyrir Rust-málið. Eftir að Wadson hætti hefur verkefnið enn tvo viðhaldsaðila: Miguel Ojeda, höfund og aðalforritara Rust-for-Linuxog Alex Gaynor, fyrrverandi forstöðumaður Python Software Foundation, sem hefur einbeitt sér að kynningu á Rust. Fráfarandi viðhaldsstjóri, sem hóf störf hjá verkefninu fyrir fjórum árum, er starfsmaður Microsoft og höfundur tilraunakennds rekla sem útfærir EXT2 skráarkerfið, skrifaðan í Rust. Nýleg vinna Almeida hefur beinst að því að búa til verkfæri til að þróa skráarkerfi í Rust. Í ár lagði Almeida sitt af mörkum við Rust-for- geymsluna.Linux 17 skuldbindingar (til samanburðar bætti Miguel Ojeda við 53 skuldbindingum).
Ástæðan sem nefnd er fyrir brotthvarfinu er skortur á orku og eldmóði, sem áður var til staðar til að bregðast við ákveðnu ótæknilegu rugli. Samkvæmt Almeida eru forritarar neyddir til að eyða mikilli orku í að rífast um ómerkileg mál sem grafa undan mikilvægara heildarmarkmiði. Almeida heldur áfram að trúa því að framtíð kjarna felist í því að nota minnisörugg forritunarmál, og ef forritarasamfélagið... Linux skil þetta þá ekki Linux verður skipt út fyrir einhvern annan kjarna, eins og gerðist með Unix á sínum tíma.
Stuðningsmenn Rust-for- verkefnisinsLinux stóð frammi fyrir þörfinni á að sigrast á mótspyrnu frá reyndum, reynslumiklum kjarnaforriturum sem sáu enga þörf á að læra nýtt forritunarmál. Í uppsagnarbréfi sínu nefnir Almeida sem dæmi umræðu sem átti sér stað á kynningu Almeida með Kent Overstreet áLinux „Geymsla, skráakerfi, minnisstjórnun og BPF ráðstefnan“ og var tileinkuð notkun Rust til skráakerfisþróunar. Ted Ts'o, höfundur ext2/ext3/ext4 skráakerfanna, gagnrýndi innleiðingu Rust, en hann bar saman Rust-for-Linux með tilraun til að neyða alla til að taka upp ryðtrúarbrögðin.
Til að bregðast við ætlun Almeida að búa til umbúðir utan um skráarkerfisviðmót skrifað í C til notkunar í Rust kóða, benti Ted Tso á að slíkt umbúðir myndi óhjákvæmilega leiða til vandamála, þar sem allar breytingar á C viðmótum og endurnýjun myndu krefjast breytinga á bindingum fyrir Ryð og vill hann ekki taka á sig óþarfa ábyrgð á að laga vandamál í Ryðkóðanum og fylgjast með ástandi Ryðbindingarinnar. C kóða er í stöðugri þróun og ef breyting hans brýtur virkni Rust ramma mun það leiða til truflunar á öllum skráarkerfum sem tengjast þessum ramma.
Ted telur einnig að í fyrirsjáanlega framtíð muni bindingin fyrir Rust vera aukaatriði og að vandamál í bindingum muni aðeins vera höfuðverkur fyrir Rust-fyrir-forritara.Linux, og ekki fyrir þróunarsamfélag kjarnaskráarkerfa. Bent var á að ekki allir forritarar hyggjast læra Rust, og því, eftir að hafa gert breytingar sem hafa áhrif á annan kóða, munu þeir aðeins geta uppfært háðan C kóða, en ekki lagað Rust-bindingarnar, þar sem þeir þekkja ekki Rust. James Bottomley, viðhaldsmaður SCSI undirkerfisins, tók einnig þátt í umræðunni og sagði að því meira sem merkingarfræði er kóðuð í bindingarnar, því brothættari verða þær hvað varðar samstillingu.
Á sama tíma endurskrifaði Google í fyrra pvmfm vélbúnaðinn sem notaður var í sýndarvélar, sett á laggirnar á vettvangi Androiddeildi reynslu sinni af því að fella Rust kóða smám saman inn í núverandi vélbúnaðarforrit sem upphaflega var skrifað í C eða C++. Hún sýndi fram á hvernig hægt væri að bæta öryggi vélbúnaðar verulega með því að búa til virknilega eins íhluti sem voru skrifaðir í Rust. Við útfærslu á Rust lagði hún til að einbeita sér að því að nota Rust fyrir nýjan kóða og kóða sem sinnir öryggismikilvægum aðgerðum (til dæmis kóða til að vinna úr utanaðkomandi gögnum sem berast frá ótraustum aðilum). Til að samþætta Rust og C kóða lagði hún til að nota millilegg sem þýða köll milli Rust og C API (C API er flutt út til notkunar í Rust kóða og öfugt), sem gerir kleift að endurskrifa API þætti smám saman í Rust.
Heimild: opennet.ru
