Rust 1.47 Programming Language Release

Ang pagpagawas sa 1.47 sa Rust system programming language, nga gitukod sa proyekto sa Mozilla, gimantala. Ang lengguwahe nagtutok sa kaluwasan sa panumduman, naghatag ug awtomatik nga pagdumala sa panumduman, ug naghatag ug mga paagi aron makab-ot ang taas nga paralelismo sa buluhaton nga walay paggamit ug tigkolekta sa basura o runtime (ang runtime gikunhoran ngadto sa batakang pagsugod ug pagmentinar sa standard library).

Ang awtomatik nga pagdumala sa panumduman sa Rust nagwagtang sa mga sayup kung nagmaniobra sa mga pointer ug nanalipod batok sa mga problema nga naggikan sa ubos nga lebel sa pagmaniobra sa panumduman, sama sa pag-access sa usa ka rehiyon sa panumduman pagkahuman kini gibuhian, mga wala’y kalabotan sa pointer, mga overrun sa buffer, ug uban pa. Sa pag-apod-apod sa mga librarya, pagsiguro sa asembliya ug pagdumala sa mga dependency, ang proyekto nagpalambo sa tagdumala sa pakete sa Cargo. Gisuportahan ang crates.io repository alang sa pag-host sa mga librarya.

Panguna nga mga inobasyon:

  • Gipatuman nga suporta alang sa mga kinaiya alang sa mga arrays sa arbitraryong gidak-on. Kaniadto, tungod sa kawalay katakus sa paghubit sa mga generic nga gimbuhaton alang sa tanan nga mga kantidad sa integer, ang standard nga librarya naghatag og built-in nga suporta sa kinaiya alang lamang sa mga arrays hangtod sa 32 ka mga elemento sa gidak-on (ang mga kinaiya alang sa matag gidak-on gihubit sa estatikong paagi). Salamat sa paghimo sa const generics functionality, nahimong posible ang paghubit sa mga generic functions alang sa bisan unsang array size, apan wala pa kini gilakip sa stable nga mga feature sa pinulongan, bisan kung kini gipatuman sa compiler ug gigamit na karon sa standard library. alang sa mga tipo sa array sa bisan unsang gidak-on.
    Pananglitan, ang mosunud nga konstruksyon sa Rust 1.47 mag-imprinta sa sulud sa usa ka laray, bisan kung kaniadto nagresulta kini sa usa ka sayup:

fn main() {
himoa nga xs = [0; 34];
println!("{:?}", xs);
}

  • Gihatag nga output sa mas mubo nga mga pagsubay (backtrace), output sa mga sitwasyon sa emerhensya. Ang mga elemento nga dili interesado sa kadaghanan nga mga sitwasyon, apan nag-clutter sa output ug makabalda sa atensyon gikan sa mga nag-unang hinungdan sa problema, wala iapil sa pagsubay. Aron mabalik ang usa ka bug-os nga pagsubay, mahimo nimong gamiton ang variable sa palibot nga "RUST_BACKTRACE=puno". Pananglitan, alang sa code

fn main() {
kataranta!();
}

Kaniadto, ang pagsubay gihimo sa 23 nga mga yugto, apan karon kini mubu sa 3 nga mga yugto, nga gitugotan ka nga masabtan dayon ang esensya:

Ang thread nga 'main' nataranta sa 'klaro nga kalisang', src/main.rs:2:5
stack backtrace:
0: std::panicking::begin_panic
sa /rustc/d…d75a/library/std/src/panicking.rs:497
1: dulaanan:: main
sa ./src/main.rs:2
2: kinauyokan::ops::function::FnOnce::call_once
sa /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Ang rustc compiler gi-update aron matukod gamit ang LLVM 11 (Ang Rust naggamit sa LLVM isip backend alang sa code generation). Sa samang higayon, ang abilidad sa pagtukod uban sa daan nga LLVM, hangtod sa bersyon 8, gipabilin, apan pinaagi sa default (sa rust-lang/llvm-project) gigamit na karon ang LLVM 11. Ang pagpagawas sa LLVM 11 gilauman sa umaabot mga adlaw.
  • Sa plataporma sa Windows, ang rustc compiler naghatag suporta alang sa pagpagana sa pagkontrol sa dagan sa integridad nga mga pagsusi (Control Flow Guard), nga gi-aktibo gamit ang "-C control-flow-guard" nga bandila. Sa ubang mga plataporma kini nga bandera wala tagda sa pagkakaron.
  • Usa ka bag-ong bahin sa API ang gibalhin ngadto sa stable nga kategorya, lakip ang gi-stabilize nga Ident::new_raw, Range::is_empty, RangeInclusive::is_empty, Resulta::as_deref, Resulta::as_deref_mut, Vec::leak, pointer::offset_from , f32:: TAU ug f64::TAU.
  • Ang "const" nga hiyas, nga nagtino sa posibilidad sa paggamit niini sa bisan unsa nga konteksto imbes nga mga kanunay, gigamit sa mga pamaagi:
    • bag-o para sa tanang integer gawas sa sero;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ug saturating_mul para sa tanang integer;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ug is_ascii_control para sa mga tipo sa char ug u8.
  • Alang sa FreeBSD, gigamit ang toolkit gikan sa FreeBSD 11.4 (Wala gisuportahan sa FreeBSD 10 ang LLVM 11).

Gikuha gikan sa opennet.ru

Source: linux.org.ru

Idugang sa usa ka comment