Релиз Rust 1.97.0

от автора

9 июля 2026 года состоялся релиз языка программирования Rust 1.97. Вклад в разработку этого обновления внесли 277 программистов со всего мира. Предыдущая стабильная версия решения состоялась в апреле 2026 года. Версия проекта Rust 1.80 вышла в июле 2024 года. Релиз Rust 1.85.0 (Rust 2024) состоялся 20 февраля. Выпуск Rust 1.87.0 и празднование десяти лет после выхода Rust 1.0 произошло в мае 2025 года.

Текущий релиз включает в себя ряд стабилизированных API, доработанную стандартную библиотеку, в проекте добавлены средства контроля предупреждений Cargo и отображаются сообщения компоновщика.

Язык Rust сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Основные изменения и дополнения в Rust 1.97 (Rust, Cargo и Clippy):

  • схема искажения символов v0 (v0 symbol mangling scheme) теперь включена по умолчанию в стабильной версии Rust. Ранее Rust использовал подход искажения, основанный на ABI Itanium, который также используется в C++. Эта схема имела недостатки для Rust, такие как отсутствие прямого сохранения экземпляров обобщённых параметров и необходимость пользовательского деманглинга в некоторых случаях из-за несоответствий. Новая схема v0 является специфичной для Rust и доступна в качестве опции с версии Rust 1.59 через флаг компилятора -Csymbol-mangling-version=v0. Она также является схемой по умолчанию в nightly-сборках с ноября 2025 года;

  • Cargo теперь имеет встроенную поддержку управления тем, как предупреждения влияют на успешность сборки. До сих пор в средах CI проекты обычно использовали RUSTFLAGS=-Dwarnings для преобразования предупреждений в ошибки. В Rust 1.97 Cargo может управлять этим поведением напрямую, позволяя отключать предупреждения, показывать их без прерывания сборки или отклонять. Например, разработчики могут временно отключать предупреждения, устраняя другие ошибки, с помощью команды: CARGO_BUILD_WARNINGS=allow cargo check. В CI проекты могут вместо этого использовать: CARGO_BUILD_WARNINGS=deny. Этот подход предлагает ключевое преимущество: поскольку Cargo управляет поведением, кэш сборки остаётся действительным. Это упрощает временную корректировку настроек предупреждений без запуска ненужных пересборок. Кроме того, новая настройка может быть объединена с —keep-going, что позволяет заданиям CI собирать все ошибки и предупреждения, а не останавливаться при первой же ошибке;

  • обновлён способ обработки вывода компоновщика в rustc. Ранее rustc скрывал сообщения компоновщика при успешной компоновке, что могло маскировать реальные проблемы. Теперь компилятор по умолчанию отображает вывод stderr компоновщика в виде предупреждения. Например, если компоновщик сообщает, что игнорирует устаревшую настройку оптимизации, rustc теперь отображает это как предупреждение, а не подавляет его. Команда Rust отмечает, что благодаря этому изменению в nightly уже исправлено несколько дефектов;

  • новый параметр linker_messages включён по умолчанию, но обрабатывается отдельно от общей группы предупреждений. По словам разработчиков, это различие является преднамеренным, поскольку вывод компоновщика различается на разных платформах и менее контролируем, чем стандартная диагностика компилятора. Разработчики могут отключить нежелательные предупреждения компоновщика через раздел lints в файле Cargo.toml;

  • в разряд стабильных переведена новая порция API, в том числе стабилизированы методы и реализации типажей:

ссылка на оригинал статьи https://habr.com/ru/articles/1057646/