I-Rust 1.78 ikhishwe. Ulimi lwesi-Borgo oluhlanganisa amandla e-Go and Rust

Ulimi lokuhlela lwenhloso evamile i-Rust 1.78, olwasungulwa iphrojekthi ye-Mozilla kodwa manje oluthuthukiswe ngaphansi kwenhlangano ezimele engenzi nzuzo i-Rust Foundation, lukhululiwe. Ulimi lugxile ekuphepheni kwenkumbulo futhi luhlinzeka ngezindlela zokuzuza ukufana kwemisebenzi ephezulu kuyilapho ugwema ukusetshenziswa komqoqi kadoti nesikhathi sokusebenza (isikhathi sokusebenza sincishiselwa ekuqaliseni okuyisisekelo nasekunakekeleni umtapo wolwazi ojwayelekile).

Izindlela zokuphatha inkumbulo kaRust zisindisa unjiniyela emaphutheni lapho eshintsha izikhombi futhi avikele ezinkingeni eziphakama ngenxa yokuphatha inkumbulo esezingeni eliphansi, njengokufinyelela indawo yenkumbulo ngemva kokuba ikhululiwe, ukuhoxisa izikhombi ezingenalutho, ukugcwala kwebhafa, njll. Ukuze kusatshalaliswe imitapo yolwazi, ukuhlinzeka ngokwakha nokuphatha okuncikile, iphrojekthi ithuthukisa umphathi wephakheji ye-Cargo. Inqolobane ye-crates.io isekelwe ekusingatheni imitapo yolwazi.

Ukuphepha kwenkumbulo kunikezwa ku-Rust ngesikhathi sokuhlanganiswa ngokuhlolwa kwereferensi, ukulandelela ubunikazi bento, ukulandelela isikhathi sokuphila kwento (izikophu), nokuhlola ukulunga kokufinyelela inkumbulo ngesikhathi sokwenziwa kwekhodi. I-Rust iphinde inikeze isivikelo ekuchichimeni okuphelele, idinga ukuqaliswa okuyisibopho kwamanani ahlukahlukene ngaphambi kokusetshenziswa, iphatha amaphutha kangcono kulabhulali evamile, isebenzisa umqondo wezithenjwa ezingaguquleki nokuguquguqukayo ngokuzenzakalelayo, inikeza ukuthayipha okuqinile okuqinile ukuze kuncishiswe amaphutha anengqondo.

