Команда Rust рада объявить о новом выпуске Rust 1.97.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.97.0 вам достаточно выполнить команду:$ rustup update stable Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску 1.97.0 на GitHub.Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках. Что вошло в стабильный 1.97.0
Команда Rust рада объявить о новом выпуске Rust 1.97.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.97.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску 1.97.0 на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Когда Rust компилируется в объектные и бинарные файлы, у каждого элемента (функции, статики и т.д.) глобально должно быть уникальное «имя символа» (symbol), которое его идентифицирует. Чтобы избежать конфликтов при линковке разных программ на Rust, компилятор применяет манглинг (кодирование имён символов): к исходному имени элемента добавляется дополнительный контекст — путь модуля, определяющий крейт, обобщённые параметры и другое. Исторически этот манглинг основывался на Itanium ABI, который (иногда) также используется в C++.
Новая схема манглинга устраняет ряд недостатков предыдущей:
Инстанциации обобщённых параметров сохраняют свои значения, а не отслеживаются только через хеш
Несогласованности: не все части использовали Itanium ABI, поэтому по-прежнему был необходим собственный деманглинг (декодирование имён)
Начиная с Rust 1.59 компилятор поддерживает выбор специализированной для Rust схемы манглинга через -Csymbol-mangling-version=v0. С ноября 2025 года эта схема включена по умолчанию на nightly, а в версии 1.97 — и в стабильном Rust. Устаревшую схему манглинга теперь можно включить только на nightly; в текущих планах полностью её убрать.
Подробности см. в предыдущем посте.
Поддержка запрета предупреждений в CargoВ CI принято запрещать предупреждения. Исторически это обычно делалось через RUSTFLAGS=-Dwarnings. В Rust 1.97 Cargo сам управляет тем, как предупреждения влияют на успешность сборки: либо заглушает их (уровень allow), либо показывает без провала сборки (по умолчанию warn), либо запрещает их (уровень deny).
Поскольку поведение задаётся конфигурацией Cargo, использование этой возможности не инвалидирует кэш сборки — временно включить её легко. Например, если предупреждения мешают шумом, пока вы правите ошибки после рефакторинга, можно выполнить CARGO_BUILD_WARNINGS=allow cargo check и временно их заглушить.
В CI задания могут вместо этого выставлять CARGO_BUILD_WARNINGS=deny, чтобы запретить предупреждения. Это можно сочетать с --keep-going, чтобы собрать все ошибки и предупреждения, а не останавливаться на первом упавшем пакете.
Подробности см. в документации.
Вывод линкера больше не скрывается по умолчаниюrustc вызывает линкер от лица пользователя. Исторически при успешной линковке rustc по умолчанию заглушал вывод линкера. Это однако может скрывать реальные проблемы, поэтому в Rust 1.97 сообщения линкера включены по умолчанию. Они выдаются как предупреждающая проверка, например:
warning: linker stderr: ignoring deprecated linker optimization setting '1'
|
= note: `#[warn(linker_messages)]` on by default
Сообщения линкера, которые уже были распознаны как ложные срабатывания или как намеренное поведение, rustc отфильтровывает. Благодаря тому, что на nightly этот вывод больше не скрывается, уже исправлено несколько дефектов.
Обратите внимание: сейчас linker_messages — особая проверка, на которую не влияет группа проверок warnings. Это сделано специально: rustc обычно контролирует вывод линкера не так точно, и нередко сообщения появляются только на части платформ. Если вы видите то, что считаете ложным срабатыванием от линкера, пожалуйста, создайте задачу.
Чтобы временно заглушить предупреждение, вы можете выставить уровень проверки в allow. Это можно сделать в Cargo.toml, добавив секцию lints:
[lints.rust]
linker_messages = "allow"
Стабилизированные APIЭти API, ранее уже стабильные, теперь также стабильны в const-контекстах:
Смотрите полный список изменений в Rust, Cargo и Clippy.
Участники релиза 1.97.0Многие люди собрались вместе, чтобы создать Rust 1.97.0. Без вас мы бы не справились. Спасибо!
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Как понять, что делает Rust-компилятор: визуализация AST, MIR и LLVM IR | 0 | 10.8 | 15-07-2026 |
| 2 | [Перевод] Сокращаем длительность компиляции проекта на Rust c 30 до 2 минут — пример с 1000 крейтов | 0 | 8.18 | 09-07-2026 |
| 3 | Полностью нечестное сравнение std::expected в C++23 и core::result::Result в Rust | 0 | 7.76 | 09-07-2026 |
| 4 | История о том, как я написал компилятор Svelte на Rust | 0 | 11.83 | 02-08-2026 |
| 5 | const fn в 2026: ваш компилятор втихаря исполняет Rust | 0 | 9.58 | 20-07-2026 |
| 6 | sizeof(Mutex<()>) упал с 40 байт до 5: что внутри std::sync::Mutex после Rust 1.62 | 0 | 12.38 | 09-07-2026 |
| 7 | От boot-кода до shell: несколько месяцев разработки ОС на Rust с ИИ-агентами | 0 | 12.89 | 30-07-2026 |
| 8 | Свой VPN на Rust: как я спорил с сетью, TLS и самим собой | 7 | 8 | 27-06-2026 |
| 9 | Биддер «одной цифрой» для Wildberries на Rust: контроллер с мёртвой зоной, лимиты API и выживание под 429 | 0 | 12.34 | 27-07-2026 |
| 10 | Test That! 0.5: A powerful test assertion library for Rust | 5 | 7 | 28-06-2026 |