Rust 1.78 yatulutsidwa. Chilankhulo cha Borgo chomwe chimaphatikiza mphamvu za Go ndi Dzimbiri

Chilankhulo chothandizira anthu ambiri Rust 1.78, chomwe chinakhazikitsidwa ndi polojekiti ya Mozilla koma tsopano chapangidwa mothandizidwa ndi bungwe lodziyimira pawokha lopanda phindu la Rust Foundation, chatulutsidwa. Chilankhulochi chimayang'ana kwambiri pachitetezo cha kukumbukira ndipo chimapereka njira zopezera kufananiza kwakukulu kwa ntchito ndikupewa kugwiritsa ntchito chotolera zinyalala ndi nthawi yothamanga (nthawi yothamanga imachepetsedwa kuti ikhale yoyambira ndikukonza laibulale yokhazikika).

Njira zogwiritsira ntchito kukumbukira za Rust zimapulumutsa wopanga ku zolakwika pamene akuwongolera zolozera ndikuteteza ku zovuta zomwe zimadza chifukwa cha kukumbukira kwapang'onopang'ono, monga kupeza malo okumbukira atamasulidwa, kuchotsa zolozera zopanda pake, ma buffer overruns, etc. Kugawira malaibulale, kupereka zomanga ndi kusamalira zodalira, pulojekitiyi imapanga woyang'anira phukusi la Cargo. Malo osungiramo crates.io amathandizidwa kuti azisunga malaibulale.

Kutetezedwa kwa Memory kumaperekedwa mu Rust panthawi yophatikiza kudzera pakuwunika, kuyang'anira umwini wa chinthu, kuyang'anira nthawi ya moyo wa chinthu (ma scopes), ndikuwunika kulondola kwa kukumbukira kukumbukira panthawi yopanga ma code. Dzimbiri limaperekanso chitetezo ku kusefukira kwazinthu zonse, kumafuna kukhazikitsidwa kovomerezeka kwa zinthu zosinthika musanagwiritse ntchito, kuwongolera zolakwika bwino mulaibulale yokhazikika, kumagwiritsa ntchito lingaliro la maumboni osasinthika ndi zosintha mwachisawawa, kumapereka zilembo zolimba kuti muchepetse zolakwika zomveka.

Zatsopano zazikulu:

  • Malo atsopano a dzina "#[diagnostic]" aperekedwa, ndikupereka njira yosinthira mauthenga olakwika opangidwa ndi wolemba. Yoyamba m'malo atsopano ndi "#[diagnostic::on_unimplemented]", yomwe ingagwiritsidwe ntchito kusintha mauthenga olakwika omwe amaponyedwa pamalo omwe muyenera kugwiritsa ntchito khalidwe lomwe silinagwiritsidwe ntchito pamtunduwo. #[diagnostic::on_unimplemented( message = "Uthenga Wanga wa `ImportantTrait <{A}>` sunagwiritsidwe ntchito `{Self}`", label = "My Label", note = "Note 1", note = "Note 2 ")] chikhalidwe ChofunikaTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn main() {use_my_trait(String::new()); } cholakwika[E32]: Uthenga Wanga wa `ImportantTrait ` sichikukhazikitsidwa pa `String` —> src/main.rs:0277:32 | 12 | use_my_trait(String ::new()); | | ———— ^^^^^^^^^^^^^^ Chilemba Changa | | | | | pakufunika ndi malire oyambitsidwa ndi kuyimba uku | = thandizo: khalidwe `ImportantTrait `Sizinagwiritsidwe ntchito `String` = note: Note 18 = note: Note 12
  • Macheke omwe akugwiritsidwa ntchito pazinthu zosatetezeka atha kuimitsidwa mpaka kupanga ma code, kulola kuti macheke awa achitidwe popanda kufunika kopanga laibulale yokhazikika mu "#[cfg(debug_assertions)]". Kuti muyambitse macheke, ndizokwanira kuti muyambitse zosintha kuti ziyesedwe kapena kukonza zolakwika za code yanu.
  • Kachitidwe ka ntchito mu laibulale yokhazikika yomwe imakhudza kulondola kwa zolozera ndi magawo tsopano ndi yodziwikiratu panthawi yothamanga ndipo zimatengera zomwe zalowetsedwa. Cholozera chantchito ::align_offset, chomwe chimawerengera cholumikizira kuti chigwirizane ndi cholozera, tsopano chimabwezeranso::MAX pokhapokha ngati ntchitoyo yalephera. Ntchito kagawo :: align_to ndi kagawo:: align_to_mut onse, omwe amasintha magawo kukhala choyimira ndi kagawo kapakati komanso magawo oyambira ndi omaliza, tsopano nthawi zonse bweretsani gawo lalikulu lapakati.
  • Zotsatirazi zidasinthidwa kukhala gulu lokhazikika:
    • impl Werengani kwa &Stdin
    • Lolani kugwiritsa ntchito moyo wosakhazikika (wosakhazikika) pamavuto ena a std::::Kukhazikitsa kogwirizana ndi zolakwika.
    • Kukhazikitsa kwa Impl ?Kukula kwake ndikololedwa.
    • impl Kuchokera za io::Zolakwika
  • The Barrier::new() ntchito yakhazikika kuti igwiritsidwe ntchito ndi "const" muzochitika zilizonse m'malo mokhazikika.
  • Kwa nsanja zomwe mukufuna x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm ndi i686-pc-mawindo-gnu tsopano ikufunika osachepera Windows 10 Baibulo.
  • Gawo lachitatu lothandizira lakhazikitsidwa pamapulatifomu a wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf ndi loongarch64-osadziwika-linux-musl nsanja. Mulingo wachitatu umakhudzanso thandizo loyambira, koma popanda kuyesa kokha, kusindikiza kwa boma, kapena kuwona ngati code ingamangidwe.
  • Gawo lachiwiri lothandizira nsanja yomwe mukufuna kuwonjezera wasm32-wasip1 yakhazikitsidwa. Gawo lachiwiri la chithandizo limaphatikizapo chitsimikizo cha msonkhano.
  • nsanja wasm32-wasi-preview1-threads yasinthidwa kukhala wasm32-wasip1-threads.
  • Wopangayo wasinthidwa kuti agwiritse ntchito LLVM 18. Pogwiritsa ntchito LLVM 18 kwa x86-32 ndi x86-64 zomangamanga, ABI yokhudzana ndi mitundu ya u128 ndi i128 yasinthidwa.
  • Mu Cargo pact manejala, mtundu 4 wamafayilo a loko (lockfile v4) wakhazikika.
  • Cargo ili ndi cache yokhazikika yapadziko lonse lapansi yokhala ndi chidziwitso chaposachedwa kwambiri. Cache ili mu $CARGO_HOME/.global-cache pogwiritsa ntchito SQLite ndipo imasinthidwa yokha kuti iwonetse zosintha zaposachedwa pa index, crate file, code directory, git clone, ndi git checkout.

Kuphatikiza apo, chilankhulo cha Chiborgo chimayesa kufotokoza momveka bwino kuposa chilankhulo cha Go, koma chocheperako kuposa chilankhulo cha Dzimbiri. Borgo amaphatikiza zinthu zabwino kwambiri za Go ndi Rust, kupanga zolakwika za chilankhulo chilichonse. Mwachitsanzo, Go ndi losavuta komanso lolunjika, koma silimapereka mawonekedwe apamwamba achitetezo. Chilankhulo cha Dzimbiri chimapereka zida zamapulogalamu otetezeka, koma ndizovuta kwambiri. Ntchitoyi ikupangidwa ndi Marco Sampellegrini, mlembi wa The Simple Haskell Handbook komanso wopanga makina ophatikizana a Quad CI.

Rust 1.78 yatulutsidwa. Chilankhulo cha Borgo chomwe chimaphatikiza mphamvu za Go ndi Dzimbiri

Borgo amagwiritsa ntchito kutaipa kosasintha, mitundu ya Go-monga, ndi mawu ngati dzimbiri. Semicolons ndizosankha kumapeto kwa mizere mu code ya Borgo. Khodi ya Borgo imapangidwa kukhala choyimira cha Go chomwe chimagwirizana kwathunthu ndi ma phukusi a Go omwe alipo. Khodi ya compiler imalembedwa mu Rust ndipo imagawidwa pansi pa layisensi ya ISC. gwiritsani ntchito fmt enum NetworkState {Kutsegula, Kulephera (int), Kupambana (T), } struct Response {mutu: chingwe, nthawi: int, } fn yaikulu () { let res = Response {mutu: "Moni dziko", nthawi: 0, } lolani kuti = NetworkState.Success(res) let msg = match state {NetworkState.Loading => "ikutsegula", NetworkState.Failed(code) => fmt.Sprintf("Muli ndi code yolakwika: %d", code), NetworkState.Success (res) => res.title, } fmt.Println(msg) }

Source: opennet.ru

Kuwonjezera ndemanga