Barrier снова признаётся безопасным при раскрутке стека — код с catch_unwind снова собирается

11.09.2025

Тип Barrier снова реализует признак RefUnwindSafe. Автоматический вывод признаков однажды сломался, и код с catch_unwind вокруг барьера перестал собираться.

Что это за проблема

Стандартная библиотека помечает типы, безопасные или небезопасные при раскрутке стека. Это нужно, чтобы отличать панику, которую можно перехватить, от той, которую нельзя.

Если тип по ошибке считается небезопасным, то код, который на самом деле безопасен, всё равно собирается — только с требованием явного подтверждения. Если же автоматический вывод сломался так, что признак перестал выводиться вовсе, код не собирается вовсе.

Почему это заметно

Ошибка выглядит странно: добавление безопасного кода вокруг существующего типа вдруг ломает сборку, и сообщение об ошибке указывает на тип из стандартной библиотеки, а не на проблему в коде.

Оригинал

Make Barrier RefUnwindSafe again

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