ClojureScript

1.10.741 リリース

2020年4月24日
ClojureScript チーム

ClojureScript の新しいリリースを発表できることを嬉しく思います。ClojureScript の既存ユーザーの方は、以下のリリースノートをよくお読みください。2つの非常に重要な変更点があります。まず、ClojureScript は Webpack や Metro などの一般的な JavaScript バンドルツールとの統合を大幅に強化したサポートを提供するようになりました。次に、Google Closure Compiler と Library の継続的な変更により、リリースに伴うメンテナンス負担を軽減するために、Rhino と Nashorn REPL のサポートを中止することにしました。

注目すべき変更点

  • Closure Compiler が v20200112 に更新されました

  • Closure Library が 0.0-20191016-6ae1f72f に更新されました

  • Rhino、Nashorn、および GraalJS REPL が削除されました

最新の Closure Compiler と Library のリリースには、多くの破壊的な変更が含まれており、このリリースのメンテナンス負担が大幅に増加しました。Closure Compiler と Library の最近の変更ペースを考慮し、私たちは主要なブラウザと Node.js REPL に注力することにしました。また、これらの JavaScript 環境をターゲットとするサードパーティの取り組みを容易にするために、CLI と REPL API の強化も開始しました。

新しいコア機能

JavaScript バンドラーのサポート

  • :target :bundle

  • :bundle-cmd

  • :target-fn

  • 新しい --install-deps CLI オプション

重要な新機能である :bundle ターゲットを発表できることを嬉しく思います。このターゲットは、Webpack や Metro (React Native 用) などの一般的な JavaScript バンドラーに直接フィードできる出力を生成します。これにより、Node モジュールの使用が大幅に容易になるだけでなく、ライブラリ作成者は Node モジュールに依存する ClojureScript アーティファクトを配布できるようになり、ユーザーが使用するビルドツールに関係なく、これらのアーティファクトを確実に使用できるようになります。

:bundle ターゲットについては、もっと多くのことが言えるので、近日中に別の投稿とガイドをリリースする予定です。

イテレータのサポート

JavaScript の Iterator プロトコルを実装する任意のオブジェクトで seq を呼び出すことができるようになりました。この機能に伴い、新しいコア述語 cljs.core/js-iterable? が導入されました。

たとえば、(js-iterable? (js/Set.))true であり、

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

(1 2) を生成できるようになりました。

シンボルのサポート

新しいコア述語 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-matches、および re-find が高速化されました

  • コード生成により、プロトコルの静的ディスパッチインライン化が容易になりました

  • ブラウザ REPL の最初のプロンプトが高速化されました

  • 簡単な「Hello World」プログラムの出力サイズが最小化されました

変更リスト

ClojureScript 1.10.741 の更新の完全なリストについては、変更 を参照してください。

貢献者

ClojureScript 1.10.741 に貢献してくれたすべてのコミュニティメンバーに感謝します

  • Camilo Polymeris

  • Colin Kahn

  • Dieter Komendera

  • Dominic Monroe

  • Roman Liutikov