Вышел Rust 1.89.0 с поддержкой extern "interrupt" и декларативных derive-макросов
07.08.2025Опубликован Rust 1.89.0. В релизе появилась поддержка функций-обработчиков прерываний extern "interrupt" fn() -> !, полная поддержка фрагментов указателей в const-eval и работающие без proc-macro декларативные derive-макросы.
Обработчики прерываний на уровне языка
Тип возврата ! у функции с extern "interrupt" означает, что она никогда не возвращается обычным образом. Это типобезопасный способ выразить обработчик прерывания: компилятор проверяет, что внутри функции нет путей, возвращающих значение, поэтому нельзя случайно забыть core::intrinsics::unreachable() в конце.
Фрагменты указателей в const-eval
Const-вычисления теперь полностью поддерживают «fragment pointers» — узкие ссылки на часть значения (например, ссылку на одно поле структуры). Это закрывает давнее ограничение и позволяет считать больше константных выражений на этапе компиляции.
Декларативные derive-макросы
Реализованы декларативные derive-макросы, описанные в RFC 3698. Их суть — перенести логику раскрытия макросов из процедурных макросов на уровень macro_rules!. Практический эффект тот же, что у обычных декларативных макросов: отладка становится куда понятнее, а сгенерированный код не зависит от proc-macro2 и его зависимостей. Побочный эффект — не нужно оформлять отдельным крейтом.
Прочее
- Реализован
#[derive(From)] - Улучшена диагностика хвостовых вызовов: теперь показывается информация о временах жизни
- Стабилизированы
duration_constructors_lite,panic_payload_as_str,strict_overflow_ops,unsigned_signed_diff, constTypeId::ofи inline asm для loongarch32 - Реализованы
continue_okиbreak_okдляControlFlow - В сообщение паники добавлен идентификатор потока
Оригинал
Announcing Rust 1.89.0
Упоминаний: 1 · Просмотров: 4