OpenCombine

Open source implementation of Apple's Combine framework for processing values over time.

MIT License

Stars
2.6K
Committers
23

Bot releases are hidden (Show)

OpenCombine - 0.14.0 Latest Release

Published by broadwaylamb over 1 year ago

This release is compatible with Xcode 14.2 and Swift 5.7

Additions

  • Primary associated type support for Publisher, Subscriber, ConnectablePublisher, Subject and Scheduler protocols (#239)

Bugfixes

  • Fixed nullifying the reference to parent in Future's conduit (#239)
OpenCombine - 0.13.0

Published by broadwaylamb over 2 years ago

This release is compatible with Xcode 13.2.

Additions

  • Windows support (thank you @MaxDesiatov!)
  • Publishers.Throttle (#195, thank you @stuaustin)
  • Publishers.PrefixUntilOutput (#206)
  • Publishers.Zip (#222, thank you @MaxDesiatov and @ArthurChi)
  • async/await extensions: Future.value and Publisher.values (#219)

Bugfixes

  • Fixed reentrancy bugs in Subscribers.Sink and Subscribers.Assign (#210)
  • Fixed lifecycle bugs in Publishers.Concatenate (#210)
OpenCombine - 0.12.0

Published by MaxDesiatov over 3 years ago

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:

OpenCombine - 0.11.0

Published by broadwaylamb almost 4 years ago

This release is compatible with Xcode 12.1.

Additions

  • Publisher.assigned(to:) method that accepts a Published.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.

Bugfixes

  • 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 scheduler
    • Published
    • Publishers.ReceiveOn
    • Publishers.ReplaceError
    • RunLoop scheduler
    • Publishers.Sequence
    • Subscribers.Sink
    • Publishers.SubscribeOn
    • Publishers.Timeout
    • Timer publisher

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1 and later.
OpenCombine - 0.10.2

Published by broadwaylamb almost 4 years ago

Bugfixes

  • Fixed a crash caused by recursive acquisition of a non-recursive lock in SubbjectSubscriber (#186, thanks @stuaustin for the bug report)

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1 and later.
OpenCombine - 0.10.1

Published by broadwaylamb about 4 years ago

Bugfixes

  • Fixed build errors on Linux with Swift 5.0 and Swift 5.3 toolchains (thanks, @adamleonard and @devmaximilian)

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1 and later.
OpenCombine - 0.10.0

Published by broadwaylamb over 4 years ago

This release is compatible with Xcode 11.5.

Additions

  • Timer.publish(every:tolerance:on:in:options:) (#156, thank you @MaxDesiatov)
  • OperationQueue scheduler (#165)
  • Publishers.Timeout (#164)
  • Publishers.Debounce (#133)

Bugfixes

  • PassthroughSubject, CurrentValueSubject and Future have been rewritten from scratch. They are now faster, more correct and no longer leak subscriptions (#170).

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1 and later.
OpenCombine - 0.9.0

Published by broadwaylamb over 4 years ago

This release is compatible with Xcode 11.5.

Additions

  • The Subscribers.Demand struct can be nicely formatted in LLDB (#146, thank you @mayoff).
  • Publishers.SwitchToLatest (#142).
  • The RunLoop scheduler in OpenCombineFoundation (#131).
  • Publishers.Catch and Publishers.TryCatch (#140).

Bugfixes

  • Worked around a bug in the Swift compiler when building the COpenCombineHelpers target (#145, thank you @mayoff).
  • Improved documentation.

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1 and later.
OpenCombine - 0.8.0

Published by broadwaylamb almost 5 years ago

This release is compatible with Xcode 11.3.1.

Additions

  • Publishers.ReplaceEmpty (#122, thank you @spadafiva)
  • NotificationCenter.Publisher (#84)
  • URLSession.DataTaskPublisher (#127)
  • Publishers.DropUntilOutput (#136)
  • Publishers.CollectByCount (#137)
  • Publishers.AssertNoFailure (#138)
  • Publishers.Buffer (#143)

Bugfixes

  • Fixed integer overflows in DispatchQueue.SchedulerTimeType.Stride (#126, #130)
  • Fixed the 'default will never be executed' warning on non-Darwin platforms (like Linux) (#129)

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1.
OpenCombine - 0.7.0

Published by broadwaylamb almost 5 years ago

This release is compatible with Xcode 11.2.1.

Additions

  • Publishers.Delay (#114)
  • Publishers.ReceiveOn (#115)
  • Publishers.SubscribeOn (#116)
  • Publishers.MeasureInterval (#117)
  • Publishers.Breakpoint (#118)
  • Publishers.HandleEvents (#118)
  • Publishers.Concatenate (#90)

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1.
OpenCombine - 0.6.0

Published by broadwaylamb almost 5 years ago

This release is compatible with Xcode 11.2.1.

Thread safety

  • Publishers.IgnoreOutput has been audited for thread safety (#88)
  • Publishers.DropWhile and Publishers.TryDropWhile have been audited for thread safety (#87)

Additions

  • Publishers.Output (#91)
  • Record (#100)
  • Publishers.RemoveDuplicates, Publishers.TryRemoveDuplicates (#89)
  • Publishers.PrefixWhile, Publishers.TryPrefixWhile (#89)
  • Future (#107, thanks @MaxDesiatov!)

Bugfixes

  • The behavior of the Publishers.Encode and Publishers.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 and Publishers.TryFilter subscriptions is fixed (#89)
  • The behavior of the Publishers.CompactMap and Publishers.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.

Known issues

  • The default implementation of the objectWillChange requirement of the ObservableObject protocol is not available in Swift 5.1.
OpenCombine - 0.5.0

Published by broadwaylamb about 5 years ago

This release is compatible with Xcode 11.1.

Additions

  • 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!)

Bugfixes

  • Publishers.Print doesn't print a redundant whitespace anymore.

Known issues

  • @Published property wrapper doesn't work yet
OpenCombine - 0.4.0

Published by broadwaylamb about 5 years ago

This release is compatible with Xcode 11.1.

Thread safety

  • SubjectSubscriber (which is used when you subscribe a subject to a publisher) has been audited for thread-safety
  • Publishers.Multicast has been audited for thread safety (#63)
  • Publishers.TryMap has been audited for thread safety
  • Just has been audited for thread safety
  • Optional.Publisher has been audited for thread safety
  • Publishers.Sequence has been audited for thread safety
  • Publishers.ReplaceError has been audited for thread safety
  • Subscribers.Assign has been audited for thread safety
  • Subscribers.Sink has been audited for thread safety

Bugfixes

  • The semantics of Publishers.Print, Publishers.TryMap have been fixed
  • Fix iterator.next() being called twice in Publishers.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!)

Additions

  • DispatchQueueScheduler (#46)
  • Equatable conformances for First, ReplaceError
  • Added eraseToAnyPublisher() method (#59, thanks @evyasafhouzz for reporting!)
  • Publishers.MakeConnectable (#61)
  • Publishers.Autoconnect (#60)
  • Publishers.Share (#60)

Known issues

  • @Published property wrapper doesn't work yet
OpenCombine - 0.3.0

Published by broadwaylamb about 5 years ago

Among other things this release is compatible with Xcode 11.0 GM seed.

Bugfixes

  • Store newly send value in internal variable inside CurrentValueObject (#39, thanks @FranzBusch!)

Additions

  • 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!)

Known issues

  • @Published property wrapper doesn't work yet
OpenCombine - 0.2.0

Published by broadwaylamb about 5 years ago

Updated for the newest Xcode 11.0 beta 5

OpenCombine - 0.1.0

Published by broadwaylamb over 5 years ago

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