
Rust 但 Lisp
一句话看懂:开发者 ThatXliner 发布了一个名为 rlisp 的工具,它允许开发者用 Lisp 风格的 S-表达式编写代码,然后直接编译成 Rust 的 .rs 文件。这不仅不是玩具,还完整保留了 Rust 的所有核心特性(所有权、生命周期、泛型等),让喜欢 Lisp 语法但需要 Rust 性能和内存安全的人获得了一种新选择。
事件核心:发生了什么
GitHub 用户 ThatXliner 开源了 rlisp,这是一个“透明的 S-表达式前端”。其工作流程是:开发者编写后缀为 .lisp 的文件(内部全部是括号包裹的 S-表达式),rlisp 将其转译为标准的 Rust 代码,再交由 rustc 进行类型检查、借用检查和优化。从项目展示的语法对照表来看,Rust 中的 fn add(x: i32, y: i32) -> i32 { x + y } 在 rlisp 中写作 (fn add ((x i32) (y i32)) i32 (+ x y));let x: i32 = 42; 变为 (let x i32 42)。此外,rlisp 支持自定义宏(使用 quasiquote 和 unquote-splicing)、循环(while/loop/for)、闭包、模块可见性和 pub 权限,以及一个 (rust "...") 转义机制,允许在需要时直接嵌入原生 Rust 代码。
为什么重要
这个项目在 Hacker News 上迅速升温,原因在于它触及了两个社区的交汇点:Rust 的严格性和 Lisp 的灵活性。对 Rust 而言,其语法在一些开发者看来冗余且不够表达力;对 Lisp 而言,缺乏一个现代、安全且具备工业级性能的后端。rlisp 提供了一个“不加运行时、不加垃圾回收”的中间层,解决了“想要 S-表达式的表达能力,又想要 Rust 的内存安全和零成本抽象”的需求。目前公开信息显示,该项目并未引入任何新的语义——它只是一个语法糖转换器,所有检查和优化仍然由 rustc 完成,这意味着不会带来额外的运行时开销或安全性降级。
对用户/开发者/创作者的影响
对 Rust 生态中的开发者,rlisp 可以作为学习辅助工具(用更简洁的 Lisp 形式理解 Rust 的所有权模型)或项目原型工具(快速写出 Lisp 风格的原型,再逐步迁移到原生 Rust 语法)。对 Lisp 社区用户,rlisp 提供了一个直接使用 Rust 标准库和生态(例如 use std::collections::HashMap)的桥梁。由于 rlisp 的编译目标是纯 Rust,最终产出的二进制文件与手写 Rust 完全一致,因此可以无缝集成到现有的 Cargo 工作流或 CI/CD 系统中。不过,该工具仍属于早期项目,尚未被大量生产环境验证,建议在关键项目中先做小范围测试。
值得关注的后续
- 宏生态的成熟度:rlisp 目前依赖 quasiquote 等传统 Lisp 宏系统,其调试和错误提示是否足够友好,将决定它是否能从“玩具”成长为“工具”。
- 兼容性边界:当涉及复杂的 Rust 宏(如
serde的派生宏)或unsafe代码时,rlisp 的(rust "...")转义是否能平滑处理,需等待更多社区实践。 - IDE 支持与学习成本:目前 rlisp 没有独立的 LSP 或语法高亮支持,这会影响开发者从现有 Rust 生态迁移的意愿。后续是否有人贡献相关插件,是扩散的关键变量。


