Этот релиз продолжает курс проекта на постоянное повышение производительности и приносит очередное значительное ускорение анализа.
🔥 Главная новость: еще быстрее!
Разработчикам удалось добиться еще 5–10% прироста скорости работы статического анализатора. Это улучшение — результат масштабной работы по оптимизации, которая ведется уже несколько релизов.
Основные изменения
Исправления ошибок:
✅ Исправлена обработка экранированного символа
# в регулярных выражениях в расширенном режиме.✅ Устранена ошибка в определении типов (type inference) для замыканий (closures), связанная с сокращенными именами функций (Function Normalization and Shortening Rule, FNSR).
Улучшения:
✅ Убрано ограничение на версию PHP для правил, проверяющих атрибут
#[\Override].✅ Улучшен анализ для выражений с
New_ при использовании StaticMethodParameterClosureTypeExtension.✅ Улучшен вывод типов при сравнении результатов двух функций (
FuncCall === FuncCall).✅ Теперь
array_merge() не теряет информацию о типах известных ключей (offset-types) массивов.Оптимизация производительности (основная часть работы):
Большинство изменений в этом выпуске направлены на повышение скорости. Были оптимизированы:
✅ Наследование phpDoc-комментариев (теперь используется рефлексия).
✅ Работа с шаблонными типами (
TemplateTypeHelper), постоянными массивами (ConstantArrayType) и пересечениями типов (IntersectionType).✅ Логика в
ImpossibleCheckTypeHelper, CombinationHelper и MutatingScope.✅ Кэширование результатов для предотвращения повторных вычислений.
Прочие правки:
✅ Исправление сигнатур функций.
✅ Внутренние улучшения кода и тесты.
Скачать обновление и увидеть все изменения можно как обычно на GitHub.
Обновляйтесь и наслаждайтесь еще более быстрым анализом кода! Если вы заметили какие-либо проблемы, сообщайте о них в трекере проекта.
📱 @dev_notes_ru