Rust 1.37 Kutulutsa Chilankhulo cha Mapulogalamu

Lofalitsidwa kutulutsidwa kwa chilankhulo cha pulogalamu yadongosolo Dzimbiri 1.37, yokhazikitsidwa ndi polojekiti ya Mozilla. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira, chimapereka kasamalidwe ka kukumbukira, ndipo chimapereka njira zopezera ntchito yofanana kwambiri popanda kugwiritsa ntchito chotolera zinyalala kapena nthawi yothamanga.

Kuwongolera kukumbukira kwa Rust kumamasula wopanga kuti asasokonezedwe ndi pointer ndikutchinjiriza ku zovuta zomwe zimadza chifukwa chakuwongolera kukumbukira kwapang'onopang'ono, monga kulowa kwa kukumbukira kwaulere, kusokoneza null pointer, buffer overruns, ndi zina zotero. Woyang'anira phukusi akupangidwa kuti azigawira malaibulale, kuwonetsetsa kusonkhanitsa ndi kuyang'anira zodalira ndi polojekiti. katundu, kukulolani kuti mupeze malaibulale ofunikira pa pulogalamuyo ndikudina kamodzi. Malo osungiramo mabuku amathandizidwa kuti azisunga malaibulale makate.io.

waukulu zatsopano:

  • Mu rustc compiler kupereka kuthandizira kukhathamiritsa kutengera zotsatira za mbiri yakale (PGO, Kukhathamiritsa Kotsogozedwa ndi Mbiri),
    kukulolani kuti mupange ma code abwino kwambiri potengera kusanthula kwa ziwerengero zomwe zasonkhanitsidwa panthawi yokonza pulogalamu. Kuti mupange mbiri, mbendera ya "-C profile-generate" imaperekedwa, ndikugwiritsa ntchito mbiriyo panthawi ya msonkhano - "-C profile-use" (poyamba, pulogalamuyo imasonkhanitsidwa ndi mbendera yoyamba, imayenda mozungulira, ndipo itatha kupanga. mbiriyo, ikuphatikizidwanso ndi mbendera yachiwiri);

  • Mukamagwiritsa ntchito lamulo la "cargo run", lomwe ndi losavuta kugwiritsa ntchito poyesa kuyesa mapulogalamu a console mwachangu, kuthekera kosankha fayilo yomwe ingathe kuyendetsedwa kwawonjezedwa ngati pali mafayilo angapo omwe angathe kukwaniritsidwa. Fayilo yosasinthika yomwe iyenera kuchitidwa imatsimikiziridwa kudzera mu chiwongolero chokhazikika mu gawo la [package] ndi magawo a phukusi, zomwe zimakulolani kuti mupewe kufotokoza momveka bwino dzina la fayilo kupyolera mu "-bin" mbendera nthawi iliyonse yomwe muthamanga "cargo run";
  • Lamulo la "cargo vedor", lomwe linaperekedwa kale ngati osiyana phukusi. Lamuloli limakupatsani mwayi wokonza ntchito ndi zodalira zakomweko - mutatha kuchita "wogulitsa katundu", ma code onse azomwe amadalira polojekitiyi amatsitsidwa kuchokera ku crates.io kupita ku bukhu lapafupi, lomwe lingagwiritsidwe ntchito pogwira ntchito osapeza mabokosi. io (pambuyo popereka lamulo, lingaliro lakusintha kasinthidwe likuwonetsedwa kuti mugwiritse ntchito bukhu la zomanga). Mbaliyi idagwiritsidwa ntchito kale pokonzekera kutumiza kwa rustc compiler ndi kuyika kwa zodalira zonse mu archive imodzi ndi kumasulidwa;
  • Tsopano ndizotheka kupanga maulalo a zosankha za enum pogwiritsa ntchito zilembo zamtundu (mwachitsanzo, mugawo la "fn increment_or_zero(x: ByteOption) mutha kutchula "ByteOption::None => 0"), lembani mawerengedwe apangidwe (‹ MyType‹.. ››::option => N) kapena Kudzifikira nokha (mu midadada c &self mutha kutchula "Self::Quarter => 25");
  • Adawonjezera kuthekera kopanga zosinthika zosatchulidwa mu ma macros. M'malo motanthauzira dzina lachidziwitso mu "const", mutha kugwiritsa ntchito "_" zilembo kuti musankhe chizindikiritso chosabwerezabwereza, kupewa mikangano ya mayina mukayitananso macro;
  • Anawonjezera kuthekera kogwiritsa ntchito "#[repr(align(N))"" ndi enums pogwiritsa ntchito mawu ofanana ndi kufotokozera AlignN‹T› kamangidwe kakulumikiza kenako kugwiritsa ntchito AlignN‹MyEnum›;
  • Gawo latsopano la API lasunthidwa kugawo lokhazikika, kuphatikiza BufReader::buffer, BufWriter::buffer, ndi
    Selo::kuchokera_mut,
    Selo::monga_gawo_la_maselo,
    DoubleEndedIterator::nth_back,
    Njira::xor
    {i,u}{8,16,64,128,size}::reverse_bits, Kukulunga::reverse_bits ndi
    chidutswa::copy_mkati.

Kuphatikiza apo, zitha kuzindikirika kuyamba kuyesa ntchito Async-std, yomwe imapereka mtundu wosiyanasiyana wa laibulale ya Rust standard (doko la library ya std, momwe zolumikizira zonse zimaperekedwa mu mtundu wa async ndipo ndizokonzeka kugwiritsidwa ntchito ndi async/ait syntax).

Source: opennet.ru

Kuwonjezera ndemanga