Rust 1.92.0: подтверждение готовности never type и таблицы раскрутки даже при panic=abort
11.12.2025Вышел Rust 1.92.0. Два изменения затрагивают поведение компилятора, а не API: линты о совместимости вперёд стали ошибкой компиляции, а таблицы раскрутки теперь генерируются даже при -Cpanic=abort.
Готовность к never type
Линты never_type_fallback_flowing_into_unsafe и dependency_on_unit_never_type_fallback переведены из предупреждений в ошибки компиляции. Это подготовка к стабилизации типа «никогда»: пока он не закреплён, подставлять его молча нельзя.
По оценке разработчиков, затронуто около 500 крейтов. Важны две оговорки. Первая: линт можно подавить через #[allow]. Вторая — и это важнее — срабатывает он только при непосредственной сборке самого крейта, а не как зависимость; в последнем случае Cargo лишь предупредит.
То есть при обновлении чужого крейта из реестра ошибки не будет: поломка проявится только там, где вы правите этот крейт сами.
Линт must_use перестал ругаться на ошибку, которой не бывает
unused_must_use больше не предупреждает о Result<(), Infallible> и вообще о значениях, тип ошибки которых не заселён. Это избавляет от проверки ошибки, которая не может возникнуть, — а такие типы появляются, например, у трейтов с ассоциированным типом ошибки.
Бектрейсы при panic=abort
На Linux таблицы раскрутки теперь генерируются по умолчанию даже при -Cpanic=abort, и бектрейсы работают. Проблема была старая — с 1.23, и обходилась флагом с 1.45. Отключается обратным флагом.
Практическая польза в том, что релизные сборки, где паника ведёт к аварийному завершению, теперь дают стек. Раньше для этого приходилось менять настройки сборки.
Что стабилизировано
Box::new_zeroed,Box::new_zeroed_sliceи то же дляRcиArc— создание значения из нулей;RwLockWriteGuard::downgrade— понижение блокировки записи до блокировки чтения без промежуточного освобождения;btree_map::Entry::insert_entryиVacantEntry::insert_entry— вставка с возвратом ссылки на значение;NonZero::div_ceil;Location::file_as_c_str— имя файла без копирования;Extendдляproc_macro::TokenStreamпо одиночнымGroup,Literal,PunctиIdent;- в константных контекстах —
slice::rotate_leftиrotate_right.
Оригинал
Announcing Rust 1.92.0 от 11 декабря 2025 года
Упоминаний: 1 · Просмотров: 2