Rust 1.66 Programming Language Release

De algemiene programmeertaal Rust 1.66, oprjochte troch it Mozilla-projekt mar no ûntwikkele ûnder auspysjes fan de ûnôfhinklike non-profit organisaasje Rust Foundation, is frijjûn. De taal rjochtet him op ûnthâld feilichheid en jout de middels te berikken hege baan parallelism wylst it foarkommen fan it brûken fan in garbage collector en runtime (runtime wurdt redusearre ta basis inisjalisaasje en ûnderhâld fan de standert bibleteek).

De metoaden foar ûnthâldbehanneling fan Rust besparje de ûntwikkelder fan flaters by it manipulearjen fan oanwizers en beskermje tsjin problemen dy't ûntsteane troch ûnthâldôfhanneling op leech nivo, lykas tagong krije ta in ûnthâldgebiet nei't it befrijd is, it ferwizen fan nul-oanwizers, buffer-oerrin, ensfh. Om bibleteken te fersprieden, builds te leverjen en ôfhinklikens te behearjen, ûntwikkelet it projekt de Cargo-pakketbehearder. It crates.io repository wurdt stipe foar hosting fan bibleteken.

Unthâld feilichheid wurdt foarsjoen yn Rust op it gearstallen tiid troch referinsje kontrôle, byhâlden fan foarwerp eigendom, byhâlden fan foarwerp lifetimes (omfang), en beoardielje de korrektheid fan ûnthâld tagong by koade útfiering. Rust leveret ek beskerming tsjin oerstreamingen fan heule getal, fereasket ferplichte inisjalisaasje fan fariabele wearden foar gebrûk, behannelet flaters better yn 'e standertbibleteek, tapast standert it konsept fan ûnferoarlike referinsjes en fariabelen, biedt sterke statyske typen om logyske flaters te minimalisearjen.

Wichtichste ynnovaasjes:

  • By enumeraasjes mei folsleine foarstellings (it "#[repr(Int)]"-attribút) is eksplisite oantsjutting fan 'e diskriminant (fariantnûmer yn 'e enumeraasje) tastien, sels as de enumeraasje fjilden befettet. #[repr(u8)] enum Foo { A(u8), # diskriminant 0 B(i8), # diskriminant 1 C(bool) = 42, # diskriminant 42 }
  • Tafoege funksje kearn :: hint :: black_box dy't gewoan jout de ûntfongen wearde. Sûnt de gearstaller tinkt dat dizze funksje wat docht, kin de black_box-funksje brûkt wurde om kompilatoroptimisaasjes foar loops út te skeakeljen by it útfieren fan testen fan koadeprestaasjes of by it ûndersiikjen fan generearre masinekoade (sadat de gearstaller de koade net brûkt wurdt en fuortsmite). Bygelyks, yn it foarbyld hjirûnder foarkomt black_box (v.as_ptr ()) dat de gearstaller tinkt dat de vector v net brûkt wurdt. brûk std :: hint :: black_box; fn push_cap(v: &mut Vec) {foar i yn 0..4 {v.push(i); black_box(v.as_ptr()); } }
  • De pakketbehearder "cargo" biedt it kommando "ferwiderje", wêrtroch jo ôfhinklikens kinne fuortsmite fan it Cargo.toml-manifest fan 'e kommandorigel.
  • In nij diel fan 'e API is ferpleatst nei de kategory stabile, ynklusyf de metoaden en ymplemintaasjes fan eigenskippen binne stabilisearre:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{first, last, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • Foegje AsFd-ymplemintaasjes ta foar stdio-slottypen by it brûken fan WASI.
    • impl TryFrom > foar fak<[T; N]>
    • kearn :: hint :: black_box
    • Duration::try_from_secs_{f32,f64}
    • Opsje :: unzip
    • std::os::fd
  • De berik "..X" en "..=X" binne tastien yn sjabloanen.
  • By it bouwen fan 'e foarkant fan' e rustc-kompiler en de LLVM-backend, wurde LTO (Link Time Optimization) en BOLT (Binary Optimization and Layout Tool) optimalisaasjemodi brûkt om de prestaasjes fan 'e resultearjende koade te ferheegjen en ûnthâldferbrûk te ferminderjen.
  • Implementearre nivo 5-stipe foar platfoarms armv5te-none-eabi en thumbvXNUMXte-none-eabi. It tredde nivo ymplisearret basisstipe, mar sûnder automatisearre testen, publisearjen fan offisjele builds en kontrolearje de mooglikheid om de koade te bouwen.
  • Stipe tafoege foar keppeljen nei macOS Generic Libraries.

Derneist kinne wy ​​​​de opname yn 'e GCC-koadebase fan' e front-end-kompiler fan 'e Rust-taal (gccrs) notearje. De frontend is opnommen yn 'e GCC 13-tûke, dy't yn maaie 2023 sil wurde frijlitten. Begjinnend mei GCC 13 sil de standert GCC toolkit brûkt wurde om Rust-programma's te kompilearjen sûnder de needsaak om de rustc-kompiler te ynstallearjen boud mei LLVM-ûntwikkelingen. De Rust-ymplemintaasje yn GCC 13 sil yn beta-status wêze, net standert ynskeakele.

Boarne: opennet.ru

Add a comment