Mwepụta asụsụ mmemme nchara 1.47

bipụtara wepụta 1.47 nke asụsụ mmemme sistemụ nchara na-, nke Mozilla rụpụtara ya. Asụsụ a na-elekwasị anya na nchekwa nchekwa, na-enye njikwa ebe nchekwa akpaka, ma na-enye ụzọ iji nweta myirịta ọrụ dị elu na-ejighi ya onye na-ekpofu ihe и oge ojiri (Oge a na-agba ọsọ gbadara na mmalite na nhazi nke ọba akwụkwọ ọkọlọtọ).

Njikwa ebe nchekwa akpaka nke Rust na-ewepụ njehie mgbe ị na-emegharị ihe nrịbama ma na-echebe megide nsogbu na-esite na ngbanwe ebe nchekwa dị ala, dị ka ịnweta mpaghara ebe nchekwa mgbe a tọhapụrụ ya, nkwụsị pointer null, buffer overruns, wdg. A na-emepụta onye njikwa ngwugwu iji kesaa ọba akwụkwọ, hụ na mgbakọ na jikwaa ndabere site na ọrụ ahụ. ibu. A na-akwado ebe nchekwa iji kwado ọba akwụkwọ crates.io.

Main ihe ọhụrụ:

  • Emere nkwado maka ụdị ndokwa nha ọ bụla. Na mbụ, n'ihi enweghị ike ịkọwapụta ọrụ jeneriki maka ụkpụrụ integer niile, ọbá akwụkwọ ọkọlọtọ nyere nkwado n'ime ya naanị maka nhazi ihe ruru ihe iri atọ na abụọ n'ogo (a kọwapụtara àgwà maka nha ọ bụla). N'ihi ihe e kere eke nke ọrụ nke na-adịgide adịgide generics ("const generics"), ọ bịara kwe omume ịkọwa generic ọrụ maka ọ bụla n'usoro size, ma ha na-erubeghị gụnyere n'ime ike asụsụ atụmatụ, ọ bụ ezie na ha na-emejuputa atumatu na nchịkọta ma na- ugbua metụtara na ọkọlọtọ ọba akwụkwọ maka n'usoro àgwà nke ọ bụla size.

    Dịka ọmụmaatụ, ihe nrụpụta a na Rust 1.47 ga-ebipụta ọdịnaya nke nhazi, n'agbanyeghị na mbụ ọ ga-ebutela mperi:

    fn isi() {
    ka xs = [0; 34];

    println!("{:?}", xs);
    }

  • Enyere mmepụta nke mkpirisi trace (backtrace), mmepụta na ọnọdụ mberede. Ihe ndị na-enweghị mmasị n'ọtụtụ ọnọdụ, ma na-emepụta ihe na-emepụta ma na-adọpụ uche site na isi ihe kpatara nsogbu ahụ, na-ewepụ na nchọta ahụ. Iji weghachi traktị zuru ezu, ị nwere ike iji mgbanwe gburugburu "RUST_BACKTRACE=full". Dịka ọmụmaatụ, maka koodu

    fn isi() {
    ụjọ!();
    }

    Na mbụ, a na-emepụta ihe ahụ n'ime usoro 23, ma ugbu a, a ga-ebelata ya
    Usoro 3 ga-enye gị ohere ịghọta ihe kacha mkpa ozugbo:

    eri 'isi' tụrụ ụjọ na 'ụjọ doro anya', src/main.rs:2:5
    nchịkọta azụ azụ:
    0: std :: ụjọ ::mmalite_egwu
    na /rustc/d…d75a/library/std/src/panicking.rs:497
    1: ebe egwuregwu :: isi
    na ./src/main.rs:2
    2: isi :: ops :: ọrụ :: FnOnce :: kpọọ_otu ugboro
    na /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Emelitere rustc compiler iji wuo ya LLVM 11 ( nchara na -eji LLVM dị ka ndabere maka mmepụta koodu). N'otu oge ahụ, ike iji LLVM ochie wuo, ruo ụdị 8, ka edobere, mana na ndabara (na. nchara-lang/llvm-project) na-eji LLVM 11 ugbu a. LLVM 11 na-atụ anya na a ga-ahapụ ya n'ụbọchị na-abịa.
  • N'elu ikpo okwu Windows, onye na-achịkọta rustc na-enye nkwado maka ime ka nlele njikwa njikwa ike (Control Flow Guard), rụọ ọrụ site na iji ọkọlọtọ "-C control-flow-guard". Na nyiwe ndị ọzọ a na-eleghara ọkọlọtọ a anya ugbu a.
  • Ebufeela akụkụ ọhụrụ API na ngalaba kwụsiri ike, gụnyere nke kwụsiri ike
    njirimara:: ọhụrụ_raw,
    Oke::bụ_efu,
    Range gụnyere :: bụ_efu,
    Nsonaazụ ::as_deref,
    Nsonaazụ ::as_deref_mut,
    Vec:: gbapu,
    pointer :: offset_si,
    f32::TAU na
    f64::TAU.

  • A na-eji àgwà "const", nke na-ekpebi ohere iji ya mee ihe n'ọnọdụ ọ bụla kama ịnọchite anya, na ụzọ ndị a:
    • ọhụrụ maka ọnụọgụgụ niile na-abụghị efu;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub na saturating_mul maka ọnụọgụgụ niile;
    • is_ascii_alphabetic, bụ_ascii_elu, bụ_ascii_lowercase, bụ_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, bụ_ascii_punctuation, bụ_ascii_graphic, bụ_ascii_whitespace na bụ_ascii_control maka char na u8 ụdị.
  • Maka FreeBSD metụtara Toolkit sitere na FreeBSD 11.4 (FreeBSD 10 anaghị akwado LLVM 11).

isi: opennet.ru

Tinye a comment