{"adoption": {"forks": 520, "observed_at": "2026-08-28T04:08:32.322053+00:00", "stars": 4012}, "canonical_url": "https://ross.abutalabs.com/products/coobjc", "card": {"archived": false, "artifact_type": "library", "description": "coobjc provides coroutine support for Objective-C and Swift. We added await method、generator and actor model like C#、Javascript and Kotlin. For convenience, we added coroutine categories for some Foundation and UIKit API in cokit framework like NSFileManager, JSON, NSData, UIImage etc. We also add tuple support in coobjc.", "domain": ["mobile-development", "programming-languages", "developer-tools"], "enriched": true, "function": ["concurrency", "developer-tools"], "health_score": 20, "homepage": "https://github.com/alibaba/coobjc", "language": "Objective-C", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["alibaba/coobjc"], "name": "alibaba/coobjc", "platform": ["cpp"], "pushed_at": "2024-06-19T03:33:30+00:00", "repo": "alibaba/coobjc", "stars": 4012, "tags": ["coroutine", "async-await", "generator", "actor-model", "objective-c", "tuple", "gcd", "callback-hell", "ios", "swift", "mobile"], "topics": ["coroutine", "coroutine-library", "await", "await-promises", "actor-model", "actor", "generator", "tuple", "objective-c", "c", "arm64", "asm", "swift", "objc", "ios"], "urls": [], "use_cases": ["avoid callback hell in iOS async code", "use async/await in Objective-C", "write coroutine-based Swift before structured concurrency", "implement actor model on iOS", "use generators and yield in Objective-C", "convert completion-handler APIs to awaitable calls"], "what_it_is": "coobjc is a coroutine library for Objective-C and Swift on iOS, adding async/await, generators, actor model, and tuple support similar to C#, JavaScript, and Kotlin. It also provides coroutine-friendly categories for Foundation and UIKit APIs via the cokit framework.", "when_to_avoid": ["starting new Swift projects that can use built-in Swift structured concurrency (async/await)", "non-Apple platforms", "you need a library with frequent updates and broad community support"], "when_to_choose": ["maintaining or building Objective-C/Swift iOS apps stuck with callback-based async code", "you need generators or actor model in Objective-C", "targeting iOS versions before Swift async/await"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/coobjc", "repo": "alibaba/coobjc", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:32.322053+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:24:00.710309+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "930bcb367ad4fa40195fde6cf919dbb091ee29fcdd44f71eb610d49e68adf74e", "fetched_at": "2026-08-28T04:08:32.322053+00:00", "kind": "readme", "missing": false, "url": "https://github.com/alibaba/coobjc"}, {"content_hash": "ac762b79dd01f1c99ea37950e25bdcb1bf3a4030070d5f75ee3e4b9a4c364e10", "fetched_at": "2026-08-29T09:16:50.018504+00:00", "kind": "homepage", "missing": false, "url": "https://github.com/alibaba/coobjc"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2745, "days_push": 805, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}