Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 2.4 KB

CHANGELOG.md

File metadata and controls

81 lines (54 loc) · 2.4 KB

CHANGELOG

v0.3.2 (2026-10-14)

Enhancements

  • Speed up resolution, most of all in projects with many dependencies. The solver now calls the registry's versions/2 once per package in a resolution, and only calls dependencies/3 for the versions it considers instead of every version of a package.

v0.3.1 (2026-10-13)

Bug fixes

  • Fix Protocol.UndefinedError when formatting a failure or logging debug output in a project whose consolidated String.Chars protocol doesn't include the solver's implementations, such as when the solver is vendored into a Mix archive.
  • Don't add a package's dependency incompatibilities again when the solver tries another version of the package. Since v0.2.0 they were added again each time, which repeated work in resolutions that backtrack.

v0.3.0 (2026-08-27)

Enhancements

  • Add HexSolver.constraint_to_requirement!/1 to serialize constraints as version requirements.
  • Parse >= 0.0.0-0 as an unconstrained range and < 0.0.0-0 as an empty constraint.
  • Accept intersections of pessimistic ranges such as ~> 1.0.0 and ~> 1.0.
  • Raise HexSolver.UnsatisfiableRequirementError for requirements with disjoint ranges such as ~> 1.0 and >= 2.0.0.
  • Require Elixir 1.12 or later.

Bug fixes

  • Fix FunctionClauseError when parsing and chains with more than two terms, two bounds in the same direction, or ==.
  • Fix infinite loop when a dependency has an empty constraint.

v0.2.3 (2023-03-25)

Enhancements

  • Add sub dependencies.

v0.2.2 (2022-11-12)

Bug fixes

  • Fix intersection of ranges during parsing.

v0.2.1 (2022-11-10)

Bug fixes

  • Do not override locked deps.
  • Change "lock" to "the lock" in failure message.
  • Raise when parsing intersected ranges.
  • Skip unselected optionals during solving.

v0.2.0 (2022-09-25)

Enhancements

  • Add support for package repositories (repos). Repos are the package source, so that if two packages with the same name but different repos are derived they will cause conflict.

Breaking changes

  • HexSolver.run/5 expects lists of maps instead of tuples in the dependencies and locked parameters.
  • HexSolver.run/5 returns {:ok, %{package() => {Version.t(), repo()}} for for the success case instead of {:ok, %{package() => Version.t()}}.

v0.1.0 (2022-07-20)

Initial version.