Rust 1.47 scaoileadh teanga cláir

foilsithe scaoileadh 1.47 de theanga ríomhchláraithe an chórais Meirge, a bhunaigh an tionscadal Mozilla. Díríonn an teanga ar shábháilteacht chuimhne, soláthraíonn sé bainistíocht cuimhne uathoibríoch, agus soláthraíonn sé bealach chun comhthreomhaireacht ard-thasc a bhaint amach gan úsáid a bhaint as bailitheoir truflais и runtime (Bíonn an t-am rite síos go dtí túsú bunúsach agus cothabháil na leabharlainne caighdeánach).

Cuireann bainistíocht cuimhne uathoibríoch Rust deireadh le hearráidí nuair a bhíonn leideanna á n-ionramháil agus cosnaíonn sé i gcoinne fadhbanna a eascraíonn as ionramháil cuimhne ísealleibhéil, mar shampla rochtain a fháil ar réigiún cuimhne tar éis é a shaoradh, dereferences pointeoir nialasach, róchaiteachas maoláin, etc. Tá bainisteoir pacáiste á fhorbairt chun leabharlanna a dháileadh, tionól a chinntiú agus spleáchais an tionscadail a bhainistiú. Cargo. Tacaítear le stór chun leabharlanna a óstáil cliathbhoscaí.io.

An príomh- nuálaíochtaí:

  • Tacaíocht do chineálacha curtha i bhfeidhm arrays aon mhéid. Roimhe seo, mar gheall ar an neamhábaltacht chun feidhmeanna cineálacha a shainiú do gach luach slánuimhir, chuir an leabharlann chaighdeánach tacaíocht tréithe ionsuite ar fáil ach amháin le haghaidh eagair suas le 32 eilimint i méid (sainmhíníodh na tréithe do gach méid go statach). A bhuí le cruthú fheidhmiúlacht na gcineálacha tairiseacha (“const generics”), bhíothas in ann feidhmeanna cineálacha a shainiú d’aon mhéid eagar, ach níl siad san áireamh go fóill sna gnéithe teanga cobhsaí, cé go gcuirtear i bhfeidhm iad sa tiomsaitheoir agus go bhfuil anois baint sa leabharlann chaighdeánach le haghaidh tréithe eagair de mhéid ar bith.

    Mar shampla, déanfaidh an tógáil seo a leanas i Rust 1.47 inneachar eagar a phriontáil, cé go mbeadh earráid mar thoradh air roimhe seo:

    fn príomh() {
    lig xs = [0; 34];

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

  • Ar choinníoll aschur rianta níos giorra (backtrace), aschur i gcásanna éigeandála. Eisiatar ón rian eilimintí nach bhfuil suim acu sa chuid is mó de chásanna, ach a dhéanann tranglam ar an aschur agus a tharraingíonn aird ar phríomhchúiseanna na faidhbe. Chun rian iomlán a thabhairt ar ais, is féidir leat an athróg timpeallachta "RUST_BACKTRACE=lán" a úsáid. Mar shampla, le haghaidh an cód

    fn príomh() {
    scaoll!();
    }

    Roimhe seo, bhí an rian aschur i 23 céimeanna, ach anois beidh sé a laghdú go dtí
    3 chéim a ligeann duit an bunúsach a thuiscint láithreach:

    snáithe 'príomh' scaoll ag 'scaoll soiléir', src/main.rs:2:5
    aisrian cruachta:
    0: std:: scaoll :: start_panic
    ag /rustc/d…d75a/library/std/src/panicking.rs:497
    1: clós súgartha::príomh
    ag ./src/main.rs:2
    2: croí::ops::feidhm::FnOnce::call_once
    ag /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Nuashonraíodh an tiomsaitheoir rustc chun úsáid a bhaint as LLVM 11 (Meirge úsáidí LLVM mar inneall le haghaidh giniúint cód). Ag an am céanna, coinnítear an cumas tógáil le LLVManna níos sine, suas go dtí leagan 8, ach de réir réamhshocraithe (i meirge-lang/llvm-tionscadal) ag baint úsáide as LLVM 11 anois. Táthar ag súil go scaoilfear LLVM 11 sna laethanta amach romhainn.
  • Ar ardán Windows, cuireann an tiomsaitheoir rustc tacaíocht ar fáil chun seiceálacha sláine sreafa rialaithe (Garda Sreabhadh Rialaithe) a chumasú, arna ngníomhú ag baint úsáide as an bhratach “-C control-flow-guard”. Ar ardáin eile ní thugtar aird ar an mbratach seo faoi láthair.
  • Aistríodh cuid nua de APInna chuig an gcatagóir cobhsaí, lena n-áirítear cobhsaithe
    Aitheantas::nua_amh,
    Raon::tá_folamh,
    RangeInclusive::tá_folamh,
    Toradh:: as_deref,
    Toradh:: as_deref_mut,
    Vec::sceitheadh,
    pointeoir:: offset_from,
    f32::TAU agus
    f64::TAU.

  • Úsáidtear an tréith “const”, a chinneann an fhéidearthacht é a úsáid in aon chomhthéacs seachas tairisigh, sna modhanna:
    • nua do gach slánuimhir seachas nialas;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub agus saturating_mul do gach slánuimhir;
    • 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 agus is_ascii_control do char agus u8 cineálacha.
  • Le haghaidh FreeBSD baint foireann uirlisí ó FreeBSD 11.4 (Ní thacaíonn FreeBSD 10 le LLVM 11).

Foinse: oscailtenet.ru

Add a comment