# clojure/core.async

Facilities for async programming and communication in Clojure

Repository: https://github.com/clojure/core.async
Canonical: https://ross.abutalabs.com/products/coreasync
Language: Clojure
License: EPL-1.0
License Family: copyleft
Last push: 2026-06-12T14:30:05+00:00

## Health v2 (maintenance only)
Score: 71/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 87, release rhythm 35, longevity 100
- inputs: {"age_days": 4858, "days_push": 82, "days_rel": null, "gap_med": null, "n_releases_24m": 0}
- flags: no_releases
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2051, forks 216 (observed 2026-08-28T04:06:09.182165+00:00)

## What it is
core.async is a Clojure/ClojureScript library providing facilities for asynchronous programming and communication, centered on channels and go blocks inspired by Communicating Sequential Processes. It lets developers coordinate concurrent work with message passing rather than shared mutable state.

## Use cases
- write asynchronous code in Clojure without callback hell
- communicate between concurrent tasks using channels
- build producer-consumer pipelines
- coordinate background jobs with go blocks
- handle event streams in ClojureScript frontends
- implement CSP-style concurrency patterns

## When to choose
- you are writing Clojure or ClojureScript and need structured async communication
- you want channel-based message passing instead of raw threads or callbacks
- you need a mature, well-documented concurrency library maintained by the Clojure core team

## When to avoid
- you are not working in Clojure or ClojureScript
- you need simple parallelism that core future/pmap already handles
- you require a general-purpose distributed message broker rather than in-process channels

## Facets
- artifact type: library
- maturity: stable
- function: concurrency, message-queue, developer-tools
- domain: developer-tools, programming-languages, microservices
- platform: jvm, cross-platform
- tags: clojure, clojurescript, channels, go-blocks, async-programming, communicating-sequential-processes

## Member repositories
- clojure/core.async (main) score 71

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:09.182165+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:57:30.777776+00:00, confidence not recorded.
  - readme: https://github.com/clojure/core.async (fetched 2026-08-28T04:06:09.182165+00:00, sha 124589ce16df)
- Data as of 2026-08-30T08:39:29.467469+00:00.
