Harshen shirye-shiryen tsatsa 1.36

aka buga sakin harshe na tsarin shirye-shirye Kishiya 1.36, 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:

  • Hali ya daidaita Future, wanda ke wakiltar ƙimar wanda ƙila har yanzu ba a kammala kimantawa yayin amfani da async / .wait blocks. Ƙimar Asynchronous da aka ayyana ta amfani da Future yana ba da damar ci gaba da aiwatar da ayyuka masu amfani a cikin zaren, yayin da ake jiran kammala lissafin ƙima;
  • Labura ya daidaita alloc, wanda ke ba da masu nuni da tarin wayo don sarrafa ƙimar da aka ware wa ƙwaƙwalwar ajiya. Rarraba ƙwaƙwalwar ajiya a std yanzu yana amfani da nau'in Vec, waɗanda aka sake fitar da su daga alloc. Amfani daban-daban na alloc yana da ma'ana a cikin aikace-aikacen da ba a haɗa su da std ("#! [no_std]"), da kuma a cikin ɗakunan karatu da aka tsara don amfani da su a cikin shirye-shirye iri ɗaya ba tare da std ba;
  • Don ƙetare bincike don daidaitaccen fara ƙima shawara matsakaici nau'in Wataƙila Unit, wanda za'a iya amfani dashi maimakon mem :: aikin da ba a san shi ba azaman madadin mafi aminci. Ayyukan mem :: wanda ba a san shi ba ya dace don ƙirƙirar tsararraki da sauri, amma yana ɓatar da mai tarawa saboda ya bayyana an fara farawa, amma a zahiri ƙimar ta kasance ba ta fara ba. Wataƙila Uninit yana ba ku damar nuna wa mai tarawa a sarari cewa ƙimar ba ta da tushe, don la'akari da yiwuwar rashin ƙayyadaddun halayen da ke da alaƙa da wannan, da kuma tsara cak a cikin shirye-shirye ta hanyar “wataƙila_t:” da ƙaddamarwa mataki-mataki, alamar kammalawa. ta amfani da ".assume_init()" kira. Tare da zuwan MaybeUninit, mem :: aikin da ba a san shi ba ya ƙare kuma ba a ba da shawarar yin amfani da shi ba;
  • Dabarar NLL (Non-Lexical Lifetimes), wacce ta faɗaɗa tsarin don yin rikodin rayuwar masu canjin aro, an daidaita shi don yaren Rust 2015 (da farko, NLL ta sami goyan bayan Rust 2018 kawai). Maimakon yin rayuwa a matakin lexical, NLL yana yin haka a matakin saitin masu nuni a cikin jadawali mai gudana. Wannan tsarin yana ba ku damar haɓaka ƙimar ƙimar rancen masu canji (mai duba rance) da ba da izinin aiwatar da wasu nau'ikan madaidaicin lambar, amfani da su a baya ya haifar da kuskure. Sabon hali kuma yana sa gyara kuskuren ya fi sauƙi;
  • An haɗa sabbin aiwatar da tsarin haɗin gwiwa HashMap, dangane da aikace-aikacen tsarin Teburin Swiss (ta atomatik loda hashbrown :: HashMap, sai dai idan an bayyana in ba haka ba, kamar std :: HashMap, wanda ya dogara akan SipHash 1-3). Keɓancewar software ta kasance iri ɗaya, kuma bambance-bambancen da aka sani ga mai haɓakawa suna tafasa ƙasa zuwa ƙara yawan aiki da rage yawan ƙwaƙwalwar ajiya;
  • A cikin kayan sarrafa kunshin kara da cewa zaɓin "--offline", wanda ke ba da damar aiki ba tare da shiga hanyar sadarwar ba, wanda kawai fakitin da aka adana a cikin tsarin gida ana amfani da su lokacin shigar da abin dogaro. Idan dogara baya cikin ma'ajin gida, za a jefa kuskure. Don shigar da abubuwan dogaro a cikin ma'ajin gida kafin zuwa layi, zaku iya amfani da umarnin "kawo kaya";
  • An aiwatar da ikon kiran macro "dbg!" yana nuna hujjoji da yawa;
  • Ana amfani da sifa na "const", wanda ke ƙayyade yiwuwar amfani da shi a kowane mahallin maimakon akai-akai, don hanyoyin.
    Layout :: daga_size_align_unchecked,
    mem:: bukatu_digo,
    NonNull:: dangling kuma
    NonNull :: jefa;

  • An canza wani sabon yanki na APIs zuwa tsayayyen nau'in, gami da hanyoyin da aka daidaita
    aiki ::Waker, aiki ::Poll,
    VecDeque ::juya_hagu, VecDeque ::juya_dama,
    Karanta :: karanta_vectored, Rubuta :: rubuta_vectored,
    Mai maimaitawa::kofi,
    BorrowMut (don kirtani) da str :: as_mut_ptr.

source: budenet.ru

Add a comment