Skip to content

Update all non-major dependencies - #16

Open
renovate[bot] wants to merge 1 commit into
1.xfrom
renovate/all-minor-patch
Open

renovate[bot] wants to merge 1 commit into
1.xfrom
renovate/all-minor-patch

Conversation

@renovate

@renovate renovate Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
carthage-software/mago ^1.50.0 → ^1.59.0 age adoption passing confidence
phpstan/phpstan ^2.2.16 → ^2.3.4 age adoption passing confidence
phpstan/phpstan-phpunit ^2.0.18 → ^2.1.1 age adoption passing confidence
phpstan/phpstan-strict-rules ^2.0.12 → ^2.1.0 age adoption passing confidence
phpstan/phpstan-symfony ^2.0.20 → ^2.1.1 age adoption passing confidence
phpunit/phpunit (source) ^12.5.36 → ^12.5.42 age adoption passing confidence
twig/twig (source) ^3.23.0 → ^3.30.0 age adoption passing confidence

Release Notes

carthage-software/mago

v1.59.0: Mago 1.59.0

Compare Source

Mago 1.59.0 fixes analyzer narrowing across boolean guards, nullsafe checks, and elseif branches, improves generic and callable inference, and updates the analyzer extension protocol to MANA 2.2.

[!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

Analyzer
  • Namespace constants: preserves global constant fallback in namespaced declarations. (#​2594, 0e6c1d8)
  • Method assertions: keeps getter assertions from the right side of ||. (#​2600, #​2609, 777429f)
  • CLI argument guards: fixes $argc typing and negated count() bounds. (#​2607, #​2608, be88d13)
  • Template defaults: applies declared defaults when constructing generic objects. (#​2603, #​2606, 2066b18)
  • Stored booleans: keeps narrowing implied by boolean variables across && and ||. (#​2601, 8d739b3)
  • Nullsafe membership: narrows receivers after strict in_array() checks against non-null values. (#​2599, 56e4b49)
  • Collection intersections: honors narrower read types in intersected collection types. (#​2612, 79c295f)
  • Callable signatures: preserves parameter and return types through Closure::fromCallable(). (#​2611, #​2614, 3ea5963)
  • PHPDoc generics: checks missing, excess, and out-of-bounds template arguments in docblocks. (#​2616, 2ac5c5d)
  • Boolean branches: preserves true and false types across short-circuit expressions. (#​2593, 9890d23)
  • Dynamic instanceof: keeps valid operand types when a dynamic class check fails. (#​2592, #​2595, 65530ba)
  • Strict equality: narrows both union-typed operands to their shared types. (#​2559, 923c061)
  • Elseif branches: preserves all reachable types and branch facts after conditional chains. (#​2619, 0a098f4)
  • Nullsafe comparisons: avoids false impossible-null reports when assigning comparison results. (#​2591, b7273f4)
  • URL components: allows empty user, password, query, and fragment strings from parse_url(). (#​2590, #​2610, 16dd70b)

📖 Documentation

Extensions
  • Protocol compatibility: documents MANA 2.2 constant fallback and worker upgrade requirements. (#​2594, 0e6c1d8)

🏗️ Internal

CI
  • Pull request limit: limits outside contributors to one open PR at a time, including drafts. (9b6979c)
Tooling
  • Justfile cleanup: removes an unused variable. (3f212f3)

🧩 Extension Protocol

Analyzer
  • MANA 2.2: adds namespace fallbacks to global constant references in the protocol and PHP SDK. (#​2594, 0e6c1d8)

Update the PHP SDK to 1.59.0 when upgrading Mago. Custom analyzer workers must use MANA 2.2; MANA 2.1 workers are not compatible. The linter protocol is unchanged.

🙏 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: carthage-software/mago@1.58.2...1.59.0

v1.58.2: Mago 1.58.2

Compare Source

Mago 1.58.2 fixes parser recovery for unfinished static accesses, keeping class names and call arguments in the syntax tree while you type.

[!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

Parser
  • Incomplete static access: keeps Foo:: and Foo::$ in the syntax tree during editor recovery. (#​2589, 431e823)

🙏 Thank You

Contributors
Issue Reporters

Full Changelog: 1.58.1...1.58.2

v1.58.1: Mago 1.58.1

Compare Source

Mago 1.58.1 fixes the PGO build failure affecting macOS and Linux x86_64 musl in 1.58.0 and adds CI checks for the full PGO build cycle.

[!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

CLI
  • Profiling output: preserves PGO and coverage profiles at shutdown, fixing affected release builds. (c8ad3d0)

🏗️ Internal

CI
  • PGO builds: checks profile output and optimized binaries on Linux musl and both macOS targets. (c8ad3d0)

🙏 Thank You

Contributors
Issue Reporters

Thanks for your patience while we fixed the release builds.

Full Changelog: carthage-software/mago@1.58.0...1.58.1

v1.58.0: Mago 1.58.0

Compare Source

Mago 1.58.0 adds opt-in dead-catch checks, a prefer-self rule, and extension throw-type providers, cuts analysis overhead, and fixes type narrowing and PHP formatting.

[!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
Linter
  • Prefer self: adds an opt-in rule to replace references to the enclosing class with self. (#​2528, aba4df1)
  • Extension rules: accepts enabled, level, and exclude settings under [linter.rules]. (#​2530, f2b479c)

🐛 Bug Fixes

Analyzer
  • Named arguments: honors class-level @no-named-arguments tags. (#​2514, a33b014)
  • Mixed array keys: reports mixed-array-index for keys whose type is mixed. (#​2522, 4b19550)
  • Nullsafe guards: narrows receivers through guards and falsy ?? fallbacks. (#​2515, #​2563, 83a0bfd, 891c463)
  • Do-while loops: preserves initial types when by-reference calls update loop variables. (#​2523, b6a24d9)
  • Diagnostics: clarifies class resolution, member access, and type-check messages. (#​2541, 43f0a1a)
  • Redundant nullsafe calls: reports unnecessary ?-> on method calls. (#​2547, ba38156)
  • Iterable guards: narrows iterable values to Traversable after type checks. (#​2550, dd17cfb)
  • Match assignments: preserves subject types and evaluates assignment subjects once. (8a19e98)
  • Shape unions: removes shapes with required keys after a failed key-existence check. (#​2557, 5ffc5d2)
  • Nested array guards: keeps required keys when narrowing nested shapes. (#​2577, 221fd63)
  • Type switches: narrows variables in get_class() and gettype() switch cases. (#​2558, eba91e1)
  • Callable guards: fixes narrowing of callable objects and strings in type checks. (#​2552, #​2560, 0e1d212, abea0ad)
  • Conditional assignments: keeps assignments scoped to each analysis pass. (#​2561, 64a2323)
  • Short-circuit assignments: tracks reassignment and narrowing across logical chains. (#​2571, #​2562, c8358f1, 001666b)
  • Array membership: fixes strict checks and unsafe narrowing after negated in_array(). (#​2573, #​2574, d5ca2a6, c16337a)
  • Known array keys: resolves literal keys in isset() and empty() guards. (#​2575, #​2585, 9671d89, f8f46a6)
  • Numeric-string keys: normalizes integer-like string keys in array guards. (#​2578, d7dae70)
  • Loose null checks: preserves falsy strings when comparing nullable strings with null. (#​2579, ff5df16)
  • Negated isset: does not treat nullable keys as missing after a failed check. (#​2554, #​2576, fb8de05)
  • Switch transfers: preserves nested breaks, continues, and finally control flow. (#​2569, #​2570, b6e8259)
  • Empty foreach loops: skips unreachable loop bodies for known empty arrays. (#​2572, 6bdf6c6)
  • Switch coverage: detects impossible cases and unreachable defaults. (#​2553, 204f678)
Codex
  • Large unions: expands types beyond 64 members without leaving unresolved references. (#​2518, 51f2762)
  • Traversable templates: keeps caller templates instead of widening them to their bounds. (#​2520, 735d59d)
  • Class strings: handles leading backslashes when comparing literal class names. (#​2533, 1a28236)
  • Iterable arguments: rejects excess generic arguments on iterable types. (#​2543, 1c3eba0)
  • Mixed array keys: treats explicit mixed key types as array-key. (#​2545, c4d7f9a)
PHPDoc
  • Array shorthand: accepts spaces between a type and its [] suffix. (#​2546, 00c150d)
Formatter
  • Preserved breaks: keeps argument-list and binary-expression layouts stable across passes. (#​2524, e665c18)
  • Instanceof calls: preserves required parentheses around calls used as class expressions. (#​2584, 7562fff)
  • Clone chains: keeps parentheses so member chains clone the intended object. (#​2588, 4681219)
  • Dynamic classes: preserves required parentheses in new (self::MAP[$key])() and related forms. (#​2587, 0c7c2b5)
Linter
  • Deprecated casts: shows the cast as written in the source. (7823faf)
Parser
  • Incomplete code: recovers unfinished control heads without misleading lint reports. (81367b8)
Prelude
  • Class interfaces: drops false from class_implements() results for object inputs. (#​2513, f7af709)
  • Class-name maps: gives SPL class inspection helpers associative return types. (#​2531, 5ea84ce)
  • SoapVar: makes the typeName constructor argument optional. (#​2519, 245ee75)
  • Class checks: accepts mixed inputs for is_a() and is_subclass_of(). (#​2549, bfe814f)
Composer
  • Download progress: limits progress updates to once per second. (#​2521, f721198)

📖 Documentation

Analyzer
  • Dead-catch settings: documents opt-in checks in English, French, and Chinese. (#​2525, 18315f6)
Extensions

🏗️ Internal

Analyzer
  • Condition checks: cuts clause copies, redundant interning, and repeated lookups. (6451560, 28fc0f0)
Codex
  • Codebase setup: parallelizes population and bounds integer-mask expansion. (26aa86d, ccbd052)
CLI
  • Embedded prelude: compresses prelude data and encodes each shared word once. (7be3117)
  • Shutdown: skips allocator teardown after flushing command output. (b85d25e)
Database
  • Loading: cuts serial pipeline work and line-table allocations. (f8531a2, fa3a5c9)
  • Path matching: adds opt-in Git-ignore handling and shared directory matching APIs. (7e72b4a)
Reporting
  • Parallel output: streams rendered issues in order. (8036e42)
Parser
  • Parsing work: skips detached whitespace and needless control-flow walks. (b142e5f)
Word
  • String interning: uses parking_lot mutexes for shared string tables. (cd49bc3)
Names
  • Deprecation metadata: records the deprecation version of ResolvedNames::all(). (#​2564, c15c158)

🧩 Extension Protocol

Analyzer

Update the PHP SDK to 1.58.0 when upgrading Mago. Custom analyzer workers must use MANA 2.1; MANA 2.0 workers are not compatible. The linter protocol is unchanged.

🙏 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: carthage-software/mago@1.57.0...1.58.0

v1.57.0: Mago 1.57.0

Compare Source

Mago 1.57.0 adds opt-in BcMath/GMP arithmetic, applies PHPDoc flags from type patches, fixes analyzer and formatter bugs, and speeds up work across the toolchain.

[!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
  • Number operators: adds opt-in arithmetic for BcMath\Number and GMP via allow-operator-overloading. (#​2486, #​2487, 0fff359)

🐛 Bug Fixes

Analyzer
  • Native type contracts: keeps native types and nullability when PHPDoc conflicts. (#​2494, 2dc705f)
  • Inline @​var tags: no longer treats unassigned local variables as defined. (#​2496, 56f2ad9)
  • Malformed PHPDoc: reports malformed types and unresolved variable links. (#​2493, c1cdff1)
  • Conditional variables: reports possibly undefined variables after switch and in finally. (#​2497, e378e5d)
  • Iterator types: keeps current() and key() types without explicit generics. (#​2476, 467b29d)
  • Array unions: preserves left-hand values and optional keys with array-key key types. (#​2485, #​2488, 782b0b5)
  • Empty checks: handles unset variables and falsy values correctly. (#​2484, 8dc47c5)
  • Dynamic properties: honors AllowDynamicProperties on classes and their ancestors. (#​2483, 6bccb58)
  • Deprecated members: reports access to deprecated properties and class constants. (#​2478, 90fa5e5)
  • Deprecated scopes: skips deprecation warnings inside already deprecated code. (#​2492, d412c32)
  • Boolean assignments: avoids false narrowing when loops update boolean flags. (#​2499, 64ad7d6)
  • Iterable assertions: narrows traversables without false impossible-condition reports. (#​2508, ac54e6c)
Codex
Formatter
  • Stable layouts: keeps concatenations, arrow functions, and assignments stable across passes. (#​2491, 9f4804d)
  • Parenthesized comparisons: keeps comparison layouts stable when operands use parentheses. (#​2480, f2fdf5f)
Prelude
  • Base64 decoding: returns string for non-strict decoding. (#​2511, 4918783)

📖 Documentation

Configuration
  • Operator settings: documents opt-in number operators in English, French, and Chinese. (#​2487, 0fff359)
  • Patch flags: documents supported PHPDoc patch flags in English, French, and Chinese. (#​2495, 29f3416)

🏗️ Internal

Analyzer
  • Named arguments: speeds up argument matching and default type inference. (#​2498, 2f7475f)
  • Member checks: cuts reference scans and allocations when checking unused members. (cc19617)
  • Default arguments: skips needless type expansion for omitted non-generic defaults. (#​2506, #​2507, 6590a7b)
Codex
  • Reference lookups: speeds up reference queries and merges. (23ebbf2)
Formatter
  • Formatting work: cuts allocations and layout work. (a2e8ae5)
Guard
  • Dependency scans: skips unused dependency files and cuts allocations. (dae8785)

🧩 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: carthage-software/mago@1.56.3...1.57.0

v1.56.3: Mago 1.56.3

Compare Source

Mago 1.56.3 fixes formatter stability with preserved line breaks and keeps return types from valid method targets in unions.

[!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

Analyzer
  • Union method calls: keeps known return types when a union member lacks the method. (#​2474, 001ff0f)
Formatter
  • Preserved line breaks: keeps conditions and member chains stable across formatting passes. (#​2475, 6d73836)

🧩 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: carthage-software/mago@1.56.2...1.56.3

v1.56.2: Mago 1.56.2

Compare Source

Mago 1.56.2 speeds up formatting and lowers its memory use, adds generic parent bindings in type patches, and fixes template resolution, closure defaults, array access, and Drupal formatting.

[!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
  • Generic patches: lets type patches replace bindings on existing parents and interfaces. (#​2469, bcbd1bd)

🐛 Bug Fixes

Analyzer
  • ArrayAccess writes: checks array syntax against the effective offsetSet() value type. (#​2473, 25af17d)
  • Object casts: infers array<array-key, mixed> for object-to-array casts. (#​2472, cc7e8e4)
  • Parent calls: resolves template bindings through the calling class. (#​2467, 868a0c1)
  • Closure defaults: avoids false redundant-coalesce warnings for nullable ??= closure assignments. (#​2466, c3ead42)
  • Null defaults: infers nullable parameter types from null defaults. (#​2470, #​2471, 53cecd0)
  • Template bounds: resolves forwarded defaults and bounds when type arguments are omitted. (#​2459, #​2460, e1e8189)
Formatter
  • Binary continuations: keeps indentation stable across formatting passes. (#​2464, 0879cdd)
  • Comments and indentation: stabilizes chains, echo, nested classes, and switch comments. (#​2465, c923807)
  • Drupal preset: keeps lone value arguments inline and preserves logical parentheses. (#​2216, 3774a31)
Prelude
  • Class-name types: uses class-string for class-name helpers and keeps false for parent lookups. (#​2468, 70bef87)

📖 Documentation

Configuration
  • Type patches: explains generic parent bindings in English, French, and Chinese. (#​2469, bcbd1bd)

🏗️ Internal

Formatter
  • Formatting work: cuts source copies and allocations in layout checks and printing. (b9be9bc)

🧩 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: carthage-software/mago@1.56.1...1.56.2

v1.56.1: Mago 1.56.1

Compare Source

Mago 1.56.1 fixes false positives in enum constant arrays and inherited template bounds.

[!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

Analyzer
  • Enum constant arrays: keeps enum case types after an isset() guard. (#​2461, #​2462, 58f309a)
  • Dependent templates: preserves child templates when checking inherited bounds. (#​2463, af318fd)

🧩 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: carthage-software/mago@1.56.0...1.56.1

v1.56.0: Mago 1.56.0

Compare Source

Mago 1.56.0 continues the performance and memory work, strengthens incremental analysis, and fixes closure types, constant defaults, and formatter stability. It also adds Rust APIs for editor tools and updates the analyzer extension protocol to MANA 2.0.

[!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

Formatter
  • Range formatting: adds a Rust API to format selected statements, members, and import groups. ([6ae7935](https://redirect.github.co

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

Renovate Bot

@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 3 times, most recently from a42d9ad to 509c48e Compare October 8, 2026 04:12
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 4 times, most recently from 740cdab to 7449652 Compare October 16, 2026 22:53
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch 2 times, most recently from 490abf6 to 4b8b953 Compare October 24, 2026 13:11
| datasource | package                      | from    | to      |
| ---------- | ---------------------------- | ------- | ------- |
| packagist  | carthage-software/mago       | 1.50.0  | 1.59.0  |
| packagist  | phpstan/phpstan              | 2.2.16  | 2.3.4   |
| packagist  | phpstan/phpstan-phpunit      | 2.0.18  | 2.1.1   |
| packagist  | phpstan/phpstan-strict-rules | 2.0.12  | 2.1.0   |
| packagist  | phpstan/phpstan-symfony      | 2.0.20  | 2.1.1   |
| packagist  | phpunit/phpunit              | 12.5.36 | 12.5.42 |
| packagist  | twig/twig                    | 3.23.0  | 3.30.0  |
@renovate
renovate Bot force-pushed the renovate/all-minor-patch branch from 4b8b953 to 7e57dd0 Compare October 29, 2026 03:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants