This release adds a new OpenCombineShim
product that will conditionally re-export either
Combine on Apple platforms, or OpenCombine on other platforms. Additionally, ObservableObject
protocol is now available and working on all platforms.
A bug with Timer(timeInterval:repeats:block:)
firing immediately not accounting for the passed
timeInterval
is fixed.
Merged pull requests:
- Fix
Timer(timeInterval:repeats:block:)
not accountingtimeInterval
(#196) via @grigorye - Add
OpenCombineShim
product for easier importing (#197) via @MaxDesiatov - Implementation for
ObservableObject
withMirror
(#201) via @kateinoigakukun
This release is compatible with Xcode 12.1.
Publisher.assigned(to:)
method that accepts aPublished.Publisher
.- New
Publisher.switchToLatest()
overloads. - New
Publisher.flatMap(maxPublishers:_:)
overloads. Optional.publisher
property.- New
_Introspection
protocol that allows to track and explore the subscription graph and data flow.
- The project should now compile without warnings.
- The following entities have been updated to match the behavior of the newest Combine version:
Subscribers.Assign
Publishers.Breakpoint
Publishers.Buffer
CombineIdentifier
Publishers.CompactMap
Publishers.Concatenate
Publishers.Debounce
Publishers.Delay
DispatchQueue.SchedulerTimeType.Stride
Publishers.Drop
Publishers.Encode
Publishers.Decode
Publishers.Filter
Publishers.HandleEvents
Publishers.IgnoreOutput
Publishers.MeasureInterval
OperationQueue
schedulerPublished
Publishers.ReceiveOn
Publishers.ReplaceError
RunLoop scheduler
Publishers.Sequence
Subscribers.Sink
Publishers.SubscribeOn
Publishers.Timeout
Timer
publisher
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1 and later.
- Fixed a crash caused by recursive acquisition of a non-recursive lock in SubbjectSubscriber (#186, thanks @stuaustin for the bug report)
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1 and later.
- Fixed build errors on Linux with Swift 5.0 and Swift 5.3 toolchains (thanks, @adamleonard and @devmaximilian)
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1 and later.
This release is compatible with Xcode 11.5.
Timer.publish(every:tolerance:on:in:options:)
(#156, thank you @MaxDesiatov)OperationQueue
scheduler (#165)Publishers.Timeout
(#164)Publishers.Debounce
(#133)
PassthroughSubject
,CurrentValueSubject
andFuture
have been rewritten from scratch. They are now faster, more correct and no longer leak subscriptions (#170).
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1 and later.
This release is compatible with Xcode 11.5.
- The
Subscribers.Demand
struct can be nicely formatted in LLDB (#146, thank you @mayoff). Publishers.SwitchToLatest
(#142).- The
RunLoop
scheduler inOpenCombineFoundation
(#131). Publishers.Catch
andPublishers.TryCatch
(#140).
- Worked around a bug in the Swift compiler when building the
COpenCombineHelpers
target (#145, thank you @mayoff). - Improved documentation.
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1 and later.
This release is compatible with Xcode 11.3.1.
Publishers.ReplaceEmpty
(#122, thank you @spadafiva)NotificationCenter.Publisher
(#84)URLSession.DataTaskPublisher
(#127)Publishers.DropUntilOutput
(#136)Publishers.CollectByCount
(#137)Publishers.AssertNoFailure
(#138)Publishers.Buffer
(#143)
- Fixed integer overflows in
DispatchQueue.SchedulerTimeType.Stride
(#126, #130) - Fixed the 'default will never be executed' warning on non-Darwin platforms (like Linux) (#129)
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1.
This release is compatible with Xcode 11.2.1.
Publishers.Delay
(#114)Publishers.ReceiveOn
(#115)Publishers.SubscribeOn
(#116)Publishers.MeasureInterval
(#117)Publishers.Breakpoint
(#118)Publishers.HandleEvents
(#118)Publishers.Concatenate
(#90)
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1.
This release is compatible with Xcode 11.2.1.
Publishers.IgnoreOutput
has been audited for thread safety (#88)Publishers.DropWhile
andPublishers.TryDropWhile
have been audited for thread safety (#87)
Publishers.Output
(#91)Record
(#100)Publishers.RemoveDuplicates
,Publishers.TryRemoveDuplicates
(#89)Publishers.PrefixWhile
,Publishers.TryPrefixWhile
(#89)Future
(#107, thanks @MaxDesiatov!)
- The behavior of the
Publishers.Encode
andPublishers.Decode
subscriptions is fixed (#112) - The behavior of the
Publishers.IgnoreOutput
subscription is fixed (#88) - The behavior of the
Publishers.Print
subscription is fixed (#92) - The behavior of the
Publishers.ReplaceError
subscription is fixed (#89) - The behavior of the
Publishers.Filter
andPublishers.TryFilter
subscriptions is fixed (#89) - The behavior of the
Publishers.CompactMap
andPublishers.TryCompactMap
subscriptions is fixed (#89) - The behavior of the
Publishers.Multicast
subscription is fixed (#110) Publishers.FlatMap
is reimplemented from scratch. Its behavior is fixed in many ways, it now fully matches that of Combine (#89)@Published
property wrapper is fixed! (#112)- The behavior of
DispatchQueue.SchedulerTimeType
is fixed to match that of the latest SDKs (#96) - OpenCombine is now usable on 32 bit platforms. Why? Because we can.
- The default implementation of the
objectWillChange
requirement of theObservableObject
protocol is not available in Swift 5.1.
This release is compatible with Xcode 11.1.
Publishers.MapKeyPath
(#71)Publishers.Reduce
(#76)Publishers.TryReduce
(#76)Publishers.Last
(#76)Publishers.LastWhere
(#76)Publishers.TryLastWhere
(#76)Publishers.AllSatisfy
(#76)Publishers.TryAllSatisfy
(#76)Publishers.Contains
(#76)Publishers.ContainsWhere
(#76)Publishers.TryContainsWhere
(#76)Publishers.Collect
(#76)Publishers.Comparison
(#76)Publishers.Drop
(#70, thank you @5sw!)Publishers.Scan
(#83, thank you @epatey!)Publishers.TryScan
(#83, thank you @epatey!)
Publishers.Print
doesn't print a redundant whitespace anymore.
@Published
property wrapper doesn't work yet
This release is compatible with Xcode 11.1.
SubjectSubscriber
(which is used when you subscribe a subject to a publisher) has been audited for thread-safetyPublishers.Multicast
has been audited for thread safety (#63)Publishers.TryMap
has been audited for thread safetyJust
has been audited for thread safetyOptional.Publisher
has been audited for thread safetyPublishers.Sequence
has been audited for thread safetyPublishers.ReplaceError
has been audited for thread safetySubscribers.Assign
has been audited for thread safetySubscribers.Sink
has been audited for thread safety
- The semantics of
Publishers.Print
,Publishers.TryMap
have been fixed - Fix
iterator.next()
being called twice inPublishers.Sequence
(#62) - The default initializer of
CombineIdentifier
(the one that takes no arguments) is now much faster (#66, #69) - When
Publishers.Sequence
subscription is cancelled while it emits values, the cancellation is respected (#73, thanks @5sw!)
DispatchQueueScheduler
(#46)Equatable
conformances forFirst
,ReplaceError
- Added
eraseToAnyPublisher()
method (#59, thanks @evyasafhouzz for reporting!) Publishers.MakeConnectable
(#61)Publishers.Autoconnect
(#60)Publishers.Share
(#60)
@Published
property wrapper doesn't work yet
Among other things this release is compatible with Xcode 11.0 GM seed.
- Store newly send value in internal variable inside CurrentValueObject (#39, thanks @FranzBusch!)
Filter
/TryFilter
(#22, thanks @spadafiva!)First
/FirstWhere
/TryFirstWhere
(#22, thanks again @spadafiva!)CompactMap
/TryCompacrMap
(#32)IgnoreOutput
(#44, thanks @epatey!)ReplaceError
(#50, thanks @vladiulianbogdan!)FlatMap
(#45, thanks again @epatey!)
@Published
property wrapper doesn't work yet
Updated for the newest Xcode 11.0 beta 5
The first pre-pre-pre-alpha release is here!
Lots of stuff still unimplemented.
For now we have:
Just
Publishers.Decode
Publishers.DropWhile
Publishers.Empty
Publishers.Encode
Publishers.Fail
Publishers.Map
Publishers.Multicast
Publishers.Once
Publishers.Optional
Publishers.Print
Publishers.Sequence
Subscribers.Assign
Subscribers.Completion
Subscribers.Demand
Subscribers.Sink
AnyCancellable
AnyPublisher
AnySubject
AnySubscriber
Cancellable
CombineIdentifier
ConnectablePublisher
CurrentValueSubject
CustomCombineIdentifierConvertible
ImmediateScheduler
PassthroughSubject
Publisher
Result
Scheduler
Subject
Subscriber
Subscription