Mago 1.53.0 improves analysis performance, file loading, name handling, and reporting, and fixes formatting of yield, direct new calls, and nested logical groups.
Note
Support Mago
Does your company use Mago? Please consider sponsoring its development so we can keep fixing bugs and shipping releases.
Sponsor Mago ❤️
🐛 Bug Fixes
Formatter
- Yield precedence: keeps parentheses that preserve
yieldandyield frombehavior in binary expressions. (#2432, d374fef) - Direct
newcalls: omits redundant parentheses on PHP 8.4+, while honoring formatter settings. (#2430, cb4356f) - Logical groups: keeps nested and negated groups stable across formatting passes. (#2422, 314b53f)
🏗️ Internal
Analyzer
- Analysis work: cuts context copies and repeated method, visibility, and type checks. (2420161)
Codex
- Metadata setup: fills class metadata in parallel and reduces lookup costs. (06b88f4)
- Type expansion: reuses unions and reduces copying and repeated metadata lookups. (efac017)
Pipeline
- File loading: batches reads and cuts repeated database lookups. (104ca16)
Syntax
- Name handling: builds names in the arena and caches ASCII lowercase conversions per thread. (a07da1c, 073f748)
Fingerprints
- Modifier hashing: avoids allocation and sorting when hashing class modifiers. (e2de0e7)
Reporting
- Emacs output: caches file lookups and escaped names. (7454dd6)
- Report output: cuts allocations and writer overhead across reporting formats. (4e8f36e)
🧩 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.52.0...1.53.0