https://github.com/cx-org/CombineX
Open source implementation of Apple's Combine
https://github.com/cx-org/CombineX
async combine event publisher reactive rx subscriber
Last synced: 3 months ago
JSON representation
Open source implementation of Apple's Combine
- Host: GitHub
- URL: https://github.com/cx-org/CombineX
- Owner: cx-org
- License: mit
- Created: 2019-06-09T00:09:28.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-16T18:53:41.000Z (about 2 years ago)
- Last Synced: 2024-05-22T15:33:03.242Z (over 1 year ago)
- Topics: async, combine, event, publisher, reactive, rx, subscriber
- Language: Swift
- Homepage:
- Size: 13 MB
- Stars: 623
- Watchers: 16
- Forks: 44
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# CombineX
[](https://github.com/cx-org/CombineX/actions)
[](https://github.com/cx-org/CombineX/releases)


[](https://discord.gg/9vzqgZx)[简体中文](README_zh-Hans.md)
Open-source implementation of Apple's [Combine](https://developer.apple.com/documentation/combine) for processing values over time.
> Though CombineX have implemented all the Combine interface, the project is still in early development.
## What is Combine
> Customize handling of asynchronous events by combining event-processing operators. -- Apple
`Combine` is a [Functional Reactive Programming (FRP)](https://en.wikipedia.org/wiki/Functional_reactive_programming) framework launched by Apple at WWDC 2019. It will definitely be the cornerstone of Swift programming in the foreseeable future.
## Get Started
> If you develop a library, it's recommended to use [`CXShim`](https://github.com/cx-org/CXShim) so your library is compatible with SwiftUI.
### Requirements
- Swift 5.0+ (Xcode 10.2+)
### Installation
#### Swift Package Manager (Recommended)
```swift
package.dependencies += [
.package(url: "https://github.com/cx-org/CombineX", from: "0.4.0"),
]
```#### CocoaPods
```ruby
pod 'CombineX', "~> 0.4.0"# or, if you want to use `Foundation` extensions:
pod 'CombineX/CXFoundation', "~> 0.4.0"
```#### Carthage
```carthage
github "cx-org/CombineX" ~> 0.4.0
```## Related Projects
These libraries bring additional functionality to Combine. They are all [Combine Compatible Package](https://github.com/cx-org/CombineX/wiki/Combine-Compatible-Package) and you're free to switch underlying Combine implementation between `CombineX` and Apple's `Combine`.
- [CXTest](https://github.com/cx-org/CXTest): test infrastructure for Combine. It provides useful test utilities like `TracingSubscriber` and `VirtualTimeScheduler`.
- [CXExtensions](https://github.com/cx-org/CXExtensions): provides a collection of useful extensions for Combine, such as `IgnoreError`, `DelayedAutoCancellable`, etc.
- [CXCocoa](https://github.com/cx-org/CXCocoa): provides Combine extensions to `Cocoa`, such as `KVO+Publisher`, `Method Interception`, `UIBinding`, `Delegate Proxy`, etc.## License
CombineX is released under the MIT license. See [LICENSE](LICENSE) for details.
The following files are adapted from the Swift open source project:
- [Publishers+KeyValueObserving](Sources/CXFoundation/Publishers+KeyValueObserving.swift)