Pull to refresh

Выпущен Rust 1.4

Reading time 2 min
Views 15K
Честно по графику встречаем Rust 1.4. Релиз вобрал в себя 1200 патчей с момента последнего релиза. Основное внимание уделили стабилизации языка, а это уже серьёзный аргумент, в пользу того, что язык приобрёл понятные формы, синтаксис и стандартную библиотеку.

Это первый стабильный релиз, который идёт в двух ABI (Application Binary Interface), кроме привычного GNU toolchain добавлена поддержка MSVC. Последний доступен пока в 64-битной версии, но я пользовался 32-х битным в nightly версии намного раньше, хотя официальная поддержка намечена на версию 1.6. Как бонус: теперь корректно обрабатывается перенос строки в windows-стиле, например, в BufRead.

Из других особенностей:
Можно использовать псевдонимы в множественном импорте:
use foo::{bar as kitten, baz as puppy}

Окончательно доломали:
pub extern crate

Это хорошая новость, так как экспорт внутреннего крейта, как минимум нарушает закон Деметры. Если нужно использовать структуру внутреннего крейта, ещё лучше явно экспортировать. А зачем это вообще нужно?! Если вы используете с внешней библиотекой разные версии крейтов, и попробуете её «накормить» инородным типом (например, набор полей в структуре поменялся), то всё сломается.

Исправлены ошибки с (пример, пока не залили 1.4 можно увидеть разницу на Stable)
&'static mut

Статическое время жизни было не так хорошо проработано ранее, и можно было обмануть строгие правила компилятора с правами на переменную.

Много изменений сделали в стандартной библиотеке. В основном по стабилизации, но есть некоторые улучшения, например, HashMap теперь реализует трейт Extend<T: Copy>. Ещё std::io::copy теперь умеет работать с типами, размер которых неизвестен при компиляции.

Cargo стал немного разговорчивее:
[cargo]$ cargo update
    Updating registry `https://github.com/rust-lang/crates.io-index`
    Updating libc v0.1.8 -> v0.1.10
    Updating memchr v0.1.3 -> v0.1.5
    Updating num v0.1.26 -> v0.1.27
    Updating rand v0.3.9 -> v0.3.10
    Updating rustc-serialize v0.3.15 -> v0.3.16

Кстати, я обновляю зависимости своих проектов раз в неделю, и всегда появляется что-то новое, это приятно, чувствуешь, что сообщество Rust живёт и развивается, но главное, от этого больше ничего не ломается.

Следующий релиз намечен на 10 декабря 2015: в этом году Дед Мороз принесёт подарки программистам на Rust чуть раньше )
Tags:
Hubs:
+36
Comments 33
Comments Comments 33

Articles