- PVSM.RU - https://www.pvsm.ru -
Привет в 2016-м году! Мы рады объявить первый в этом году релиз Rust — 1.6. Rust — системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.
Как всегда, вы можете установить Rust 1.6 [1] с соответствующей страницы нашего сайта, а также посмотреть подробный список изменений для версии 1.6 [2] на Github. Этот релиз включил в себя 1100 патчей.
В этот релиз вошли ряд небольших доработок, одно большое нововведение и изменение на Crates.io [3].
Самое большое нововведение в 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 [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/
Нажмите здесь для печати.