[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7071":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":15,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":9,"pushedAt":9,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":15,"starSnapshotCount":15,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},7071,"OpenCombine","OpenCombine\u002FOpenCombine","Open source implementation of Apple's Combine framework for processing values over time.","",null,"Swift",2794,222,41,16,0,59.04,"MIT License",false,"master",[21,22,23,24,25,26,27,28,29,30,31,32,33],"cocoapods","combine","ios","linux","macos","reactive-programming","swift","swift-package-manager","tvos","wasm","watchos","webassembly","windows","2026-06-12 04:00:32","# OpenCombine\n[![codecov](https:\u002F\u002Fcodecov.io\u002Fgh\u002FOpenCombine\u002FOpenCombine\u002Fbranch\u002Fmaster\u002Fgraph\u002Fbadge.svg)](https:\u002F\u002Fcodecov.io\u002Fgh\u002FOpenCombine\u002FOpenCombine)\n![Language](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FSwift-5.0-orange.svg)\n[![Cocoapods](https:\u002F\u002Fimg.shields.io\u002Fcocoapods\u002Fv\u002FOpenCombine?color=blue)](https:\u002F\u002Fcocoapods.org\u002Fpods\u002FOpenCombine)\n\nOpen-source implementation of Apple's [Combine](https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fcombine) framework for processing values over time.\n\nThe 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.\n\n| **CI Status** |\n|---|\n|[![Compatibility tests](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fcompatibility_tests.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fcompatibility_tests.yml)|\n|[![macOS](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fmacos.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fmacos.yml)|\n|[![Ubuntu](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fubuntu.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fubuntu.yml)|\n|[![Windows](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fwindows.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fwindows.yml)|\n|[![Wasm](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fwasm.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine\u002Factions\u002Fworkflows\u002Fwasm.yml)|\n\n\n### Installation\n`OpenCombine` contains three public targets: `OpenCombine`, `OpenCombineFoundation` and `OpenCombineDispatch` (the fourth one, `COpenCombineHelpers`, is considered private. Don't import it in your projects).\n\nOpenCombine itself does not have any dependencies. Not even Foundation or Dispatch. If you want to use OpenCombine with Dispatch (for example for using `DispatchQueue` as `Scheduler` for operators like `debounce`, `receive(on:)` etc.), you will need to import both `OpenCombine` and `OpenCombineDispatch`. The same applies to Foundation: if you want to use, for instance, `NotificationCenter` or `URLSession` publishers, you'll need to also import `OpenCombineFoundation`.\n\nIf you develop code for multiple platforms, you may find it more convenient to import the\n`OpenCombineShim` module instead. It conditionally re-exports Combine on Apple platforms (if\navailable), and all OpenCombine modules on other platforms. You can import `OpenCombineShim` only\nwhen using SwiftPM. It is not currently available for CocoaPods.\n\n##### Swift Package Manager\n###### Swift Package\nTo add `OpenCombine` to your [SwiftPM](https:\u002F\u002Fswift.org\u002Fpackage-manager\u002F) package, add the `OpenCombine` package to the list of package and target dependencies in your `Package.swift` file. `OpenCombineDispatch` and `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](https:\u002F\u002Fgithub.com\u002Fapple\u002Fswift-evolution\u002Fblob\u002Fmain\u002Fproposals\u002F0273-swiftpm-conditional-target-dependencies.md).\n\n```swift\ndependencies: [\n    .package(url: \"https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine.git\", from: \"0.14.0\")\n],\ntargets: [\n    .target(\n        name: \"MyAwesomePackage\",\n        dependencies: [\n            \"OpenCombine\",\n            .product(name: \"OpenCombineFoundation\", package: \"OpenCombine\"),\n            .product(name: \"OpenCombineDispatch\", package: \"OpenCombine\")\n        ]\n    ),\n]\n```\n\n###### Xcode\n`OpenCombine` can also be added as a SwiftPM dependency directly in your Xcode project *(requires Xcode 11 upwards)*.\n\nTo do so, open Xcode, use **File** → **Swift Packages** → **Add Package Dependency…**, enter the [repository URL](https:\u002F\u002Fgithub.com\u002FOpenCombine\u002FOpenCombine.git), choose the latest available version, and activate the checkboxes:\n\n\u003Cp align=\"center\">\n\u003Cimg alt=\"Select the OpenCombine and OpenCombineDispatch targets\" \n\tsrc=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F16309982\u002F67618468-bd379f80-f7f8-11e9-917f-e76e878a1aee.png\" width=\"70%\">\n\u003C\u002Fp>\n\n##### CocoaPods\nTo add `OpenCombine` to a project using [CocoaPods](https:\u002F\u002Fcocoapods.org\u002F), add `OpenCombine` and `OpenCombineDispatch` to the list of target dependencies in your `Podfile`. \n\n```ruby\npod 'OpenCombine', '~> 0.14.0'\npod 'OpenCombineDispatch', '~> 0.14.0'\npod 'OpenCombineFoundation', '~> 0.14.0'\n```\n\n#### Debugger Support\n\nThe file `opencombine_lldb.py`  defines some `lldb` type summaries for easier debugging. These type summaries improve the way `lldb` and Xcode display some OpenCombine values.\n\nTo use `opencombine_lldb.py`, figure out its full path. Let's say the full path is `~\u002Fprojects\u002FOpenCombine\u002Fopencombine_lldb.py`. Then the following statement to your `~\u002F.lldbinit` file:\n\n    command script import ~\u002Fprojects\u002FOpenCombine\u002Fopencombine_lldb.py\n\nCurrently, `opencombine_lldb.py` defines type summaries for these types:\n\n- `Subscribers.Demand`\n- That's all for now.\n\n### Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n","OpenCombine 是 Apple 的 Combine 框架的一个开源实现，用于处理随时间变化的值。该项目使用 Swift 语言编写，提供了与 Apple 原生框架兼容、可靠且高效的替代方案，并支持 macOS 10.15 和 iOS 13 之前的苹果操作系统，以及 Linux、Windows 和 WebAssembly 等跨平台环境。其核心功能包括事件流处理、错误处理和取消操作等，适用于需要在不同平台上进行响应式编程的应用场景，特别是当目标平台不支持原生 Combine 框架时。此外，通过 Swift Package Manager 可以方便地将 OpenCombine 集成到项目中。",2,"2026-06-11 03:10:24","top_language"]