Mago 1.54.0 continues the performance work across analysis, PHPDoc parsing, metadata, name handling, and project loading. It also adds configurable slow-file warnings and fixes integer-comparison narrowing.
Note
Support Mago
Does your company use Mago? Please consider sponsoring its development so we can keep fixing bugs and shipping releases.
Sponsor Mago ❤️
✨ Features
Analyzer
- Slow-file warnings: sets the warning threshold through config or CLI, keeping 5s as the default. (#2436, #2438, 3c38ca1)
🐛 Bug Fixes
Analyzer
- Integer comparisons: narrows
nullandfalsecorrectly in integer comparisons. (#2434, #2437, a75379c)
🏗️ Internal
Analyzer
- Call analysis: cuts allocations in expression, argument, and invocation analysis. (c553631, c33ecfb)
- Condition checks: skips needless paradox checks and assertion-map copies. (ae907c2, 14e2f65)
- Visibility checks: skips repeated public-method lookups. (9f42dfd)
- Parameter checks: skips unused-parameter work for functions with no parameters. (f00d6d7)
Codex
- Class metadata: cuts copying and reuses lowercase lookups and prepared property types. (62aec23, d413832)
- Type setup: avoids needless type clones during population. (569e3c9)
Pipeline
- Project loading: speeds up file reads, parsing, and compilation. (fa28802)
Syntax
- Namespace checks: uses a focused walker to gather namespaces. (c085159)
- Throw checks: stops block scans once it finds a throw. (781c18c)
PHPDoc
- Docblock parsing: skips trivia storage during analysis and metadata scans. (f30ced2)
Names
- Word interning: reduces lock contention and grows per-thread caches. (05304cd)
🧩 Extension Protocol
No protocol changes in this release.
🙏 Thank You
Contributors
Thank you to everyone who contributed to this release:
Issue Reporters
Thank you to everyone who reported issues that shaped this release:
Full Changelog: 1.53.0...1.54.0