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 1.98.0Issue 161441

Что печатают открытые тексты

1.98.1
Точечный выпуск
9/3
Дата блога
161441
Публичный issue
ПунктПубличная формулировкаГраница
ДефектНоль вместо указателя на функцию в vtableТолько в некоторых случаях
СледствиеНеопределённое поведение в выданном кодеИногда «просто» segfault после загрузки нуля
Обновлениеrustup update stableОдна официальная фраза, не учебник
ТрекерRELEASES.md указывает на rust-lang/rust#161441Не поставка языковых фич

Как читать этот выпуск

  1. 1

    Это патч к 1.98.0

    Официальная страница ставит ошибочную компиляцию в единственный функциональный раздел. Это не повторная поставка языковых пунктов 1.98.0 и не смена языка у менеджера пакетов.

  2. 2

    Ноль стоит на месте указателя на функцию

    Официальная фраза: in some circumstances, rustc would incorrectly generate a trait object vtable with a null pointer where a function pointer should be.

  3. 3

    Неопределённое поведение — не только падение

    Официально: иногда это «просто» segfault из‑за загрузки нулевого указателя, но это может стать оправданием произвольных эффектов — типично для UB.

  4. 4

    У публичного issue есть граница воспроизведения

    Issue 161441 называется rustc emits a vacant vtable slot for a callable boxed async service. В отчёте та же исходная Rama работала на 1.97.1 и падала на 1.98.0.

Что ещё открыто

01

Признаки падения — в issue

Публичный отчёт пишет, что macOS выдала SIGSEGV с pc=0. Сгенерированный вызывающий код брал метод Service из vtable + 0x18 и уходил на ноль.

02

Дата 1.98.0 не на этой странице патча

RELEASES.md в rust-lang/rust датирует 1.98.0 как 2026-08-20, а 1.98.1 как 2026-09-03. Страница патча не повторяет языковые пункты 1.98.0.

03

Команда по-прежнему просит тестеров 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.

Начать бесплатную встречу