Mago 1.20.1
A small but high-impact patch release. Reporting got significantly faster across the board — every output format (rich, json, count, github, gitlab, sarif, checkstyle, emacs, ariadne, code-count) now skips a wasteful copy of the issue list it used to make on every run. The bigger your project (and the more issues Mago finds), the more you save: WordPress analysis is ~3% faster end-to-end, Magento ~5%, and the savings in the reporting step itself are around 100 ms on a project of Magento's size.
⚡ Performance
Reporting
- Faster issue reporting on every output format: Mago used to copy its entire list of issues before formatting them — even when no filtering or sorting was needed, and even for a format like
countthat just tallies severities. On a small project the cost was barely noticeable, but on a project with hundreds of thousands of issues it could add over 100 ms per run. The reporter now walks the original list directly, only allocating when sorting is meaningful for that format (rich, ariadne, json). End result: noticeably snappieranalyzeruns on large codebases, no behavior change.
🐛 Bug Fixes
Analyzer
- Consistent issue code for unary operators on
mixed: Using++,--, or unary-on a value of typemixedwas being reported asinvalid-operandorpossibly-invalid-operand, the same codes used for genuinely incompatible operands. Those operations are now reported under the dedicatedmixed-operandcode instead, matching how every other operator in Mago handlesmixedand making baselines and rule suppressions more predictable (#1635)
🙏 Thank You
Contributors
A huge thank you to everyone who contributed code to this release:
Issue Reporters
Thank you to everyone who reported issues that shaped this release:
Full Changelog: 1.20.0...1.20.1