Анонс Rust 1.6
Привет в 2016-м году! Мы рады объявить первый в этом году релиз Rust — 1.6. Rust — системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.
Как всегда, вы можете установить Rust 1.6 с соответствующей страницы нашего сайта, а также посмотреть подробный список изменений для версии 1.6 на Github. Этот релиз включил в себя 1100 патчей.
Что вошло в стабильную версию 1.6
В этот релиз вошли ряд небольших доработок, одно большое нововведение и изменение на Crates.io.
Стабилизация libcore
Самое большое нововведение в 1.6 — стабилизация библиотеки libcore
.
Стандартная библиотека Rust состоит из двух слоёв: маленькая базовая
библиотека libcore
и полная стандартная библиотека libstd
, которая
построена на основе libcore
. Сама libcore
полностью платформенно-независимая
и требует, чтобы было определено несколько внешних функций.
Полная библиотека libstd
основана на libcore
и добавляет
поддержку выделения памяти, операций ввода-вывода и многопоточность.
При использовании Rust во встроенных средах и при написании операционных
систем часто отказываются от libstd
и используют только libcore
.
Стабилизация libcore
— важный шаг к возможности написания самого
низкоуровневого кода на стабильной версии Rust. Однако, работа ещё не закончена.
Стабилизация позволит вырасти экосистеме библиотек вокруг libcore
,
но её использование в приложениях пока ещё не поддерживаются полностью.
Ожидайте новостей из этой области в будущих релизах.
Стабилизация библиотек
Около 30 библиотечных функций и методов стабилизированы в 1.6. Самые заметные улучшения включают в себя:
Семейство функций drain()
для коллекций. Эти методы позволяют вам
перемещать элементы из коллекций, при этом сохраняя память, в которой
они размещены, тем самым в некоторых случаях уменьшая необходимость в выделении памяти.
Несколько реализаций типажа From
для конвертирования между типами
из стандартной библиотеки, в основном между целочисленными числами
и числами с плавающей точкой.
Ну и наконец, метод Vec::extend_from_slice()
, ранее известный как push_all()
.
Он значительно быстрее, чем более общий метод extend()
.
Можете также посмотреть на подробный список изменений.
На Crates.io запрещено использовать звёздочки вместо версий зависимостей
Если вы поддерживаете контейнер на Crates.io, то возможно
уже заметили предупреждение: новые контейнеры более не могут использовать
шаблон *
в качестве номера версии в зависимостях. Другими словами, так больше
сделать нельзя:
1 2 | [dependencies] regex = "*" |
Вместо этого вы должны указать конкретную версию или диапазон версий,
используя одно из множества ограничений на версию из контейнера semver
:
^
, ~
или =
.
Звёздочка означает, что вы можете работать с любой версией данной зависимости. Скорее всего это не правда, и только добавляет лишние проблемы с совместимостью в экосистеме. Предупреждение о запрете звёздочки в качестве версии уже довольно давно выводится при публикации контейнера на Crates.io, а теперь оно станет настоящей ошибкой.