Skip to content

Latest commit

 

History

History
280 lines (216 loc) · 11.7 KB

CHANGELOG.md

File metadata and controls

280 lines (216 loc) · 11.7 KB

CHANGELOG

This project follows semantic versioning. While still in major version 0, source-stability is only guaranteed within minor versions (e.g. between 0.0.3 and 0.0.4). If you want to guard against potentially source-breaking package updates, you can specify your package dependency using .upToNextMinor(from: "0.1.0") as the requirement.

No new changes.


0.2.1 - 2021-06-01

Additions

Expanded versatility for two existing operations:

  • A series of joined(by:) overloads concatenate a sequence of sequences using an element or a collection, either passed in or generated from consecutive elements via a closure. (#138)
  • Additional trimming(while:) methods for trimming only the start or end of a collection, as well as mutating versions of all three variants. (#104)

The 0.2.1 release includes contributions from fedeci and timvermeulen. Thank you!

0.2.0 - 2021-05-17

Additions

Two new additions to the list of algorithms:

  • adjacentPairs() lazily iterates over tuples of adjacent elements of a sequence. (#119)
  • minAndMax() finds both the smallest and largest elements of a sequence in a single pass. (#90)

Changes

  • When calling chunked(on:), the resulting collection has an element type of (Subject, SubSequence) instead of just SubSequence, making the subject value available when iterating.

    let numbers = [5, 6, -3, -9, -11, 2, 7, 6]
    for (signum, values) in numbers.chunked(on: { $0.signum() }) {
        print(signum, values)
    }
    // 1 [5, 6]
    // -1 [-3, -9, -11]
    // 1 [2, 7, 6]

Fixes

  • Improvements to the documentation and PR templates.

The 0.2.0 release includes contributions from CTMacUser, LemonSpike, mpangburn, and natecook1000. Thank you!


0.1.1 - 2021-04-14

Fixes

  • Product2 associated type inference error in release build (#130)

0.1.0 - 2021-04-13

Additions

  • The compacted() method lazily finds the non-nil elements of a sequence or collection (#112).

Changes

  • The uniqued() method now lazily computes the unique elements of a sequence or a collection (#71). Pass this resulting sequence to an Array initializer to recover the behavior of the previous release.
  • Calling cycled(times:) now returns a new FiniteCycle type, which has the same conformances as its underlying collection (#106).
  • The base collections of the sequence and collection wrapper types are no longer public (#85, #125), and the wrapper types no longer conform to the Equatable or Hashable protocols (#124). If you need those conformances, convert the wrapper type to an Array or other collection currrency type before storing. Please file an issue if these changes pose a problem for your use case.

The 0.1.0 release includes contributions from LemonSpike, LucianoPAlmeida, natecook1000, and timvermeulen. Thank you!


0.0.4 - 2021-03-29

Additions

More new algorithms to join the party:

  • A lazy version of the standard library's two split methods. (#78)
  • firstNonNil(_:) returns the first non-nil element from an optional-generating transform. (#31)
  • uniquePermutations() skips duplicates when generating permutations of a collection. (#91)
  • The reductions methods return all the in-between states of reducing a sequence or collection. (#46)

Fixes

  • Methods and computed properties are more consistently marked as inlinable, resolving a performance regression.
  • The Stride type now efficiently calculates distances between positions, supported by the underlying collection.
  • Better test coverage and improved diagnostics for comparing sequences.
  • Fixed links and improved documentation.

The 0.0.4 release includes contributions from bjhomer, danielctull, hashemi, karwa, kylemacomber, LucianoPAlmeida, mdznr, natecook1000, ollieatkinson, Qata, timvermeulen, and toddthomas. Thank you!

0.0.3 - 2021-02-26

Additions

An exciting group of new algorithms, contributed by the community:

  • trimming(while:) returns a subsequence of a bidirectional collection with the matching elements removed from the start and end. (#4)
  • min(ofCount:) and max(ofCount:) find the smallest or largest elements in a collection. (#9, #77)
  • windows(ofCount:) lets you iterate over all the overlapping subsequences of a particular length. (#20)
  • striding(by:) iterates over every nth element of a sequence or collection. (#24)
  • interspersed(with:) places a new element between every pair of elements in a sequence or collection. (#35)
  • chunks(ofCount:) breaks a collection into subsequences of the given number of elements. (#54)
  • suffix(while:) matches the standard library's prefix(while:), by returning the suffix of all matching elements from a bidirectional collection. (#65)
  • Variations of combinations(ofCount:) and permutations(ofCount:) that take a range expression as a parameter, returning combinations and permutations of multiple lengths. (#51, #56)

Changes

  • The LazyChunked type now precomputes its startIndex, making performance more predictable when using the collection.

Fixes

  • randomSample(count:) no longer traps in rare circumstances.
  • Index calculations have been improved in a variety of collection wrappers.
  • A variety of documentation improvements and corrections.

The 0.0.3 release includes contributions from benrimmington, danielctull, dhruvshah8, karwa, LucianoPAlmeida, markuswntr, mdznr, michiboo, natecook1000, ollieatkinson, rakaramos, rockbruno, Roshankumar350, sidepelican, and timvermeulen. Thank you!

0.0.2 - 2020-10-23

Changes

  • The rotate(at:) method has been updated to rotate(toStartAt:), with the old name deprecated.
  • The chained(with:) method has been changed to the free function chain(_:_:), with the old version deprecated.
  • Algorithms now uses RealModule from the swift-numerics package for its cross-platform elementary functions.
  • Sequence/collection wrapper types, like Permutations and Indexed, now have conformance to the lazy protocols, so that any following operations maintain their laziness.

Fixes

  • Algorithms now builds under SwiftPM on Windows.
  • A wide variety of errors, misspellings, and ommissions in the documentation and guides have been fixed.
  • Index/distance calculations for the Product2 and Chain types have been corrected.
  • Calling stablePartition(subrange:by:) now correctly uses the subrange's length instead of the whole collection.

The 0.0.2 release includes contributions from AustinConlon, egorzhdan, IanKeen, iSame7, karwa, kylemacomber, natecook1000, nordicio, pmtao, schlagelk, stephentyrone, and timvermeulen. Thank you!

0.0.1 - 2020-10-07

  • Swift Algorithms initial release.

This changelog's format is based on Keep a Changelog.