中文)
CombineX(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.
Goal
CombineX
will try to provide:
- ~100% consistent behavior with the Apple Combine.
- More extensions
Combine
don't have but are very useful. You can find them [here] (https://github.com/CombineXCommunity).
Status
Compatible with Combine beta 5.
A new beta version will be released every Monday.
Notice
This library is still in beta testing, Please do not use it in production!
Try it out
Swift Package Manager
In your Package.swift
:
pkg.dependencies.append(
.package(url: "https://github.com/luoxiu/CombineX", ._branchItem("master"))
)
Related
- CombineX.Foundation: provides all
Foundation
extension implementations, built on top ofCombineX
, such asURLSession
,NotificationCenter
,Timer
, etc. - CombineX.Compatible: provides
CombineX
API Shims, help you resolve migration concerns that may arise.
Contribute
Welcome! CombineX is always looking for collaborators!
Now, what CombineX
need most are testing. You can:
- Add more functional tests.
- Make sure
Combine
can pass it. - If
CombineX
can not pass it, open an issue, or fix it directly!
Flow
Since some people may not have macOS 10.15 beta installed, the recommended contributing way is:
- Fork the project.
- Open
Specs/Specs.xcworkspace
, make your changes underCombineX/CombineX
folder. - All tests go
CombineXTests/CombineXTests
folder. Make sure both schemeSpecs
and schemeCombineX
pass the tests you wrote.
Bugs in Combine
Since 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 CombineX
.
Other
Why write this?
Combine
has 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.Combine
is closed source. It is the same asUIKit
,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.Combine
is Apple platform only and doesn't support Linux.