Выпуск Rust 1.23
Команда Rust рада сообщить о новой версии Rust: 1.23.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.
Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:
1 | $ rustup update stable
|
Если же у вас ещё не установлен rustup
, вы можете установить его
с соответствующей страницы нашего веб-сайта.
С подробными примечаниями к выпуску Rust 1.23.0
можно ознакомиться на GitHub.
Что вошло в стабильную версию 1.23.0
Новый год, новый Rust! Нашим первым улучшением является
избавление от избыточных копий в некоторых ситуациях.
С этими изменениями потребление памяти rustc
уменьшилось на 5-10%,
но результаты для ваших приложений могут отличаться.
Команда документации прошла долгий путь
для того чтобы rustdoc
использовал CommonMark.
До этого rustdoc
не гарантировал какой движок отрисовки markdown он использовал.
В рамках этого выпуска мы все ещё визуализируем документацию
нашим прошлым движком — Hoedown —
но параллельно визуализируем ещё и совместимым с CommonMark движком,
выдавая предупреждения при различных результатах.
Нам ещё не встречались ситуации, где нельзя было бы изменить синтаксис
документа так, чтобы он удовлетворял обоим движкам сразу.
Участник команды документации Guillaume Gomez написал заметку об этом в своём журнале,
где показаны некоторые часто встречающиеся отличия движков и способы их обхода.
В будущем выпуске CommonMark движок будет использоваться по умолчанию.
Предупреждение появилось в ночной версии
в мае прошлого года и было включено по умолчанию с октября прошлого года,
поэтому многие пакеты (crates) уже исправили встретившиеся проблемы.
Ещё немного о документации: исторически, документация по Cargo была немного странной.
Вместо того чтобы располагаться на doc.rust-lang.org,
она была расположена на doc.crates.io.
С этим выпуском это изменится:
теперь вы можете найти документацию Cargo на
doc.rust-lang.org/cargo.
Мы добавим перенаправление с doc.crates.io
на эту страницу.
Кроме того, документация была преобразована в наш «книжный» формат.
Подробности смотрите в примечаниях к выпуску.
Стабилизации стандартной библиотеки
Начиная с Rust 1.0, существует типаж
AsciiExt,
который предоставляет относящуюся к ASCII функциональность
для u8
, char
, [u8]
и str
.
Чтобы использовать его, вам нужно было написать подобный код:
1 2 3 4 5 6 7 8 9 | use std::ascii::AsciiExt; let ascii = 'a'; let non_ascii = '❤'; let int_ascii = 97; assert!(ascii.is_ascii()); assert!(!non_ascii.is_ascii()); assert!(int_ascii.is_ascii()); |
В Rust 1.23 эти методы объявлены непосредственно для типов, поэтому вам больше не нужно импортировать типаж. Благодаря нашим гарантиям стабильности этот типаж все ещё существует, так что если вы хотите поддерживать версии Rust ниже 1.23, вы можете написать:
1 2 | #[allow(unused_imports)] use std::ascii::AsciiExt; |
…чтобы подавить соответствующее предупреждение. Когда вы откажитесь от поддержки старых версий Rust, обе строчки можно будет удалить и все продолжит работать.
Так же, было стабилизировано несколько API:
- Типы из
std::sync::atomic
теперь реализуютFrom
для соответствующих неатомарных типов. Например,let x = AtomicBool::from(true);
. ()
теперь реализуетFromIterator<()>
; в PR есть интересный пример использования.- У
RwLock<T>
было убраноSend
ограничение.
Подробности смотрите в примечаниях к выпуску.
Cargo features
cargo check
теперь может проверять ваши модульные тесты.
cargo uninstall
теперь может удалять больше одного пакета одной командой.
Подробности смотрите в примечаниях к выпуску.
Разработчики 1.23.0
Множество людей участвовало в разработке Rust 1.23. Мы не смогли бы этого добиться без участия каждого из вас. Спасибо!
Авторы перевода: @BORN2LOSE и @ozkriff.