Mago 1.52.0 makes analysis faster from file loading through reporting, adds rdkafka stubs, and fixes constant visibility, nullsafe loop types, magic-method names, and built-in signatures.
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
Prelude
- rdkafka stubs: adds types for producers, consumers, callbacks, messages, metadata, and constants. (#2412, 6e08eb3)
🐛 Bug Fixes
Analyzer
- Constant visibility: reports reads of inaccessible private and protected class constants. (#2419, 9bcd3d4)
- Magic method names: keeps diagnostic casing and lowercase extension identifiers. (#2421, 11cd6a0, 29fe098)
- Nullsafe loops: infers object types for accumulators using nullsafe calls and
??. (#2428, ab12076)
Linter
- Secret comparisons: ignores literal values such as
'refresh_token'while still checking names. (#2028, #2420, 4a9913b)
Prelude
- Concrete methods: fixes false abstract-method errors when extending SPL and date classes. (#2427, 4502745)
- Map defaults: keeps explicit fallback types, including
null, inDs\Map::get()andremove(). (#2425, cbb33fe)
📖 Documentation
Website
- Sidebar scrolling: lets the sidebar scroll without moving the page. (#2426, 375ac4b)
- Border contrast: softens borders to make the docs easier to read. (#2423, 40d1aa2)
- Heading casing: uses sentence case consistently in setup guides. (#2424, 1d0720b)
🏗️ Internal
Analyzer
- Loop analysis: skips stable passes and cuts type copying and repeated lookups. (025f27f, 1535109, 089078e)
Codex
- Type operations: reduces copying in type traversal, array comparisons, and union merges. (b306923, b5f1d4a)
- Metadata lookups: speeds up method inheritance and symbol-reference merging. (bcba31b, 6e0a553)
Pipeline
- File loading: loads files in parallel and defers path formatting until needed. (480cb16, 96e49e6)
- Analysis scheduling: balances file work and speeds up metadata population and cleanup. (3608259, 4ec8478)
Algebra
- Condition clauses: reuses shared clauses and avoids temporary collections during comparisons. (decbfd5, 5e599f0)
Syntax
- Parsing: cuts expression allocations and repeated string scans and copies. (cdf8266, c045c7f)
- Name handling: reuses words and cuts name-resolution allocations and interner lock time. (37bf655, f9faeb5, 9e600e1)
Reporting
- Output: buffers stdout and stderr, speeds up Emacs output, and cleans up issues in parallel. (a1392d0, 9e355dd)
🧩 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.51.2...1.52.0