| ## 1.20.0-wip |
| |
| - Adds `separated` and `separatedList` extension methods to `Iterable`. |
| - Adds `separate` extension method to `List` |
| - Add `IterableMapEntryExtension` for working on `Map` as a list of pairs, using |
| `Map.entries`. |
| - Explicitly mark `BoolList` as `abstract interface` |
| - Address diagnostics from `strict_top_level_inference`. |
| - Optimize equality and hash code for maps by using `update` and a `values` |
| iterator to avoid extra lookups. |
| - Add `PriorityQueue.of` constructor and optimize adding many elements. |
| - Add `descending` argument to `sortedBy`. |
| - Address diagnostics from `strict_top_level_inference`. |
| - Run `dart format` with the new style. |
| - Replace `quickSort` implementation with a more performant and robust |
| Pattern-defeating Quicksort (pdqsort) algorithm. |
| |
| ## 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. |