Wydanie języka programowania Rust 1.69

Opublikowano wydanie języka programowania ogólnego przeznaczenia Rust 1.69, stworzonego w ramach projektu Mozilla, ale obecnie rozwijanego pod auspicjami niezależnej organizacji non-profit Rust Foundation. Język koncentruje się na bezpieczeństwie pamięci i zapewnia środki do osiągnięcia wysokiej równoległości zadań przy jednoczesnym uniknięciu korzystania z modułu wyrzucania elementów bezużytecznych i środowiska uruchomieniowego (czas działania jest ograniczony do podstawowej inicjalizacji i konserwacji standardowej biblioteki).

Metody obsługi pamięci Rust chronią programistę przed błędami podczas manipulowania wskaźnikami i chronią przed problemami wynikającymi z obsługi pamięci niskiego poziomu, takimi jak dostęp do obszaru pamięci po jego zwolnieniu, dereferencja pustych wskaźników, przepełnienie bufora itp. Aby dystrybuować biblioteki, dostarczać kompilacje i zarządzać zależnościami, projekt rozwija menedżera pakietów Cargo. Repozytorium crates.io jest obsługiwane w przypadku bibliotek hostingowych.

Bezpieczeństwo pamięci w Rust jest zapewnione w czasie kompilacji poprzez sprawdzanie referencji, śledzenie własności obiektów, śledzenie czasu życia obiektów (zakresów) i ocenę poprawności dostępu do pamięci podczas wykonywania kodu. Rust zapewnia również ochronę przed przepełnieniami liczb całkowitych, wymaga obowiązkowej inicjalizacji wartości zmiennych przed użyciem, lepiej radzi sobie z błędami w standardowej bibliotece, domyślnie stosuje koncepcję niezmiennych odniesień i zmiennych, oferuje silne typowanie statyczne w celu zminimalizowania błędów logicznych.

Główne innowacje:

  • Menedżer pakietów Cargo implementuje wykrywanie ostrzeżeń, które mogą być automatycznie usuwane, oraz odpowiednie zalecenia dotyczące uruchomienia „cargo fix” lub „cargo clippy --fix”. ostrzeżenie: nieużywany import: 'std::hash::Hash' --> src/main.rs:1:5 | 1 | użyj std::hash::hash; | ^^^^^^^^^^^^^^^^ | = uwaga: „#[warn(unused_imports)]” włączone domyślnie ostrzeżenie: „foo” (bin „foo”) wygenerowało 1 ostrzeżenie (uruchom „cargo fix --bin „foo””, aby zastosować 1 sugestię)
  • Dodano Cargo, aby wyświetlić zalecenie użycia polecenia „cargo add” podczas próby zainstalowania biblioteki za pomocą polecenia „cargo install”.
  • Aby skrócić czas kompilacji, dołączanie informacji debugowania do skryptów kompilacji zostało domyślnie przerwane. Jeśli skrypty kompilacji działają pomyślnie, zmiana nie spowoduje żadnej widocznej różnicy, ale jeśli się nie powiedzie, zrzut śledzenia wstecznego będzie zawierał mniej informacji. Aby przywrócić stare zachowanie Cargo.toml, dodaj: [profile.dev.build-override] debug = true [profile.release.build-override] debug = true
  • Nowa część API została przeniesiona do kategorii stabilnej, w tym metody i implementacje cech zostały ustabilizowane:
    • CStr::from_bytes_until_nul
    • core::ffi::FromBytesUntilNulError
  • Atrybut „const”, który określa możliwość użycia go w dowolnym kontekście zamiast stałych, jest używany w funkcjach:
    • SocketAddr::nowy
    • Adres gniazda::ip
    • Adres gniazda::port
    • Adres gniazda::is_ipv4
    • Adres gniazda::is_ipv6
    • SocketAddrV4::nowy
    • Adres gniazdaV4::ip
    • Adres gniazdaV4::port
    • SocketAddrV6::nowy
    • Adres gniazdaV6::ip
    • Adres gniazdaV6::port
    • SocketAddrV6::informacje o przepływie
    • SocketAddrV6::zakres_id
  • Dodano możliwość używania flag true i false w argumentach kompilatora.

Źródło: opennet.ru

Dodaj komentarz