Releases: CombineCommunity/CombineExt
CombineExt 1.8.1
CombineExt 1.8.0
This version includes several bug fixes and new operators:
- Fixes some stubborn memory leaks in CurrentValueRelay (#137) and WithLatestFrom (#129) - Thanks @jasdeepsaini & @TTOzzi !
- Adds missing files to the project which prevented Carthage from building (#133) - Thanks @jasdeepsaini !
- Fix a replay synchronization issue in ReplaySubject (#138) - Thanks @mruston-heb !
- New
flatMapFirst
operator (#119) - Thanks @troupmar - New
prefix(while:behavior:)
operator (#70) - Thanks @jasdev - New
mapToVoid
operator (#129) - Thanks @danshevluk
CombineExt 1.7.0
This version introduces two changes:
- New divide-and-conquer based algorithms to optimize the usage of
CombineLatestMany
andZipMany
when working with massive (tens of thousands and up) of publishers. - Update the version of combine-schedulers in our test suite.
CombineExt 1.6.1
This release is identical to 1.6.0 with the critical fix introduced in #128.
1.6.0 used an overload of map(to:)
which the Swift compiler confuses with the closure-based map(_:)
operator.
This version renames it to mapToValue(_:)
.
CombineExt 1.6.0
- Add
retry(when:)
(Thanks @danielt1263) - Add
enumerated()
(Thanks @mihai8804858) - Add
map(to:)
(Thanks @danhalliday) - Fix a memory leak in
withLatestFrom
(Thanks @bharath2020) - Fix an issue with
share(replay:)
(Thanks @jabeattie @mRs-)
CombineExt 1.5.1
This PR reverts withLatestFrom
to the previous implementation, since the composed (new) implementation was misbehaving in some scenarios.
CombineExt 1.5.0
A Swift 5.5 and Xcode 13 compatible release
- Add mapToResult
- Replace the implementation of withLatestFrom with a new composed variation
- Fix a leak in share(replay:)
- Fix carthage & archiving builds for Xcode 13
CombineExt 1.3.0
CombineExt 1.3.0
It's been a long time since the last release, and this one packs a great deal of changes and updates :)
Thanks to all of the wonderful contributors who worked on this release: @kitwtnb, @jasdev, @basvankuijck, @joewalsh, @dsk1306, @HugoSay
Changes
- Add
Collection.flatMapBatches(of:)
to subscribe an array of publishers in batches (for example, processing batches of 3 requests at a time) - Add
toggle()
operator to toggle Boolean publishers - Add
nwise()
andpairwise()
operators to batch groups of elements - Add
Collection.merge()
to merge a collection of equally-typed publishers - Add
filterMany
operator to filter publishers that emits collections - Add
ignoreOutput(setOutputType:)
to drop all elements, and altering the Publisher's output type - Add
ignoreFailure(setFailureType::completeImmediately:)
to ignore a failure, and alter the Publisher's failure type - Fix locking of
ReplaySubject
CombineExt 1.2.0
CombineExt 1.2.0 is packed with many awesome additions !
Thanks to @jasdev, @jdisho, @RonKliffer, @ohayon and @dsk1306 for their incredible contributions to this release.
Let's break it down:
- Improve
.create
ergonomics and support returning aAnyCancellable
[#24] - Add
ownership
argument toassign
so you can doassign(to: \.text, on: label, ownership: .weak)
(Ownership supports.weak
,.unowned
and.strong
) [#30] - Add
ReplaySubject
[#23] - Add
share(replay:)
[#23] - Add
withLatestFrom
for up to 4 publishers [#22] - Add
prefix(duration:tolerance:in:options:)
to limit the duration for accepting values [#27] - Add a
Collection.amb()
operators to race a Collection of publishers [#31] - Add
Optional.publisher
property as a shorthand toOptional.Publisher.init
[#32] - Drop deployment target to iOS 10, tvOS 10, watchOS 3 and macOS 10.12 - to support older apps using Combine conditionally [#29]
CombineExt 1.1.0
CombineExt 1.1.0
CombineExt 1.1.0 is here, and boy oh boy what a packed release this is ! 🥳🥳🥳🥳
Many thanks to @jasdev and @jdisho for their immense contributions to this release ❤️
New Operators
zip(with:)
,Collection<Publisher>.zip()
: Variadic ZipcombineLatest(with:)
,Collection<Publisher>.combineLatest()
: Variadic CombineLatestamb(_:)
,amb(with:)
: Takes several publishers and uses the one which emits the first eventmapMany
: Map a publisher of array as if you're mapping each individual element of that arraypartition
: Partition a publisher into two separate publishers based on a provided predicateremoveAllDuplicates
: De-duplicate values across the entire lifetime of the publisher, as opposed toremoveDuplicates
which only de-duplicates values pair-wise.setOutputType(to:)
: Set theOutput
type of a publisher whose output isNever
, similarly tosetFailureType(to:)
.