Clojure综述:CLR、Javascript、Terracotta上的Clojure及新发布

就在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

你可能感兴趣的:(Clojure综述:CLR、Javascript、Terracotta上的Clojure及新发布)