Jolt:在 Chez Scheme 上运行 Clojure
来源:yogthos.net — 2026-07-02
📋 概述
Jolt 是一个全新的 Clojure 实现,目标平台不是 JVM 而是 Chez Scheme 。作者的核心动机在于解决 JVM Clojure 的两个致命短板:启动慢 和内存占用高 。Chez Scheme 作为宿主具有天然优势——同为 Lisp 家族,语义映射无缝;自带成熟的 JIT 编译器和为不可变数据结构优化过的分代垃圾回收器;编译产出原生二进制 而非依赖 Java 运行时。更令人兴奋的是,Jolt 不像其他 Clojure 方言那样需要重写生态:通过提供 Java 标准库 shim 层 (覆盖 java.io、java.time 等常用包),大量现有 Clojure 库可以直接运行。目前 Jolt 已支持 Ring、Reitit、Selmer、HoneySQL 等主流库构建完整的 Web 应用,nREPL 交互式开发流程完整保留,依赖管理使用 deps.edn。
🔑 核心要点
在 Chez Scheme 而非 JVM 上运行 Clojure,获得毫秒级启动 和原生二进制 部署能力,彻底解决「拖着一个 JVM 跑微服务」的矛盾。
Chez Scheme 的分代 GC 天然适配 Clojure 的不可变数据结构高频分配/回收模式,JIT 编译器可激进优化生成代码。
关键创新:Java 标准库 shim 层 ——通过映射 java.io、java.time、java.lang 等常用包,让现有 Clojure 库无需修改即可运行。
已通过完整测试套件的库包括 Ring、Reitit、Selmer、HoneySQL ,可搭建完整的 Ring Web 应用。Reitit 需要的 reitit.Trie Java 类通过 Jolt 库实现。
项目配套建设了 一致性规范(conformance spec) 、EBNF 语法和 RFC 文档,约 3500 条测试用例标注为跨平台通用(:common)或 JVM 特有(:jvm)。
支持 deps.edn 管理依赖和别名,甚至可以声明原生 C 依赖,在 Scheme 和 C 库基础上编写胶水代码暴露 Java API。
💡 金句
Hauling around a massive warmed up Java environment just to run a lightweight standalone service goes directly against that principle. ——拖着一个庞大的预热 Java 环境只为了运行一个轻量独立服务,完全违背了微服务的原则。
👍 0 ❤️ 点赞 👎 0 沉底
← 返回 Lobsters 首页