Objavljeno izdanje sistemskog programskog jezika Rđa 1.39, osnovan projektom Mozilla. Jezik se fokusira na sigurnost memorije, omogućuje automatsko upravljanje memorijom i pruža sredstva za postizanje visokog paralelizma zadataka bez korištenja skupljača smeća ili vremena izvođenja.
Rustovo automatsko upravljanje memorijom oslobađa programera od manipulacije pokazivačima i štiti od problema koji proizlaze iz manipulacije memorijom niske razine, kao što su pristupi memoriji nakon oslobađanja, dereferencije nultog pokazivača, prekoračenja međuspremnika i slično. Upravitelj paketa se razvija za distribuciju biblioteka, osiguranje sklapanja i upravljanje ovisnostima projekta. Naboj, što vam omogućuje da jednim klikom dobijete biblioteke potrebne za program. Repozitorij je podržan za host knjižnica sanduci.io.
Stabilizirano nova sintaksa asinkronog programiranja temeljena na funkciji "async", bloku async move { ... } i operatoru ".await", što olakšava pisanje rukovatelja koji ne blokiraju glavni tok naredbi. U usporedbi s prethodno ponuđenim API-jem za asinkroni I/O, konstrukcije async/.await jednostavne su za razumijevanje, vrlo čitljive i omogućuju implementaciju složenih asinkronih interakcija korištenjem poznatih tehnika kontrole toka temeljenih na petljama, uvjetnim izjavama i iznimkama.
Sintaksa Async-await omogućuje vam stvaranje funkcija koje mogu pauzirati svoje izvršenje, vratiti kontrolu glavnoj niti i zatim nastaviti s izvršenjem od mjesta gdje su stale. Na primjer, takva je pauza potrebna prilikom obrade I/O, u kojoj se drugi poslovi mogu obaviti dok se čeka da sljedeći podatak stigne. Funkcije i blokovi definirani s "async fn" i "async move" vraćaju osobinu Budućnost, koji definira prikaz odgođenog asinkronog računanja. Možete izravno pokrenuti odgođeni izračun i dobiti rezultat pomoću operatora “.await”. Nikakva radnja se ne izvodi ili unaprijed planira dok se ne pozove .await, što omogućuje stvaranje složenih ugniježđenih konstrukcija bez dodatnih troškova.
async fn prva_funkcija() -> u32 { .. }
...
neka budućnost = prva_funkcija();
...
neka rezultat: u32 = future.await;
Stabilizirano "#![feature(bind_by_move_pattern_guards)]", dopuštajući korištenje varijabli s vrstom vezanja "usputni potez" u predlošcima i koristite reference na ove varijable u odjeljku "if" izraza "utakmica". Na primjer, sada su dopuštene sljedeće konstrukcije:
podudaranje niza {
brojevi
if nums.iter().sum::() == 10
=> {
drop(nums);
}
_ => nedostupno!(),
}
}
Indikacija dopuštena atributi pri definiranju parametara funkcije, zatvaranja i pokazivača na funkciju. Podržani su atributi uvjetne kompilacije (cfg, cfg_attr) koji kontroliraju dijagnostiku putem linta (dopusti, upozori, odbij i zabrani) i pomoćni atributi makro poziva.
fn len(
#[cfg(windows)] isječak: &[u16], // upotrijebite parametar u sustavu Windows
#[cfg(not(windows))] isječak: &[u8], // korištenje u drugom OS-u
) -> iskoristi {
slice.len()
}
Upozorenja o problemima identificiranim prilikom provjere posuđivanja varijabli (borrow checker) pomoću NLL (Non-Lexical Lifetimes) tehnike, prevedeno u kategoriju fatalnih grešaka. Podsjetimo, sustav verifikacije koji se temelji na novom mehanizmu za uzimanje u obzir životnog vijeka posuđenih varijabli omogućio je identificiranje nekih problema koje stari verifikacijski kod nije primijetio. Budući da bi izlaz pogreške za takve provjere mogao utjecati na kompatibilnost s prethodno radnim kodom, u početku su izdana upozorenja umjesto pogrešaka. Upozorenja su sada zamijenjena pogreškama pri pokretanju u načinu rada Rust 2018. U sljedećem izdanju, ispis pogrešaka također će biti implementiran u načinu rada Rust 2015, koji će se konačno riješiti starog alata za provjeru posudbe;
Atribut “const”, koji određuje mogućnost korištenja u bilo kojem kontekstu umjesto konstanti, koristi se za funkcije Vec::new, String::new, LinkedList::new, str::len, [T]::len , str::as_bytes,
trbušnjaci, omotajući_trbušnjaci i prelivajući se_trbušnjaci;
Novi dio API-ja prebačen je u stabilnu kategoriju, uključujući metode koje su stabilizirane
Pin::into_inner, Instant::checked_duration_since i Instant::saturating_duration_since;
Upravitelj paketa tereta sada ima mogućnost korištenja ekstenzije ".toml" za konfiguracijske datoteke. Dodana preliminarna podrška za izgradnju standardne biblioteke izravno iz Carga. Dodana je zastavica "--workspace", zamjenjujući kontroverznu zastavu "--all". Novo polje dodano je metapodacima "objaviti“, koji vam omogućuje objavljivanje ovisnosti navođenjem git oznake i broja verzije. Dodana opcija testiranja "-Ztimings" za generiranje HTML izvješća o vremenu izvršenja različitih faza kompilacije.
U rustc prevoditelju, dijagnostičke poruke uključuju skraćivanje repova koda koji ne stane u terminal. Pružena treća razina podrške za ciljne platforme
i686-unknown-uefi i sparc64-unknown-openbsd. Treća razina uključuje osnovnu podršku, ali bez automatiziranog testiranja i objave službenih verzija.