Добавить в корзинуПозвонить
Найти в Дзене

Вышла новая версия PHPStan 2.1.38

Этот релиз продолжает курс проекта на постоянное повышение производительности и приносит очередное значительное ускорение анализа. Разработчикам удалось добиться еще 5–10% прироста скорости работы статического анализатора. Это улучшение — результат масштабной работы по оптимизации, которая ведется уже несколько релизов. Большинство изменений в этом выпуске направлены на повышение скорости. Были оптимизированы: Скачать обновление и увидеть все изменения можно как обычно на GitHub. Обновляйтесь и наслаждайтесь еще более быстрым анализом кода! Если вы заметили какие-либо проблемы, сообщайте о них в трекере проекта.
Оглавление

Этот релиз продолжает курс проекта на постоянное повышение производительности и приносит очередное значительное ускорение анализа.

Главная новость: еще быстрее!

Разработчикам удалось добиться еще 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.

Обновляйтесь и наслаждайтесь еще более быстрым анализом кода! Если вы заметили какие-либо проблемы, сообщайте о них в трекере проекта.