Skip to content

Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.2 - #442

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/metro
Open

Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.2#442
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/metro

Conversation

@renovate

@renovate renovate Bot commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
dev.zacsweers.metro:compiler-compat-k2420_beta1 1.3.21.4.2 age confidence

Release Notes

ZacSweers/metro (dev.zacsweers.metro:compiler-compat-k2420_beta1)

v1.4.2

Compare Source

2026-08-13

Fixes
  • [FIR] Consolidate contribution hint configuration logic to make it less Gradle-specific.
  • [FIR/IR] Resolve typealiases in KClass annotation arguments.
  • [FIR/IR] Apply contribution exclusions and replacements across @Origin chains.
  • [IR] Fix Kotlin/JS compilation failures caused by colliding generated provider field names for inherited member injections.
  • [IR/interop] Fix a compiler crash when Dagger interop is enabled and deeply nested classes have long names.
  • [IC] Regenerate parent graph implementations when graph extension members change during incremental compilation.
Changes
  • Support Kotlin 2.5.0-dev-3513.
  • Test Kotlin 2.4.20-RC.
  • Remove the watchosArm32 target, which Kotlin no longer supports.
  • Update androidx.tracing to 2.0.0 stable. Note that Metro's runtime tracing support is still experimental to incubate a little longer.
  • Test Android Studio Quail 3 stable.
Contributors

Special thanks to the following contributors for contributing to this release!

v1.4.1

Compare Source

2026-08-06

New
  • [FIR/IR/Circuit] Generate CircuitSerializerRegistration Set contributions for @CircuitSerializable Screen and PopResult types when using Circuit 0.36.0 or newer.
Fixes
  • [FIR/IR] Generate contribution hints in FIR alongside IR class generation (Kotlin 2.4.20+), fixing downstream discovery for Metro's built-in contributions on all platforms.
  • [FIR] Report an error when one annotation class combines multiple qualifier, scope, or map-key markers, such as both @Qualifier and @MapKey.
  • [IR] Fix duplicate qualifier annotations on parameters of IR-generated member-injector methods.
  • [IR] Inject inherited members in superclass-first order when using graph injection methods.
  • [IR] Report duplicate bindings inherited from a parent graph when they are only requested by a child graph extension.
  • [IR] Fix @GraphExtension.Factory replacements across additionalScopes when generating classes in IR.
  • [IR] Correctly report dependency cycles when the same dependency is requested both directly and through a provider or lazy value.
  • [IR] Prevent stack overflows in large dependency graphs by checking cycles with heap-backed frames instead of recursive DFS traversal.
  • [IR] Minimize deferred bindings when breaking overlapping dependency cycles.
  • [IR] Do not require suspend provider support for caller-supplied suspend function @Assisted parameters.
  • [IR] Fix a stack overflow when a nested graph extension requests a parent-scoped binding with suspend providers enabled.
  • [IR] Prevent stack overflows while generating deeply nested/complex dependency graph expressions.
  • [IR] Show shorter, consistent dependency paths in graph errors with improved route caching.
  • [IC] Fix incremental compilation issue when adding or removing member injections from a superclass.
Changed
  • Mentioned above in the fixes, but worth reiterating! Previously, graph-level member injector functions would incorrectly inject subclasses before ancestor classes. Now it correctly injects ancestors first, matching how MembersInjector and constructor-injected classes with member injection work. If you were relying on that behavior by accident, it's going to be different now!
Contributors

Special thanks to the following contributors for contributing to this release!

Consider sponsoring Metro's development

v1.4.0

Compare Source

2026-07-30

New
Experimental support for suspend providers

