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