- Add Bidirectional Character Types to
UnicodeCharMatcher
(thanks to https://github.com/amake). - Remove no longer necessary JavaScript specific code.
- Optimize function types.
- Dart 3.4 requirement.
- Make
IntegerRange
andDoubleRange
const constructable. - Numerous improvements to the Graph library:
- Add
Graph.where(edgePredicate)
for filtering by edge. - Add Prim's minimum spanning tree.
- Add
- Simplify the
Interval
implementation to only support closed intervals. - Add a
Fenwick
andInterval
trees. - Minor bug-fixes.
- Improved
Iterable.index
to more common argument names, and supportstep
. - Add
also
scope operator, which significantly improves the possibility to write one-liners. - Numerous improvements to the Graph library:
- Various performance critical fixes, better use of priority queues.
- Easy export to GraphViz with
Graph.toDot()
. - Add support for filtered vertex views with
Graph.where({Predicate<V> vertexPrediate})
. - Add support to copy graphs with
Graph.copy({bool empty})
. - Improve
toString
ofGraph
,Edge
andPath
classes. - Add the Stoer-Wagner min-cut algorithm.
- Numerous smaller improvements:
- Add support for patterns in
String.removeSuffix
; and addString.partition
andString.lastPartition
. - Add support to compute
Iterable.minMax
in one pass, andIterable.gcd
andIterable.lcm
.
- Add support for patterns in
- Removed
Heap
:PriorityQueue
from the Dart standard library provides the same functionality. - Made the
SortedList
implementPriorityQueue
.
- Add a port of Python's difflib.
CharMatcher
now works on all unicode code-points, correctly and efficiently matching unicode characters beyond UTF-16 bytes:- Add support for all Unicode General Categories and Unicode Properties.
- Add support for Character Class Subtraction to
CharMatcher.pattern
. - For consistency
CharMatcher.whitespace()
is only matching ASCII whitespaces, to get the Unicode variant useUnicodeCharMatcher.whiteSpace()
. - Add
CharMatcher.punctuation()
for ASCII punctuation characters.
- Various improvements to graph library:
- Add support for unmodifiable graphs.
- Add support to compute the max-flow.
- Rename
GraphBuilder
withGraphFactory
. - Replace
Graph.getEdges
withGraph.getEdge
, addGraph.putEdge
.
- Make object printer syntax to look like tuples, no need to have these weird curly braces anymore.
- Add
double.nextUp
,double.nextDown
,double.nextTowards(double)
, anddouble.ulp
. - Add growable flag to
SortedList
constructors. - Add Farey sequence to
Fraction
. - Improve documentation across many parts of the library.
- Dart 3.0 requirement.
- Removed deprecated code.
- Reimplement
Tuple
on top of records:- Replace types like
Tuple2<String, int>
with(String, int)
. - Replace constructors like
Tuple2('hello', 42)
with('hello', 42)
.
- Replace types like
- Add
Iterable.pairwise
over the successive overlapping pairs. - Add
Iterable.deepFlatten
over arbitrarily nested iterables. - Add
product
andzip
extensions on tuples of iterables. - Add partial function evaluation, and currying extensions.
- Add a growable
BitList
, make it behave more likeList<bool>
. - Optimize
BitList
operations:fill
,count
, andindices
. - Change return type of generic
throwFunction
toNever
. - Add graph algorithms and data structures.
- Add
Map.withDefault
providing a default value for non-existing keys. - Add support to generate permutations with a specified length, as well as extensions to generate the previous and next permutation.
- Various extension to work with bits.
- Add iterator over
BitList.indices
that are true or false. - Add experimental
RTree
implementation. - Various optimizations and improvements to mathematical functions.
- Generalize the prime sieve implementation and add support for more efficient primality check and factorization.
- More efficient implementation of
repeat
for a single element. - Make
Iterable.groupBy
andIterable.indexed
return instances ofMapEntry
for easier interoperability withMap
. - Fix various edge cases with
Range
iterables. - Fix
Iterable.combinations
for empty iterables. - Add
List
extensionstakeTo
,skipTo
,takeLast
,takeLastTo
,skipLast
, andskipLastTo
. - Add
Iterable
extensioncount
andpowerSet
. - Deprecate
Iterable.cycle
in favor ofIterable.repeat
. - Deprecated
naturalComparator
in favor ofnaturalCompare
andnaturalComparable<T>
. - Deprecate the iterable package, and integrate the extensions into the collection package.
- Add
String
extensionstake
,takeTo
,skip
,skipTo
,takeLast
,takeLastTo
,skipLast
, andskipLastTo
. - Create a new
temporal
package unifying allDateTime
andDuration
related extensions:- Moved
DateTime.periodical
andDateTime.truncate
to the new page, deprecated the old code. - Add various convenience accessors to
DateTime
:isLeapYear
,daysInYear
,daysInMonth
,weeksInYear
,quarter
,weekYear
,weekNumber
,dayOfYear
, andhour12
. - Add ability to convert
Duration
objects to one or more (fractional)TimeUnit
s.
- Moved
- Countless improvements and extensions to the
printer
package:- Add
DateTimePrinter
to print date and time objects. - Add
OrdinalNumberPrinter
to print ordinal numbers: 1st, 2nd, 3rd, 4th, ... - Add
Printer.switcher
to use different printers based on conditions. - Add
Printer.where
to condition the printing on the printed object. - Add
Printer
support fortake
,skip
,takeLast
andskipLast
. - Add
Printer
support fortruncateRight
,truncateLeft
, andtruncateCenter
to also operate on word and sentence boundaries. Include the ellipsis in the width constraint. - Deprecated
Printer.map
, and replace with more common and intention revealingPrinter.onResultOf
.
- Add
- Implement the functionality of
Ordering
as static extensions methods onComparator
functions:- Add
Comparator.binarySearchLower
andComparator.binarySearchUpper
to return a lower/upper insertion index. - Add
Comparator.largest
andComparator.smallest
to return the top/bottom-k elements. - Deprecate the
Ordering
class and package.
- Add
- Create
Interval
to encapsulate bounded/unbounded and open/closed intervals across arbitraryComparable
objects.- Add the ability to measure the length of
Interval<int>.toIntLength()
andInterval<num>.toDoubleLength()
. - Add ability to convert
Interval<DateTime>
to aDuration
.
- Add the ability to measure the length of
- Added
SortedList
collection type. - Add
CompareOperators
mixin to provide operators given acompareTo
method.
- Add
closeTo
extension to all numbers. - Make
Fraction
support non-finite numbers.
- Dart 2.17 requirement.
- Add a max-heap collection type.
- Add predicates for the ordering type.
- Add interval data structure with open, closed, and infinite endpoints.
- Dart 2.16 requirement.
- Avoid dynamic calls.
- Better print strings across the library.
- Remove deprecated
hashAll
andhash1
,hash2
,hash3
, ... methods. - Add
ObjectPrinter.addValue
for more dynamic object printing. - Add
ToStringPrinter
mixin for simpler use ofObjectPrinter
. - Add
Stream.window
along the existingIterable.window
extension (thanks to https://github.com/pihentagy). - Various cleanups and better test coverage.
- Dart 2.14 requirement.
- Added
indent
/dedent
andwrap
/unwrap
toString
. - Deprecated
hashAll
andhash1
,hash2
,hash3
, ... methods, since this is now supported through the core library onObject
.
- Make
Printer
significantly faster by reusing a singleStringBuffer
instance where possible. - Make
Printer
strongly typed, which unfortunately comes with some required API changes:- Number printers do no longer support
BigInt
. - Number printers are directly instantiated, instead of using a factory on Printer.
- Number printers do no longer support
- Improved the
Printer
library in various ways:- Renamed
undefined
to the more intention revealingifNull
. - Added
ifEmpty
to print something specific for emptyIterables
. - Added
map
andcast
printers for more flexible printing. - Add initial version of the
ObjectPrinter
.
- Renamed
- Dart 2.13 requirement.
- Add
Optional
andEither
type. - Add
TypeMap
that maps Dart types to an instance. - Add various kinds of function types and function factories: callback function types, constant functions, empty functions, identity functions, mapping function types, predicate function types, and throwing functions.
- Add
String.convertFirstCharacters()
andString.convertLastCharacters()
. - Add
String.toUpperCaseFirstCharacter()
andString.toLowerCaseFirstCharacter()
.
- Dart 2.12 requirement and null-safety.
- Use
package:clock
andpackage:fake_async
across the board. - Add
BigIntRange
and optimize iteration ofIntegerRange
. - Optimize the implementation of
ExpiryCache
. - Fix
maxAge
of theStream.buffer
operator. - Add
Fraction.sign
andComplex.sign
. - Add
IterablePrinter
to print lists. - Relax the type constraints on
Ordering.natural
. CharMatcher
is now aPattern
.- Introduce
package:more/feature.dart
to provide information about the runtime environment. - Add
Trie
(prefix tree) collection type. - Add
Ordering.percentile
. - Add
Iterable.toMap
,Iterable.atRandom
,Iterable.min
,Iterable.max
andIterable.percentile
. - Optimize
Range
object creation and error reporting, and addIterable.indices
. - Add converters
toBiMap
,toListMultimap
, andtoSetMultimap
. - Add
String.removePrefix
andString.removeSuffix
. - Add
List.rotate
andQueue.rotate
.
- Dart 2.9 compatibility and requirement (in preparation of null-safety).
- Remove
Iterable.concat()
in favor ofIterable.flatten()
. - Split
Iterable.zip()
intoInterable.zip()
,Iterable.zipPartial()
andIterable.zipPartialWith()
. - Fix a bug in
Ordering.nullsFirst
andOrdering.nullsLast
. - Fix a race condition in cache value resolution.
- Fix a rounding bug of numeric formats with precision 0.
- Add human number printer (1 kilo, 1 mega, ...).
- Add a map function to
Tuple
classes.
- Add
separatedBy
,flatMap
andflatten
function onIterable
. - Cleanup
printer
package and improve documentation.
- Add
repeat
function onIterable
. - Improved documentation.
- Printer package correctly trims, pads and separates unicode strings now.
- Updated class documentation regarding UTF-16 representation vs unicode strings.
- Add in-place logical operators to
BitList
. - Optimize
CharMatcher
with lookup tables. - Improved documentation.
- Add
ListMultimap
andSetMultimap
. - Mark
CharMatcher
,Cache
andOrdering
as immutable. - Improve documentation, which still included pre Dart 2.0 examples.
- Add extension methods to convert
Comparator
toOrdering
.
- Made
truncateToPeriod
andperiodical
extension methods ofDateTime
. - Add extension methods to convert
- a
Map<K, V>
to aBiMap<K, V>
, - an
Iterable<bool>
to aBitList
, and - an
Iterable<T>
to aMultiset<T>
.
- a
- Cleanup
Tuple
class to be more readable and better typed.
- Dart 2.7 compatibility and requirement.
- Cleaned up deprecated code.
- Iterables
- Converted most helpers to extension methods.
- Removed
fold
andfib
, as they are not generally useful. - Moved
digits
topackage:more/math
.
- Collections
- Add extension method to
int
anddouble
to create ranges, i.e.0.to(20)
. - Move the string lists to
String.toList()
extension method.
- Add extension method to
- Math
- Move all numerical operators to
num
,ìnt
and/orBigInt
(new).
- Move all numerical operators to
- Dart 2.4 compatibility and requirement.
- Add a tuple data type.
- Dart 2.3 compatibility and requirement.
- Various code improvements and optimizations.
- Dart 2.2 compatibility and requirement.
- Deprecated
package:more/int_math
package, and moved all not-deprecated code topackage:more/math.dart
. - Add 'polyfills' for hyperbolic functions to the math package.
- Add functionality for combining hash codes.
- Quaternion numbers.
- Rename
Range.stop
toRange.end
to be consistent with Dart naming conventions. - Rename
partition
tochunked
to be more consistent with Dart nomenclature. - Add the
zip
iterable.
- Add the number package.
- Move
Fraction
class into this package. - Add support for
Complex
numbers.
- Move
- Add the
groupBy
iterable.
- Add the printer package.
- Drop Dart 1.0 compatibility.
- Dart 2.0 strong-mode compatibility required the following breaking changes:
- Replace callers of
range()
with eitherIntegerRange()
orDoubleRange()
. - Removed padding argument from
partition()
. To migrate replace broken calls-sites withpartitionWithPadding()
.
- Replace callers of
- Removed empty(), emptyIterator(), emptyIterable() since these are part of the core library now.
- Add periodic iterable tools (monthly, weekly, daily, hourly, ...).
- Ordering.reversed, Ordering.nullsFirst, Ordering.nullsLast, and Ordering.lexicographical are now properties for consistency with the Iterable protocol.
- Various optimization and improvements on the Range class.
- Cleanup after micro library migration.
- Move to the latest Dart provided mixins.
- Cleanup after micro library migration.
- Address linter warnings.
- Better test coverage.
- Migrate to micro libraries.
- Add caching library.
- Use generic method syntax.
- Fix pubspec SDK constraints.
- Fix linter warnings.
- Improve documentation.
- Strong compiler compliant.
- Fix various typos and linter issues.
- Reformat documentation.
- Migrate to Travis.