- PVSM.RU - https://www.pvsm.ru -

Анонс Rust 1.11

Мы рады представить новую версию Rust 1.11. Rust — это системный язык программирования, нацеленный на безопасную работу с памятью, скорость и параллельное выполнение кода.

Как обычно, вы можете установить Rust 1.11 [1] с соответствующей страницы официального сайта, а также ознакомиться с подробным списком изменений [2] в этой версии на GitHub. В этот релиз вошло 1109 патчей.

Что вошло в стабильную версию 1.11

В 1.11 мы много работали над внутренностями компилятора, которые ещё не стабильны. Мы рады сообщить, что MIR скоро станет транслятором по-умолчанию [3] и мы делаем первые шаги в направлении инкрементальной компиляции [4]. В выпуске 1.11 мы заложили фундамент для этой работы.

Что касается видимых пользователям изменений, в последнем выпуске [5] мы рассказывали о новом типе пакета — cdylib.

Существующий формат динамических библиотек dylib отныне используется только для динамических библиотек, используемых в проектах на Rust, а cdylib будет использоваться при компиляции кода на Rust для встраивания в другие языки. В выпуске 1.10 cdylib поддерживается компилятором, но пока не поддерживается 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 был бы уязвим при использовании в хэш-таблицах.

Замечания

PRF [8]
MAC [9]

Подробнее о изменениях в языке в целом можно прочитать в замечаниях к выпуску [2].

Стабилизация библиотек

Подробнее смотрите замечания к выпуску [2].

Возможности Cargo

Подробнее смотрите замечания к выпуску [2].

Разработчики версии 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
  • 吴冉波

Автор: 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