finds.dev← search

// the find

cx-org/CombineX

★ 625 · Swift · MIT · updated Jul 2023

Open source implementation of Apple's Combine

CombineX is a from-scratch reimplementation of Apple's Combine framework that runs on Linux as well as Apple platforms, since Apple's own Combine is macOS/iOS-only. It's aimed at Swift server-side or cross-platform developers who want reactive-publisher code (or an existing Combine-based library) to also run on Linux.

The operator coverage is genuinely complete — Zip, CombineLatest, Debounce, Throttle, Retry, Share, Multicast, FlatMap, and the rest of the standard Combine surface are all implemented, not just the easy ones like Map and Filter. The project ships a companion ecosystem (CXShim, CXTest, CXExtensions, CXCocoa) that lets a library target Combine's API and swap between Apple's real implementation and CombineX underneath, which is a sensible way to keep downstream code portable. It also has a dedicated CXInconsistentTests suite split into FailingTests, SuspiciousBehaviour, and Versioning folders — the maintainers are explicitly tracking where their behavior diverges from Apple's real Combine instead of pretending parity is perfect.

The project has been dead since mid-2023 with no 1.0 ever cut — it's still on 0.4.x and the README itself admits it's 'still in early development,' which is a bad sign for anything you'd put in production. Swift 5.0 / Xcode 10.2 is listed as the minimum, with no mention of Swift 6 strict concurrency or actor isolation, which matters a lot for reactive state code written today. Those 'inconsistent' test buckets are a double-edged sword: SuspiciousBehaviour and FailingTests mean there are known, documented mismatches with real Combine that were never fixed, so porting existing Combine code to Linux via this library comes with real risk of subtle behavioral drift, not just missing operators.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →