Open-source implementation of Apple's Combine framework for processing values over time.
The main goal of this project is to provide a compatible, reliable and efficient implementation which can be used on Apple's operating systems before macOS 10.15 and iOS 13, as well as Linux, Windows and WebAssembly.
OpenCombine contains three public targets:
OpenCombineDispatch (the fourth one,
COpenCombineHelpers, is considered private. Don't import it in your projects).
OpenCombine itself does not have any dependencies. Not even Foundation or Dispatch. If you want to use OpenCombine with Dispatch (for example for using
Scheduler for operators like
receive(on:) etc.), you will need to import both
OpenCombineDispatch. The same applies to Foundation: if you want to use, for instance,
URLSession publishers, you'll need to also import
If you develop code for multiple platforms, you may find it more convenient to import the
OpenCombineShim module instead. It conditionally re-exports Combine on Apple platforms (if
available), and all OpenCombine modules on other platforms. You can import
when using SwiftPM. It is not currently available for CocoaPods.
OpenCombine to your SwiftPM package, add the
OpenCombine package to the list of package and target dependencies in your
OpenCombineFoundation products are currently not supported on WebAssembly. If your project targets WebAssembly exclusively, you should omit them from the list of your dependencies. If it targets multiple platforms including WebAssembly, depend on them only on non-WebAssembly platforms with conditional target dependencies.
dependencies: [ .package(url: "https://github.com/OpenCombine/OpenCombine.git", from: "0.13.0") ], targets: [ .target( name: "MyAwesomePackage", dependencies: [ "OpenCombine", .product(name: "OpenCombineFoundation", package: "OpenCombine"), .product(name: "OpenCombineDispatch", package: "OpenCombine") ] ), ]
OpenCombine can also be added as a SwiftPM dependency directly in your Xcode project (requires Xcode 11 upwards).
To do so, open Xcode, use File → Swift Packages → Add Package Dependency…, enter the repository URL, choose the latest available version, and activate the checkboxes:
OpenCombine to a project using CocoaPods, add
OpenCombineDispatch to the list of target dependencies in your
pod 'OpenCombine', '~> 0.13.0' pod 'OpenCombineDispatch', '~> 0.13.0' pod 'OpenCombineFoundation', '~> 0.13.0'
opencombine_lldb.py defines some
lldb type summaries for easier debugging. These type summaries improve the way
lldb and Xcode display some OpenCombine values.
opencombine_lldb.py, figure out its full path. Let's say the full path is
~/projects/OpenCombine/opencombine_lldb.py. Then the following statement to your
command script import ~/projects/OpenCombine/opencombine_lldb.py
opencombine_lldb.py defines type summaries for these types:
|Last commit: 1 week ago|
This release is compatible with Xcode 13.2.
Publishers.Throttle(#195, thank you @stuaustin)
Publishers.Zip(#222, thank you @MaxDesiatov and @ArthurChi)