ClojureScript

1.10.866 版本

2021年5月24日
ClojureScript 团队

我们很高兴宣布 ClojureScript 的新版本发布。如果您是 ClojureScript 的现有用户,请仔细阅读以下发行说明。

值得注意的变更

  • Closure Compiler 已更新至 v20210505

新的核心功能

and / or 优化作为编译器过程

ClojureScript 为 and / or 生成高效的 JavaScript 代码,在应用于布尔值时使用 && / ||。以前这些优化是直接由 and / or 宏实现的。在这个版本中,它们是在编译器过程中实现的。

将这些优化移动到代码生成阶段的结果是,由此产生的简化的 and / or 宏与代码遍历库(如 core.async)兼容。

支持扩展为 require 语句的宏

注意:此更改已在后续版本中恢复,因为后来发现(在许多测试之后,包括 ClojureScript Canary)存在许多无法正常工作的情况。它不会重新引入。

此版本允许在代码中存在扩展为 require 语句的宏,如下面的示例所示

(ns foo.bar
  (:require-macros [foo.baz :refer [macro-that-expands-to-require]]))
(macro-that-expands-to-require)

值得注意的修复

支持 IAssociative -contains-key? 协议检查在 contains?

IAssociative 协议定义了 -contains-key?,它有助于直接测试键是否在关联集合中。核心 contains? 函数已在此版本中进行了修改,以便对实现 IAssociative 协议的集合进行此类调用。

高阶检查数组

在此版本中,检查数组访问 功能已扩展到 agetaset 的高阶用法。例如,

(apply aget [(into-array [0]) 100])

如果此功能通过编译器配置启用,现在将在运行时触发警告或错误。

变更列表

有关 ClojureScript 1.10.866 中更新的完整列表,请参阅 变更

贡献者

感谢所有为 ClojureScript 1.10.866 做出贡献的社区成员

  • Arne Brasseur

  • Dieter Komendera

  • Dominic Monroe

  • Erik Assum

  • Wilker Lúcio