Wydanie języka programowania Rust 1.46

opublikowany wydanie 1.46 języka programowania systemu Rdza, założona przez projekt Mozilla. Język koncentruje się na bezpieczeństwie pamięci, zapewnia automatyczne zarządzanie pamięcią i zapewnia narzędzia umożliwiające osiągnięcie dużej równoległości zadań bez użycia modułu zbierającego elementy bezużyteczne Czas.

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. Trwają prace nad menedżerem pakietów, który umożliwi dystrybucję bibliotek, zapewnienie montażu i zarządzanie zależnościami w ramach projektu. Ładunek, co pozwala jednym kliknięciem pobrać biblioteki potrzebne do programu. Repozytorium jest obsługiwane w celu hostowania bibliotek skrzynie.io.

Głównym innowacje:

  • Rozszerzono możliwości funkcji zdefiniowanych za pomocą wyrażenia „const fn”, które można wywoływać nie tylko jako funkcje regularne, ale także używać w dowolnym kontekście zamiast stałych. Funkcje te są obliczane w czasie kompilacji, a nie w czasie wykonywania, dlatego podlegają pewnym ograniczeniom, takim jak możliwość odczytu tylko stałych.

    Nowa wersja usuwa zakaz używania operatorów boolowskich („&&” i „||”) w tych funkcjach oraz pozwala na użycie konstrukcji „if”, „if let”, „match”,
    „while”, „while let” i „loop”, a także zapewnia możliwość konwersji na wycinki (wycinki, tablice dynamiczne) za pomocą wyrażenia „&[T]”. Użycie tych funkcji w funkcjach „const fn” pozwala przenieść niektóre operacje wymagające dużej ilości zasobów do etapu kompilacji. Na przykład implementacja „const-sha1” umożliwia obliczenie skrótu SHA-1 w czasie kompilacji, co prowadzi do przyspieszenia powiązań WinRT dla Rusta prawie 40-krotnie.

  • Aby komunikaty o błędach były bardziej informacyjne, ustabilizowano obsługę atrybutu „#[track_caller]”, co jest przydatne w przypadku funkcji takich jak unwrap, które mogą powodować panikę w przypadku nieprawidłowego użycia typów. Podany atrybut zostanie użyty przez program obsługi paniki do wydrukowania lokalizacji osoby dzwoniącej w komunikacie o błędzie.
  • Atrybut „const”, który określa możliwość użycia go w dowolnym kontekście zamiast stałych, wykorzystywany jest w metodzie std::mem::forget.
  • Nowa część API została przeniesiona do kategorii stabilnej, w tym ustabilizowane Option::zip i vec::Drain::as_slice.
  • W menedżerze pakietów Cargo dodany obsługa nowych zmiennych środowiskowych ustawianych podczas kompilacji pakietu: CARGO_BIN_NAME (nazwa wynikowego pliku wykonywalnego), CARGO_CRATE_NAME (nazwa pakietu), CARGO_PKG_LICENSE (licencja określona w manifeście), CARGO_PKG_LICENSE_FILE (ścieżka do pliku licencyjnego).

Źródło: opennet.ru

Dodaj komentarz