2017 年 6 月 27 日
ClojureScript 团队
ClojureScript 1.9.660 版本包含一些激动人心的性能增强。部分改进加速了编译器本身,部分优化了编译器生成的代码,还有一些改进微调了数据结构和常见的操作。
通过两个小的改动,编译器现在可以更快地编译 ClojureScript 代码。用户反馈显示编译时间提高了 20–40%。
别忘了尝试 :parallel-build
,该选项默认未启用。这可以进一步将编译时间缩短一半。
:^const
Var 值现在被内联
sort
和 shuffle
现在快了 30-40%(得益于 to-array
优化)
apply
快了 200-400%
defmulti
现在在未命中情况下快了很多(200-1000%)
集合和映射的等价性快了 100-200%
reduce
在集合和映射上的速度快了约 100%
已经修复了许多正确性问题,其中一些问题使 ClojureScript 更加符合 Clojure 的行为。其他重要的修复涉及编译缓存;值得注意的是,定义 Spec 的代码现在在启用缓存时可以正常工作。
注意: 此版本为使用可变参数签名在协议方法实现中引入了一个新的警告。此类代码将继续在此版本中工作。请确保更新使用此构造的任何代码或库,以便协议实现匹配某些现有签名。
一个新的 resolve
宏 - 类似于 Clojure 的 resolve
,但在编译时执行
模块支持通配符命名空间
新的 Closure 语言选项 :es-2017
和 :es-next
一个新的编译器选项 :fn-invoke-direct
(对 :static-fns
的进一步优化扩展)
你可以使用 js/Promise
和更多 ES 特性,并让 Google Closure Compiler 生成 polyfills(:rewrite-polyfills
编译器选项)
你应该在你的代码上尝试一下这个版本,看看它的性能!我们希望你喜欢这个版本!
有关 ClojureScript 1.9.660 版本更新的完整列表,请参见 更改。