Rust 1.98.1: разбор ошибочной компиляции vtable, 2026
Официальный блог Rust 3 сентября: 1.98.1 закрывает ошибочную компиляцию vtable из 1.98.0. Ноль на месте указателя на функцию. Трекер: rust-lang/rust#161441.
3 сентября 2026 команда релизов Rust опубликовала точечный выпуск 1.98.1 в официальном блоге. На странице одно исправление: ошибочная компиляция при построении vtable. Официальный текст обновления: rustup update stable.
Поисковый термин — номер точечного выпуска. Блог пишет: в Rust 1.98.0 rustc в некоторых случаях ставил нулевой указатель туда, где в vtable объекта трейта должен быть указатель на функцию. Это неопределённое поведение в выданном коде. Этот текст сверяет только тот блог и публичный номер issue. Это не руководство rustup.
Что печатают открытые тексты
| Пункт | Публичная формулировка | Граница |
|---|---|---|
| Дефект | Ноль вместо указателя на функцию в vtable | Только в некоторых случаях |
| Следствие | Неопределённое поведение в выданном коде | Иногда «просто» segfault после загрузки нуля |
| Обновление | rustup update stable | Одна официальная фраза, не учебник |
| Трекер | RELEASES.md указывает на rust-lang/rust#161441 | Не поставка языковых фич |
Как читать этот выпуск
- 1
Это патч к 1.98.0
Официальная страница ставит ошибочную компиляцию в единственный функциональный раздел. Это не повторная поставка языковых пунктов 1.98.0 и не смена языка у менеджера пакетов.
- 2
Ноль стоит на месте указателя на функцию
Официальная фраза: in some circumstances, rustc would incorrectly generate a trait object vtable with a null pointer where a function pointer should be.
- 3
Неопределённое поведение — не только падение
Официально: иногда это «просто» segfault из‑за загрузки нулевого указателя, но это может стать оправданием произвольных эффектов — типично для UB.
- 4
У публичного issue есть граница воспроизведения
Issue 161441 называется rustc emits a vacant vtable slot for a callable boxed async service. В отчёте та же исходная Rama работала на 1.97.1 и падала на 1.98.0.
Что ещё открыто
Признаки падения — в issue
Публичный отчёт пишет, что macOS выдала SIGSEGV с pc=0. Сгенерированный вызывающий код брал метод Service из vtable + 0x18 и уходил на ноль.
Дата 1.98.0 не на этой странице патча
RELEASES.md в rust-lang/rust датирует 1.98.0 как 2026-08-20, а 1.98.1 как 2026-09-03. Страница патча не повторяет языковые пункты 1.98.0.
Команда по-прежнему просит тестеров beta / nightly
Блог пишет: чтобы помочь с будущими выпусками, можно локально и в CI взять rustup default beta или nightly и сообщать об ошибках.
Границы
Официальная страница не датирует 1.98.2. Дальше — blog.rust-lang.org/2026/09/03/Rust-1.98.1/. Для короткой встречи без стены аккаунта wbstorm — это ID комнаты; см. создать или войти в комнату и основы доски.
# Sources
# blog.rust-lang.org/2026/09/03/Rust-1.98.1/
# github.com/rust-lang/rust/issues/161441
# 2026-09-03Это повторная поставка фич 1.98.0?
Нет. Этот текст — точечный выпуск про ошибочную компиляцию vtable. RELEASES.md датирует 1.98.0 20 августа.
Всегда ли будет segfault?
Официально: иногда это «просто» segfault после загрузки нуля, но неопределённое поведение может оправдать и произвольные эффекты.
Это инструкция по продукту?
Нет. Этот текст сверяет только блог Rust от 3 сентября и публичный issue. Это не руководство rustup.