Zespół deweloperów ma przyjemność zaprezentować Rust 1.36!
Co nowego w Rust 1.36?
A teraz szczegóły:
- W Rust 1.36 w końcu został ustabilizowany trait Future.
- Crate alloc.
Począwszy od Rust 1.36, części std, które zależą od globalnego alokatora (np. Vec), znajdują się w crate alloc. Teraz std reeksportuje te części. Więcej na ten temat. - MaybeUninit zamiast mem::uninitialized.
W poprzednich wersjach mem::uninitialized pozwalało na ominięcie kontroli inicjalizacji, co było używane do leniwej alokacji tablic, lecz ta funkcja jest dość niebezpieczna (więcej informacji), dlatego stabilizowano typ MaybeUninit, który jest bezpieczniejszy.
Ponadto z racji, że MaybeUninit jest bezpieczniejszą alternatywą, począwszy od Rust 1.38, mem::uninitialized stanie się przestarzałą funkcją.
Jeśli chcesz dowiedzieć się więcej o nieinicjalizowanej pamięci, możesz przeczytać wpis na blogu (Alexis Beingessner). - NLL dla Rust 2015.
W ogłoszeniu Rust 1.31.0 deweloperzy opowiadali nam o NLL (Non-Lexical Lifetime), udoskonaleniu dla języka, które sprawia, że borrow checker jest mądrzejszy i bardziej przyjazny dla użytkownika. Przykład:
fn main() {
let mut x = 5;
let y = &x;
let z = &mut x; // To nie było dozwolone przed 1.31.0.
}W 1.31.0 NLL działał tylko w Rust 2018, z obietnicą, że deweloperzy dodadzą wsparcie również dla Rust 2015.
Jeśli chcesz dowiedzieć się więcej o NLL, możesz przeczytać więcej w tym wpisie na blogu (Felix Klocks). - Nowa flaga dla Cargo — —offline.
W Rust 1.36 stabilizowano nową flagę dla Cargo. Flaga —offline informuje Cargo, aby używało lokalnie zasobów z cache, aby później można je było wykorzystać bez dostępu do Internetu. Gdy wymagane zasoby są niedostępne offline, a Internet jest potrzebny, Cargo zwróci błąd. Aby wcześniej pobrać zasoby, można użyć polecenia cargo fetch, które pobierze wszystkie zasoby. - Tutaj możesz przeczytać bardziej szczegółowy przegląd zmian.
Są także zmiany w standardowej bibliotece:
- Teraz makro dbg!() może przyjmować wiele argumentów.
- Niektóre API są teraz oznaczone jako const:
- Nowe API, które zostały ustabilizowane:
- Inne zmiany w standardowej bibliotece możesz znaleźć tutaj.
Inne zmiany Rust, Cargo i Clippy.
Źródło: linux.org.ru
