Анонс 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.10 cdylib поддерживается компилятором, но пока не поддерживается 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 был бы уязвим при использовании в хэш-таблицах.

Замечания

PRF
MAC


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


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


  • 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» вместо »
    ».

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


Возможности 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
  • 吴冉波

Комментарии (0)

© Habrahabr.ru