Rust 1.98.1: в таблицах виртуальных методов оказывался нулевой указатель вместо адреса функции
03.09.2026Вышел точечный релиз Rust 1.98.1, исправляющий неопределённое поведение при генерации таблицы виртуальных методов.
Что было не так
В 1.98.0 при определённых обстоятельствах компилятор подставлял в таблицу виртуальных методов нулевой указатель там, где должен был быть адрес функции.
В машинном коде это неопределённое поведение. Чаще всего оно проявилось бы падением при обращении к этому слоту, но в принципе возможны любые последствия — так это и бывает с неопределённым поведением.
Кому обновляться
Задевает код с признаками объекта, собранный именно 1.98.0. Между выходом 1.98.0 и этим релизом прошло две недели, так что перейти успели немногие.
Обновление ничего не ломает и ничего не требует менять в коде. Код, не использующий признаки объекта, скорее всего, не затронут — но проверить стоит именно фактом сборки на 1.98.0, а не по памяти.
Почему это не отложили
Неопределённое поведение в скомпилированной программе — из тех дефектов, которые обнаруживаются у пользователей и разбираются долго. Точечный релиз снимает вопрос лучше, чем ожидание следующего планового релиза.
Оригинал
Announcing Rust 1.98.1 от 3 сентября 2026 года
Упоминаний: 1 · Просмотров: 4