Jolt: セルフホスト型Clojureコンパイラ、Schemeをターゲットに
JoltはSchemeを出力するセルフホスト型Clojureコンパイラで、ChezまたはGambit上で動作し、スタンドアロンバイナリを生成します — JVMは不要です。真の並行処理、永続データ構造、Clojureのセマンティクスを新しいランタイムにもたらします。
Joltは、Clojureのソースコードをホストに依存しないIRに解析し、Schemeを出力する新しいコンパイラです。Chez Scheme上でネイティブに動作し、JavaScriptにコンパイルする場合はGambit上で動作します。コンパイラ自体はClojureで書かれており、自己コンパイルします — 自己ホスティング設計は、その成熟度を証明しています。
目玉機能はjolt buildで、プロジェクト(ランタイム、標準ライブラリ、アプリ、依存関係)を単一の自己完結型実行ファイルに事前コンパイルします。実行にChezもJVMもソースも不要です。これは、通常JVMとクラスパスを必要とする従来のClojureデプロイのストーリーからの大きな転換です。
並行処理は共有ヒープ上のOSスレッドで処理され、future、promise、agent、pmapのJVMセマンティクスに一致します。core.asyncはチャネルとgoブロックを提供するため、Clojureの非同期モデルはそのまま引き継がれます。
数値タワーは完全に実装されています。正確な整数、bignum、正確な有理数、flonum倍精度浮動小数点数。=はカテゴリを認識し、==はカテゴリ間で値を比較します。永続データ構造には、ベクタ用の32ウェイトライ、consリスト、Clojureの値セマンティクスを持つHAMTマップ/セットが含まれます。トランジェントは実際の可変スクラッチコレクションです。
Clojure互換性は広範です。遅延/無限シーケンス、トランスデューサ、分割、マルチメソッド、プロトコル/レコード、メタデータ、名前空間、ランタイムeval、完全なリーダー。これはおもちゃのサブセットではありません — 実世界のClojureコードを目指しています。
Joltは、特にJVMのオーバーヘッドなしにClojureの表現力を求める人々にとって、Clojureのデプロイ方法を変革する可能性のある野心的なプロジェクトです。Clojureエコシステムに関わるすべての人にとって注目に値します。
実行にChezもJVMもソースも不要 — Joltの事前コンパイルは単一の自己完結型実行ファイルを生成します。
| 機能 | Jolt | Clojure (JVM) |
|---|---|---|
| ランタイム | Chez Scheme / Gambit (JS) | JVM |
| バイナリ出力 | スタンドアロン実行ファイル | JAR + JVM必須 |
| 並行処理 | OSスレッド、共有ヒープ | JVMスレッド、共有ヒープ |
| 永続データ | 32ウェイトライ、HAMT | PersistentHashMapなど |
| エコシステム | 限定的、成長中 | 成熟、広範 |
ディスカッション
0 件のコメント
最初のコメントを投稿しましょう。