HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
clojure
core.async
Clojure2013–2025
clojure / core.async

core.async

Facilities for async programming and communication in Clojure

42Distinct people
49Mentions
1Explicit recommenders
2.1KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Facilities for async programming and communication in Clojure

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Actually that's the one thing that's driven me away from Clojure. I love the simplicity behind the language and it makes simple things actually simple - which isn't as trivial…

moonchrome used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 7:02:50 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year49 dated mentions

Observed mentions: 2013-06-28 21:40:31 UTC to 2025-02-23 21:58:48 UTC.

0510152013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 16 mentions; 3 submissions, 13 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20192020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 4 mentions; 2 submissions, 2 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC16313
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC808
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC707
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC202
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC202
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC101
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC303
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC101
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC422

From the project README

An excerpt from the repository, fetched Nov 12, 2026.

Read the project’s introduction
core.async A Clojure library providing facilities for async programming and communication. Documentation Rationale API docs Code walkthrough Presentations Rich Hickey on core.async Tim Baldridge on core.async from Clojure/conj 2013 (code). Tim Baldridge on go macro internals - part 1 part 2 Releases and Dependency Information This project follows the version scheme MAJOR.MINOR.COMMITS where MAJOR and MINOR provide some relative indication of the size of the change, but do not follow semantic versioning. In general, all changes endeavor to be non-breaking (by moving to new names rather than by breaking existing names). COMMITS is an ever-increasing counter of commits since the beginning of this repository. Latest release: 1.9.865 All Released Versions deps.edn dependency information: org.clojure/core.async {:mvn/version "1.9.865"} Leiningen dependency information: [org.clojure/core.async "1.9.865"] Maven dependency information: <dependency> <groupId>org.clojure</groupId> <artifactId>core.async</artifactId> <version>1.9.865</version> </dependency> Contributing Contributing to Clojure projects requires a signed Contributor Agreement. Pull requests and GitHub issues are not accepted; please use the core.async JIRA project to report problems or enhancements. To run the ClojureScript tests: lein cljsbuild once open script/runtests.html View JavaScript console for test results License Distributed under the Eclipse Public License, the same as Clojure. Copyright © Rich Hickey and contributors Changelog Release 1.10.870-alpha2 on 2026-04-06 ASYNC-275 (CLJ) Fixed flow/futurize to retain original behavior of propagating exceptions Release 1.10.864-alpha1 on 2026-03-19 Alpha release of core.async.flow - all APIs subject to change ASYNC-274 (CLJ) Fixed flow/futurize stopped returning a future on Executor change ASYNC-270 (CLJ) futurize with no :exec arg throws Release 1.9.865 on 2026-03-19 (accumulated changes since 1.8.741) Added datafy support for channels and buffers ASYNC-273 (CLJ) alts!! callbacks should dispatch on caller when possible ASYNC-272 (CLJ) Use JVM virtual threads in io-thread ASYNC-269 (CLJ) Noop callbacks dispatch on caller thread Release 1.9.859-alpha4 on 2026-03-16 ASYNC-273 (CLJ) alts!! callbacks should dispatch on caller when possible ASYNC-274 (CLJ) Fixed flow/futurize stopped returning a future on Executor change ASYNC-270 (CLJ) futurize with no :exec arg throws Release 1.9.847-alpha3 on 2026-03-11 Flow - first cut of broadcast system ASYNC-262 (CLJ) REVERTED from 1.9.829-alpha2 ASYNC-272 (CLJ) Use JVM virtual threads in io-thread ASYNC-269 (CLJ) Noop callbacks dispatch on caller thread Release 1.9.829-alpha2 on 2025-10-01 ASYNC-262 (CLJ) Use virtual threads when available for go and io-thread Release 1.9.808-alpha1 on 2025-04-28 First alpha release of core.async.flow - all APIs subject to change Added datafy support for channels and buffers Release 1.8.741 on 2025-04-07 ASYNC-234 (CLJ) Inactive alt handlers hold strong references to (potentially large) caller state after the alt completes Release 1.8.735 on 2025.04.02 Fix reflection warnings when using clojure.core.async.go-checking Release 1.8.730 on 2025.04.02, effective changes since last non-beta release: ASYNC-256 (CLJ) Add io-thread and System property clojure.core.async.executor-factory ASYNC-260 (CLJ) Remove now unused property clojure.core.async.pool-size ASYNC-255 (CLJ) alts guards against put of nil message on entry Release 1.8.726-beta3 on 2025.03.31 ASYNC-259 (CLJ) Update clojure.core.async.go-checking with new executor pools Release 1.8.718-beta2 on 2025.03.10 ASYNC-259 (CLJ) Implement clojure.core.async.go-checking with new executor pools ASYNC-260 (CLJ) Remove now unused property clojure.core.async.pool-size ASYNC-261 (CLJ) Put clojure.core.async/thread-macro-executor var back into place Release 1.8.711-beta1 on 2025.02.19 ASYNC-256 (CLJ) Add io-thread and System property clojure.core.async.executor-factory ASYNC-255 (CLJ) alts guards against put of nil message on entry Update tools.analyzer.jvm to 1.3.2 Release 1.7.701 on 2024.12.17 ASYNC-254 (CLJ) Completions for blocking ops can be directly delivered without enqueuing for dispatch ASYNC-252 (CLJ) Move go expander from ioc-macros to impl.go namespace ASYNC-246 (CLJ) Fix non-deterministic test Update deps to latest Release 1.6.681 on 2023.08.09 Revert ASYNC-248 (CLJ) due to the issues in ASYNC-249 Update to tools.analyzer.jvm 1.2.3 Release 1.6.673 on 2022.10.27 ASYNC-248 (CLJ) Dynamically load ioc analyzer only when needed Perf improvements in go macro compilation Note: as of this version, core.async requires Clojure 1.10 Release 1.5.648 on 2021.12.14 Update dep for tools.analyzer.jvm to 1.2.2 Release 1.5.644 on 2021.12.06 Update dep for tools.analyzer.jvm to 1.2.1 Release 1.5.640 on 2021.11.23 ASYNC-204 (both) On put to closed channel, commit handler to allow pending alt ops to be cleaned up ASYNC-235 (both) Fix ioc-macros/return-chan registers a callback with incorrect arity ASYNC-144 (both) Tweak docstring in pipeline-async ASYNC-238 (both) Fix a/map with empty chan vector hangs Release 1.4.627 on 2021.11.03 ASYNC-132 (CLJS) Can't close over locals in #js in go) ASYNC-117 (CLJS) let-bindings unavailable in #js literals in go-blocks Update dep for tools.analyzer.jvm to 1.2.0 Release 1.3.618 on 2021.04.26 ASYNC-237 (CLJS) timeout timers access array elements with out-of-bounds index Release 1.3.610 on 2020.07.24 Update dep for tools.analyzer.jvm to 1.1.0 Release 1.2.603 on 2020.05.11 Fix bug in cljs impl of onto-chan! in 1.2.598 Release 1.2.598 on 2020.05.11 Add onto-chan! and to-chan! to cljs core.async Release 1.2.593 on 2020.05.11 onto-chan use of go-loop incompatible with blocking colls, replace with onto-chan! and onto-chan!! Release 1.1.587 on 2020.04.01 Added :require-macros for the promise interop from 1.1.582 Release 1.1.582 on 2020.03.31 Bumped deps -
Read the full README on GitHub

What Hacker News says

1 sources
As the other commenter pointed out, this isn't restricted to strongly-typed functional languages. Clojure has core.async, which implements "goroutines" without any special support from the language. In fact, the `go` macro[1] is a compiler in disguise: transforming code into SSA form then constructing a state machine to deal with the "yield" points of async code. [2] core.async runs on both Clojure and ClojureScript (i.e. both JVM and JavaScript). So in some sense, ClojureScript had something like Golang's concurrency well before ES6 was published. [1] https://github.com/clojure/core.async/blob/master/src/main/c... [2] https://github.com/clojure/core.async/blob/master/src/main/c...
In OCaml Syntax Sucks (2016)

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.