Ir izlaista programmēšanas valoda Rust 1.97, ko izveidoja Mozilla projekts, bet tagad izstrādā neatkarīgā bezpeļņas organizācija Rust Foundation. Valoda koncentrējas uz atmiņas drošību un nodrošina rīkus uzdevumu izpildes augsta paralēlisma sasniegšanai, vienlaikus neizmantojot atkritumu savācēju un izpildlaiku (izpildlaiks ir samazināts līdz standarta bibliotēkas pamata inicializācijai un uzturēšanai).
Rust atmiņas pārvaldības metodes ir izstrādātas, lai novērstu kļūdas rādītāju manipulācijās un aizsargātu pret problēmām, kas rodas zema līmeņa atmiņas pārvaldības dēļ, piemēram, piekļuve atmiņai pēc tās atbrīvošanas, nulles rādītāju atsauču noņemšana, bufera pārpildīšana utt. Projekta ietvaros tiek izstrādāts Cargo pakotņu pārvaldnieks, lai izplatītu bibliotēkas, atvieglotu būvēšanu un pārvaldītu atkarības. Bibliotēku mitināšanai tiek uzturēts crates.io repozitorijs.
Atmiņas drošība tiek nodrošināta Rust kompilēšanas laikā, pārbaudot atsauces, sekojot līdzi objekta īpašumtiesībām, sekojot līdzi objektu kalpošanas laikam (tvērumam) un novērtējot atmiņas piekļuves pareizību koda izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma piemēro nemainīgu atsauču un mainīgo jēdzienu, piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.
Galvenie jauninājumi:
- Pēc noklusējuma ir iespējota jauna funkciju, globālo mainīgo un datu struktūru nosaukumu sagrozīšanas shēma ģenerētajos objektos un izpildāmajos failos (-Csymbol-mangling-version=v0). Nosaukumi tiek sagrozīti, lai novērstu konfliktus, saistot dažādas programmas, pievienojot konkrētu kontekstu, piemēram, moduļa ceļu un kastes pakotnes nosaukumu.
Iepriekš izmantotajai nosaukumu manipulēšanas shēmai, kuras pamatā bija Itanium ABI, bija trūkumi, piemēram, vispārīgo parametru aizstāšana ar nelasāmiem jaucējkodiem un kompilatora daļu klātbūtne, kas neizmantoja Itanium ABI, tāpēc bija nepieciešams izmantot Rust specifiskus nosaukumu dekoderus. Rust 1.97 pēc noklusējuma izmanto Rust specifisku nosaukumu manipulēšanas shēmu, kas novērš šos trūkumus. Veco shēmu ir paredzēts noņemt kādā no nākotnes laidieniem.
- Cargo pakotņu pārvaldniekā tagad ir iekļauta iebūvēta kontrole pār to, kā kompilatora brīdinājumi tiek ģenerēti būvēšanas laikā. Ir pievienots vides mainīgais CARGO_BUILD_WARNINGS, kam var būt trīs vērtības: warn (noklusējums) — parāda brīdinājumus ekrānā; allow — paslēpj brīdinājumus; un deny — apstrādā brīdinājumus kā kļūdas, kas aptur būvēšanu.
Iepriekšējās versijās, lai pārtrauktu būvēšanu pēc brīdinājuma, kompilatora RUSTFLAGS iestatījumos bija jānorāda "-Dwarnings". Tomēr, mainot RUSTFLAGS, cargo pakotņu pārvaldnieks uzskatīja būvēšanu par jaunu, ignorēja kešatmiņā saglabātos datus un visu projektu pārbūvēja no jauna. Pārvietojot šo iestatījumu uz cargo, vairs nebija nepieciešams atiestatīt kešatmiņu un pilnībā pārkompilēt, mainot brīdinājumu apstrādes režīmu, kā arī vienkāršoja brīdinājumu apstrādes iespējošanas procesu kā kļūdas nepārtrauktas integrācijas sistēmās.
- Saistītās informācijas rādīšana veidošanas laikā pēc noklusējuma ir iespējota. Šie ziņojumi tiek rādīti kā brīdinājumi, izmantojot īpašu brīdinājuma noteikumu "linker_messages", kas nav iekļauts standarta "brīdinājumu" grupā. Rust filtrē ziņojumus, kas ir tipiski viltus pozitīvi vai normālas darbības, vienlaikus atstājot brīdinājumus, kas var norādīt uz problēmām, piemēram, brīdinājumus par novecojušām opcijām un nevēlamiem iestatījumiem. Iepriekš saistītās informācijas rādīšana tika veikta tikai tad, ja veidošana neizdevās; pretējā gadījumā visi ziņojumi tika paslēpti. Lai atgrieztos pie iepriekšējās darbības, Cargo.toml failam varat pievienot sekojošo: [lints.rust] linker_messages = "allow"
- Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
- Noklusējums RepeatN
- Kopija ffi::FromBytesUntilNulError
- Sūtīt std::fs::File UEFI vajadzībām
- <{integer}>::isolate_highest_one
- <{integer}>::isolate_lowest_one
- <{integer}>::augstākais_skaitlis
- <{integer}>::zemākais_viens
- <{uN}>::bitu_platums
- NonZero<{integer}>::isolate_highest_one
- NonZero<{integer}>::isolate_lowest_one
- NonZero<{integer}>::augstākais_skaitlis
- NonZero<{integer}>::zemākais_skaitlis
- NonZero<{uN}>::bitu_platums
- Karodziņš "const" tiek izmantots char::is_control metodē.
Turklāt mēs vēlētos izcelt nesen paziņotos projektus un notikumus, kas saistīti ar Rust:
- Zinnia projekts izstrādā modulāru Unix līdzīgu kodolu, kas rakstīts Rust valodā un izplatīts saskaņā ar GPLv2 licenci. Kodols atbalsta POSIX saskarnes un dažus BSD un paplašinājumus. Linux, piemēram, epoll un timerfd. Renderēšanai un ievades pārvaldībai ir pieejami DRM (Direct Rendering Manager) un evdev draiveri. Ieviestā funkcionalitāte ir pietiekama, lai palaistu Xfce darbvirsmas vidi X servera kontrolē un veiktu kompozīcijas veidošanu. serveris Weston ir balstīts uz Wayland. Tas atbalsta palaišanu gan QEMU vidē, gan uz reālas aparatūras, piemēram, ThinkPad E14 G7 klēpjdatora.
- Ir izlaista iroh 1.0 komunikācijas bibliotēkas versija, kas ļauj tīkla savienojumus starp lietojumprogrammām dažādos resursdatoros, izmantojot kriptogrāfiskās atslēgas, nevis IP adreses (Ir norādīta atslēga, ar kuru izveidot savienojumu, un iroh atrod ar to saistīto resursdatoru un izveido šifrētu savienojumu, izmantojot QUIC protokolu.) Tiešie P2P savienojumi tiek izveidoti, kad vien iespējams, bet, ja tas nav iespējams, tiek izmantoti releji, kas arī tiek izmantoti resursdatora noteikšanai, izmantojot atslēgas. Varat palaist savu releju vai izveidot savienojumu ar kopienas atbalstītiem publiskiem relejiem.
Paplašinātās funkcijas ietver: vairāku ceļu QUIC atbalstu pakešu vienlaicīgai piegādei pa vairākiem maršrutiem, iespēju strādāt aiz NAT, statisku konfigurācijas režīmu savienojuma izveidei ar lokālām ierīcēm bez piekļuves internetam, iespēju iebūvēt WASM starpposma kodu izpildei pārlūkprogrammā un atbalstu pielāgotu transportu izveidei, piemēram, savienojuma izveidei, izmantojot Bluetooth, WiFi Aware vai LoRa. Kods ir rakstīts Rust valodā un izplatīts saskaņā ar Apache 2.0 un MIT licencēm. Ir pieejamas saistīšanas Python, Node.js, Kotlin un Swift.
- Servera puses JavaScript platformas Bun autors publicēja rakstu, kurā detalizēti aprakstīts projekts Bun pārrakstīšanai no Zig uz Rust, izmantojot Claude Fable mākslīgā intelekta modeli. Tiek norādīts, ka Bun 1.3.14 būs pēdējā versija Zig valodā, un nākamā versija, Bun 1.4.0, būs Rust valodā. Pamatojoties uz etalontestiem, Rust versija patērē ievērojami mazāk atmiņas un ir par 2–5 % ātrāka nekā Zig versija. Rust versijas izpildāmā faila lielums ir samazināts par 20 %.
Avots: opennet.ru
