Skip to content

deps: update dependency dev.zacsweers.metro to v1.4.5 - autoclosed - #20

Closed
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/metro
Closed

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

Conversation

@renovate

@renovate renovate Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
dev.zacsweers.metro 1.3.2 → 1.4.5 age confidence

Release Notes

ZacSweers/metro (dev.zacsweers.metro)

v1.4.5

Compare Source

2026-09-24

Fixes
  • [FIR] Treat @Multibinds declarations as accessors to fix a false positive CONTRIBUTES_TO_COULD_BE_BINDING_CONTAINER warning.
  • [IR] Fix a ClassCastException during member injection when a class declares an injected method before an injected property.
  • [Gradle] Restore ExperimentalMetroGradleApi to the gradle-plugin artifact.
Changes
  • Update a few misc kdocs.
  • Use AnalysisFlags API to detect IDE mode in newer Kotlin versions.
  • [Gradle] Move shared graph report models into the graphs artifact and make graph-viewer an implementation dependency of the Gradle plugin. Model APIs now require opting into @ExperimentalMetroGraphApi. Existing model packages and the public experimental BindingGraph and GraphAnalyzer APIs are preserved.
  • [Gradle] Graph reports now have tasks for individual compilations, such as generateMainMetroGraphHtml. Outputs move to build/reports/metro/{target}/{compilation}/. See migration details.
  • Update androidx.tracing dependency to 2.0.3.
  • Test against Kotlin 2.5.0-Beta1.
Contributors

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

Consider sponsoring Metro's development

v1.4.4

Compare Source

2026-09-16

Enhancements
  • [IR] Reduce repeated work when reporting dependency cycles.
  • [Gradle] Redesign the graph viewer feature.
Fixes
  • [IR] Avoid redundant class factories for contributed implementations when generateContributionProviders and generateClassesInIr are enabled.
  • [IR] Support -Xwarning-level overrides in fallback diagnostic reporting across all supported Kotlin versions.
  • [compat] Fix compiler compatibility selection for Beta, RC, and stable Kotlin builds when only dev support exists for their base version. For example, 2.5.0-Beta1 now selects the latest 2.5.0-dev-* implementation if there is no 2.5.0-* non-dev build.
Changes
  • [compat] Update the latest Kotlin 2.5.0 compat to 2.5.0-dev-7307.
  • [compat] Raise 2.5.0-dev-4967 compat to 2.5.0-dev-6460 (pacing with IntelliJ 2026.3 EAPs).
Contributors

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

Consider sponsoring Metro's development

v1.4.3

Compare Source

2026-09-08

Enhancements
  • [FIR] Warn when a @ContributesTo interface only exposes bindings and recommend making it a binding container with @BindingContainer. The latter is preferable as it reduces generated code.
  • [FIR] Warn about array class literals in qualifiers, map keys, and scopes that kotlinc can confuse across modules. For example, Array<IntArray>::class can be read as IntArray::class.
  • [FIR/IR] Support priority on @ContributesBinding and @ContributesIntoMap, allowing higher-priority contributions to replace conflicting bindings or map entries without directly referencing the lower-priority implementation.
  • [IR] Reuse completed member-injector lookups for classes without injectable members.
  • [IR] Support suspend providers with switching providers.
  • [IR] Avoid revisiting shared supertypes when resolving generic bindings through diamond inheritance.
  • [IR] Reduce per-entry memory overhead in more long-lived graph and contribution caches by using scatter maps.
  • [IR] Reduce repeated work when validating suspend multibindings and reporting suspend-binding errors. Error traces now use cached, deterministic shortest paths to a suspend binding.
  • [IR] Reduce repeated dependency scans when checking cycles in graphs with large multibindings.
  • [IR] Avoid initializing the rich terminal renderer for plain compiler diagnostics.
  • [IR/interop] Support Hilt interop when IR class generation is enabled.
  • [Reports] Explain binding choices in graph reports. Includes things like selection precedence, contribution filtering, and parent-graph ownership.
  • [Reports] Count emitted provider inlines in graph reports.
  • [Reports] Report when deferred access or unavailable values prevent provider inlining.
