Rust 1.24

10 месяцев ago admin 0

Команда Rust рада сообщить о выпуске Rust 1.24.0.
Rust — это системный язык программирования, нацеленный на безопасность,
быстрое и параллельное исполнение программ.

Если у вас уже установлена предыдущая версия через rustup, для обновления
просто выполните

$ rustup update stable

Для новой установки скачайте rustup и не забудьте прочитать примечания к
выпуску 1.24.0
на GitHub.

Что нового в Rust 1.24.0?

rustfmt

Несколько лет мы ждали инструмент для автоматического приведения исходного
кода на Rust в «стандартный вид». Встречайте предварительную версию rustfmt!
Чтобы попробовать, просто выполните

$ rustup component add rustfmt-preview

Нужно отметить два важных момента: во-первых, вы должны использовать именно
rustup component add, а не cargo install. Если вы ранее использовали rustfmt
через cargo install, вам необходимо предварительно его удалить.
Во-вторых, не забывайте о том, что rustfmt ещё не достиг версии 1.0.
Некоторые детали пока в разработке, а баги в процессе исправления. Как только
rustfmt достигнет версии 1.0, компонент rustfmt-preview будет объявлен
устаревшим и заменён на rustfmt.

В ближайшее время мы планируем написать отдельный пост об этой стратегии
выпусков. Для дополнительной информации смотрите страницу rustfmt на GitHub.

Пошаговая сборка

Ещё в сентябре 2016 года мы подробно писали об этом в нашем блоге.
Идея пошаговой компиляции довольна проста: если поддерживается этот механизм,
то пересобираться будет только тот код, который был изменён с момента
предыдущей компиляции. Это намного быстрее, чем полностью собирать весь
проект, даже если изменения исходного кода достаточно малы. Начиная с версии
1.24, пошаговая компиляция включена по умолчанию. Не забудьте о cargo check,
если будете пытаться достигнуть минимально возможного времени сборки.

Важно отметить, что и работа над производительностью компилятора в целом, и
над пошаговой сборкой в частности, будет продолжена. Кое-что доступно уже в
этом выпуске 1.24.0 — значение codegen-units теперь 16 по умолчанию. Одно
небольшое замечание об этом изменении: оно делает компиляцию быстрее, но
исполняемый файл получается немного медленнее. Для максимальной скорости
программы выставьте codegen-units в 1 в вашем Cargo.toml.

Другие изменения

Есть ещё одно изменение, о котором мы хотели бы поговорить: неопределённое
поведение (undefined behavior). Как правило, Rust старается избегать
неопределённого поведения, исключив его полностью из безопасного (safe) кода,
и сведя к минимуму в небезопасном (unsafe) коде. Одним местом, где вы всё ещё
могли получить неопределённое поведение, была ситуация, когда вызов panic!
проходит через FFI.

extern "C" fn panic_in_ffi() {
        panic!("Test");
}

Это не может работать, поскольку точный механизм работы паник должен быть
согласован с тем, как работает "C" ABI в этом примере, или любой другой ABI в
других случаях.

В Rust 1.24 исполнение такого кода будет прерываться, а не порождать
неопределённое поведение. Смотрите примечания к выпуску для более подробной
информации.

Стабилизация библиотек

Если вы любитель функции str::find, которая используется для нахождения char в
&str, вы будете рады узнать, что она стала быстрее в 10 раз! Этого удалось
достигнуть использованием memchr. [u8]::contains теперь также его использует,
хотя прирост скорости оказался более умеренным.

Несколько новых API были стабилизированы в этом выпуске:

Следующие функции теперь могут быть использованы в постоянных выражениях
(constant expressions), например при инициализации static:

  • new функции для Cell, RefCell и UnsafeCell
  • new функции для различных целочисленных Atomic типов
  • {integer}::min_value и max_value
  • size_of и align_of для mem
  • ptr::null и null_mut

Смотрите примечания к выпуску для более подробной информации.

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


Source: linux.org.ru