- PVSM.RU - https://www.pvsm.ru -

Анонс Rust 1.6

Привет в 2016-м году! Мы рады объявить первый в этом году релиз Rust — 1.6. Rust — системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.

Как всегда, вы можете установить Rust 1.6 [1] с соответствующей страницы нашего сайта, а также посмотреть подробный список изменений для версии 1.6 [2] на Github. Этот релиз включил в себя 1100 патчей.

Что вошло в стабильную версию 1.6

В этот релиз вошли ряд небольших доработок, одно большое нововведение и изменение на Crates.io [3].

Стабилизация libcore

Самое большое нововведение в 1.6 — стабилизация библиотеки libcore [4]. Стандартная библиотека 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().

Можете также посмотреть на подробный список изменений [2].

На Crates.io запрещено использовать звёздочки вместо версий зависимостей

Если вы поддерживаете контейнер на Crates.io [3], то возможно уже заметили предупреждение: новые контейнеры более не могут использовать шаблон * в качестве номера версии в зависимостях. Другими словами, так больше сделать нельзя:

[dependencies]
regex = "*"

Вместо этого вы должны указать конкретную версию или диапазон версий [5], используя одно из множества ограничений на версию из контейнера semver: ^, ~ или =.

Звёздочка означает, что вы можете работать с любой версией данной зависимости. Скорее всего это не правда, и только добавляет лишние проблемы с совместимостью в экосистеме. Предупреждение о запрете звёздочки в качестве версии уже довольно давно выводится при публикации контейнера на Crates.io [3], а теперь оно станет настоящей ошибкой.

От переводчика

Хочу выразить благодарность defuz [6], Revertron [7], D101101 [8] и всему русскоязычному сообществу Rust [9] за помощь в переводе.

Автор: kstep

Источник [10]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/news/109758

Ссылки в тексте:

[1] установить Rust 1.6: http://www.rust-lang.org/install.html

[2] подробный список изменений для версии 1.6: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-160-2016-01-21

[3] Crates.io: https://crates.io

[4] libcore: http://doc.rust-lang.org/nightly/core/

[5] конкретную версию или диапазон версий: http://doc.crates.io/crates-io.html#using-cratesio-based-crates

[6] defuz: https://habrahabr.ru/users/defuz/

[7] Revertron: https://habrahabr.ru/users/revertron/

[8] D101101: https://habrahabr.ru/users/d101101/

[9] русскоязычному сообществу Rust: http://rustycrate.ru/

[10] Источник: https://habrahabr.ru/post/275593/