Skip to content

0.6.0

Compare
Choose a tag to compare
@segiddins segiddins released this 27 Jul 16:43
· 152 commits to master since this release
0.6.0
84741f5
Breaking
  • Objects returned by dependencies_for and passed to resolve must properly implement
    both == and eql?, such that they return true 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