Rust 1.91.0: полная поддержка 64-битной ARM на Windows и линт на висящие указатели

30.10.2025

Вышел Rust 1.91.0. Цель aarch64-pc-windows-msvc повышена до первого уровня поддержки — теперь на 64-битных ARM-системах под Windows даются полные гарантии, включая прогон всех тестов. Добавлен предупреждающий линт на возврат сырых указателей на локальные переменные.

Первый уровень для ARM64 Windows

Первый уровень — это не только сборка: это ежедневный прогон всех тестов в CI на настоящем железе и отношение к любому сбою как к ошибке компилятора.

Заодно aarch64-pc-windows-gnullvm и x86_64-pc-windows-gnullvm подняты до второго уровня с инструментами; вспомогательные компоненты появятся позже.

Линт на висящие указатели

Проверка заимствований не даёт вернуть ссылку на освобождённое место — но сырые указатели она не отслеживает. Возврат *const T, указывающего на стековую переменную, приводил к использованию освобождённой памяти, и компилятор молчал.

Теперь это предупреждение по умолчанию. Сам по себе такой код не считается небезопасным — ошибка реальная, но инструмент пока только предупреждает.

Что стабилизировано

  • Path::file_prefix — имя файла без расширения, PathBuf::add_extension и with_added_extension;
  • BTreeMap::extract_if и BTreeSet::extract_if — удаление элементов во время обхода с безопасным доступом к коллекции между шагами;
  • core::iter::chain — соединение двух итераторов в один;
  • core::array::repeat — массив, заполненный повторением одного значения;
  • семейство строгих операций для целых, включая strict_add_signed, strict_sub_signed и strict_abs, — операции, которые в отладочной сборке паникуют при переполнении вместо того, чтобы оборачивать результат;
  • Duration::from_mins и Duration::from_hours;
  • AtomicPtr::fetch_ptr_add и подобные — атомарное изменение указателя по шагу;
  • Cell::as_array_of_cells;
  • str::ceil_char_boundary и floor_char_boundary — округление до границы символа;
  • PanicHookInfo::payload_as_str, Ipv4Addr::from_octets, Ipv6Addr::from_segments, сравнения между Path и строками.

В константных контекстах стабилизированы each_ref и each_mut для массивов, OsString::new, PathBuf::new и TypeId::of.

Оригинал

Announcing Rust 1.91.0 от 30 октября 2025 года

Упоминаний: 1 · Просмотров: 3