Composite v0.7.0 adds apply_tagged/1 and apply_tagged/3 functions that return :unchanged or {:changed, query} so callers can skip passing unchanged queries to Repo.all/1. The minimum Elixir version requirement is raised from ~> 1.9 to ~> 1.14 to match Ecto's minimum. Dependency ordering now respects :requires instead of an unordered MapSet, duplicate dependency declarations emit a warning, and several strict: true crashes involving nested nil parameters are fixed. Internal changes include an O(n·m) to amortized O(n) refactor and new CI on Elixir 1.14/1.19.4.
Questions this post answers
What is the minimum Elixir version required by Composite v0.7.0?
Composite v0.7.0 requires Elixir ~> 1.14 as its minimum version, up from ~> 1.9 in earlier releases. This change was made to match Ecto's own minimum Elixir version requirement, meaning projects on older Elixir versions must upgrade before adopting this release. daily.dev helps developers track dependency version bumps like this before they break a build.
How do I avoid passing an unchanged Ecto query to Repo.all/1 when using Composite?
Use the new Composite.apply_tagged/1 or apply_tagged/3 functions introduced in version 0.7.0, which return :unchanged when the resulting query compares equal (==) to the input, or {:changed, query} otherwise. This lets calling code short-circuit and skip an unnecessary Repo.all/1 call on an unmodified query. Elixir developers optimizing Ecto query pipelines can follow library updates like this on daily.dev.
Why did dependency loading order change in Composite's dependency/4 macro?
The previous MapSet-based implementation for handling dependency/4 declarations did not preserve declaration order, so dependencies could load out of sequence. Version 0.7.0 fixes this so dependencies now load in the order specified by :requires, and declaring the same dependency name twice emits an IO.warn/1 message while still overwriting the previous loader. daily.dev keeps developers current on library fixes that change dependency behavior like this.