Rust 1.44 programspråk release

publiceras version av systemprogrammeringsspråk Rost 1.44grundades 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 runtime.

Rusts automatiska minneshantering räddar utvecklaren från fel vid manipulering av pekare och skyddar mot problem som uppstår på grund av minnesmanipulation på låg nivå, som att komma åt ett minnesområde efter det att det har frigjorts, avläsning av nollpekare, buffertöverskridningar, etc. För att distribuera bibliotek, säkerställa montering och hantera beroenden utvecklar projektet en pakethanterare Laddning, 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 lådor.io.

I texten till tillkännagivandet av den nya utgåvan engagerade Rust-utvecklarna sig i politiken och vägrade trotsigt att publicera en fullständig recension av ändringarna i Rust 1.44 i solidaritet med demonstranterna mot polisvåld, vilket indikerar att denna fråga är viktigare än utbyte av teknisk kunskap. Main innovationer:

  • Kommandot "lastträd" är integrerat i lastpakethanteraren, som visar en trädliknande beroendegraf. Lade även till alternativet "--duplicates" ("lastträd -d"), som 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] │ │ │ └── version_check v0.1.5
    .

  • För applikationer som inte är bundna till std ("#![no_std]"), är stöd för asynkrona programmeringsmetoder baserade på "async"-funktionen, blocket async move { ... } och operatorn ".await" implementerat, vilket gör det lättare att skriva icke-blockerande hanterare huvudkommandoström.
  • 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" (semantiskt är konstruktionen fortfarande ogiltig och kan orsaka ett fel, men ändringarna kan ses och analyseras på makronivå och villkorlig sammanställning):

    #[cfg(FALSE)] mod foo {
    mod bar {
    modbaz;
    }
    }

  • Rustc-kompilatorn lade till möjligheten att använda flaggan "-C codegen-units" i inkrementellt läge. Implementeringen av catch_unwind har gjorts om, vilket nu inte påverkar prestandan om avvecklingsprocessen är inaktiverad och inga undantag görs.
  • Tillhandahöll stöd på tredje nivå 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 builds.
  • 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 variant av "vec![]" som direkt återspeglas i Vec::new(), vilket gör att "vec![]" kan användas i kontext istället för konstanter.
    • Egenskapsimplementering (impl) har lagts till för att konvertera::Infallible Hash.
    • OsString implementerar smarta pekare DerefMut и IndexMut, returnerar "&mut OsStr".
    • Lade till stöd för Unicode 13.
    • Implementerad i String Från<&mutstr>.
    • Egenskapen implementerad i IoSlice Kopiera.
    • Vec implementerad Från<[T; N]>.
    • proc_macro::LexError implementerar fmt::Display och Error.
  • Attributet "const", som bestämmer möjligheten att använda i alla sammanhang istället för konstanter, används i metoderna from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes och to_ne_bytes metoder 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 för Windows.
  • Minimikraven för LLVM har höjts till LLVM 8.

Källa: opennet.ru

Lägg en kommentar