Skip to content

Latest commit

 

History

History
333 lines (214 loc) · 9.74 KB

CHANGELOG.md

File metadata and controls

333 lines (214 loc) · 9.74 KB

1.19.1-wip

  • Add IterableMapEntryExtension for working on Map as a list of pairs, using Map.entries.
  • Optimize equality and hash code for maps by using update and a values iterator to avoid extra lookups.

1.19.1

  • Move to dart-lang/core monorepo.

1.19.0

  • Adds shuffled to IterableExtension.
  • Shuffle IterableExtension.sample results.
  • Fix mergeSort when the runtime iterable generic is a subtype of the static generic.
  • CanonicalizedMap: added constructor fromEntries.
  • Mark "mixin" classes as mixin.
  • extension IterableIterableExtension<T> on Iterable<Iterable<T>>
    • Add flattenedToList as a performance improvement over flattened.
    • Add flattenedToSet as new behavior for flattening to unique elements.
  • Deprecate transitiveClosure. Consider using package:graphs.
  • Deprecate whereNotNull() from IterableNullableExtension. Use nonNulls instead - this is an equivalent extension available in Dart core since version 3.0.
  • Require Dart ^3.4.0

1.18.0

  • CanonicalizedMap:
    • Added methods:
      • copy: copies an instance without recalculating the canonical values of the keys.
      • toMap: creates a Map<K,V> (with the original key values).
      • toMapOfCanonicalKeys: creates a Map<C,V> (with the canonicalized keys).
  • Fixes bugs in ListSlice.slice and ListExtensions.slice.
  • Update to package:lints 2.0.1.

1.17.2

  • Accept Dart SDK versions above 3.0.

1.17.1

  • Require Dart 2.18.
  • Improve docs for splitAfter and splitBefore.

1.17.0

  • Add Iterable.elementAtOrNull and List.elementAtOrNull extension methods.
  • Add a top-level lastBy() function that converts an Iterable to a Map by grouping its elements using a function, keeping the last element for each computed key. Also available as an extension method on Iterable.

1.16.0

  • Add an Iterable.slices extension method.
  • Add BoolList class for space-efficient lists of boolean values.
  • Use a stable sort algorithm in the IterableExtension.sortedBy method.
  • Add min, max, minOrNull and maxOrNull getters to IterableDoubleExtension, IterableNumberExtension and IterableIntegerExtension
  • Change UnorderedIterableEquality and SetEquality to implement Equality with a non-nullable generic to allows assignment to variables with that type. Assignment to Equality with a nullable type is still allowed because of covariance. The equals and hash methods continue to accept nullable arguments.
  • Enable the avoid_dynamic_calls lint.

1.15.0

  • Stable release for null safety.

1.15.0-nullsafety.5

  • Fix typo in extension method expandIndexed.
  • Update sdk constraints to >=2.12.0-0 <3.0.0 based on beta release guidelines.

1.15.0-nullsafety.4

  • Allow prerelease versions of the 2.12.x sdk.

  • Remove the unusable setter UnionSetController.set=. This was mistakenly added to the public API but could never be called.

  • Add extra optional Random argument to shuffle.

  • Add a large number of extension methods on Iterable and List types, and on a few other types. These either provide easy access to the operations from algorithms.dart, or provide convenience variants of existing Iterable and List methods like singleWhereOrNull or forEachIndexed.

1.15.0-nullsafety.3

  • Allow 2.10 stable and 2.11.0 dev SDK versions.
  • Add toUnorderedList method on PriorityQueue.
  • Make HeapPriorityQueue's remove and contains methods use == for equality checks. Previously used comparison(a, b) == 0 as criteria, but it's possible to have multiple elements with the same priority in a queue, so that could remove the wrong element. Still requires that objects that are == also have the same priority.

1.15.0-nullsafety.2

Update for the 2.10 dev sdk.

1.15.0-nullsafety.1

  • Allow the <=2.9.10 stable sdks.

1.15.0-nullsafety

Pre-release for the null safety migration of this package.

Note that 1.15.0 may not be the final stable null safety release version, we reserve the right to release it as a 2.0.0 breaking change.

This release will be pinned to only allow pre-release sdk versions starting from 2.9.0-dev.18.0, which is the first version where this package will appear in the null safety allow list.

1.14.13

  • Deprecate mapMap. The Map interface has a map call and map literals can use for-loop elements which supersede this method.

1.14.12

  • Fix CombinedMapView.keys, CombinedMapView.length, CombinedMapView.forEach, and CombinedMapView.values to work as specified and not repeat duplicate items from the maps.
    • As a result of this fix the length getter now must iterate all maps in order to remove duplicates and return an accurate length, so it is no longer O(maps).

1.14.11

  • Set max SDK version to <3.0.0.

