Rust 1.52 programspråk release

Utgivningen av systemprogrammeringsspråket Rust 1.52, grundat av Mozilla-projektet, men nu utvecklat i regi av den oberoende ideella organisationen Rust Foundation, har publicerats. Språket fokuserar på minnessäkerhet, ger automatisk minneshantering och ger möjlighet att uppnå hög uppgiftsparallellism utan att använda en skräpsamlare eller körtid (körtiden reduceras till grundläggande initiering och underhåll av standardbiblioteket).

Rusts automatiska minneshantering eliminerar fel vid manipulering av pekare och skyddar mot problem som uppstår från minnesmanipulation på låg nivå, som att komma åt en minnesregion efter att den har frigjorts, nollpekarereferenser, buffertöverskridanden, etc. För att distribuera bibliotek, säkerställa montering och hantera beroenden utvecklar projektet Cargo package manager. Crates.io-förvaret stöds för värdbibliotek.

Huvudsakliga innovationer:

  • Tog bort bindningen till ordningen för utförande av kommandona "lastkontroll" och "lastklipp". Tidigare anropade "cargo clippy" efter "cargo check" inte clippy-verktyget (linter) på grund av bristen på cache-separation för dessa kontrolllägen. Nu har detta problem lösts och i vilken ordning "cargo clippy" och "cargo check" kallas spelar inte längre någon roll.
  • En ny del av API:et har överförts till den stabila kategorin, inklusive följande metoder har stabiliserats:
    • Argument::as_str
    • röding::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::från_siffra
    • char::from_u32_unchecked
    • char::from_u32
    • skiva::partitionspunkt
    • str::rsplit_en gång
    • str::split_en gång
  • Attributet "const", som bestämmer möjligheten att använda det i alla sammanhang istället för konstanter, används i metoderna:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_versaler
    • char::to_ascii_små bokstäver
    • char::eq_ignore_ascii_case
    • u8::to_ascii_versaler
    • u8::to_ascii_små bokstäver
    • u8::eq_ignore_ascii_case
  • Lade till luddkontroll unsafe_op_in_unsafe_fn för att avgöra om osäker kod som används i osäkra funktioner ramas in av osäkra block.
  • Det är tillåtet att casta föränderliga pekare till arrayer i form av pekare till typen av arrayelement. låt mut x: [använda; 2] = [0, 0]; låt p = &mut x som *mut usize; låt p = &mut x som *const usize;
  • 9 nya kontroller har lagts till clippy (linter).
  • Lastpakethanteraren stöder nu fältet "manifest_path" i JSON för paket. Lade till stöd för att specificera licensinformation i SPDX 3.11-format till crates.io-förvaret.
  • Det är tillåtet att ange flera filter när man kör tester, till exempel körs "cargo test - foo bar" alla tester som matchar maskerna "foo" och "bar".
  • Standardverktyget för LLVM har uppdaterats till LLVM 12.
  • Den tredje nivån av stöd har implementerats för plattformarna s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl och powerpc-unknown-openbsd. Den tredje nivån innebär grundläggande support, men utan automatiserad testning, publicering av officiella builds eller kontroll av om koden kan byggas.

Källa: opennet.ru

Lägg en kommentar