Roadmap for Improving the Type Checker
Команда Swift представляет дорожную карту улучшения проверщика типов, фокусируясь на реализации, а не на видимых пользователем изменениях языка. Основная цель - решить проблему ошибки "компилятор не может проверить тип этого выражения за разумное время", которая возникает как в валидном, так и невалидном коде. Swift использует разрешение перегрузки на основе типов, которое компилятор преобразует в задачу решения ограничений. Процесс включает введение типовых переменных для представления неизвестных типов подвыражений и создание ограничений для описания отношений между ними. Алгоритмическая сложность возникает из-за дискретных ограничений, требующих проверки всех комбинаций вариантов, что похоже на решение судоку с возможным возвратом (бэктрекинг).
Уже реализованные улучшения включены в Swift 6.2, а текущая работа ведется над веткой main. Команда планирует дальнейшие оптимизации, чтобы уменьшить время компиляции и улучшить диагностику ошибок. В долгосрочной перспективе рассматриваются потенциальные изменения языка, которые могут упростить проверку типов. Цель - сделать процесс компиляции более предсказуемым и менее требовательным к ресурсам, особенно для сложных выражений с множественной перегрузкой.