Rust 1.47 Programming Language Release

gipatik buhian ang 1.47 sa sistema sa programming language taya, gitukod sa proyekto sa Mozilla. Ang lengguwahe nagpunting sa kaluwasan sa panumduman, naghatag ug awtomatik nga pagdumala sa panumduman, ug naghatag usa ka paagi aron makab-ot ang taas nga paralelismo sa buluhaton nga wala gigamit tigkolekta sa basura ΠΈ runtime (Ang runtime nagsukad 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 human kini gibuhian, null pointer dereferences, buffer overruns, ug uban pa. Usa ka tagdumala sa pakete ang gipalambo aron sa pag-apod-apod sa mga librarya, pagsiguro sa asembliya ug pagdumala sa mga dependency sa proyekto. Cargo. Gisuportahan ang usa ka repository sa pag-host sa mga librarya crates.io.

nag-unang mga inobasyon:

  • Gipatuman nga suporta alang sa mga tipo mga han-ay bisan unsa nga gidak-on. Kaniadto, tungod sa kawalay katakus sa paghubit sa mga generic nga gimbuhaton alang sa tanan nga mga kantidad nga 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 estadistika). Salamat sa pagmugna sa pag-andar sa kanunay nga generics ("const generics"), nahimo nga posible ang paghubit sa mga generic nga gimbuhaton alang sa bisan unsang gidak-on sa array, apan wala pa kini gilakip sa mga stable nga mga bahin sa pinulongan, bisan kung kini gipatuman sa compiler ug karon nalangkit sa standard library para sa array traits 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 makunhuran sa
    3 nga mga lakang nga nagtugot kanimo 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 na-update sa pagtukod gamit LLVM 11 (Taya naggamit LLVM isip backend alang sa paghimo sa code). Sa samang higayon, ang abilidad sa pagtukod uban sa mas karaan nga mga LLVM, hangtod sa bersyon 8, gipabilin, apan pinaagi sa default (sa rust-lang/llvm-project) naggamit na karon sa LLVM 11. Ang LLVM 11 gilauman nga ipagawas sa umaabot nga mga adlaw.
  • Sa plataporma sa Windows, ang rustc compiler naghatag og suporta alang sa pagpagana sa pagkontrol sa dagan sa integridad nga mga pagsusi (Control Flow Guard), nga gi-activate 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 mga API ang gibalhin sa stable nga kategorya, lakip ang gi-stabilize
    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 nalangkit toolkit gikan sa FreeBSD 11.4 (Wala gisuportahan sa FreeBSD 10 ang LLVM 11).

Source: opennet.ru

Idugang sa usa ka comment