Rust 1.42 Programming Language Version

pibliye lage langaj pwogramasyon sistèm lan Rouye 1.42, ki te fonde pa pwojè Mozilla. Lang lan konsantre sou sekirite memwa, bay jesyon memwa otomatik, epi li bay zouti pou reyalize gwo paralelis nan travay san yo pa itilize yon pèseptè fatra ak ègzékusion.

Jesyon otomatik memwa Rust la libere pwomotè a soti nan manipilasyon konsèy ak pwoteje kont pwoblèm ki rive nan manipilasyon memwa ki ba-nivo, tankou aksè memwa apre-gratis, dereferans pointer nil, depase tanpon, ak lòt bagay. Yon manadjè pake ap devlope pou distribye bibliyotèk, asire asanble ak jere depandans pa pwojè a. Chaj, ki pèmèt ou jwenn bibliyotèk ki nesesè pou pwogram nan nan yon sèl klike sou. Yon depo sipòte pou òganize bibliyotèk kès.io.

Prensipal la inovasyon:

  • Te ajoute sipò pou modèl pou matche pati nan tranch (etalaj dinamik, tranch). Anvan sa, yo te pèmèt alimèt egzak, men kounye a li posib pou itilize konstriksyon ki make ".." pou kouvri eleman ki rete yo nan etalaj la. Pa egzanp:

    fn foo(mo: &[&str]) {
    matche ak mo {

    // tcheke eleman yo kòmanse nan etalaj la epi li inyore
    eleman ki swiv yo
    ["Alo", "Mond", "!", ..] => println!("Alo Mond!"),

    // tcheke de premye eleman "Foo" ak "Bar", ak rès la pa enpòtan
    ["Foo", "Bar", ..] => println!("Baz"),

    // inyore tout bagay, men dènye eleman an dwe "!".
    [.., "!"] => println!("!!!"),

    // nan tranch kòmansman an nou enkli tout bagay eksepte dènye eleman an, ki ta dwe "z"
    [kòmanse @ .., "z"] => println!("kòmanse ak: {:?}", kòmanse),

    // nan tranch nan fen nou mete tout bagay eksepte eleman nan premye, ki ta dwe "a".
    ["a", fen @ ..] => println!("fini ak: {:?}", fen),

    rès => println!("{:?}", rès),
    }
    }

  • Te ajoute yon nouvo makro "matche!", ki pran yon ekspresyon ak yon modèl kòm opinyon, epi li retounen "vre" si modèl la matche ak ekspresyon an. Modèl la ka itilize operasyon "|". ak "si".

    matche ak self.partial_cmp(other) {
    Gen kèk (mwens) => vre,
    _ => fo,
    }

    alimèt!(self.partial_cmp(lòt), kèk (mwens))

    kite foo = 'f';
    afime!(matche! (foo, 'A'..='Z' | 'a'..='z'));

    kite bar = Kèk (4);
    afime!(matche!(ba, Kèk (x) si x > 2));

  • Nan panik mesaj parèt lè yo itilize mal
    kalite Opsyon ak Rezilta, kounye a montre nimewo liy ak yon lyen nan kòd ki te fè apèl la pwoblèm, olye ke lyen ki mennen nan kòd la aplike apèl la nan libcore. Pa egzanp, chanjman an afekte apèl pou déballer ak espere sou Option::None, oswa aksidan lè w ap itilize unwrap_err, expect, expect_err, ak metòd menm jan an sou kalite rezilta.

  • Manadjè pake kago a bay sibstitisyon otomatik "proc_macro crate" nan blòk "extern" pou pake ki gen makro pwosedi yo. Chanjman sa a pèmèt direktiv "itilize" yo aplike nan makro pwosedi san yo pa bezwen presize "extern crate proc_macro;" nan kòd la. Pou egzanp, si pwogram nan sèvi ak liy "itilize proc_macro::TokenStream;", Lè sa a, kòd la ap rete kounye a ap travay si "extern crate proc_macro;" yo retire nan li.
  • Kapasite yo nan bibliyotèk la estanda yo te elaji. Nan iter::Vide te ajoute Voye ak senkronize sipò pou nenpòt ki valè T.
    Apèl Pin::{map_unchecked, map_unchecked_mut} delivre soti nan gen retounen yon valè kalite pou aplikasyon an "Sized".
    Nan io::Kursè aplike PartialEq ak Eq. Atribi "const" la detèmine posibilite pou itilize nan nenpòt kontèks olye pou yo konstan, aplike pou Layout::nouvo metòd la.

  • Yon nouvo pòsyon nan API a te transfere nan kategori ki estab, ki gen ladan estabilize CondVar::wait_while, CondVar::wait_timeout_while,
    DebugMap::key, DebugMap::value,
    ManuallyDrop::pran,
    ptr::slice_from_raw_parts_mut ak ptr::slice_from_raw_parts.

  • Metòd Error::description la te obsolète.
  • Bay sipò dezyèm nivo pou platfòm armv7a-none-eabi ak riscv64gc-unknown-linux-gnu. Yo bay sipò pou bibliyotèk estanda pou platfòm riscv64gc-unknown-linux-gnu.
    Apple 32-bit platfòm degrade jiska twazyèm nivo sipò, ki enplike sipò debaz, men san tès otomatik ak piblikasyon bati ofisyèl yo. Degrade nan sipò se akòz Apple pa sipòte platfòm 32-bit ankò.

Sous: opennet.ru

Add nouvo kòmantè