0.6.0
Breaking
- Objects returned by
dependencies_for
and passed toresolve
must properly implement
both==
andeql?
, such that they returntrue
when they exhibit the same behavior in
requirement_satisfied_by?
.
Enhancements
-
Speed up dependency resolution by considering multiple possible versions of a
dependency at once, grouped by sub-dependencies. Groups are then filtered as
additional requirements are introduced. If a group's sub-dependencies cause
conflicts the entire group can be discarded, which reduces the number of
possibilities that have to be tested to find a resolution.
Grey Baker
Samuel Giddins
#69 -
Check for locked requirements when generating a new state's possibilities
array, and reduce possibilities set accordingly. Reduces scope for erroneous
VersionConflict errors.
Grey Baker
#67 -
Add
VersionConflict#message_with_trees
for consumers who prefer a more verbose
conflict message that includes full requirement trees for all conflicts.
Samuel Giddins
Bug Fixes
-
Improve unwinding by considering previous conflicts for the same dependency
when deciding which state to unwind to. Previously, prior conflicts were
stored in a hash indexed by their name, with only the most recent conflict
stored for each dependency. With this fix, Molinillo can resolve anything
that's thrown at it. 🎉
Grey Baker
#73 -
Only raise CircularDependency errors if they prevent resolution.
Ian Young
Grey Baker
#78 -
Consider additional (binding) requirements that caused a conflict when
determining which state to unwind to. Previously, in some cases Molinillo
would erroneously throw a VersionConflict error if multiple requirements
combined to cause a conflict.
Grey Baker
#72 -
Consider previous conflicts when determining the state to unwind to. If a
previous conflict, for a different dependency, is the reason we ended up with
the current conflict, then unwinding to a state that would not have caused
that conflict could prevent the current one, too.
Grey Baker
#72