version av systemprogrammeringsspråk grundades av Mozilla-projektet. Språket fokuserar på säker minneshantering, ger automatisk minneshantering och ger möjlighet att uppnå hög jobbparallellism samtidigt som man undviker användningen av en sophämtare och .
Automatisk minneshantering i Rust räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår vid minneshantering på låg nivå, såsom åtkomst till ett minnesområde efter att det har frigjorts, avreferensering av nullpekare, buffertöverskridningar etc. En pakethanterare utvecklas för att distribuera bibliotek, säkerställa assemblering och hantera projektberoenden. , vilket gör att du kan få de bibliotek du behöver för programmet med ett klick. Ett arkiv stöds för värdbibliotek .
I tillkännagivandet av den nya versionen engagerade sig Rust-utvecklarna i politik och vägrade tydligt att publicera en fullständig översikt över förändringarna i Rust 1.44 i solidaritet med demonstranter mot polisvåld, med motiveringen att denna fråga är viktigare än utbyte av teknisk kunskap. :
- Lastpakethanteraren integrerar kommandot "lastträd", som visar en trädliknande beroendegraf. Alternativet "—duplicates" ("lastträd -d") läggs också till, vilket låter dig utvärdera beroenden i olika versioner av samma paket.
mdbook v0.3.2 (/Users/src/rust/mdbook)
├── ammoniak v3.0.0
│ ├── html5ever v0.24.0
│ │ ├── logg v0.4.8
│ │ │ └── cfg-if v0.1.9
│ │ ├── mac v0.1.1
│ │ └── markup5ever v0.9.0
│ │ ├── logg v0.4.8 (*)
│ │ ├── phf v0.7.24
│ │ │ └── phf_shared v0.7.24
│ │ │ ├── siphasher v0.2.3
│ │ │ └── Unicase v1.4.2
│ │ │ [byggberoenden] │ │ │ └── versionskontroll v0.1.5
. - För applikationer som inte är bundna till en std (“#![no_std]”) implementeras stöd för asynkrona programmeringsmetoder, baserat på funktionen “async”, blocket async move { ... } och operatorn “.await”, vilket förenklar skrivhanterare som inte blockerar huvudkommandoflödet.
- Stöd för ett definitionsschema för utökningsbar modulhierarki har lagts till i parsern. Till exempel kommer följande konstruktion inte att producera ett fel, trots den faktiska frånvaron av modulen "foo/bar/baz.rs" (konstruktionen är fortfarande semantiskt ogiltig och kan orsaka ett fel, men ändringarna kan ses och analyseras på makro- och villkorlig kompileringsnivå):
#[cfg(FALSE)] mod foo {
mod bar {
mod baz;
}
} - Rustc-kompilatorn har lagt till möjligheten att använda flaggan "-C codegen-units" i inkrementellt läge. Implementeringen av catch_unwind har omarbetats så att det inte har någon prestandapåverkan om avvecklingsprocessen är inaktiverad och inga undantag görs.
- Den tredje nivån av stöd tillhandahålls för plattformarna aarch64-unknown-none, aarch64-unknown-none-softfloat, arm64-apple-tvos och x86_64-apple-tvos. Den tredje nivån innebär grundläggande stöd, men utan automatiserad testning och publicering av officiella versioner.
- En ny del av API har överförts till kategorin stabil, inklusive stabiliserad
PathBuf::with_capacity,
PathBuf::capacity,
PathBuf::clear,
PathBuf::reserve,
PathBuf::reserve_exact,
PathBuf::shrink_to_fit,
{f32|f64}::to_int_unchecked,
Layout::align_to,
Layout::pad_to_align,
Layout::array och
Layout::extend. - Utökade funktioner i standardbiblioteket:
- Lade till en speciell "vec![]"-variant som återspeglas direkt i Vec::new(), vilket gör att "vec![]" kan användas i kontext istället för konstanter.
- Lade till implementering (impl) av egenskapen convert::Infallible .
- OsString implementerar smarta pekare и , returnerar "&mut OsStr".
- Lade till stöd för Unicode 13.
- Implementerad i String .
- IoSlice implementerar egenskapen .
- Vec implementerad Från<[T; N]>.
- proc_macro::LexError implementerar fmt::Display och Error.
- Flaggan "const", som avgör möjligheten att använda konstanter i valfritt sammanhang, används i metoderna from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes och to_ne_bytes för alla heltalstyper.
- Lagt till stöd för att generera statiska bibliotek i ".a"-format istället för ".lib" för GNU-plattformar på Windows.
- Minimikraven för LLVM har höjts till LLVM version 8.
Källa: opennet.ru
