ClojureScript 迎来 Async/Await
摘要
ClojureScript 1.12.145 通过 ^:async 提示引入原生异步函数支持,实现与 JavaScript async/await 的直接互操作,无需额外依赖。
暂无内容
查看缓存全文
缓存时间: 2026/05/08 10:41
# ClojureScript - 1.12.145 版本发布
来源:https://clojurescript.org/news/2026-05-07-release
*2026年5月7日* *ClojureScript团队*
我们很高兴地宣布 ClojureScript 的新版本发布。如果您是 ClojureScript 的现有用户,请仔细阅读以下发布说明。
## https://clojurescript.org/news/2026-05-07-release#_async_functions 异步函数
既然 ClojureScript 现在面向 ECMAScript 2016(https://clojurescript.org/news/2025-11-24),我们可以谨慎地选择新的互操作增强方向。从这一版本开始,为函数添加 `^:async` 提示将使 ClojureScript 编译器生成 JavaScript 异步函数(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function):
``
(refer-global :only '[Promise])
(defn ^:async foo [n]
(let [x (await (Promise/resolve 10))
y (let [y (await (Promise/resolve 20))]
(inc y))
;; not async
f (fn [] 20)]
(+ n x y (f))))
``
这也适用于测试:
``
(deftest ^:async defn-test
(try
(let [v (await (foo 10))]
(is (= 61 v)))
(let [v (await (apply foo [10]))]
(is (= 61 v)))
(catch :default _ (is false))))
``
在上一次 Clojure 调查中,异步函数支持在 JavaScript 互操作方面最受 ClojureScript 社区期待。这一增强消除了在与现代浏览器 API 和流行库进行常见交互时引入额外依赖的必要性。
完整的修复、更改和增强列表请参见此处(https://github.com/clojure/clojurescript/blob/master/changes.md#1.12.145)
## https://clojurescript.org/news/2026-05-07-release#_contributors 贡献者
感谢所有为 ClojureScript 1.12.145 做出贡献的社区成员:
- Michiel Borkent
相似文章
Clojure 速度几乎媲美 C(需借助一些优化)
本文详细介绍了 Clojure 如何借助 JVM 的 Vector API 和精心优化,在 3D 压力测试中达到接近 C 的帧率(仅差 20%),展示了动态语言在热循环中也能接近底层性能。
如果C#和JavaScript允许我多次等待Windows Runtime异步操作,为什么C++/WinRT不行?
Raymond Chen解释了为什么C++/WinRT不像C#、JavaScript和Python那样允许多次等待异步操作,其原因是没有标准库的task类型,以及不为你未使用的功能付费的原则。
混合视觉与文本代码
本文介绍了Hybrid ClojureScript,一种允许开发者混合视觉与文本语法用于领域特定表达式的编程语言,保持了可组合性和静态推理能力。
异步编程的承诺与现实
深入剖析异步编程模型的演进——从回调到 Promise——揭示每一轮迭代如何解决先前的资源与性能问题,同时带来新的易用性挑战。
AsyncTool:多任务场景下异步函数调用能力评估
本文介绍了AsyncTool,一个用于评估基于LLM的智能体在多任务场景下具有延迟工具响应的异步函数调用能力的基准测试。它提出了面向效率的度量指标,并识别了当前工具使用智能体的关键失败模式。