1.14.10

  • Fix the parameter names in overridden methods to match the source.
  • Make tests Dart 2 type-safe.
  • Stop depending on SDK retype and deprecate methods.

1.14.9

  • Fixed bugs where QueueList, MapKeySet, and MapValueSet did not adhere to the contract laid out by List.cast, Set.cast and Map.cast respectively. The returned instances of these methods now correctly forward to the existing instance instead of always creating a new copy.

1.14.8

  • Deprecated Delegating{Name}.typed static methods in favor of the new Dart 2 cast methods. For example, DelegatingList.typed<String>(list) can now be written as list.cast<String>().

1.14.7

  • Only the Dart 2 dev SDK (>=2.0.0-dev.22.0) is now supported.
  • Added support for all Dart 2 SDK methods that threw UnimplementedError.

1.14.6

  • Make DefaultEquality's equals() and hash() methods take any Object rather than objects of type E. This makes const DefaultEquality<Null>() usable as Equality<E> for any E, which means it can be used in a const context which expects Equality<E>.

    This makes the default arguments of various other const equality constructors work in strong mode.

1.14.5

  • Fix issue with EmptyUnmodifiableSet's stubs that were introduced in 1.14.4.

1.14.4

  • Add implementation stubs of upcoming Dart 2.0 core library methods, namely new methods for classes that implement Iterable, List, Map, Queue, and Set.

1.14.3

  • Fix MapKeySet.lookup to be a valid override in strong mode.

1.14.2

  • Add type arguments to SyntheticInvocation.

1.14.1

  • Make Equality implementations accept null as argument to hash.

1.14.0

  • Add CombinedListView, a view of several lists concatenated together.
  • Add CombinedIterableView, a view of several iterables concatenated together.
  • Add CombinedMapView, a view of several maps concatenated together.

1.13.0

  • Add EqualityBy

1.12.0

  • Add CaseInsensitiveEquality.

  • Fix bug in equalsIgnoreAsciiCase.

1.11.0

  • Add EqualityMap and EqualitySet classes which use Equality objects for key and element equality, respectively.

1.10.1

  • Set.difference now takes a Set<Object> as argument.

1.9.1

  • Fix some documentation bugs.

1.9.0

  • Add a top-level stronglyConnectedComponents() function that returns the strongly connected components in a directed graph.

1.8.0

  • Add a top-level mapMap() function that works like Iterable.map() on a Map.

  • Add a top-level mergeMaps() function that creates a new map with the combined contents of two existing maps.

  • Add a top-level groupBy() function that converts an Iterable to a Map by grouping its elements using a function.

  • Add top-level minBy() and maxBy() functions that return the minimum and maximum values in an Iterable, respectively, ordered by a derived value.

  • Add a top-level transitiveClosure() function that returns the transitive closure of a directed graph.

1.7.0

  • Add a const UnmodifiableSetView.empty() constructor.

1.6.0

  • Add a UnionSet class that provides a view of the union of a set of sets.

  • Add a UnionSetController class that provides a convenient way to manage the contents of a UnionSet.

  • Fix another incorrectly-declared generic type.

1.5.1

  • Fix an incorrectly-declared generic type.

1.5.0

  • Add DelegatingIterable.typed(), DelegatingList.typed(), DelegatingSet.typed(), DelegatingMap.typed(), and DelegatingQueue.typed() static methods. These wrap untyped instances of these classes with the correct type parameter, and assert the types of values as they're accessed.

  • Fix the types for binarySearch() and lowerBound() so they no longer require all arguments to be comparable.

  • Add generic annotations to insertionSort() and mergeSort().

1.4.1

  • Fix all strong mode warnings.

1.4.0

  • Add a new PriorityQueue() constructor that forwards to new HeapPriorityQueue().

  • Deprecate top-level libraries other than package:collection/collection.dart, which exports these libraries' interfaces.

1.3.0

  • Add lowerBound to binary search for values that might not be present.

  • Verify that the is valid for CanonicalMap.[].

1.2.0

  • Add string comparators that ignore ASCII case and sort numbers numerically.

1.1.3

  • Fix type inconsistencies with Map and Set.

1.1.2

  • Export UnmodifiableMapView from the Dart core libraries.

1.1.1

  • Bug-fix for signatures of isValidKey arguments of CanonicalizedMap.

1.1.0

  • Add a QueueList class that implements both Queue and List.

0.9.4

  • Add a CanonicalizedMap class that canonicalizes its keys to provide a custom equality relation.

0.9.3+1

  • Fix all analyzer hints.

0.9.3

  • Add a MapKeySet class that exposes an unmodifiable Set view of a Map's keys.

  • Add a MapValueSet class that takes a function from values to keys and uses it to expose a Set view of a Map's values.