- None.
- None.
-
Improve performance of
Vertex#path_to?
.
Samuel Giddins -
Allow customization of string used to say that a version conflict has occurred for a particular name by passing in the
:incompatible_version_message_for_conflict
key when constructing a version conflict message with trees.
Samuel Giddins
- None.
- Improve performance of recursive vertex methods.
Samuel Giddins
- None.
- Reduce memory usage during resolution by making the
Vertex#requirements
array unique.
Grey Baker Jan Krutisch
- None.
- None.
- Handle the case where an unwind occurs to a requirement that directly caused
the current conflict but could also have been unwound to directly from
previous conflicts. In this case, filtering must not remove any possibilities
that could have avoided the previous conflicts (even if they would not avoid
the current one).
Grey Baker
- None.
- Insist each PossibilitySet contains contiguous versions. Fixes a regression
where an older dependency version with identical sub-dependencies to the
latest version may be preferred over the second-latest version.
Grey Baker
- None.
- Allow the set of dependencies for a given possibility to change over time,
fixing a regression in 0.6.0.
Samuel Giddins
- Objects returned by
dependencies_for
and passed toresolve
must properly implement both==
andeql?
, such that they returntrue
when they exhibit the same behavior inrequirement_satisfied_by?
.
-
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
-
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
- None.
- Keep a stack of parents per requirement, so unwinding past a swap point that
updated the parent of the requirement works.
Samuel Giddins bundler#5425
- None.
- Only reset the parent of a requirement after swapping when its original parent
was the same vertex being swapped.
Samuel Giddins bundler#5359 bundler#5362
- None.
- Only remove requirements from the to-be-resolved list if there are no
activated vertices depending upon them after swapping.
Samuel Giddins bundler#5294
- None.
- Fix unwinding when both sides of a conflict have a common parent
requirement.
Samuel Giddins bundler#5154
- None.
-
Fixed a regression in v0.5.2 that could cause resolution to fail after swapping, because stale dependencies would still be in the requirements list.
Samuel Giddins #48 -
Rename
Action.name
toAction.action_name
to avoid overridingModule.name
.
Samuel Giddins #50
- None.
- Fixed a bug where
Resolution#parent_of
would return the incorrect parent for a dependency after swapping had occurred, resulting in resolution failing.
Samuel Giddins bundler#5059
- None.
- Fixed a bug where
Resolution#parent_of
would return the incorrect parent for a dependency, resulting in resolution failing.
Samuel Giddins bundler#4961
-
Add an operation log to
DependencyGraph
to eliminate the need for graph copies during dependency resolution, resulting in a 3-100x speedup and reduction in allocations.
Samuel Giddins bundler#4376 -
Remove all metaprogramming to reduce array allocation overhead and improve discoverability.
Samuel Giddins
- None.
- For performance, don't needlessly dup objects in
Resolution#push_state_for_requirements
.
Joe Rafaniello
- Recursively prune requirements when removing an orphan after swapping.
Daniel DeLeo berkshelf/solve#57
- Fix mutating a frozen string in
NoSuchDependencyError#message
.
Samuel Giddins
- Add frozen string literal comments to all ruby files.
Samuel Giddins
- Prune the dependency list when removing an orphan after swapping.
Samuel Giddins bundler/bundler#4276
-
Detaching a vertex correctly removes it from the list of successors of its predecessors.
Samuel Giddins -
Vertices orphaned after swapping dependencies are properly cleaned up from the graph of activated specs.
Samuel Giddins bundler/bundler#4198
- Ensure every API is 100% documented.
Samuel Giddins #22
- The
DependencyGraph
no longer treats root vertices specially, nor does it maintain a direct reference toedges
. Additionally,Vertex
no longer has a reference to its parent graph.
-
Resolution has been sped up by 25x in some pathological cases, and in general recursive operations on a
DependencyGraph
orVertex
are nowO(n)
.
Samuel Giddins Bundler#3803 -
Re-sorting of dependencies is skipped when the unresolved dependency list has not changed, speeding up resolution of fully locked graphs.
Samuel Giddins
- Add
Conflict#activated_by_name
to allow even richer version conflict messages.
Samuel Giddins
- Ensure
Conflict#requirement_trees
is exhaustive.
Samuel Giddins Bundler#3860
- Add the ability to optionally skip dependencies that have no possibilities.
Samuel Giddins
- Silence a silly MRI warning about declaring private attributes.
Piotr Szotkowski Bundler#3516 Bundler#3525
- Use an ivar in
DependencyGraph#initialize_copy
to silence an MRI warning.
Samuel Giddins Bundler#3516
- Allow resolving some pathological cases where the backjumping algorithm would
skip over a valid possibility.
Samuel Giddins
-
Institute stricter forward checking by backjumping to the source of a conflict, even if that source comes from the existing spec. This further improves performance in highly conflicting situations when sorting heuristics prove misleading.
Samuel Giddins Smit Shah -
Add support for topologically sorting a dependency graph's vertices.
Samuel Giddins
- Improve performance in highly conflicting situations by backtracking more than
one state at a time.
Samuel Giddins
- Ensure that recursive invocations of
detach_vertex_named
don't lead to messagingnil
.
Samuel Giddins CocoaPods#2805
- Ensure that an unwanted exception is not raised when an error occurs before
the initial state has been pushed upon the stack.
Samuel Giddins
- Initial release.
Samuel Giddins