Включён новый решатель трейтов — крупнейшее изменение компилятора за всё время его существования

21.08.2026

В ночных сборках по умолчанию включено новое поколение решателя трейтов. Разработка шла почти четыре года, и это самое крупное единичное изменение компилятора с момента его появления.

Что именно изменилось

Полностью заменён способ доказательства условий where и нормализации ассоциированных типов. Это не оптимизация существующего правила, а другая система.

Уже закрыто более двухсот известных задач на GitHub.

Практические различия

Главное — работа с ассоциированными типами, ссылающимися на переменные связывания вида for<'a>. Уходит ошибочный вывод типов, из-за которого ломался код в сторонних проектах — в частности, в системе управления играми и в системе шаблонов.

Меняется и обработка impl Trait, что делает возможной стабилизацию псевдонимов типов с реализацией и записи типа возврата — двух возможностей, которые годами считались недостижимыми.

Скорость компиляции

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

Что это значит для стабильного кода

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

Для стабильного кода это обещание: исчезновение части несправедливых отказов компилятора, возможность добавить неявные трейты вроде «переместить» и «забыть», исправление оставшихся проблем корректности в системе типов и разблокировка двух возможностей языка.

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

Оригинал

Enabling the next-generation trait solver on nightly от 21 августа 2026 года

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