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
flatMapFirstoperator (#119) - Thanks @troupmar - New
prefix(while:behavior:)operator (#70) - Thanks @jasdev - New
mapToVoidoperator (#129) - Thanks @danshevluk
CombineExt 1.7.0
This version introduces two changes:
- New divide-and-conquer based algorithms to optimize the usage of
CombineLatestManyandZipManywhen 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
filterManyoperator 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
.createergonomics and support returning aAnyCancellable[#24] - Add
ownershipargument toassignso you can doassign(to: \.text, on: label, ownership: .weak)(Ownership supports.weak,.unownedand.strong) [#30] - Add
ReplaySubject[#23] - Add
share(replay:)[#23] - Add
withLatestFromfor 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.publisherproperty 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 toremoveDuplicateswhich only de-duplicates values pair-wise.setOutputType(to:): Set theOutputtype of a publisher whose output isNever, similarly tosetFailureType(to:).