На ночных сборках включён новый анализ заимствований: стабилизация до конца года

04.08.2026

В ночных сборках включена следующая итерация проверки заимствований. Это не постепенная оптимизация, а смена формулировки самого правила: разработка шла с 2023 года, и стабилизация намечена на конец года.

Чем отличается от действующего правила

Действующее правило не учитывает поток управления. Оно считает, что время жизни заимствования живёт до конца функции, даже если переменная на этом пути уже не используется.

Новое правило это учитывает. Из-за него начинает компилироваться код, который раньше отвергался. Классический пример: взять значение из словаря по ключу, а если его нет — вставить и взять снова. Ветра «нет значения» при этом заимствование не касается, но действующее правило отказывало в такой программе.

Чего пока нельзя

Новое правило неполно. Часть программ, которые компилировались под изначальной медленной реализацией этой идеи, теперь не компилируются. То есть набор допустимого кода меняется в обе стороны.

Производительность

Замеры сделаны на десяти тысячах самых скачиваемых крейтов. Значимых регрессий мало, и они невелики; в худшем случае встречено замедление в два-три раза на крейтах с большим числом заимствований.

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

Что это значит

Через несколько месяцев стабильный компилятор перестанет отказывать в куче разумного кода. Это заметнее всего тем, кто работает с большими структурами данных, временами жизни и сложными разрывами: отказов компилятора станет меньше, а код — понятнее.

Практический совет на время ожидания: проекты, которым важно следить за готовностью, могут прогнать тесты на ночных сборках. Тем, кто хочет исключить регрессии производительности, имеет смысл зафиксировать отключение этой проверки в конфигурации Cargo.

Оригинал

Enabling the next iteration of the borrow checker on nightly от 4 августа 2026 года

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