{"adoption": {"forks": 357, "observed_at": "2026-08-28T04:10:41.976204+00:00", "stars": 10427}, "canonical_url": "https://ross.abutalabs.com/products/conc", "card": {"archived": false, "artifact_type": "library", "description": "Better structured concurrency for go", "domain": ["developer-tools"], "enriched": true, "function": ["concurrency"], "health_score": 74, "homepage": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go", "language": "Go", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["sourcegraph/conc"], "name": "sourcegraph/conc", "platform": ["go"], "pushed_at": "2026-07-03T18:37:48+00:00", "repo": "sourcegraph/conc", "stars": 10427, "tags": ["goroutines", "structured-concurrency", "waitgroup", "worker-pool", "panic-handling", "algorithms"], "topics": ["go", "golang", "concurrency", "goroutines"], "urls": [], "use_cases": ["run goroutines with panic propagation instead of crashing the process", "limit concurrency of parallel tasks with a worker pool", "collect results from concurrent tasks in Go", "replace sync.WaitGroup with a safer version", "handle errors from concurrent goroutines cleanly", "avoid goroutine leaks and deadlocks from panics"], "what_it_is": "conc is a Go library providing better structured concurrency primitives, including a panic-safe WaitGroup and concurrency-limited task pools. It reduces boilerplate and makes concurrent Go code safer by propagating panics and preventing goroutine leaks.", "when_to_avoid": ["your project is not written in Go", "you need async/await-style structured concurrency in another language", "your concurrency needs are trivial and sync.WaitGroup suffices"], "when_to_choose": ["you write concurrent Go code and want panic-safe goroutine management", "you need bounded-concurrency task execution or result collection", "you want less boilerplate than the standard library for common concurrency patterns"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/conc", "repo": "sourcegraph/conc", "role": "main", "score": 62}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "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:10:41.976204+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:41.976204+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:19:02.210686+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "712cf6bc8d8ae0cfd3250705883cffbe24c80946e1af9a8b2fb17477b92f9f22", "fetched_at": "2026-08-28T04:10:41.976204+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sourcegraph/conc"}, {"content_hash": "0085724361b6d533128839c947c66fa1b805856974ac20964df41eb020397bfd", "fetched_at": "2026-08-29T08:18:14.031313+00:00", "kind": "homepage", "missing": false, "url": "https://about.sourcegraph.com/blog/building-conc-better-structured-concurrency-for-go"}, {"content_hash": "926125f12098a4565b11e6d43174aa6ed49bcae687e9b9b6b59d01163e714813", "fetched_at": "2026-08-29T08:18:14.043681+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/docs"}, {"content_hash": "447aea87396949d4dca50fa0df40629835cb335dc0ff110dcbddfafd160e22bd", "fetched_at": "2026-08-29T08:18:14.041273+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/changelog"}, {"content_hash": "6246d788642acfe0685760f2c4c0a745e9ad2df0192a693309a51eed9d35c066", "fetched_at": "2026-08-29T08:18:14.045523+00:00", "kind": "site_page", "missing": false, "url": "https://sourcegraph.com/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 90, "longevity": 95, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1339, "days_push": 61, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 62, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}