9 июля 2026 года команда Rust выкатила версию 1.97 - очередной плановый релиз, за которым, впрочем, стоит весомый набор изменений. Над обновлением работали 277 разработчиков со всего мира. Предыдущая стабильная сборка появилась в апреле, так что цикл выдержан привычный - примерно шесть недель между выпусками.
Что изменилось и почему это важно
Главная техническая новость релиза - схема искажения символов v0 теперь включена по умолчанию в стабильной ветке. Звучит сухо, но суть серьёзная. Rust долго жил с унаследованным подходом на базе ABI Itanium - тем самым, что использует C++. Для языка с мощной системой обобщений и типажей это было откровенно неудобно: экземпляры обобщённых параметров не сохранялись напрямую, а деманглинг в ряде случаев требовал отдельного инструментария. Новая схема v0 специфична именно для Rust. Она появилась как опция ещё в версии 1.59, а с ноября 2025-го стала умолчанием в nightly-сборках. Теперь добралась до стабильного канала.
Второй заметный сдвиг - Cargo научился управлять предупреждениями напрямую. Раньше разработчики в CI-средах прибегали к костылю RUSTFLAGS=-Dwarnings, чтобы превращать предупреждения в ошибки сборки. Это работало, но ломало кэш. Теперь поведение регулируется через переменную CARGO_BUILD_WARNINGS с тремя режимами: allow, warn и deny. Кэш при этом остаётся валидным - что само по себе экономит время на больших проектах. Плюс новая настройка дружит с флагом --keep-going: CI может собрать полную картину всех ошибок и предупреждений за один прогон, не останавливаясь на первом же сбое.
Компоновщик больше не молчит
Третье существенное изменение касается вывода компоновщика. Прежде rustc прятал его сообщения при успешной компоновке - и это маскировало реальные проблемы. Теперь stderr компоновщика отображается в виде предупреждения по умолчанию. По имеющимся данным, уже в nightly-канале это изменение позволило выловить несколько скрытых дефектов. Новый параметр linker_messages намеренно вынесен за рамки общей группы предупреждений: вывод компоновщика сильно зависит от платформы и хуже поддаётся унификации, чем стандартная диагностика компилятора. Отключить нежелательные предупреждения можно через раздел lints в Cargo.toml.
Новые стабилизированные API
Помимо архитектурных решений, в 1.97 стабилизирован очередной пакет API. Среди них - набор методов для работы с битовыми операциями над целыми числами и их ненулевыми аналогами:
- isolate_highest_one и isolate_lowest_one - выделение старшего и младшего установленного бита
- highest_one и lowest_one - значения соответствующих битов
- bit_width - ширина минимального представления числа в битах
- Default для RepeatN и Copy для ffi::FromBytesUntilNulError
- Send для std::fs::File на платформе UEFI
- char::is_control теперь стабилен в контекстах const
Эти методы закрывают давние пробелы в стандартной библиотеке - особенно для низкоуровневого и встраиваемого программирования, где битовая арифметика используется постоянно.
Контекст: куда движется Rust
Для понимания масштаба: язык прошёл путь от версии 1.80 в июле 2024-го через эпохальный Rust 2024 (1.85.0, февраль 2025-го) и десятилетие со дня выхода 1.0, отмеченное релизом 1.87.0 в мае 2025-го. Сейчас команда последовательно шлифует инструментарий - Cargo, Clippy, сам компилятор - делая экосистему удобнее для промышленного использования. Rust давно перестал быть нишевым экспериментом: он проник в ядро Linux, активно используется в разработке браузерных движков, системного ПО и встраиваемых решений. Релиз 1.97 продолжает эту линию - без революций, но уверенно.