- PVSM.RU - https://www.pvsm.ru -
Мы рады представить новую версию Rust 1.11. Rust — это системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.
Как обычно, вы можете установить Rust 1.11 [1] с соответствующей страницы официального сайта, а также ознакомиться с подробным списком изменений [2] в этой версии на GitHub. В этот релиз вошло 1109 патчей.
В 1.11 мы много работали над внутренностями компилятора, которые ещё не стабильны. Мы рады сообщить, что MIR скоро станет транслятором по-умолчанию [3] и мы делаем первые шаги в направлении инкрементальной компиляции [4]. В выпуске 1.11 мы заложили фундамент для этой работы.
Что касается видимых пользователям изменений, в последнем выпуске [5] мы рассказывали о новом типе пакета — cdylib
.
Существующий формат динамических библиотек
dylib
отныне используется только для динамических библиотек, используемых в проектах на Rust, аcdylib
будет использоваться при компиляции кода на Rust для встраивания в другие языки. В выпуске 1.10cdylib
поддерживается компилятором, но пока не поддерживается Cargo. Этот формат был определён в RFC 1510.
Итак, в Rust 1.11 Cargo поддерживает cdylib'ы [6]! Добавив такой код в Cargo.toml
crate-type = ["cdylib"]
вы получите такой пакет.
В стандартной библиотеке мы изменили хэширующую функцию по-умолчанию [7] с SipHash 2-4 на SipHash 1-3. Мы давно думали над этим, начиная с исходного решения использовать 2-4
:
мы предложили SipHash-2-4 в качестве (сильной) PRF/MAC, и на данный момент не было найдено никаких атак на него, хотя многие компетентные люди пытались его сломать. Однако, может хватить и меньшего числа раундов, и я бы очень удивился, если бы SipHash-1-3 был бы уязвим при использовании в хэш-таблицах.
Подробнее о изменениях в языке в целом можно прочитать в замечаниях к выпуску [2].
BinaryHeap
[10], BTreeMap
[11], и BTreeSet
[12] получили метод append
. Также, добавлен split_off
для BTreeMap
[13] и BTreeSet::split_off
[14].to_degrees
и to_radians
были реализованы для f32
и f64
в libstd
и раньше, а теперь они доступны и в libcore
.Iterator
два новых метода: sum
[15] и product
[15].Cell
[16] и RefCell
[17] получили get_mut
.assert_eq!
принимает пользовательское сообщение об ошибки, как assert!
[18].Подробнее смотрите замечания к выпуску [2].
Подробнее смотрите замечания к выпуску [2].
В выпуске версии 1.11 участвовало 126 человек. Большое вам спасибо!
Автор: mkpankov
Источник [24]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/175543
Ссылки в тексте:
[1] установить Rust 1.11: https://www.rust-lang.org/install.html
[2] подробным списком изменений: https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1110-2016-08-18
[3] MIR скоро станет транслятором по-умолчанию: https://github.com/rust-lang/rust/pull/34096
[4] инкрементальной компиляции: https://github.com/rust-lang/rust/pull/34956
[5] в последнем выпуске: https://rustycrate.ru/%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8/2016/07/11/rust-1.10.html
[6] поддерживает cdylib'ы: https://github.com/rust-lang/cargo/pull/2741
[7] изменили хэширующую функцию по-умолчанию: https://github.com/rust-lang/rust/pull/33940
[8] PRF: https://en.wikipedia.org/wiki/Pseudorandom_function_family
[9] MAC: https://en.wikipedia.org/wiki/Message_authentication_code
[10] BinaryHeap
: https://doc.rust-lang.org/std/collections/binary_heap/struct.BinaryHeap.html#method.append
[11] BTreeMap
: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.append
[12] BTreeSet
: https://doc.rust-lang.org/std/collections/btree_set/struct.BTreeSet.html#method.append
[13] BTreeMap
: https://doc.rust-lang.org/std/collections/btree_map/struct.BTreeMap.html#method.split_off
[14] BTreeSet::split_off
: https://doc.rust-lang.org/std/collections/btree_set/struct.BTreeSet.html#method.split_off
[15] sum
: https://doc.rust-lang.org/std/iter/trait.Iterator.html#method.sum
[16] Cell
: https://doc.rust-lang.org/std/cell/struct.Cell.html#method.get_mut
[17] RefCell
: https://doc.rust-lang.org/std/cell/struct.RefCell.html#method.get_mut
[18] assert_eq!
принимает пользовательское сообщение об ошибки, как assert!
: https://github.com/rust-lang/rust/pull/33976
[19] теперь называется "main" вместо "<main>": https://github.com/rust-lang/rust/pull/33803
[20] добавлена поддержка цвета в консоли Windows: https://github.com/rust-lang/cargo/pull/2804
[21] задавать цвета для stderr, а не только для stdout: https://github.com/rust-lang/cargo/pull/2739
[22] Скрипты сборки теперь могут выдавать предупреждения: https://github.com/rust-lang/cargo/pull/2630
[23] не даёт публиковать контейнеры, если у вас есть несохранённые изменения в рабочей копии: https://github.com/rust-lang/cargo/pull/2781
[24] Источник: https://habrahabr.ru/post/308124/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best
Нажмите здесь для печати.