Wydanie języka programowania Rust 1.52

Opublikowano wydanie systemowego języka programowania Rust 1.52, założonego przez projekt Mozilla, ale obecnie rozwijanego pod auspicjami niezależnej organizacji non-profit Rust Foundation. Język koncentruje się na bezpieczeństwie pamięci, zapewnia automatyczne zarządzanie pamięcią i zapewnia środki do osiągnięcia dużej równoległości zadań bez użycia modułu zbierającego elementy bezużyteczne lub środowiska wykonawczego (czas działania jest zredukowany do podstawowej inicjalizacji i konserwacji biblioteki standardowej).

Automatyczne zarządzanie pamięcią Rusta eliminuje błędy podczas manipulowania wskaźnikami i chroni przed problemami wynikającymi z manipulacji pamięcią na niskim poziomie, takimi jak dostęp do obszaru pamięci po jego zwolnieniu, wyłuskiwanie wskaźników zerowych, przepełnienie bufora itp. Aby rozpowszechniać biblioteki, zapewniać montaż i zarządzać zależnościami, w ramach projektu opracowywany jest menedżer pakietów Cargo. Repozytorium crates.io jest obsługiwane w przypadku bibliotek hostujących.

Główne innowacje:

  • Usunięto powiązanie z kolejnością wykonywania poleceń „sprawdzenie ładunku” i „obcięcie ładunku”. Poprzednio wywołanie „cargo Clippy” po „cargo check” nie uruchamiało narzędzia Clippy (Linter) ze względu na brak separacji pamięci podręcznej dla tych trybów sprawdzania. Teraz problem ten został rozwiązany i kolejność wywoływania „cargo Clippy” i „cargo check” nie ma już znaczenia.
  • Nowa część API została przeniesiona do kategorii stabilnej, w tym ustabilizowano następujące metody:
    • Argumenty::as_str
    • znak::MAX
    • znak::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • znak::od_u32
    • plasterek::punkt_partycji
    • str::rsplit_once
    • str::split_once
  • Atrybut „const”, który określa możliwość użycia go w dowolnym kontekście zamiast stałych, wykorzystywany jest w metodach:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_małe litery
    • u8::eq_ignore_ascii_case
  • Dodano sprawdzanie lint unsafe_op_in_unsafe_fn w celu ustalenia, czy niebezpieczny kod używany w niebezpiecznych funkcjach jest otoczony niebezpiecznymi blokami.
  • Dozwolone jest rzutowanie zmiennych wskaźników na tablice w postaci wskaźników na typ elementu tablicy. niech mut x: [użyj; 2] = [0, 0]; niech p = &mut x as *mut use; niech p = &mut x as *const use;
  • Do Clippy (Linter) dodano 9 nowych kontroli.
  • Menedżer pakietów cargo obsługuje teraz pole „manifest_path” w formacie JSON dla paczek. Dodano obsługę podawania informacji licencyjnych w formacie SPDX 3.11 do repozytorium crates.io.
  • Dopuszczalne jest określenie wielu filtrów podczas uruchamiania testów, na przykład uruchomienie „cargo test - foo bar” spowoduje uruchomienie wszystkich testów pasujących do masek „foo” i „bar”.
  • Domyślny zestaw narzędzi LLVM został zaktualizowany do LLVM 12.
  • Trzeci poziom wsparcia został wdrożony dla platform s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl i powerpc-unknown-openbsd. Trzeci poziom obejmuje podstawowe wsparcie, ale bez automatycznych testów, publikowania oficjalnych kompilacji i sprawdzania, czy kod da się zbudować.

Źródło: opennet.ru

Dodaj komentarz