Rust 1.36

good-penguin.png

Команда разработчиков с радостью представляет вам Rust 1.36!

Что нового в Rust 1.36? Стабилизирован Future трейт, из нового: крейт alloc, MaybeUninit, NLL для Rust 2015, новая реализация HashMap, новый флаг --offline для Cargo.

А тем подробнее:

  • В Rust 1.36 наконец-то стабилизировали Futute трейт.
  • alloc крейт.
    Начиная с Rust 1.36, части std, которые зависят от глобального аллокатора (например Vec, находятся в крейте alloc. Теперь std ре-экспортирует эти части. Больше об этом
  • MaybeUninit вместо mem::uninitialized.
    В предыдущих релизах mem::uninitialized позволяла вам обходить проверку инициализации, использовалось это для ленивой аллокации массивов, но эта функция довольно таки опасна (Подробнее), поэтому был стабилизирован тип MaybeUninit, который безопаснее.
    Ну и так как MaybeUninit является более безопасной альтернативой, то начиная с Rust 1.38 mem::uninitialized будет является устаревшой функцией.
    Если хотите больше узнать про неинициализированную память можете прочесть блог пост (Alexis Beingessner)
  • NLL для Rust 2015.
    В анонсе Rust 1.31.0 разработчики рассказывали нам о NLL (Non-Lexical Lifetime), улучшение для языка, которое делает borrow checker умнее и более дружелюбнее к пользователю. Пример:
    fn main() {
        let mut x = 5;
        let y = &x;
        let z = &mut x; // This was not allowed before 1.31.0.
    }
    
    В 1.31.0 NLL работал только в Rust 2018, с обещанием, что разработчики добавят поддержку и в Rust 2015.
    Если хотите больше узнать про NLL можете прочитать больше в этом блог посте (Felix Klocks)
  • Новый флаг для Cargo — --ofline.
    В Rust 1.36 стабилизировали новый флаг для Cargo. Флаг --offline говорит Cargo использовать локально кешированные зависимости, для того чтобы позже их можно было использовать без интернета. Когда нужные зависимости не доступны оффлайн, и если интернет все-таки нужен, то Cargo вернет ошибку. Для того чтобы предварительно скачать зависимости можно использовать команду cargo fetch, которая скачает все зависимости.
  • Тут вы можете прочитать более детальный обзор изменений

Также есть и измения в стандартной библиотеке:

  • Теперь макрос gdb!() может принимать несклько аргументов
  • Некотрое кол-во API теперь помечаны const
  • Новые APIs стабилизированы:
  • Другие измениения в стандартной библиотеке вы можете найти тут

Другие измения Rust, Cargo, Clippy.

>>> Подробности

©  Linux.org.ru