This release introduces experimental support for suspend providers. This is disabled by default and can be enabled by the metro.enableSuspendProviders option. See the coroutines documentation for details.

  • @Provides functions and graph accessors can be suspend. Suspension propagates through dependent bindings. Metro reports a dependency trace when a non-suspend path reaches one.
  • Inject suspend () -> T to defer initialization until invocation, or SuspendLazy<T> to also cache the first successful result. Provider, function providers, Lazy, SuspendProvider, suspend functions, and SuspendLazy can be nested to any depth in a scalar wrapper stack.
    • When the underlying binding suspends, the wrapper closest to it must also support suspension. Maps can defer initialization of individual values with Map<K, suspend () -> V> or Map<K, SuspendProvider<V>>.
    • Wrapper layers and supported map values preserve nullable binding types.
  • Like ordinary scoped bindings, scoped suspend bindings are single-flight and retry after failures or cancellation. They also run on the coroutine context they were called on, so if this is important then you should use an appropriate withContext within your provider body.
  • The Gradle plugin automatically adds the new runtime-coroutines artifact when suspend providers are enabled. If runtime dependencies are managed manually, add it for scoped suspend bindings, suspendLazy, and injection requests containing SuspendLazy at any nesting level.
    • runtime-coroutines uses kotlinx-coroutines on every platform.
  • Note: Switching providers do not yet support suspend providers. You can still enable them, just scoped suspend provider fields will not be sharded into nested switching provider classes yet.
Other new stuff
  • [FIR/IR/Circuit] Support sub-circuits (i.e. the new @SubCircuitInject annotation).
Enhancements
  • Support private @Provides properties on Kotlin 2.4.20-Beta1 and newer.
  • [IR] Improve IC on Kotlin 2.3.20 by backporting compat support for the compiler's new declaration finder APIs.
  • [IR] Avoid generating unused provider fields for included graph accessors that can be read directly.
  • [IR] Avoid linear helper traversal in large switching providers by routing directly to the matching chunk.
  • [runtime] If the input function to provider() is already a Provider instance, return it directly rather than needlessly wrap it.
  • [runtime] Support nullable values in ordinary map multibinding factories, including provider and lazy map value forms.
Fixes
  • [FIR] Report a diagnostic when private @Provides properties are used without compiler support (i.e. pre-2.4.20).
  • [FIR] Report an error when a map key is applied (via type argument) to a binding without a corresponding @IntoMap or @ContributesIntoMap annotation.
  • [IR] Fix stale contribution hints after changing a contribution's scope during incremental compilation. This only affects Kotlin versions prior to 2.3.20.
  • [IR] Fix Kotlin/Native compilation failures when generated hidden classes were missing their Any supertype.
  • [IR] Prevent directly provided maps from satisfying suspend-provider-valued map requests unless the provided map uses that exact value type.
  • [IR] Avoid redundant nested DoubleCheck.lazy() calls when materializing Lazy graph accessors and binding parameters.
  • [IR] Correctly adapt function-provider accessors from included graphs when storing them as Metro Provider fields.
  • [IR] Fix graph implementations incorrectly inheriting the containing class of nested @ContributesTo interfaces with IR class generation.
  • [IR] Don't inline object, enum, or class-literal provider bindings when they're requested through Provider, Lazy, or provider-based multibindings.
  • [gradle] Respect metro.generateClassesInIr Gradle and system property overrides instead of replacing them with the Kotlin-version default.
  • Improve Kotlin 2.4.20-Beta2 support.
Changes
  • Refreshed benchmarks!
    • They now run against latest Metro, Dagger, and KSP versions.
      • Dagger + KSP have improved significantly 🚀.
    • They now also include Koin.
  • Build against Kotlin 2.4.10. Note the runtime artifacts still target Kotlin 2.3.0 and Metro supports a wide range of compiler versions. See the compatibility docs for a full table of compatible versions.
  • Test IntelliJ 2026.2 stable.
  • Test Android Studio Quail 4 canaries.
  • Switch shaded Mordan dependency to just mordant-core.
  • Update shaded Okio dependency to 3.18.1.
  • Update androidx.tracing to 2.0.0-rc01.
Contributors

Special thanks to the following contributors for contributing to this release!

Consider sponsoring Metro's development

Configuration

📅 Schedule: (UTC)

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

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


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

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot changed the title Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.0 Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.1 Aug 6, 2026
@renovate
renovate Bot force-pushed the renovate/metro branch from 3636efb to 9363181 Compare August 6, 2026 21:37
@renovate renovate Bot changed the title Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.1 Update dependency dev.zacsweers.metro:compiler-compat-k2420_beta1 to v1.4.2 Aug 14, 2026
@renovate
renovate Bot force-pushed the renovate/metro branch from 9363181 to 1ac84f8 Compare August 14, 2026 04:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants