Команда Rust объявила о выходе версии 1.97. В стабильной сборке теперь по умолчанию используется схема декорирования символов v0.
Ранее Rust применял декорирование на основе Itanium ABI, которое также используется в C++. У этой схемы были недостатки: она не сохраняла конкретные экземпляры обобщённых параметров напрямую и иногда требовала собственного деманглинга из-за несоответствий.
Новейшая схема v0 разработана специально для Rust и доступна в качестве опции начиная с версии 1.59 через флаг -Csymbol-mangling-version=v0. В ночных сборках она стала стандартной с ноября 2025 года, а теперь в Rust 1.97 применяется по умолчанию и в стабильных выпусках.
Ещё одно полезное изменение касается Cargo: теперь в нём встроено управление тем, как предупреждения влияют на успешность сборки. До сих пор проекты часто использовали RUSTFLAGS=-Dwarnings в CI, чтобы превращать предупреждения в ошибки. Начиная с Rust 1.97, Cargo может напрямую управлять этим поведением, позволяя подавлять предупреждения, выводить их без провала сборки или запрещать.
Например, чтобы временно скрыть предупреждения при исправлении других ошибок, можно выполнить: CARGO_BUILD_WARNINGS=allow cargo check. В CI-окружении, напротив, удобно задать CARGO_BUILD_WARNINGS=deny.
Такой подход даёт важное преимущество: поскольку поведением управляет Cargo, кэш сборки остаётся действительным. Это упрощает временную корректировку предупреждений без запуска ненужных пересборок. Кроме того, новую настройку можно комбинировать с --keep-going, что позволяет CI-задачам собирать все ошибки и предупреждения, а не останавливаться на первой же проблеме.
Rust 1.97 также обновил обработку вывода компоновщика в rustc. Раньше при успешной линковке сообщения компоновщика скрывались, из-за чего реальные проблемы могли оставаться незамеченными. Теперь компилятор по умолчанию показывает stderr компоновщика в виде предупреждения.
К примеру, если компоновщик сообщает, что игнорирует устаревший параметр оптимизации, rustc выведет это как предупреждение, а не скроет. По словам команды Rust, благодаря этому изменению в ночных сборках уже исправлено несколько дефектов.
Новый линт linker_messages включён по умолчанию, но вынесен отдельно от общей группы предупреждений. Разработчики объясняют это тем, что вывод компоновщика зависит от платформы и менее контролируем, чем стандартные диагностики компилятора. При необходимости отключить нежелательные предупреждения компоновщика можно через секцию lints в Cargo.toml.
Как обычно для стабильных релизов, Rust 1.97 приносит и новые стабилизированные API. В их числе Default for RepeatN, Copy for ffi::FromBytesUntilNulError, Send for std::fs::File на UEFI, а также ряд методов для целочисленных и NonZero-типов: isolate_highest_one, isolate_lowest_one, highest_one, lowest_one и bit_width. Кроме того, char::is_control теперь стабилен в контексте const.
Дополнительные сведения доступны в официальном анонсе. Как обычно, обновиться до версии 1.97 можно через rustup командой rustup update stable.





Пока нет комментариев. Будьте первым!