ClojureScript

1.10.741 版本發佈

2020 年 4 月 24 日
ClojureScript 團隊

我們很高興宣布 ClojureScript 的新版本。如果您是 ClojureScript 的現有使用者,請仔細閱讀以下版本說明,其中有兩個非常重要的變更。首先,ClojureScript 現在對整合諸如 Webpack 和 Metro 等熱門的 JavaScript 打包工具提供了大幅強化的支援。其次,由於 Google Closure Compiler 和函式庫的持續變更,我們決定捨棄對 Rhino 和 Nashorn REPL 的支援,以降低版本發佈時的維護負擔。

值得注意的變更

  • Closure Compiler 已更新至 v20200112

  • Closure Library 已更新至 0.0-20191016-6ae1f72f

  • 已移除 Rhino、Nashorn 和 GraalJS REPL

最新的 Closure Compiler 和函式庫版本包含許多重大變更,大幅增加了此版本的維護負擔。鑑於 Closure Compiler 和函式庫最近的變更速度,我們決定將精力集中在基本的瀏覽器和 Node.js REPL 上。我們也已開始豐富 CLI 和 REPL API,以簡化第三方針對這些 JavaScript 環境的努力。

新核心功能

JavaScript 打包工具支援

  • :target :bundle

  • :bundle-cmd

  • :target-fn

  • 新的 --install-deps CLI 選項

我們很高興宣布一項重要的新功能 - :bundle 目標。此目標會產生可直接饋送至諸如 Webpack 和 Metro(適用於 React Native)等熱門 JavaScript 打包工具的輸出。這不僅大幅簡化了 Node 模組的使用,函式庫建立者現在可以發佈依賴 Node 模組的 ClojureScript 成品,並確信使用者無論偏好哪種建置工具,都可以使用這些成品。

關於 :bundle 目標還有很多可說的,我們將很快發佈一篇單獨的文章和指南。

Iterator 支援

現在可以對實作 JavaScript Iterator 協定的任何物件呼叫 seq。此功能引入了一個新的核心謂詞 cljs.core/js-iterable?

例如,(js-iterable? (js/Set.))true,且

(-> (doto (js/Set.) (.add 1) (.add 2))
  seq)

現在可以產生 (1 2)

Symbol 支援

新增了一個新的核心謂詞 cljs.core/js-symbol?,並且修訂了列印,以允許列印符號。

cljs.user=> (js/Symbol "abc")
#object[Symbol(abc)]

警告改善

單元算術運算現在會在錯誤的引數上發出警告

cljs.user=> (+ "foo")
WARNING: cljs.core/+, all arguments must be numbers, got [string] instead at line 1 <cljs repl>

效能改善

  • re-patternre-matchesre-find 現在更快了

  • 程式碼產生能更好地促進協定靜態調度內聯

  • 瀏覽器 REPL 的快速初始提示

  • 將簡單的「Hello World」程式的輸出大小降至最低

變更清單

如需 ClojureScript 1.10.741 中完整更新清單,請參閱變更

貢獻者

感謝所有為 ClojureScript 1.10.741 做出貢獻的社群成員

  • Camilo Polymeris

  • Colin Kahn

  • Dieter Komendera

  • Dominic Monroe

  • Roman Liutikov