Umhlwa 1.78 ukhululwe. Ulwimi lwaseBorgo oludibanisa amandla e-Go and Rust

Ukukhutshwa kolwimi lwenkqubo ye-Rust 1.78, eyasekwa yiprojekthi ye-Mozilla, kodwa ngoku iphuhliswe phantsi kombutho ozimeleyo ongenzi nzuzo i-Rust Foundation, ipapashiwe. Ulwimi lugxininise ekukhuselweni kwememori kwaye lubonelela ngeendlela zokufikelela kwi-parallelism ephezulu yemisebenzi ngelixa ugwema ukusetyenziswa komqokeleli wenkunkuma kunye nexesha lokuqhuba (ixesha lokuqhuba liyancitshiswa ekuqaliseni okusisiseko kunye nokugcinwa kwelayibrari esemgangathweni).

Iindlela zokuphatha imemori ye-Rust zigcina umphuhlisi kwiimpazamo xa ulawula izikhombisi kwaye ukhusele kwiingxaki ezivela ngenxa yokuphathwa kwememori ekwinqanaba elisezantsi, njengokufikelela kwindawo yememori emva kokuba ikhululiwe, ukususa ireferensi yezalathisi ezingenanto, ukugqithiswa kwe-buffer, njl. Ukusasaza amathala eencwadi, ukubonelela ngokwakha kunye nokulawula ukuxhomekeka, iprojekthi iphuhlisa umphathi wephakheji yeCargo. Uvimba we-crates.io uyaxhaswa kukusingatha amathala eencwadi.

Ukhuseleko lwenkumbulo lubonelelwa kwiRust ngexesha lokudibanisa ngokujongwa kwereferensi, ukugcina umkhondo wobunini bento, ukugcina umkhondo wobomi bento (i-scopes), kunye nokuvavanya ukuchaneka kokufikelela kwimemori ngexesha lokwenziwa kwekhowudi. Umhlwa ukwabonelela ngokhuseleko ngokuchasene nokuphuphuma kwenani elipheleleyo, kufuna ukuqaliswa okunyanzelekileyo kwamaxabiso aguquguqukayo ngaphambi kokusetyenziswa, iphatha iimpazamo ngcono kwithala leencwadi elisemgangathweni, isebenzisa ingqikelelo yeembekiselo ezingenakuguquguquka kunye nezinto eziguquguqukayo ngokungagqibekanga, ibonelela ngochwethezo olomeleleyo ukuze kuncitshiswe iimpazamo ezinengqiqo.

Iinguqulelo eziphambili:

  • Indawo entsha yophawu lophawu "#[diagnostic]" indululwe, ibonelela ngeendlela zokuphembelela imiyalezo yempazamo eveliswe ngumqokeleli. Eyokuqala kwisithuba esitsha luphawu lwe-"#[diagnostic::on_unmplemented]", enokusetyenziselwa ukwenza imiyalezo yemposiso ephoswe kwimeko apho kufuneka usebenzise uphawu olungaphunyezwanga kudidi. #[diagnostic::on_unimplemented( message = "My Message for `ImportantTrait <{A}>` ayiphunyelelwanga `{Self}`", ileyibhile = "My Label", note = "Note 1", note = "Qaphela 2" )] uphawu ezibalulekileyoTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn eyona () { use_my_trait(Umtya ::omtsha()); } impazamo[E32]: Umyalezo wam we `ImportantTrait ` ayiphunyelelwanga `Umtya` —> src/main.rs:0277:32 | 12 | use_my_trait(Umtya ::entsha()); | ———— ^^^^^^^^^^^^^^ Ileyibhile Yam | | | efunwa ngumda owaziswa ngulo mnxeba | = uncedo: uphawu `ImportantTrait `Ayiphunyezwanga `Umtya` = qaphela: Qaphela 18 = qaphela: Qaphela 12
  • Iitshekhi zangaphambili ze-assert ezisetyenziswa kwimisebenzi engakhuselekanga ngoku zingamiswa de kwenziwe ikhowudi, ivumela olu vavanyo lwenziwe ngaphandle kwesidingo sokwakha ithala leencwadi elisemgangathweni "#[cfg(debug_assertions)]" indlela. Ukuqalisa iitshekhi, kwanele ngoku ukwenza ii-asserts zedebug zovavanyo okanye ukulungisa iimpazamo kwikhowudi yakho.
  • Ukuziphatha kwemisebenzi kwilayibrari eqhelekileyo echaphazela ukulungelelaniswa kwezikhombisi kunye nezilayi ngoku kuqikelelwa ngexesha lokuqhuba kwaye kuxhomekeke kwidatha yegalelo. Isalathisi somsebenzi :: align_offset, ebala i-offset ukulungelelanisa isalathisi, ngoku ibuyisela ubungakanani::MAX kuphela ukuba umsebenzi uyasilela. Imisebenzi isilayi :: align_to and slice :: align_to_mut zombini, eguqula izilayi zibe ngumboniso kunye nesilayi esiphakathi esilungelelanisiweyo kunye nesiqalo soqobo kunye nezilayi zesiphelo, ngoku zihlala zibuyisela indawo enkulu ephakathi.
  • Oku kulandelayo kutshintshelwe kudidi oluzinzileyo:
    • impl Funda i&Stdin
    • Vumela ukusetyenziswa kwexesha elingaguqukiyo (elingena-static) lexesha elithile le-std::impazamo::Uphumezo olunxulumene neempazamo.
    • Ukuphunyezwa ngokupheleleyo ?Ixabiso lobungakanani livumelekile.
    • impl Ukusuka kuba io::Impazamo
  • Isithintelo::entsha() umsebenzi uzinzisiwe ukuze usetyenziswe ngophawu lwe "cons" kuwo nawuphi na umxholo endaweni yezigxina.
  • Kumaqonga ekujoliswe kuwo x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm kunye ne-i686-pc-windows-gnu ngoku ifuna ubuncinci Windows 10 uguqulelo.
  • Inqanaba lesithathu lenkxaso liphunyeziwe kwi-wam32-wasip2, i-arm64ec-pc-windows-msvc, i-armv8r-none-eabihf kunye ne-loongarch64-engaziwa-linux-musl platforms. Inqanaba lesithathu libandakanya inkxaso eyisiseko, kodwa ngaphandle kovavanyo oluzenzekelayo, ukupapasha ukwakha kwasemthethweni, okanye ukujonga ukuba ikhowudi inokwakhiwa.
  • Inqanaba lesibini lenkxaso yeqonga ekujoliswe kulo Add wasm32-wasip1 sele iphunyeziwe. Inqanaba lesibini lenkxaso libandakanya isiqinisekiso sendibano.
  • Iqonga le wasm32-wasi-preview1-threads linikwe elinye igama libe yi wasm32-wasip1-threads.
  • Umqambi utshintshiwe ukuba asebenzise i-LLVM 18. Xa usebenzisa i-LLVM 18 kwi-x86-32 kunye ne-x86-64 izakhiwo, i-ABI ehambelana ne-u128 kunye ne-i128 iintlobo zitshintshiwe.
  • Kumphathi wePact pact, inguqulelo 4 yeefayile zokutshixa (lockfile v4) iye yazinziswa.
  • I-Cargo ine-cache yehlabathi ezinzileyo enolwazi malunga nokusetyenziswa kwedatha yamva nje. I-cache isingathwe kwi-$CARGO_HOME/.global-cache isebenzisa iSQLite kwaye ihlaziywa ngokuzenzekelayo ukubonisa utshintsho lwamva nje kwisalathisi, ifayile yekrete, ulawulo lwekhowudi, i-git clone, kunye ne-git checkout.

Ukongeza, ulwimi lwenkqubo ye-Borgo luzama ukucacisa ngakumbi kunolwimi lwesiGo, kodwa luncinci kunolwimi lweRust. I-Borgo idibanisa ezona mpawu zibalaseleyo zeGo and Rust, yenzela ukusilela kolwimi ngalunye. Umzekelo, i-Go ilula kwaye ithe ngqo, kodwa ayiboneleli ngohlobo oluphambili lweempawu zokhuseleko. Ulwimi lweRust lubonelela ngezixhobo zenkqubo ekhuselekileyo, kodwa lunzima kakhulu. Iprojekthi iphuhliswa nguMarco Sampellegrini, umbhali we-Simple Haskell Handbook kunye nomphuhlisi wenkqubo yokudibanisa eqhubekayo ye-Quad CI.

Umhlwa 1.78 ukhululwe. Ulwimi lwaseBorgo oludibanisa amandla e-Go and Rust

I-Borgo isebenzisa ukuchwetheza okumileyo, iindidi ezinjengoGo, kunye ne-Rust-like syntax. Ii-semicolons zikhethwa ekupheleni kwemigca kwikhowudi ye-Borgo. Ikhowudi ye-Borgo iqulunqwe ibe ngumboniso we-Go ohambelana ngokupheleleyo neepakethe zeGo ezikhoyo. Ikhowudi yomqokeleli ibhalwe kwiRust kwaye ihanjiswa phantsi kwelayisensi ye-ISC. sebenzisa i-fmt enum NetworkState { Iyalayisha, Ayiphumelelanga (int), Impumelelo (T), } i-struct Response {isihloko: umtya, ubude bexesha: int, } fn main () { let res = Impendulo {isihloko: "Molo hlabathi", ubude bexesha: 0, } vumela ingxelo = I-NetworkState.Impumelelo (res) vumela umyalezo = imo yomdlalo { NetworkState.Loading => “isalayisha”, NetworkState.Failed(code) => fmt.Sprintf(“Kunekhowudi yempazamo: %d”, ikhowudi), NetworkState.Success (res) => res.title, } fmt.Println(msg) }

umthombo: opennet.ru

Yongeza izimvo