Mago 1.0.0-beta.13
This is a massive release packed with a major documentation expansion, a major CLI user experience overhaul with integrated pager support, and a raft of powerful new analysis checks and correctness fixes.
This release wouldn't have been possible without our amazing community. A huge thank you to @Bleksak, @BackEndTea, and @z4nder for their significant contributions!
✨ Major Documentation Expansion
The documentation site has received a major overhaul to improve its structure and cover many previously undocumented features. Key changes include:
- New "Fundamentals" Section: A new top-level section has been created to house cross-cutting concepts like the CLI, issue suppression, and the new baseline feature.
- New Pages: Added comprehensive guides for the command-line interface, the Baseline Feature, Suppressing Issues, Pager Support, and Environment Variables.
- New FAQ Page: A detailed FAQ page has been added to answer common questions about the project's name, roadmap, and philosophy.
- General Improvements: The entire site has been reorganized with an improved sidebar structure, updated links, and clearer content.
🚀 CLI & Pager Overhaul
The command-line experience has been significantly improved to be more powerful and ergonomic.
- New Pager Support: Mago now has built-in, configurable pager support for long outputs! Enable it with
--pager
oruse-pager = true
in yourmago.toml
. It intelligently activates only for interactive terminals and supports the standardPAGER
environment variable. - Global Color Control: The
--no-color
flag is now a global option that disables color for all output. --diff
Alias: The--dry-run
flag has been aliased to the more intuitive--diff
.- New
mago-pager
Crate: We've replaced the unmaintained externalpager
dependency with our own robustmago-pager
crate, which correctly handles exit codes and is fully cross-platform.
🕵️ Analyzer Improvements
The analyzer has received a host of new features and correctness fixes, making it more powerful and reliable.
- New: Missing Return Path Analysis (#403): Mago can now detect when a function has code paths that do not end in a
return
statement, which can lead to bugs when a return value is expected. - Improved Type Inference:
- The analyzer can now correctly infer the resulting type when
array_column
is used on an array of objects. (#408) - Type reconciliation for
mixed
types with booleans and floats has been corrected.
- The analyzer can now correctly infer the resulting type when
- Correctness Fixes:
- The type of
clone $this
is now correctly recognized when used inside a trait. (#416) - The
\count()
function is now correctly resolved when used with a leading backslash. (#418) - Number-to-string conversions are now handled by the highly optimized
itoa
andryu
crates, fixing potential panics and improving performance.
- The type of
- Improved Baseline Generation (#399, #383): The baseline feature is now more robust. It no longer silently skips issues that are missing a primary error location and will warn the user instead.
🤝 New Contributors
- @BackEndTea made their first contribution in #412
Closed Issues
Full Changelog: 1.0.0-beta.12...1.0.0-beta.13