Izlaists Rust 1.99.0. Microsoft ir pārnesis Rust uz primāro valodu sarakstu.

Publicēts programmēšanas valodas Rust 1.99 izlaišana, kas sākotnēji tika izstrādāta ar Mozilla atbalstu, bet tagad tiek attīstīta neatkarīgas bezpeļņas organizācijas Rust Foundation paspārnē. Valoda ir vērsta uz drošu atmiņas izmantošanu un nodrošina līdzekļus augsta paralēlisma īstenošanai, neizmantojot atkritumu savācēju un runtime (runtime samazinās līdz pamata inicializācijai un standarta bibliotēkas apkalpošanai).

Atmiņas pārvaldības metodes Rust mērķis ir izslēgt kļūdas, manipulējot ar rādītājiem, un aizsargāt pret problēmām, kas rodas no zemu līmeņu atmiņas apstrādes, piemēram, piekļuve atmiņas daļai pēc tās atbrīvošanas, nulles rādītāju dereferencēšana, pārkāpšana bufera robežās utt. Lai izplatītu bibliotēkas, nodrošinātu kompilāciju un pārvaldītu atkarības, projekts attīstās pakotņu pārvaldnieks Cargo. Bibliotēku dzīšanai tiek atbalstīts krātuves repository crates.io.

Droša atmiņas apstrāde Rust tiek nodrošināta kompilācijas laikā, pārbaudot atsauces, izsekojot objektu īpašumtiesības, ņemot vērā objektu dzīves ilgumu (redzamības jomas) un novērtējot piekļuves atmiņai pareizību koda izpildes laikā. Rust arī nodrošina līdzekļus aizsardzībai pret veselu skaitļu pārpelnēm, prasa obligātu mainīgo vērtību inicializāciju pirms to izmantošanas, labāk pārvalda kļūdas standarta bibliotēkā, piemēro invarianti (immutable) atsauču un mainīgo principu pa noklusējumu un piedāvā stipru statisku tipizāciju, lai minimizētu loģiskās kļūdas.

Galvenās jauninājumi:

  • Tiek piedāvāta iespēja Rust valodā izveidot funkcijas ar mainīgu argumentu skaitu (variadic), kas tiek eksportētas, lai tās varētu izsaukt no C projektiem (C ABI). Kā pēdējo elementu parametru sarakstā šādās funkcijās var norādīt konstrukciju „…”, kuru Rust apstrādā, izmantojot īpašu tipu VaList, kas darbojas līdzīgi kā va_list C. unsafe extern «C» fn sum(mut args: …) -> i32 { let a = unsafe { args.next_arg::<i32>() }; let b = unsafe { args.next_arg::<i32>() }; a + b } fn foo() -> i32 { unsafe { sum(0i32, 2i32) } }
  • Tika stabilizētas funkcijas Layout::for_value_raw, mem::size_of_val_raw un mem::align_of_val_raw, kas ļauj droši noteikt izmēru un izkārtojumu pēc neapstrādātiem rādītājiem (raw pointer), tostarp, izmantojot dinamiska izmēra tipus, piemēram, slēdžus, bez nepieciešamības izveidot atsauces uz datiem.
  • Dokumentācijā pievienota rekomendācija izvairīties no atmiņas atbrīvošanas, uz kuru tika iegūta statiska atsauce ar neierobežotu mūža ilgumu (&’static) caur Box::leak (round-trip unleaking), jo šādas darbības var izraisīt problēmas saistībā ar nesaderību ar nākotnes kompilatora optimizācijām un ieslēgtiem atmiņas piešķiršanas mehānismiem. Tā vietā, lai izveidotu statisku atsauci pagaidu īpašumtiesību nodalīšanai, ieteicams izmantot neapstrādātus rādītājus, piemēram, izmantojot Box::into_non_null.
  • Jauna API daļa ir pārcelta uz stabilo kategoriju, tostarp ir stabilizēti metodes un tipāžu realizācijas:
    • IntoIterator for Box<[T; N]>
    • IntoIterator for &Box<[T; N]>
    • IntoIterator for &mut Box<[T; N]>
    • VecDeque::retain_back
    • core::ffi::VaList
    • Box::into_non_null
    • Box::from_non_null
    • Vec::into_parts
    • Vec::from_parts
    • core::mem::size_of_val_raw
    • core::mem::align_of_val_raw
    • core::alloc::Layout::for_value_raw
    • String::from_utf8_lossy_owned
    • string::FromUtf8Error::into_utf8_lossy
    • FusedIterator for StepBy<I>
    • std::fs::set_times
    • std::fs::set_times_nofollow
  • Paketā pārvaldniekā cargo ir ieviests jauns iebūvētais profils „debug”, kas ir līdzīgs profilam „dev” (nākotnē plāno sadalīt iespējas debug un izstrādāšanai). CI konfigurācijā inkrementālā kompilācija ir izslēgta pēc noklusējuma.
  • Mērķa platforma riscv64-unknown-linux-musl ir pārgājusi uz otro atbalsta līmeni, kas nodrošina garantētu kompilāciju, taču testu komplekta izpildē nav garantiju.

