Мы рады представить новую версию Rust 1.11. Rust — это системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.
Как обычно, вы можете установить Rust 1.11 с соответствующей страницы официального сайта, а также ознакомиться с подробным списком изменений в этой версии на GitHub. В этот релиз вошло 1109 патчей.
Что вошло в стабильную версию 1.11
В 1.11 мы много работали над внутренностями компилятора, которые ещё не стабильны. Мы рады сообщить, что MIR скоро станет транслятором по-умолчанию и мы делаем первые шаги в направлении инкрементальной компиляции. В выпуске 1.11 мы заложили фундамент для этой работы.
Что касается видимых пользователям изменений, в последнем выпуске мы рассказывали о новом типе пакета — cdylib
.
Существующий формат динамических библиотекdylib
отныне используется только для динамических библиотек, используемых в проектах на Rust, аcdylib
будет использоваться при компиляции кода на Rust для встраивания в другие языки. В выпуске 1.10cdylib
поддерживается компилятором, но пока не поддерживается Cargo. Этот формат был определён в RFC 1510.
Итак, в Rust 1.11 Cargo поддерживает cdylib'ы! Добавив такой код вCargo.toml
crate-type = ["cdylib"]
вы получите такой пакет.
В стандартной библиотеке мы изменили хэширующую функцию по-умолчаниюс SipHash 2-4 на SipHash 1-3. Мы давно думали над этим, начиная с исходного решения использовать 2-4
:
мы предложили SipHash-2-4 в качестве (сильной) PRF/MAC, и на данный момент не было найдено никаких атак на него, хотя многие компетентные люди пытались его сломать. Однако, может хватить и меньшего числа раундов, и я бы очень удивился, если бы SipHash-1-3 был бы уязвим при использовании в хэш-таблицах.
Замечания
Подробнее о изменениях в языке в целом можно прочитать в замечаниях квыпуску.
Стабилизация библиотек
BinaryHeap
,BTreeMap
, иBTreeSet
получили методappend
. Также, добавленsplit_off
дляBTreeMap
иBTreeSet::split_off
.- Методы
to_degrees
иto_radians
были реализованы дляf32
иf64
вlibstd
и раньше, а теперь они доступны и вlibcore
. - У
Iterator
два новых метода:sum
иproduct
. Cell
иRefCell
получилиget_mut
.assert_eq!
принимает пользовательское сообщение об ошибке, какassert!
.- Главный поток теперь называется "main" вместо "<main>".
Подробнее смотрите замечания к выпуску.
Возможности Cargo
- В Cargo добавлена поддержка цвета в консоли Windows, и теперь вы можете задавать цвета для stderr, а не только для stdout.
- Скрипты сборки теперь могут выдавать предупреждения.
- Как мы говорили выше, добавлена поддержка контейнеров типа cdylib.
- Cargo теперь не даёт публиковать контейнеры, если у вас есть несохранённые изменения в рабочей копии.
Подробнее смотрите замечания к выпуску
Разработчики версии 1.11
В выпуске версии 1.11 участвовало 126 человек. Большое вам спасибо!
Источник: Хабрахабр
Свежие комментарии