Выпуск Rust 1.96.0

4 мин
Выпуск Rust 1.96.0

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

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

  • CVE-2026-5223 — уязвимость средней степени опасности, связанная с извлечением архивов крейтов с символическими ссылками;

  • CVE-2026-5222 — уязвимость низкой степени опасности, связанная с аутентификацией с использованием нормализованных URL-адресов.

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

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

  • нновый набор типов Range. Многие пользователи ожидают, что Range и связанные с ним типы core::ops будут иметь интерфейс Copy, но это не так: они напрямую реализуют оболочку Iterator, а реализация Iterator и Copy для одного и того же типа является ошибкой, поэтому этого удалось избежать. В RFC3550 предложен набор заменяющих типов Range, которые реализуют IntoIterator вместо Iterator, что означает, что они равным образом могут иметь интерфейс Copy. Часть стандартной библиотеки этого RFC теперь стабильна и включает в себя:

    • core::range::Range

    • core::range::RangeFrom

    • core::range::RangeInclusive

    • Associated iterators

    В ближайшем будущем в версии Rust также будут добавлены core::range::RangeFull и core::range::RangeTo в качестве реэкспортируемых типов из core::ops (они не реализуют Iterator и уже реализуют Copy), а core::range::legacy::* станет новым местом для текущих диапазонов. Синтаксис диапазонов, например 0..1, пока что приводит к устаревшим типам, но в будущих версиях будет обновлен до типов core::range. Благодаря этим улучшениям теперь можно хранить методы доступа к срезам в типах Copy без разделения start и end:

  • свежий тип RangeInclusive равным образом делает свои поля публичными, в отличие от устаревшей версии, которая избегала отображения состояния исчерпанного итератора. С новым типом это не задача, поскольку его необходимо преобразовать для начала итерации;

  • разработчикам библиотек следует рассмотреть функция использования реализации RangeBounds в публичном api, которая принимает как устаревшие, так и новые типы диапазонов. Если требуется конкретный тип, предпочтительнее использовать новые диапазоны, поскольку в конечном итоге они станут стандартными;

  • проверка соответствия шаблонам. Новые макросы assert_matches! и debug_assert_matches! проверяют, соответствует ли значение заданному шаблону, в противном случае выдавая сообщение об ошибке с отладочным представлением значения. По сути, они аналогичны assert!(matches!(..)) и debug_assert!(matches!(..)), но выводимое значение повышает вероятность диагностики ошибки. Эти новые макросы не были добавлены в типовой пакет prelude, поскольку они будут конфликтовать с популярными сторонними библиотеками, предоставляющими макросы с тем же именем. Вместо этого их следует импортировать вручную из core или std перед использованием;

  • изменения в целевых объектах WebAssembly. Целевые объекты WebAssembly больше не передают параметр --allow-undefined компоновщику, что означает, что неопределённые символы при компоновке теперь являются ошибкой компоновщика, а не преобразуются в импорт WebAssembly из модуля "env". Это изменение предотвращает компоновку модулей, если не определены все связанные с компоновкой символы, что позволяет выявлять ошибки на ранних стадиях и предотвращать случайные проблемы с именованием символов или подобными вещами. Неопределённые символы, связанные с компоновкой, часто указывают на ошибки, связанные со сборкой, или неправильную конфигурацию. Тем не менее, если старое поведение является запланированным, его можно повторно включить с помощью RUSTFLAGS=-Clink-arg=--allow-undefined или отредактировав исходный исходник и используя #[link(wasm_import_module = "env")] в блоке, определяющем символ;

  • в пакетном менеджере Cargo устранена уязвимость CVE-2026-5223, которая может использоваться для перезаписи исходного кода другого crate-пакета в локальном кэше пакетов из того же репозитория через манипуляции с символическими ссылками внутри crate-а пакетов. Уязвимость проявляется только при работе со сторонними репозиториями пакетов и не затрагивает пользователей репозитория crates.io, так как там запрещена загрузка пакетов с символическими ссылками;

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

    • assert_matches!

    • debug_assert_matches!

    • From<T> for AssertUnwindSafe<T>

    • From<T> for LazyCell<T, F>

    • From<T> for LazyLock<T, F>

    • core::range::RangeToInclusive

    • core::range::RangeToInclusiveIter

    • core::range::RangeFrom

    • core::range::RangeFromIter

    • core::range::Range

    • core::range::RangeIter

Читают сейчас

MSI представила игровой QD-OLED-монитор 31,5&quot; с тремя режимами работы

19 минут назад

MSI представила игровой QD-OLED-монитор 31,5&quot; с тремя режимами работы

Организация MSI представила 31,5-дюймовый игровой QD-OLED-монитор MPG OLED 322URDX36. Производитель заявляет, что это начальный в мире монитор с поддержкой трёх режимов работы — 4K при 360 Гц, 2K при

GNOME Circle не будет принимать приложения, созданные с использованием ИИ

1 час назад

GNOME Circle не будет принимать приложения, созданные с использованием ИИ

Площадка GNOME Circle, где размещаются приложения и библиотеки, созданных с использованием технологий GNOME, не будет принимать приложения, созданные с использованием ИИ. Такое подход принял комитет п

Стартап-компания Shift предлагает наводить порядок дома в обмен на информация для обучения роботов

1 час назад

Стартап-компания Shift предлагает наводить порядок дома в обмен на информация для обучения роботов

Стартап-компания Shift предлагает бесплатную уборку домов. Уборщики, присланные компанией, пропылесосят, вымоют полы, вытрут все поверхности, а процесс будет фиксироваться на видео. Эти материалы зате

Техдолг под капотом ИИ-бума: исходник пишется быстро, чинится долго

1 час назад

Техдолг под капотом ИИ-бума: исходник пишется быстро, чинится долго

В 2026 году многие авторы уже отказываются писать код без ИИ-агентов — к такому выводу пришла исследовательская лаборатория METR. Команда попыталась повторить свой нашумевший эксперимент 2025 года, гд

В кибербезопас‑компании «С‑Терра» сменилась вся команда топ‑менеджеров после перехода под контроль «Ростеха»

2 часа назад

В кибербезопас‑компании «С‑Терра» сменилась вся команда топ‑менеджеров после перехода под контроль «Ростеха»

В компании «С-Терра» ушла вся команда топ-менеджеров. Руководители уволились по собственному желанию через месяц после перехода компании под контроль госкорпорации «Ростех». Новым генеральным директор