Okuqanjiwe okuyinhloko:

  • Isichasiso esisha segama segama elithi "#[diagnostic]" sihlongozwa, sinikeza indlela yokuba nomthelela emilayezweni yephutha ekhiqizwe umdidiyeli. Esokuqala esikhaleni esisha isibaluli se-"#[diagnostic::on_unmplemented]", esingasetshenziswa ukwenza ngokwezifiso imilayezo yephutha ephonswe esimweni lapho udinga ukusebenzisa isici esingasetshenziswanga kuhlobo. #[diagnostic::on_unimplemented( umlayezo = "Umlayezo wami we `ImportantTrait <{A}>` awusetshenziswanga `{Self}`", ilebula = "Ilebula lami", inothi = "Qaphela 1", inothi = "Qaphela 2" )] i-trait ImportantTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn main() {use_my_trait(String::new()); } iphutha[E32]: Umlayezo wami we `ImportantTrait ` ayisetshenziselwa `String` —> src/main.rs:0277:32 | 12 | use_my_trait(String::new()); | ———— ^^^^^^^^^^^^^^ Ilebula lami | | | kudingwa isibopho esethulwe yile kholi | = usizo: isici `ImportantTrait `ayenzelwe `String` = inothi: Qaphela 18 = inothi: Qaphela 12
  • Ukuhlolwa kwangaphambilini kokugomela okusetshenziswa emisebenzini engaphephile manje kungahlehliswa kuze kukhiqizwe ikhodi, okuvumela lokhu kuhlola ukuthi kwenziwe ngaphandle kwesidingo sokwakha ilabhulali evamile kumodi ethi "#[cfg(debug_assertions)]". Ukuze ucuphe ukuhlola, manje sekwanele ukunika amandla okushiwo ukususa iphutha ekuhlolweni noma ukulungisa amaphutha okwakhiwa kwekhodi yakho.
  • Ukuziphatha kwemisebenzi kulabhulali evamile ethinta ukuqondanisa kwezikhombi nezingcezu manje isibikezelwa ngesikhathi sokusebenza futhi kuncike kudatha yokufaka. Isikhombi somsebenzi::align_offset, esibala ukulinganisa ukuze siqondanise isikhombisi, manje sibuyisela usayizi::MAX kuphela uma umsebenzi wehluleka. Imisebenzi sika::qondanisa_kuya futhi sika::qondanisa_ukuze_mut kokubili, okuguqula izingcezu zibe ukumelelwa ngocezu olumaphakathi oluqondanisiwe kanye nezingcezu zokuqala neziphetho, manje zihlala zibuyisela ingxenye enkulu emaphakathi.
  • Okulandelayo kudluliselwe esigabeni esizinzile:
    • impl Funda i-&Stdin
    • Vumela ukusetshenziswa kwesikhathi sempilo esingamile (non-static) kwezinye i-std::iphutha::Ukusetshenziswa okuhlobene nephutha.
    • Ukuqaliswa kwe-Impl evunyelwe ukusebenzisa ?inani likasayizi.
    • impl Kusuka kwe-io::Iphutha
  • Umsebenzi othi Barrier::new() uzinzisiwe ukuze usetshenziswe nesibaluli se-"const" kunoma yimuphi umongo esikhundleni sokuhlanganisa.
  • Okwezinkundla okuqondiwe kuzo i-x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm kanye ne-i686-pc-windows-gnu manje idinga okungenani Windows 10 inguqulo.
  • Izinga lesithathu lokusekelwa selisetshenziswe ku-wam32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf kanye neplathifomu ye-loongarch64-engaziwa-linux-musl. Ileveli yesithathu ibandakanya ukwesekwa okuyisisekelo, kodwa ngaphandle kokuhlola okuzenzakalelayo, ukushicilela izakhiwo ezisemthethweni, noma ukuhlola ukuthi ikhodi ingakhiwa yini.
  • Izinga lesibili losekelo lweplathifomu eqondiwe Engeza i-wasip32 selusetshenzisiwe. Izinga lesibili losekelo libandakanya isiqinisekiso somhlangano.
  • Inkundla ye-wasm32-wasi-preview1-threads iqanjwe kabusha ukuze ibe yi- wasm32-wasip1-threads.
  • Umhlanganisi ushintshelwe ukusebenzisa i-LLVM 18. Uma usebenzisa i-LLVM 18 yezakhiwo ze-x86-32 kanye ne-x86-64, i-ABI ehlotshaniswa nezinhlobo ze-u128 ne-i128 ishintshiwe.
  • Kumphathi we-Cargo pact, inguqulo yesi-4 yamafayela wokukhiya (ifayela lokukhiya v4) izinzile.
  • I-Cargo inenqolobane yomhlaba wonke ezinzile enolwazi mayelana nokusetshenziswa kwedatha kwakamuva. Inqolobane isingathwe ku-$CARGO_HOME/.global-cache kusetshenziswa i-SQLite futhi ibuyekezwa ngokuzenzakalelayo ukuze ibonise izinguquko zakamuva kunkomba, ifayela lekhreyithi, uhla lwemibhalo lwekhodi, i-git clone, kanye nokuphuma kwe-git.

Ukwengeza, ulimi lohlelo lwe-Borgo luzama ukucacisa kakhulu kunolimi lwe-Go, kodwa lungabi lukhuni kakhulu kunolimi lwe-Rust. I-Borgo ihlanganisa izici ezingcono kakhulu ze-Go and Rust, yenza ukushiyeka kolimi ngalunye. Isibonelo, i-Go ilula futhi iqondile, kodwa ayinikezi izici zokuphepha zohlobo oluthuthukisiwe. Ulimi lwe-Rust luhlinzeka ngamathuluzi ohlelo oluphephile, kodwa luyinkimbinkimbi kakhulu. Le phrojekthi ithuthukiswa nguMarco Sampellegrini, umbhali we-Simple Haskell Handbook kanye nomthuthukisi wohlelo lokuhlanganisa oluqhubekayo lwe-Quad CI.

I-Rust 1.78 ikhishwe. Ulimi lwesi-Borgo oluhlanganisa amandla e-Go and Rust

I-Borgo isebenzisa ukuthayipha okumile, izinhlobo ezifana ne-Go, kanye ne-syntax efana nokugqwala. Amasemikholoni angawakhethela ekupheleni kwemigqa kukhodi ye-Borgo. Ikhodi ye-Borgo ihlanganiswa ibe isethulo se-Go esihambisana ngokugcwele namaphakheji e-Go akhona. Ikhodi yokuhlanganisa ibhalwe ngeRust futhi isatshalaliswa ngaphansi kwelayisensi ye-ISC. sebenzisa i-fmt enum NetworkState {Iyalayisha, Yehlulekile(int), Impumelelo(T), } i-struct Response {isihloko: iyunithi yezinhlamvu, ubude besikhathi: int, } fn main() { let res = Impendulo {isihloko: "Sawubona mhlaba", ubude besikhathi: 0, } vumela izwe = I-NetworkState.Impumelelo(res) vumela umlayezo = isimo sokufanisa {NetworkState.Loading => “isalayisha”, NetworkState.Failed(code) => fmt.Sprintf(“Ithole ikhodi yephutha: %d”, ikhodi), NetworkState.Success (res) => res.title, } fmt.Println(msg) }

Source: opennet.ru

Engeza amazwana