Fixes
  • [FIR] Avoid duplicate BindsMirror constructor generation across FIR generators.
  • [FIR] Fix a compiler crash when using typealiases as contribution scopes.
  • [FIR] Fix a compiler crash on zero-parameter member-injection functions.
  • [FIR] Fix graphs accidentally implementing binding-container interfaces when contributions use different scopes. Basically, checking another scope won't turn a container that supplies bindings into an interface the graph implements.
  • [FIR] Keep contributed graph accessors when their replacement or its origin is excluded.
  • [FIR] Avoid annotation-cache races during concurrent IDE analysis.
  • [FIR] Fix assisted factories whose return types nest or reorder factory type parameters.
  • [FIR/IR/interop] Fix recognition of @get:BindsOptionalOf properties when Dagger interop is enabled.
  • [IR] Keep dynamic graph arguments aligned when container order changes.
  • [IR] Prevent dynamic graph class name collisions when a generic binding container is used with different type arguments. Basically, graphs using Bindings<Int> and Bindings<Long> can coexist in the same file.
  • [IR] Avoid generated dynamic graph name collisions across sibling files.
  • [IR] Keep all transitively included binding containers when multiple graphs enter the same include cycle from different containers. Basically, improve compiler caching when containers are used in multiple graphs.
  • [IR] Resolve graph extension bindings before running parallel graph analysis. This keeps compiler lookups and cache writes on one thread, including for nested extensions and bindings loaded from dependencies.
  • [IR] Report required dependencies when an earlier parameter has a default value for the same missing type.
  • [IR] Fix a runtime crash when an assisted-injected class with no assisted parameters is used across modules with IR class generation.
  • [IR] Restore primitive and string inline provider values from dependency metadata.
  • [IR] Report an error when an assisted-injected constructor requests a set or eager map backed by suspend providers. Basically, assisted factories now get the same suspend-multibinding checks as ordinary injection.
  • [IR] Fix a compiler crash when reading @Binds declarations from generic binding containers.
  • [IR] Fix @Binds resolution when multiple graphs use the same generic binding container with different type arguments. Each graph now resolves bindings using its own container's type arguments.
  • [IR] Fix missing bindings for internal contributed objects across modules when generateContributionProviders, generateClassesInIr, and contributesAsInject are enabled together.
  • [IR] Report duplicate map keys when different key annotations unwrap to the same value, including implicit class keys.
  • [IR] Apply contribution replacements only in the scopes that declare them.
  • [IR] Report missing required graph bindings even when an @OptionalBinding accessor requests the same type, regardless of declaration order.
  • [IR] Compare annotation values structurally so hash collisions don't merge distinct bindings.
  • [IR] Preserve JVM array component types and dimensions in source class-literal qualifiers.
  • [IR] Resolve JVM binary annotation defaults on Kotlin 2.3.0 and 2.3.10.
  • [IR/interop] Fix Class-keyed maps wrapped in providers or lazy values when KClass/Class interop is enabled.
  • [IR/interop] Fix a runtime ClassCastException when a Class-keyed map is injected into a provider-created class across modules with KClass/Class interop enabled.
  • [IR/interop] Respect @GraphPrivate on Dagger @BindsOptionalOf declarations inherited by graph extensions, while preserving public declarations for the same key.
  • [IR/interop] Preserve Kotlin nullability in member-injection metadata when Dagger interop is enabled.
Changes
  • [IR] Annotation default matching is limited for KLIB dependencies on Kotlin 2.3.0 and 2.3.10. We recommend upgrading to Kotlin 2.3.20 or newer.
  • Build against Kotlin 2.4.20. 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.
  • Update embedded Okio dependency to 3.18.2.
  • Raise Kotlin 2.5.0 support to 2.5.0-dev-4967 for IntelliJ 2026.3 EAPs. This replaces the 2.5.0-dev-498 and 2.5.0-dev-3513 compat modules.
  • Test Kotlin 2.5.0-dev-6460.
  • Test Kotlin 2.4.20.
  • Test Kotlin 2.4.20-RC2.
  • Test Kotlin 2.4.20-RC3.
  • Test IntelliJ 2026.2.2.
  • Test IntelliJ 2026.3 EAPs (263.3889.65).
  • Test Android Studio Quail 4.
  • Test Android Studio Rabbit canaries (canary 4).
Contributors

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

Consider sponsoring Metro's development

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!

Consider sponsoring Metro's development

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 force-pushed the renovate/metro branch 2 times, most recently from a438895 to e1503e3 Compare October 17, 2026 07:44
@renovate renovate Bot changed the title deps: update dependency dev.zacsweers.metro to v1.4.5 deps: update dependency dev.zacsweers.metro to v1.4.5 - autoclosed Oct 20, 2026
@renovate renovate Bot closed this Oct 20, 2026
@renovate
renovate Bot deleted the renovate/metro branch October 20, 2026 16:32
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