Mutauro wehurongwa hwese-chinangwa Rust 1.78, wakavambwa neMozilla purojekiti asi ikozvino wakagadziridzwa pasi perubatsiro rwesangano rakazvimirira rerust Foundation, raburitswa. Mutauro unotarisana nekuchengetedza ndangariro uye unopa nzira dzekuwana yakakwirira basa parallelism uchidzivirira kushandiswa kwemarara uye nguva yekumhanya (nguva yekumhanya inoderedzwa kusvika yekutanga yekutanga uye kugadzirisa raibhurari yakajairwa).
Rust's memory yekubata nzira dzinochengetedza mugadziri kubva mukukanganisa kana achibata anonongedzera uye kudzivirira kubva kumatambudziko anomuka nekuda kweakadzika-level ndangariro kubata, sekuwana nzvimbo yekurangarira mushure mekunge yasunungurwa, kudzoreredza null pointer, buffer overruns, nezvimwe. Kugovera maraibhurari, kupa kuvaka uye kugadzirisa zvinotsamira, purojekiti inovandudza Cargo package maneja. Iyo crates.io repository inotsigirwa kuitisa maraibhurari.
Kuchengetedzwa kwendangariro kunopihwa muRust panguva yekuunganidza kuburikidza nekutariswa kwekutarisa, kuchengeta track yemuridzi wechinhu, kuchengeta track yehupenyu hwechinhu (scopes), uye kuongorora iko kurongeka kwekuwana ndangariro panguva yekuita kodhi. Ngura inopawo dziviriro kubva pahuwandu hwekufashukira, inoda kusungirirwa kwekutanga kwemhando dzakasiyana usati washandiswa, inobata zvikanganiso zviri nani muraibhurari yakajairwa, inoshandisa iyo pfungwa yezvisingachinjiki mareferensi uye zvinosiyana nekusarudzika, inopa yakasimba static typing kuderedza zvikanganiso zvine musoro.
Zvitsva zvikuru:
- Nzvimbo nyowani yezita rezita "#[diagnostic]" yakatsanangurwa, ichipa nzira yekukanganisa mameseji ekukanganisa anogadzirwa nemuunganidzi. Yekutanga munzvimbo nyowani ndeye "#[diagnostic::on_unimplemented]" hunhu, hunogona kushandiswa kugadzirisa iwo mhosho mameseji anokandwa mumamiriro ezvinhu apo iwe unofanirwa kushandisa hunhu husina kuisirwa mhando. #[diagnostic::on_unimplemented(meseji = "Mharidzo Yangu ye `ImportantTrait <{A}>` haina kuisirwa `{Self}`", label = "My Label", note = "Cherechedzo 1", note = "Cherechedza 2" )] hunhu HunokoshaTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn chikuru() {shandisa_my_trait(String::new()); } kukanganisa[E32]: Mharidzo yangu ye `ImportantTrait ` haina kuisirwa `String` —> src/main.rs:0277:32 | 12 | use_my_trait(String::new()); | ———— ^^^^^^^^^^^^^^ My Label | | | inodiwa neakasungwa akaunzwa nekufona uku | = rubatsiro: hunhu `ImportantTrait `haina kuisirwa `String` = note: Cherechedzo 18 = chiziviso: Cherekedza 12
- Pre-assert cheki yakashandiswa kumabasa asina kuchengetedzeka zvino inogona kudzoserwa kusvika kugadzirwa kwekodhi, zvichibvumira kuti cheki idzi dziitwe pasina chikonzero chekuvaka raibhurari yakajairika mu "#[cfg(debug_assertions)]" modhi. Kuti utange macheki, ikozvino zvakwana kugonesa debug asserts yekuyedza kana debug kuvaka kwekodhi yako.
- Maitiro emabasa muraibhurari yakajairwa anokanganisa kurongeka kweanongedza uye zvimedu ave kufungidzira panguva yekumhanya uye zvinoenderana nedata rekuisa. The function pointer :: align_offset, iyo inoverengera kumisa kuti ienzanise chinongedzo, ikozvino inodzosera saizi::MAX chete kana oparesheni yatadza. Iwo mafuctions slice ::align_to and slice ::align_to_mut zvese, izvo zvinoshandura zvimedu kuita chinomiririra chine chimedu chepakati chakarongeka uye chepakutanga uye chekupedzisira zvimedu, zvino gara uchidzosa chikamu chikuru chepakati.
- Zvinotevera zvakaendeswa kuchikamu chakagadzikana:
- impl Verenga ye &Stdin
- Bvumira kushandiswa kwehupenyu husina static (isina-static) kune imwe std::error::Kuitwa kunoenderana nezvikanganiso.
- Impl kuita ?Size value inotenderwa.
- impl Kubva yeio::Kukanganisa
- Iyo Barrier::new() basa rakagadziriswa kuti rishandiswe ne "const" hunhu mune chero mamiriro pachinzvimbo chezvisingaperi.
- Zvepuratifomu x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm uye i686-pc-mahwindo-gnu ikozvino inoda zvishoma Windows 10 shanduro.
- Nhanho yechitatu yerutsigiro yakashandiswa kune iyo wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf uye loongarch64-isingazivikanwe-linux-musl mapuratifomu. Chikamu chechitatu chinosanganisira rutsigiro rwekutanga, asi pasina otomatiki kuyedzwa, kushambadza official kuvaka, kana kutarisa kuti kodhi inogona kuvakwa.
- Yechipiri nhanho yerutsigiro yepuratifomu yakanangwa Wedzera wasm32-wasip1 yaitwa. Chikamu chechipiri chekutsigira chinosanganisira vimbiso yegungano.
- Nzvimbo iyi wasm32-wasi-preview1-threads yapihwa zita rekuti wasm32-wasip1-shinda.
- Iyo compiler yakashandurwa kuti ishandise LLVM 18. Paunenge uchishandisa LLVM 18 ye x86-32 uye x86-64 architectures, ABI yakabatana nemhando dzeu128 uye i128 yakashandurwa.
- Mune Cargo pact maneja, vhezheni 4 yemafaira ekukiya (lockfile v4) yakagadziriswa.
- Cargo ine yakagadzikana yepasirese cache ine ruzivo nezve ichangoburwa data kushandiswa. Cache iri mu $CARGO_HOME/.global-cache uchishandisa SQLite uye inovandudzwa otomatiki kuratidza shanduko dzichangoburwa ku index, crate file, code directory, git clone, uye git checkout.
Pamusoro pezvo, mutauro weBorgo unoedza kutaura zvakanyanya kupfuura mutauro weGo, asi wakaomarara kupfuura mutauro weRust. Borgo inosanganisa akanakisa maficha eGo and Rust, achigadzira kukanganisa kwemutauro wega wega. Semuenzaniso, Go iri nyore uye yakatwasuka, asi haipe mhando yemhando yekuchengetedza maficha. Mutauro weRust unopa maturusi ehurongwa hwakachengeteka, asi hwakanyanya kuoma. Iyo purojekiti iri kuvandudzwa naMarco Sampellegrini, munyori weThe Nyore Haskell Handbook uye mugadziri weiyo Quad CI inoenderera yekubatanidza system.

Borgo inoshandisa static typing, Go-like types, uye Rust-like syntax. Semicolons inosarudzika pamagumo emitsara muBorgo kodhi. Borgo kodhi inounganidzwa kuita Go inomiririra inoenderana zvizere nearipo Go mapakeji. Iyo compiler kodhi yakanyorwa muRust uye inogoverwa pasi peISC rezinesi. shandisa fmt enum NetworkState {Kurodha, Yakakundikana (int), Kubudirira (T), } struct Response {zita: tambo, nguva: int, } fn chikuru () {rega res = Mhinduro {zita: "Mhoro nyika", nguva: 0, } rega kutaura = NetworkState.State (res) => res.title, } fmt.Println(msg) }
Source: opennet.ru
