Core.async
Facilities for async programming and communication in Clojure
Install / Use
/learn @clojure/Core.asyncREADME
core.async
A Clojure library providing facilities for async programming and communication.
Documentation
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
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
- Release 1.9.865 on 2026-03-19 (accumulated changes since 1.8.741)
- Release 1.9.859-alpha4 on 2026-03-16
- Release 1.9.847-alpha3 on 2026-03-11
- 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
- Fix reflection warnings when using
- Release 1.8.730 on 2025.04.02, effective changes since last non-beta release:
- Release 1.8.726-beta3 on 2025.03.31
- ASYNC-259 (CLJ) Update
clojure.core.async.go-checkingwith new executor pools
- ASYNC-259 (CLJ) Update
- Release 1.8.718-beta2 on 2025.03.10
- Release 1.8.711-beta1 on 2025.02.19
- Release 1.7.701 on 2024.12.17
- Release 1.6.681 on 2023.08.09
- 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
- Release 1.4.627 on 2021.11.03
- 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 - clojure 1.9, clojurescript 1.10.1.597, cljsbuild 1.1.7, tools.analyzer.jvm 1.0.0
- ASYNC-165 (CLJS) Fix inlining of let binding
- ASYNC-184 (CLJS) Port CLJ exception handling fixes
- ASYNC-228 (CLJS) Fix skip list for CLJS timers
- ASYNC-96 (CLJS) Fix full checking in fixed buffer
- ASYNC-230 (CLJS) Add js/Promise interop via core.async.interop
- Release 1.0.567 on 2020.02.18
- Release 0.7.559 on 2020.01.10
