Rust 1.45 scaoileadh teanga cláir

foilsithe scaoileadh 1.45 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é uirlisí chun comhthreomhaireacht tasc ard a bhaint amach gan úsáid a bhaint as bailitheoir truflais agus runtime.

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, rud a ligeann duit na leabharlanna atá ag teastáil don chlár a fháil i gcliceáil amháin. Tacaítear le stór chun leabharlanna a óstáil cliathbhoscaí.io.

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

  • Deireadh le fada an lá locht nuair a dhéantar tiontuithe idir slánuimhreacha agus uimhreacha snámhphointe. Ós rud é go n-úsáideann an tiomsaitheoir Rust LLVM mar inneall, rinneadh oibríochtaí comhshó cineáil trí threoracha cód idirmheánacha LLVM ar nós fptoui, a bhfuil gné shuntasach amháin acu - iompar neamhshainithe mura n-oireann an luach mar thoradh air sin don chineál sprice. Mar shampla, nuair a dhéantar an luach snámhphointe 300 le cineál f32 a thiontú go slánuimhir cineál u8, tá an toradh dothuartha agus d'fhéadfadh sé a bheith éagsúil ar chórais éagsúla. Is í an fhadhb atá ann go bhfuil an ghné seo le feiceáil i gcód nach bhfuil marcáilte mar "neamhshábháilte".

    Amhail Rust 1.45, tá iompar ró-shreabhadh cineál cineáil rialaithe go docht, agus seiceálann an oibríocht chomhshó "mar" le haghaidh ró-shreabhadh agus cuireann sé iallach ar an luach a thiontú go luach uasta nó íosta an chineáil sprice (mar shampla thuas, luach de 300 a thiontú go 255). Chun seiceálacha den sórt sin a dhíchumasú, soláthraítear glaonna API breise “{f64, f32}::to_int_unchecked”, ag feidhmiú i mód neamhshábháilte.

    fn cast(x: f32) -> u8 {
    x mar u8
    }

    fn príomh() {
    lig too_big = 300.0;
    ligean too_small = -100.0;
    lig nan = f32::NAN;

    lig x: f32 = 1.0;
    lig y: u8 = neamhshábháilte { x.to_int_unchecked() };

    println!("too_big_casted = {}", cast(too_big)); // aschur 255
    println!("too_small_casted = {}", cast(too_small)); // aschur 0
    println!("not_a_number_casted = {}", cast(nan)); // aschur 0
    }

  • Úsáid chobhsaithe Macraí nós imeachtanathanna cainte, teimpléid agus ráitis atá cosúil le feidhm. Roimhe seo, níorbh fhéidir macraí den sórt sin a ghlaoch i ngach áit, ach amháin i gcodanna áirithe den chód (mar ghlao ar leithligh, gan a bheith fite fuaite le cód eile). Bhí sé ar cheann de na ceanglais chun an creat gréasáin a oibriú a leathnú ar an mbealach ar féidir macraí a ghlaoch, cosúil le feidhmeanna Rocket i scaoileadh cobhsaí de Rust. Roimhe seo, bhí gá le solúbthacht bhreise a bhaint amach maidir le láimhseálaithe a shainmhíniú i Rocket le cumasú gné thurgnamhach ar a dtugtar “proc_macro_hygiene”, nach bhfuil ar fáil i leaganacha cobhsaí de Rust. Tá an fheidhmiúlacht seo ionsuite anois in eisiúintí cobhsaí na teanga.
  • Ceadaítear raonta le cineál “charachtar” a úsáid chun athrá a dhéanamh ar luachanna raoin (ops :{Range, RangeFrom, RangeFull, RangeInclusive, RangeTo}):

    le haghaidh ch in 'a'.. = 'z' {
    priontáil!("{}", ch);
    }
    cló!(); // Priontálfaidh "abcdefghijklmnopqrstuvwxyz"

  • Aistríodh cuid nua de APInna chuig an gcatagóir cobhsaí, lena n-áirítear cobhsaithe
    Arc:: as_ptr,
    BTreeMap::bain_iontráil,
    Rc:: as_ptr,
    rc:: Lag:: as_ptr,
    rc :: Lag :: from_raw,
    rc :: Lag :: isteach_amh,
    str:: strip_prefix,
    str:: stiall_iarmhír,
    sioncronú:: Lag:: as_ptr,
    sioncronú:: Lag::from_raw,
    sioncronú:: Lag:: isteach_amh,
    char::UNICODE_VERSION,
    Réise::réite_ag,
    Réise::lonnaithe_at,
    Réise::suíomh_measctha,
    unix::próiseas::CommandExt::arg0.

  • Tá tacaíocht curtha ag an tiomsaitheoir rustc chun gnéithe éagsúla an ardáin sprice a shárú trí úsáid a bhaint as an mbratach “spriocghné”, mar shampla, “-C target-feature=+avx2,+fma”. Cuireadh bratacha nua leis freisin:
    "táblaí fórsa-scaoilte" chun táblaí glaonna unwind a ghiniúint, beag beann ar an straitéis láimhseála tuairteála; "Cód Giotán leabaithe" chun a rialú an bhfuil giotánchód LLVM san áireamh i rlibs ginte. Tá an bhratach "embed-bitcode" cumasaithe de réir réamhshocraithe in Cargo chun an t-am tógála agus an tomhaltas spáis diosca a bharrfheabhsú.

  • Tá tríú leibhéal tacaíochta curtha ar fáil do na hardáin mipsel-sony-psp agus thumbv7a-uwp-windows-msvc. Tá tacaíocht bhunúsach i gceist leis an tríú leibhéal, ach gan tástáil uathoibrithe agus foilsiú na tógála oifigiúla.

Ina theannta sin, is féidir a thabhairt faoi deara an scéal faoi ​​chruthú na cinn is simplí apps sa teanga Rust, ag tosú ag baint úsáide as an tosaitheoir córais agus réidh le luchtú féinchuimsitheach in ionad an chórais oibriúcháin.
Is é an t-alt seo an chéad cheann i sraith atá tiomnaithe do theicnící a bhfuil éileamh orthu i ríomhchlárú leibhéal íseal agus i bhforbairt OS a léiriú.

Foinse: oscailtenet.ru

Add a comment