{"adoption": {"forks": 841, "observed_at": "2026-08-28T04:10:10.221488+00:00", "stars": 7954}, "canonical_url": "https://ross.abutalabs.com/products/go-datastructures", "card": {"archived": false, "artifact_type": "library", "description": "A collection of useful, performant, and threadsafe Go datastructures.", "domain": ["developer-tools"], "enriched": true, "function": ["concurrency"], "health_score": 92, "homepage": null, "language": "Go", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Workiva/go-datastructures"], "name": "Workiva/go-datastructures", "platform": ["go"], "pushed_at": "2026-07-31T20:09:08+00:00", "repo": "Workiva/go-datastructures", "stars": 7954, "tags": ["data-structures", "priority-queue", "fibonacci-heap", "interval-tree", "bitarray", "ring-buffer", "futures", "threadsafe", "lock-free", "algorithms"], "topics": [], "urls": [], "use_cases": ["threadsafe queue for goroutines in go", "fast priority queue implementation in Go", "interval tree for n-dimensional range collision queries", "broadcast an event to multiple listeners instead of a single channel consumer", "lock-free MPMC ring buffer to synchronize and shut down goroutines", "bitarray membership and intersection testing with uint64 identifiers", "heap with cheap decrease-key for Dijkstra or Prim algorithms"], "what_it_is": "A collection of useful, performant, and threadsafe data structures for Go, including augmented interval trees, bitarrays, futures, non-blocking queues, an MPMC ring buffer, and a Fibonacci heap. It emphasizes lock-free/CAS-based concurrency and benchmarks against standard alternatives like channels.", "when_to_avoid": ["You only need basic slices and maps already provided by the Go standard library", "You need bounded queues with backpressure, since these queues never block on send and grow unbounded", "You want generics-based, idiomatic modern Go APIs, as this library predates generics and relies on interfaces and uint64 identifiers"], "when_to_choose": ["You need concurrent, non-blocking queues that can outperform Go channels and never panic on send", "You need interval or range intersection queries in one or more dimensions", "You need to notify many goroutines of the same event, which channels handle poorly", "You need a Fibonacci or priority heap for graph algorithms or ordered scheduling"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/go-datastructures", "repo": "Workiva/go-datastructures", "role": "main", "score": 77}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "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:10.221488+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:10.221488+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:32:37.767160+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e9d76db429e75af2756e8cdb9f933b6ab9ec58f12ad32c1183bef901e185b81c", "fetched_at": "2026-08-28T04:10:10.221488+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Workiva/go-datastructures"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 95, "longevity": 100, "rhythm": 42}, "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": 4326, "days_push": 33, "days_rel": 306, "gap_med": 58, "n_releases_24m": 2}, "score": 77, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}