Включён новый решатель трейтов — крупнейшее изменение компилятора за всё время его существования
21.08.2026В ночных сборках по умолчанию включено новое поколение решателя трейтов. Разработка шла почти четыре года, и это самое крупное единичное изменение компилятора с момента его появления.
Что именно изменилось
Полностью заменён способ доказательства условий where и нормализации ассоциированных типов. Это не оптимизация существующего правила, а другая система.
Уже закрыто более двухсот известных задач на GitHub.
Практические различия
Главное — работа с ассоциированными типами, ссылающимися на переменные связывания вида for<'a>. Уходит ошибочный вывод типов, из-за которого ломался код в сторонних проектах — в частности, в системе управления играми и в системе шаблонов.
Меняется и обработка impl Trait, что делает возможной стабилизацию псевдонимов типов с реализацией и записи типа возврата — двух возможностей, которые годами считались недостижимыми.
Скорость компиляции
Замеры на двадцати тысячах самых скачиваемых крейтов. У большинства результат сопоставим, но у некоторых новое решение заметно быстрее: одна система анализа данных собирается более чем в восемь раз быстрее, а шахматная реализация на трейтах, ранее зависавшая при компиляции, укладывается в минуту.
Что это значит для стабильного кода
Прямо сейчас затрагивает только ночные сборки, где часть кода перестанет собираться, а часть наоборот заработает. Главная опасность — случайно завязаться на поведение, поддерживаемое только новым решателем.
Для стабильного кода это обещание: исчезновение части несправедливых отказов компилятора, возможность добавить неявные трейты вроде «переместить» и «забыть», исправление оставшихся проблем корректности в системе типов и разблокировка двух возможностей языка.
Проектам, которые держат ветку под ночные сборки или проверяют их в непрерывной сборке, стоит читать закреплённую задачу.
Оригинал
Enabling the next-generation trait solver on nightly от 21 августа 2026 года
Упоминаний: 1 · Просмотров: 4