就在 Clojure 1.0 版行将发布之际,其触角又伸向了其它平台:
Clojure-contrib 现在包含了 Clojure 在不同平台上的两个实现。Clojure 的很大一部分是用 Clojure 编写的,因此其实现可以共享很多代码:
- ClojureCLR 是.NET 版的 Clojure
- ClojureScript 将 Clojure 的部分子集编译成了 Javascript,这为很多功能的实现敞开了大门,比如在应用的服务器端和客户端(浏览器)之间共享相同的 Clojure 代码
Clojure 用户也在用 JVM 库和框架对其进行测试,它专注于一台 JVM 上的并发处理而非分布式的处理。Terracotta 可以在一台机器或是分布式环境下绑定多个 JVM。 Paul Stadig 已经做了实验:让 Clojure 利用 Terracotta 的特性( JRuby 也进行了类似的实验)。最近的一份报告表明:
看起来让 Clojure 与 Terracotta 协同工作所面临的三大问题会在 Terracotta 一边解决,这也意味着我所编写的 Terracotta Integration Module 最终将变成一个配置文件了。
最后,新版 Clojure 将有如下变化:
合并最近增加的所有内容——完全的延迟序列,doseq/for 的:let 选项、用于对 local fns 进行相互递归的 letfn、同步观测、多参数的 set/union/difference/intersection、counted?、per- defmulti 继承、reader 宏的#_ ignore、future-calls、future 及 pcalls/pvalues、defmulti docstrings 及元数据、用于 multimethod 的 methods/prefers、对 atoms/refs/agents/vars/namespaces 统一的元数据处理、condp、release-pending-sends 以及支持 Applet 及 Android 的 AOT tweaks 等等。除此以外还会增加很多修复和增强。
其变化还包含了更新的延迟序列行为。凭借multimethod 反射支持,我们可以观测到分发值(dispatch value)和函数之间的映射(使用 methods 函数)。
查看英文原文: Clojure Roundup: Clojure on CLR and Javascript, Terracotta, New Release
评论