Wydanie języka programowania Rust 1.43

opublikowany wydanie języka programowania systemu Rdza 1.43, 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 uwalnia programistę od manipulacji wskaźnikami i chroni przed problemami wynikającymi z manipulacji pamięcią na niskim poziomie, takimi jak dostęp do pamięci po zwolnieniu, wyłuskiwanie wskaźników zerowych, przepełnienie bufora i tym podobne. 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:

  • Makra umożliwiają wykorzystanie fragmentów elementów w celu przekształcenia ich w kod cech (cecha), implementacji (impl) lub bloków zewnętrznych. Na przykład:

    makro_reguły! mac_cecha {
    ($i:element) => {
    cecha T { $i }
    }
    }
    mac_cecha! {
    fn foo() {}
    }

    Doprowadzi do generacji:

    cecha T. {
    fn foo() {}
    }

  • Ulepszone wykrywanie typu prymitywów, odniesień i operacji binarnych.
    Na przykład następujący kod, który wcześniej powodował błąd, będzie teraz mógł się skompilować (Rust teraz poprawnie określa, że ​​0.0 i &0.0 muszą być typu f32):

    niech n: f32 = 0.0 + &0.0;

  • Do Cargo została dodana nowa zmienna środowiskowa CARGO_BIN_EXE_{name}, która jest ustawiana podczas budowania testów integracyjnych i pozwala na określenie pełnej ścieżki do pliku wykonywalnego zdefiniowanego w sekcji „[[bin]]” pakietu.
  • Jeśli instrukcje mogą używać atrybutów takich jak „#[cfg()]”.
  • Biblioteka zapewnia możliwość użycia powiązanych stałych bezpośrednio dla typów całkowitych i ułamkowych, bez konieczności importowania modułu. Na przykład możesz natychmiast zapisać u32::MAX lub f32::NAN bez uprzedniego określenia „use std::u32” i „use std::f32”.
  • Dodano nowy moduł prymitywny, który ponownie eksportuje typy pierwotne Rusta, na przykład gdy trzeba napisać makro i upewnić się, że typy nie są ukryte.
  • Nowa porcja API została przeniesiona do kategorii stabilnej, w tym stabilizowanej

    Raz::jest_ukończony,
    f32::LOG10_2,
    f32::LOG2_10,
    f64::LOG10_2,
    f64::LOG2_10 i
    iter::raz_z.

Źródło: opennet.ru

Dodaj komentarz