Papildus var atzīmēt nesen paziņotās projekta un notikumu saistībā ar Rust:

  • Uzņēmums Microsoft ir iekļāvis Rust pirmo līmeņa valodu sarakstā un nodrošinās tās pilnu atbalstu visos izstrādes posmos uzņēmumā. Iepriekš pirmais atbalsta līmenis uzņēmumā tika piešķirts valodām C++, C# un TypeScript. Tiek atzīmēts, ka Rust jau tiek izmantots vairāk nekā 100 Microsoft repozitorijās. Starp citu, Rust komponentes jau tiek izmantotas tādos produktos kā Microsoft 365 un Copilot, un MSVC kompilatoram ir izstrādāts atsevišķs backend rustc_codegen_utc, kas balstīts uz rustc kompilatoru.

    Kā galvenais Rust pielietošanas mērķis uzņēmumā Microsoft tiek minēta koda drošības uzlabošana, kas ir kritiska drošības aspekts. Saskaņā ar Microsoft Azure tehniskā direktora teikto aptuveni 70% no visām Windows ievainojamībām ir saistītas ar atmiņas apstrādes problēmām, kuras var novērst, izmantojot Rust.

  • Uzņēmums Google ir izņēmusi no Linux kodola veco starpprocessu komunikācijas mehānisma Binder īstenojumu, kas bija uzrakstīts C valodā, un pilnībā pārgājusi uz jauno Binder IPC draiveri, kas pārveidots uz Rust. Tiek atzīmēts, ka 15 gadu laikā kopš vecā draivera pastāvēšanas tajā ir uzkrājies ievērojams tehniskais parāds un sarežģījumi, kas apgrūtināja kļūdu meklēšanu, apkopi un jaunu iespēju pievienošanu. Binder IPC draiveris Rust valodā ir atzīts par galveno un vairs netiek piedāvāts kā eksperimentāls izstrādes produkts.
  • Ir publicēta Arti 2.7.0 versija, kas ir Tor rīku komplekta, uzrakstīta Rust valodā. Kad Arti kods sasniegs līmeni, kas spēs pilnībā aizstāt C versiju, Tor izstrādātāji plāno piešķirt Arti pamatīstenojuma Tor statusu un pamazām izbeigt C versijas apkopi. Jaunajā versijā ir ieviesta funkcionalitātes attīstība relejiem un serveriem direktorija (Directory Authority), kas saistīta ar dokumentu parsēšanu, direktoriju serveru atspoguļošanas atbalstu un DNS trafika apstrādi. Pievienota RPC realizācija konfigurācijas maiņai un pārbaudei. Novērstas vairākas drošības neaizsargātības — administratoriem onion pakalpojumiem steidzami ieteikts atjaunināt savas sistēmas.

Avots: opennet.lv

Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa hostingu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster