Serbestberdana zimanê bernamesaziya gelemperî ya Rust 1.78, ku ji hêla projeya Mozilla ve hatî damezrandin, lê naha di bin banê rêxistina ne-qezenc a serbixwe Rust Foundation de hatî pêşve xistin, hate weşandin. Ziman balê dikişîne ser ewlehiya bîranînê û amûran peyda dike ku bigihîje paraleliya kar a bilind dema ku ji karanîna berhevkarek çopê û dema xebitandinê dûr dikeve (dema xebitandinê ji destpêkirina bingehîn û domandina pirtûkxaneya standard re kêm dibe).
Rêbazên birêkûpêkkirina bîranîna Rust pêşdebiran ji xeletiyan di dema manîpulekirina nîşankeran de diparêze û li hember pirsgirêkên ku ji ber destwerdana bîranîna nizm çêdibin diparêze, wek gihandina cîhek bîranînê piştî ku ew azad bû, jêbirina nîşangirên betal, zêdekirina tampon û hwd. Ji bo belavkirina pirtûkxaneyan, peydakirina avahî û birêvebirina pêwendiyan, proje rêveberê pakêtê Cargo pêşve dike. Depoya crates.io ji bo pirtûkxaneyên mêvandar têne piştgirî kirin.
Ewlehiya bîranînê di Rust de di dema berhevkirinê de bi kontrolkirina referansê, şopandina xwedîtiya tiştan, şopandina heyamên tiştan (çarçove), û nirxandina rastbûna gihîştina bîranînê di dema darvekirina kodê de tê peyda kirin. Rust di heman demê de parastina li dijî hejmarên bêkêmasî peyda dike, berî karanîna pêdivî bi destpêkirina mecbûrî ya nirxên guhêrbar hewce dike, di pirtûkxaneya standard de xeletiyan çêtir digire, têgeha referansên neguhêrbar û guhêrbar ji hêla xwerû ve bicîh tîne, tîpkirina statîk a bihêz pêşkêşî dike da ku xeletiyên mantiqî kêm bike.
Nûvekirinên sereke:
- Cîhê navek taybetmendiyek nû "#[teşhîs]" hate pêşniyar kirin, ku amûrek peyda dike ku bandorê li peyamên xeletiyê yên ku ji hêla berhevkar ve têne hilberandin bandor bike. Di cîhê nû de ya yekem taybetmendiya "#[diagnostic::on_unimplemented]" e, ku dikare were bikar anîn da ku peyamên xeletiyê yên ku di rewşek ku hûn hewce ne ku taybetmendiyek ku ji bo celebê nehatiye bicîh kirin kesane bikin were bikar anîn. #[diagnostic::on_unimplemented( message = "Peyama min ji bo `ImportantTrait<{A}>` ji bo `{Xwe}` nayê bicihanîn", label = "Etîketa min", note = "Têbînî 1", not = "Têbînî 2" )] taybetmendî ImportantTrait {} fn use_my_trait(_: impl ImportantTrait ) {} fn main() {use_my_trait(String::new()); } xelet[E32]: Peyama min ji bo `Traita Girîng `ji bo `String` nayê pêkanîn —> src/main.rs:0277:32 | 12 | use_my_trait(String::new()); | ———— ^^^^^^^^^^^^^^ Labelê min | | | pêdivî ye ku ji hêla vê bangê ve hatî destnîşan kirin | = alîkarî: taybetmendiya `Xwesata Girîng ` ji bo `String` nayê pêkanîn = not: Nîşe 18 = not: Nîşe 12
- Kontrolên pêşdibistanê yên ku ji bo fonksiyonên neewle têne sepandin naha dikarin heya çêkirina kodê bêne paşxistin, ku dihêle ku ev kontrol bêyî hewcedariya avakirina pirtûkxaneya standard di moda "#[cfg(debug_assertions)]" de bêne kirin. Ji bo destpêkirina kontrolan, êdî bes e ku hûn îdiayên debugkirinê ji bo ceribandin an xeletkirina çêkirina koda xwe çalak bikin.
- Tevgera fonksiyonên di pirtûkxaneya standard de ku bandorê li serhevkirina nîşanker û perçeyan dike naha di dema xebitandinê de tê pêşbînîkirin û bi daneya têketinê ve girêdayî ye. Nîşankera fonksiyonê::align_offset, ku jihevderketinê hesab dike da ku nîşanderê bihevre bike, aniha tenê heke operasyon bisernekevin usize::MAX vedigerîne. Fonksiyonên slice::align_to û slice::align_to_mut her du jî, yên ku perçeyan vediguherînin nûnertiyek bi perçeyek navîn a rêzkirî û perçeyên destpêkê û dawiya orîjînal, naha her gav beşa navîn ya herî mezin vedigerînin.
- Li jêr hatin veguheztin kategoriya stabîl:
- impl Ji bo &Stdin Bixwîne
- Destûrê bide karanîna jiyanek ne-statîk (ne-statîk) ji bo hin pêkanînên std::çewtî::pêwendiya çewtiyê.
- Impl pêkanîna ?Nirxa mezinbûnê destûr e.
- impl From ji bo io::Çewtî
- Fonksiyona Barrier::new() hatiye stabilîzekirin ku li şûna sabitan bi taybetmendiya "const" di her çarçovê de were bikar anîn.
- Ji bo platformên mebest x86_64-pc-windows-msvc, i686-pc-windows-msvc, x86_64-pc-windows-gnu, i686-pc-windows-gnu, x86_64-pc-windows-gnullvm û i686vwinullm-p naha herî kêm guhertoya Windows 10 hewce dike.
- Asta sêyemîn a piştgiriyê ji bo platformên wasm32-wasip2, arm64ec-pc-windows-msvc, armv8r-none-eabihf û loongarch64-nenas-linux-musl hatîye bicîh kirin. Asta sêyemîn piştgirîya bingehîn digire, lê bêyî ceribandina otomatîk, weşandina avahiyên fermî, an kontrolkirina ka kod dikare were çêkirin.
- Asta duyemîn a piştgiriyê ji bo platforma armanc Add wasm32-wasip1 hate bicîh kirin. Asta duyemîn a piştgiriyê garantiya meclîsê vedigire.
- Navê platforma wasm32-wasi-preview1-threads wekî wasm32-wasip1-threads hate guherandin.
- Berhevkar hate guheztin ku LLVM 18 bikar bîne. Dema ku LLVM 18 ji bo mîmariya x86-32 û x86-64 tê bikar anîn, ABI-ya ku bi celebên u128 û i128 ve girêdayî ye hate guheztin.
- Di rêveberê peymana Kargo de, guhertoya 4-ê pelên qefilandinê (lockfile v4) sabît bûye.
- Kargo xwedan kaşek gerdûnî ya stabîlkirî ye ku bi agahdariya di derbarê karanîna daneya herî dawî de heye. Veşartî di $CARGO_HOME/.global-cache de bi karanîna SQLite tê mêwan kirin û bixweber tê nûve kirin da ku guheztinên herî paşîn ên îndeks, dosyaya kaxezê, pelrêça kodê, git clone, û git checkout nîşan bide.
Wekî din, zimanê bernamenûsê Borgo hewl dide ku ji zimanê Go bêtir diyarker be, lê ji zimanê Rust kêmtir tevlihev be. Borgo taybetmendiyên herî baş ên Go û Rust li hev tîne, kêmasiyên her zimanî çêdike. Mînakî, Go sade û sade ye, lê taybetmendiyên ewlehiyê yên pêşkeftî peyda nake. Zimanê Rust ji bo bernameya ewledar amûran peyda dike, lê pir tevlihev e. Proje ji hêla Marco Sampellegrini, nivîskarê Destana The Simple Haskell û pêşdebirê pergala entegrasyona domdar a Quad CI ve tê pêşve xistin.

Borgo tîpkirina statîk, celebên Go-mîna, û hevoksaziya Rust-ê bikar tîne. Di koda Borgo de nîvcolon li dawiya rêzan vebijarkî ne. Koda Borgo di nûnertiyek Go de tête berhev kirin ku bi tevahî pakêtên Go yên heyî re hevaheng e. Koda berhevkar bi Rust hatî nivîsandin û di bin lîsansa ISC de tê belav kirin. fmt enum NetworkState bikar bînin { Loading, Failed (int), Serkeftin (T), } struct Response { title: string, duration: int, } fn main() { let res = Bersiv { sernav: "Hello dinya", demdirêj: 0, } bila dewlet = NetworkState.Success(res) bila msg = rewsa hevahengiyê { NetworkState.Loading => "hîn tê barkirin", NetworkState.Failed(kod) => fmt.Sprintf("Koda çewtiyê hat: %d", kod), NetworkState.Success (res) => res.sernav, } fmt.Println(mesg) }
Source: opennet.ru
