babashka を誰かに説明するとき JVM の Clojure の話から順を追って話すことが多いので簡単に羅列する。処理系によってはまったく知らないものも多いので、そういうのは ? が付いていたり空欄になっている。
名前 | 登場時期 | アウトプット | 実行環境 | 拡張子 | 用途 |
---|---|---|---|---|---|
Clojure | 2007 |
Java Byte code |
JVM (Java Virtual Machine) や GraalVM | .clj |
ウェブアプリケーションのサーバーサイド、データ分析など多岐。汎く Java の用途をカバー。 |
ClojureScript | 2011? |
Javascript コード |
Browser, Nodejs などの Javascript が動くところ | .cljs |
フロントエンド JS、Nodejs アプリケーションなど多岐。汎く Javascript の用途をカバー。 |
ClljureCLR | 2009? |
CIL コード |
.NET, mono |
.clj ? |
あんまり知らない。まだ触ったことがない。ごめんなさい。 |
ClojureDart | 2022? |
Dart コード |
今は Flutter をメインターゲットにしている | .cljd |
Flutter モバイルアプリ |
Babashka (SCI) | 2019 | スタンドアロンのバイナリ |
.bb , .clj
|
Shell script の用途をカバーするところからスタートして Make のようなタスクランナー機能も組み込みで実装されたり、用途は広がっているように見える。 | |
nbb (SCI) | 2021 |
Javascript コード? |
Nodejs | .nbb |
Nodejs で動く Babashka のようなの。処理系として Babashka と同じ SCI (Small Clojure Interpreter) が使われていて作者も同じ。 ClojureScript のライブラリが一部使えたりするようだけどまだ試したことがない。 |
-
もうメンテされてないようだが Ruby 環境で動く
Rouge
とか他にも色々ありそう。 -
Clojure Conj 2023 では LLVM で動いて C++ との interop が可能な Clojure Dialect
jank
のセッションがあった。 "How to build a Clojure dialect" by Jeaye Wilkerson - YouTube -
Python エコシステムとのからみでいえば Hy や libpython-clj がある。拡張子に言及すると
.cljc
もある。いずれも記事のタイトルのスコープとは違うので触れてない(というかさらに詳しくない)。
単に clojure と言った場合に、処理系を指すのか、エコシステムを全体的に指すのか、言語を指すのか色々な気がする。ただ、明示したい場合は JVM の Clojure とか ClojureScript とかより修飾したり正確な名前を用いるので、コミュニケーションで困ったことは自分はない。
参考: 日本での採用例 - https://github.com/athos/japanese-clojure-companies