CombineX is an open source implementation for Apple's Combine specs. It allows you to use Combine's API right now, without the need for macOS 10.15 or iOS 13, without the need for the Apple platform.
Compatible with Combine beta 5.
A new beta version will be released every Monday.
This library is still in beta, So do not use it in production.
Try it out
pod 'CombineX.swift', :git => 'https://github.com/luoxiu/CombineX.git', :branch => 'master'
Swift Package Manager
pkg.dependencies.append( .package(url: "https://github.com/luoxiu/CombineX", ._branchItem("master")) )
CombineX.Foundation: provides all
Foundationextension implementations, built on top of
CombineX, such as
Cocoaexensions, built on top of
CombineXAPI Shims, help you resolve migration concerns that may arise.
Welcome! CombineX is always looking for collaborators!
CombineX need most are testing. You can:
- Add more functional tests.
- Make sure
Combinecan pass it.
CombineXcan not pass it, open an issue, or fix it directly!
Since some people may not have macOS 10.15 beta installed, the recommended contributing way is:
- Fork the project.
Specs/Specs.xcworkspace, make your changes under
- All tests go
CombineXTests/CombineXTestsfolder. Make sure both scheme
CombineXpass the tests you wrote.
Bugs in Combine
Combine is still in beta, it is inevitable that it has bugs. If you find something strange, open an issue to discuss with us, or leave a
// FIXME: annotation. In fact, there are already some
FIXME annotations in
Why write this?
Combinehas a strict system version limit(macOS 10.15+, iOS 13+). This means that even if your app only needs to support two forward versions, you have to wait for almost three years.
Combineis closed source. It is the same as
MapKit, updating with the update of xcode. When you encounter a bug, you must have encountered a system library bug before, the debugging is very annoying. And the more annoying is the slow official response, usually you can only wait for the next regular update of xcode.
Combineis Apple platform only and doesn't support Linux.