Harshen shirye-shiryen tsatsa 1.39

aka buga sakin harshe na tsarin shirye-shirye Kishiya 1.39, wanda aikin Mozilla ya kafa. Harshen yana mai da hankali kan amincin ƙwaƙwalwar ajiya, yana ba da sarrafa ƙwaƙwalwar ajiya ta atomatik, kuma yana ba da hanya don cimma babban aiki daidai gwargwado ba tare da amfani da mai tara shara ko lokacin aiki ba.

Gudanar da ƙwaƙwalwar ajiya ta atomatik na Rust yana 'yantar da mai haɓakawa daga magudin nuni kuma yana ba da kariya daga matsalolin da suka taso daga ƙananan ma'aunin ƙwaƙwalwar ajiya, kamar damar shiga ƙwaƙwalwar ajiya bayan kyauta, ɓangarorin null pointer, buffer overruns, da makamantansu. Ana haɓaka mai sarrafa fakiti don rarraba ɗakunan karatu, tabbatar da taro da sarrafa abubuwan dogaro ta hanyar aikin. ofishin, ba ku damar samun ɗakunan karatu da ake buƙata don shirin a dannawa ɗaya. Ana tallafawa wurin ajiya don ɗaukar ɗakunan karatu akwati.io.

Main sababbin abubuwa:

  • An daidaita sabon tsarin tsarin asynchronous wanda ya dogara da aikin "async", async motsa {... } block, da kuma ma'aikacin ".await", wanda ke sauƙaƙa rubuta masu sarrafa waɗanda ba sa toshe babban umarni. Idan aka kwatanta da API ɗin da aka bayar a baya don asynchronous I/O, asynchronous gini, asynchronous / .wait ginannun abu ne mai sauƙi don fahimta, ana iya karantawa sosai, kuma yana ba ku damar aiwatar da hadaddun hulɗar asynchronous ta amfani da dabarun sarrafa kwararar da aka saba dangane da madaukai, maganganun yanayi, da keɓancewa.

    Async-wait syntax yana ba ku damar ƙirƙirar ayyuka waɗanda za su iya dakatar da aiwatar da su, dawo da sarrafawa zuwa babban zaren, sannan su ci gaba da aiwatarwa daga inda suka tsaya. Misali, ana buƙatar irin wannan ɗan dakata yayin sarrafa I/O, wanda za'a iya yin wasu ayyuka yayin jiran yanki na gaba ya iso. Ayyuka da tubalan da aka ayyana tare da "async fn" da "async motsi" suna dawo da sifa Future, wanda ke bayyana wakilcin lissafin asynchronous da aka jinkirta. Kuna iya fara lissafin da aka jinkirta kai tsaye kuma ku sami sakamakon ta amfani da ma'aikacin ". jira". Babu wani aiki da aka yi ko an riga an shirya shi har sai an kira .jira, yana ba da damar ƙirƙirar ƙaƙƙarfan gine-ginen gidaje ba tare da ƙarin sama ba.

    async fn first_function () -> u32 { .. }
    ...
    bari gaba = first_function ();
    ...
    bari sakamako: u32 = gaba. jira;

  • An daidaita "#![feature(bind_by_move_pattern_guards)]", yana ba da damar amfani da masu canji tare da nau'in ɗaure "ta-motsi" a cikin samfura kuma yi amfani da nassoshi ga waɗannan masu canji a cikin "idan" sashin magana "wasa". Misali, ana ba da izinin gine-gine masu zuwa:

    fn main() {
    bari a tsara: Akwati = Akwati :: sabo([8, 4, 1, 2]);

    tsararrun wasa {
    lambobi
    idan nus.iter().sum::() == 10

    => {
    digo (lambobi);
    }
    _ => ba za a iya kaiwa ba!(),
    }
    }

  • An yarda da nuni halaye lokacin ayyana sigogin ayyuka, rufewa, da masu nunin ayyuka. Halayen haɗaɗɗiyar sharadi (cfg, cfg_attr) waɗanda ke sarrafa bincike ta hanyar lint (ba da izini, gargaɗi, ƙaryatawa da hana) da ƙarin halayen kiran macro ana tallafawa.

    da len (
    #[cfg(windows)] yanki: &[u16], // yi amfani da siga akan Windows
    #[cfg (ba (windows))] yanki: &[u8], // amfani da sauran OS
    -> amfani {
    yanki.len()
    }

  • Gargaɗi game da matsalolin da aka gano lokacin duba rancen masu canji (mai duba aro) ta amfani da dabarar NLL (Non-Lexical Lifetimes), fassara cikin rukunin kurakurai masu mutuwa. Bari mu tuna cewa tsarin tabbatarwa bisa sabon tsarin yin la'akari da rayuwar canjin aro ya ba da damar gano wasu matsalolin da tsohuwar lambar tabbatarwa ba ta lura da su ba. Tunda fitowar kuskure don irin waɗannan cak ɗin na iya shafar daidaituwa tare da lambar aiki a baya, an fara ba da gargaɗin maimakon kurakurai. Gargaɗi yanzu an maye gurbinsu da kurakurai lokacin da ke gudana a yanayin Rust 2018. A cikin saki na gaba, za a kuma aiwatar da fitowar kuskure a yanayin Rust 2015, wanda a ƙarshe zai kawar da tsohon mai duba bashi;
  • Halin "const", wanda ke ƙayyade yiwuwar amfani da shi a cikin kowane mahallin maimakon akai-akai, ana amfani da shi don ayyukan Vec :: sabo, String :: sabo, LinkedList :: sabo, str :: len, [T] :: len , str :: as_bytes,
    abs, wrapping_abs da overflow_abs;

  • An canza wani sabon yanki na APIs zuwa tsayayyen nau'in, gami da hanyoyin da aka daidaita
    Pin :: cikin_ciki, Nan take :: an duba_lokacin_tun_da kuma Nan take ::saturating_duration_tun;

  • Mai sarrafa fakitin kaya yanzu yana da ikon yin amfani da tsawo na ".toml" don fayilolin daidaitawa. Ƙara goyan bayan farko don gina daidaitaccen ɗakin karatu kai tsaye daga Cargo. An ƙara tutar "--workspace", yana maye gurbin tutocin "--duk" mai rikitarwa. An ƙara sabon filin zuwa metadata"buga", wanda ke ba ku damar buga abubuwan dogaro ta hanyar tantance alamar git da lambar sigar. Ƙara zaɓin gwaji "-Ztimings" don samar da rahoton HTML na lokutan aiwatarwa na matakai daban-daban na haɗawa.
  • A cikin mai tara rustc, saƙonnin bincike sun haɗa da datsa wutsiyar lambar da ba ta dace da tasha ba. Bayar da tallafi na uku don dandamali masu niyya
    i686-unknown-uefi da sparc64-unknown-openbsd. Mataki na uku ya ƙunshi tallafi na yau da kullun, amma ba tare da gwaji ta atomatik da buga ginin hukuma ba.

source: budenet.ru

Add a comment