Анонс Rust 1.11
Мы рады представить новую версию 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
1 | 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 человек. Большое вам спасибо!
- Aaklo Xu
- Aaronepower
- Aleksey Kladov
- Alexander Polyakov
- Alexander Stocko
- Alex Burka
- Alex Crichton
- Alex Ozdemir
- Alfie John
- Amanieu d’Antras
- Andrea Canciani
- Andrew Brinker
- Andrew Paseltiner
- Andrey Tonkih
- Andy Russell
- Ariel Ben-Yehuda
- bors
- Brian Anderson
- Carlo Teubner
- Carol (Nichols || Goulding)
- CensoredUsername
- cgswords
- cheercroaker
- Chris Krycho
- Chris Tomlinson
- Corey Farwell
- Cristian Oliveira
- Daan Sprenkels
- Daniel Firth
- diwic
- Eduard Burtescu
- Eduard-Mihai Burtescu
- Emilio Cobos Álvarez
- Erick Tryzelaar
- Esteban Küber
- Fabian Vogt
- Felix S. Klock II
- flo-l
- Florian Berger
- Frank McSherry
- Georg Brandl
- ggomez
- Gleb Kozyrev
- Guillaume Gomez
- Hendrik Sollich
- Horace Abenga
- Huon Wilson
- Ivan Shapovalov
- Jack O’Connor
- Jacob Clark
- Jake Goulding
- Jakob Demler
- James Alan Preiss
- James Lucas
- James Miller
- Jamey Sharp
- Jeffrey Seyfried
- Joachim Viide
- John Ericson
- Jonas Schievink
- Jonathan L
- Jonathan Price
- Jonathan Turner
- Joseph Dunne
- Josh Stone
- Jupp Müller
- Kamal Marhubi
- kennytm
- Léo Testard
- Liigo Zhuang
- Loïc Damien
- Luqman Aden
- Manish Goregaokar
- Mark Côté
- marudor
- Masood Malekghassemi
- Mathieu De Coster
- Matt Kraai
- Mátyás Mustoha
- M Farkas-Dyck
- Michael Necio
- Michael Rosenberg
- Michael Woerister
- Mike Hommey
- Mitsunori Komatsu
- Morten H. Solvang
- Ms2ger
- Nathan Moos
- Nick Cameron
- Nick Hamann
- Nikhil Shagrithaya
- Niko Matsakis
- Oliver Middleton
- Oliver Schneider
- Paul Jarrett
- Pavel Pravosud
- Peter Atashian
- Peter Landoll
- petevine
- Reeze Xia
- Scott A Carr
- Sean McArthur
- Sebastian Thiel
- Seo Sanghyeon
- Simonas Kazlauskas
- Srinivas Reddy Thatiparthy
- Stefan Schindler
- Steve Klabnik
- Steven Allen
- Steven Burns
- Tamir Bahar
- Tatsuya Kawano
- Ted Mielczarek
- Tim Neumann
- Tobias Bucher
- Tshepang Lekhonkhobe
- Ty Coghlan
- Ulrik Sverdrup
- Vadim Petrochenkov
- Vincent Esche
- Wangshan Lu
- Will Crichton
- Without Boats
- Wojciech Nawrocki
- Zack M. Davis
- 吴冉波