- PVSM.RU - https://www.pvsm.ru -
Рабочая группа Rust 2021 Edition рада сообщить, что следующая редакция Rust — Rust 2021 — запланирована на этот год. Пока что формально описывающий её RFC [1] остаётся открытым, но мы ожидаем, что в скором времени он будет принят. Планирование и подготовка уже начались, и мы идём по графику!
Если вам интересно, какие новшества появятся в Rust 2021 или когда эта редакция выйдет в стабильной версии, — читайте нашу статью!
Конечный список нововведений, которые войдут в Rust 2021, ещё не определён до конца. В целом мы планируем, что выпуск Rust 2021 будет намного меньше, чем Rust 2018, по следующим причинам:
Более подробно о развитии концепции редакций вы можете почитать в RFC [1].
Решение, войдёт ли та или иная функциональность в Rust 2021, является частью процесса RFC — поэтому список ожидаемых функций может и будет меняться. Это будет происходить до самого момента выпуска, но тем не менее, уже сейчас мы можем рассмотреть список функций, которые, скорее всего, в неё войдут.
В то время как типы и свободные функции могут быть добавлены в прелюдию без привязки к редакции, с трейтами всё иначе. Добавление трейта в прелюдию может вызвать проблемы совместимости — например, вызов метода с именем, совпадающим с именем метода нового трейта в области видимости, может привести к двусмысленности.
Сейчас в редакцию Rust 2021 предложено включить следующие трейты:
TryFrom
/TryInto
FromIterator
RFC с этими изменениями можно найти тут [2]. Обратите внимание, что RFC ещё не принят — состав новой прелюдии активно обсуждается.
RFC 2229 [3] предлагает, когда это возможно, захватывать замыканиями отдельные поля, а не всю структуру целиком. Этот RFC уже принят. В некоторых случаях такое изменение может заставить деструкторы запускаться в другом месте, нежели сейчас, — из-за чего оно должно быть привязано к редакции. Миграция анализаторов должна свести к минимум изменения в семантике уже существующего кода.
В Rust 1.51 будет стабилизирован новый распознаватель функциональности [4] в Cargo, который разрешит зависимостям пакета использовать разную функциональность в разных контекстах. Например, пакет с #[no_std]
сможет использовать одну и ту же зависимость и во время сборки (build-dependencies
с включённым std
), и как обычную зависимость (без std
). Пока что это приводит к тому, что std
будет включена в обоих случаях, так как функциональность находится в глобальном пространстве имён.
В Rust 2021 этот распознаватель будет включён по умолчанию, но его можно использовать и в старых версиях, просто выбрав вручную.
Другие предложенные изменения включают унификацию работы panic
в std
и core
[5] и обновление уровня некоторых проверок с предупреждений до ошибок [6].
Полный список обсуждаемых функций вы можете найти здесь [7].
Если вы знаете о функциях, которых нет в этом списке, но они всё ещё обсуждаются для включения в Rust 2021, — пожалуйста, дайте нам знать [8]. Несмотря на то, что мы всегда рады слышать о дополнительных функциях, которые ещё не планируются для включения в Rust, у нас, скорее всего, не будет возможности их обсудить, пока редакция Rust 2021 не будет готова.
Итак, когда же мы планируем выпустить новую редакцию? Вот график основных этапов, к которому мы стремимся:
По мере приближения к этим срокам мы будем сужать список предлагаемых изменений до тех, что будут продвигаться активнее.
Если вы хотите помочь в выпуске редакции Rust 2021 — пожалуйста, свяжитесь с нами [8]. Помимо работы над функциональностью и планированием выпуска, будет ещё очень много других важных дел. Вот только часть того, что необходимо для успешного выпуска:
rustfix
миграции для всех соответствующих функций,С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате [9] или же в аналогичном чате для новичковых вопросов [10]. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков [11].
Также можете поддержать нас на OpenCollective [12].
Данную статью совместными усилиями перевели blandger [13], TelegaOvoshey [14], funkill [15] и andreevlex [16].
Автор: RustLangRu
Источник [17]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/362194
Ссылки в тексте:
[1] RFC: https://github.com/rust-lang/rfcs/pull/3085
[2] тут: https://github.com/rust-lang/rfcs/pull/3090
[3] RFC 2229: https://github.com/rust-lang/rfcs/pull/2229
[4] распознаватель функциональности: https://github.com/rust-lang/cargo/issues/8088
[5] унификацию работы panic
в std
и core
: https://github.com/rust-lang/rust/issues/80162
[6] предупреждений до ошибок: https://github.com/rust-lang/rust/issues/80165
[7] здесь: https://docs.google.com/spreadsheets/d/1chZ2SL9T444nvU9al1kQ7TJMwC3IVQQV2xIv1HWGQ_k/edit?usp=sharing
[8] пожалуйста, дайте нам знать: https://rust-lang.zulipchat.com/#narrow/stream/268952-edition-2021
[9] русскоязычном Телеграм-чате: https://t.me/rustlang_ru
[10] чате для новичковых вопросов: https://t.me/rust_beginners_ru
[11] чат переводчиков: https://t.me/rustlang_ru_translations
[12] OpenCollective: https://opencollective.com/rust-lang-ru
[13] blandger: https://habr.com/ru/users/blandger/
[14] TelegaOvoshey: https://habr.com/ru/users/telegaovoshey/
[15] funkill: https://habr.com/ru/users/funkill/
[16] andreevlex: https://habr.com/ru/users/andreevlex/
[17] Источник: https://habr.com/ru/post/545778/?utm_source=habrahabr&utm_medium=rss&utm_campaign=545778
Нажмите здесь для печати.