首页 / 文章 / Rhombus 1.0 正式发布
← 返回
AI技术

Rhombus 1.0 正式发布

✍️ zhirenhun 📅 2026/6/24 👁 12 阅读 ⏱ 14 分钟
📄

Rhombus v1.0 发布

Rhombus 1.0 版本现已正式发布!

安装:
https://rhombus-lang.org/download.html

了解更多:
https://rhombus-lang.org/

为什么会有这门新语言?
https://rhombus-lang.org/goal.html

常见问题:
https://rhombus-lang.org/faq.html

示例程序:
见下文

Rhombus 主要贡献者:Mashfi Ishtiaque Ahmad, Taylor Allred, Nia Angle, Wing Hei Chan, Stephen De Gabrielle, Robert Bruce Findler, Jacqueline Firth, Matthew Flatt, Oliver Flatt, Kiran Gopinathan, Ben Greenman, Siddhartha Kasivajhula, Alex Knauth, Jay McCarthy, Lucas Myers, Alec Mills, Sam Phillips, Sorawee Porncharoenwase, Jens Axel Søgaard, 以及 Sam Tobin-Hochstadt。


Rhombus 的目标

现代编程语言在最重要的编程概念上已经形成了共识,包括词法作用域变量、闭包、对象、模式匹配和类型参数化。那么,为什么还需要一门新的编程语言?

除了这些基础特性之外,还有太多优秀的编程构造思想,根本无法全部塞进任何一门语言的规范中。此外,特定领域也受益于量身定制的语言支持。语言可扩展性有助于平衡两个相互竞争的目标:语言规模的可管理性,与在广泛任务中的适用性。

许多较新的语言都包含宏系统来实现可扩展性,但其他宏系统并未达到 Lisp 传统(包括 Racket)中宏的表达力和流畅性。同时,这种表达力很难从 Lisp 极简的括号化符号中剥离出来。

Rhombus 的设计目标是:

  • 日常用途下平易近人、易于使用(不需要宏的场合),这在一定程度上意味着采用传统语法;
  • 像 Racket 一样可扩展,同时让 Racket 最先进的机制更加一致、更易于广大用户使用。

常见问题

Rhombus 是什么样的编程语言?

Rhombus 是一门通用的、函数式的、可扩展的编程语言,具有:良好的性能、丰富的文档、实用的库。它是一门动态语言,提供交互性和灵活性,同时也具备静态和抽象强制机制,能够从小型脚本扩展到大型系统。

不是已经有这样的语言了吗?

虽然我们认为 Rhombus 有很多独特的小特性,包括使用省略号(…)的紧凑重复语法,以及一套具有良好渐进复杂度的默认函数式数据结构,但最大的不同在于可扩展性。请参阅 Rhombus 的目标。

它快吗?

这里有一些基准测试数据

如何开始?

请参阅入门指南

必须使用 DrRacket 吗?

DrRacket 编程环境是最容易上手的途径,但也可以使用 VSCode 的 Magic Racket 扩展,或者 Emacs 的 Racket 模式(其 racket-hash-lang-mode 主模式)。

Rhombus 和 Racket 是什么关系?

Rhombus 构建在 Racket 之上,依赖许多 Racket 工具,包括 DrRacket 编程环境和 raco 命令行工具套件。大致来说,两者的关系类似于 Elixir 与 Erlang,或者 Kotlin 与 Java。

换个角度说,Rhombus 就是 Racket——因为 Racket 本身就是一个多语言生态系统,只需用 #lang rhombus 替换 #lang racket 启动 Racket 模块,它就变成了 Rhombus 模块。而 Rhombus 的目标正是推动 Racket 的多语言能力向前发展,实现更多构建在 Racket 和 Rhombus 之上的语言和方言。

Rhombus 仅仅是用不同语法的 Racket 吗?

新的语法体现了 Rhombus 的主要目标,但 #lang rhombus 相比 #lang racket 还有多方面的改进:更好的预定义数据结构(尤其是列表)、全新的类系统、无处不在的模式匹配、可扩展静态信息(位于契约和类型之间的新维度)、分层命名空间组织,等等。

这些常规语言改进本可以在基于 S-表达式的 Racket 方言中实现,但 Rhombus 的语言-语法协同设计打开了更多可能性,产生了大于部分之和的整体效果。

Rhombus 是去掉 S-表达式的 Racket,所以语法不是同像性的,对吗?

你好,Lisp 爱好者!Rhombus 采用双院制语法,其中与 S-表达式层对应的是灌木丛记法(shrubbery notation)。这是 Rhombus 宏和元编程方法的重要组成部分。你可能会对这个元循环解释器感兴趣。

Rhombus 只对可扩展语言、领域特定语言(DSL)和宏有用吗?

使用 Rhombus 并不一定要写宏,因为 Rhombus 在基础语言层面已经提供了你所期望的一切(可能还更多)。宏可扩展性使得丰富的基础语言成为可能,这可以被视为实现细节或学术关注。如果你喜欢函数式、动态的语言,并对现代综合方案感兴趣,Rhombus 可能适合你。

宏真的是个好主意吗?

Rhombus 的设计反映了一个信念:元编程是软件构造的基础,而最有效的元编程方法是将其与通用语言集成。

具体来说,在通用语言中容纳领域特定语言(DSL)可以避免一些常见的 DSL 陷阱,例如:难以集成到应用中的孤立语言,或者为不可避免需要演化的 DSL 添加的半成品抽象构造。同时,认真对待元编程不仅有益于 DSL,也有益于文档、分析和工具支持等元编程任务。

"宏"一词引发各种含义和联想。Rhombus 所采取的方法可以更精确地描述为编译时元编程开放编译器 API,但其根源在于 Lisp 风格的宏。

Rhombus 是学术语言、研究语言还是教学语言?

Rhombus 根植于学术界,但它不是教学语言,也不仅仅是研究语言。它旨在用于生产环境

目前 Rhombus 还无法提供最广泛使用语言所拥有的丰富库资源。但作为 Racket 的衍生,它拥有持续存在和演化所需的资源和社区。用户应该期待与 Racket 数十年来所提供的一致稳定性、一致性和支持。

在自主编程代理时代,我们还需要新的编程语言或 DSL 吗?

谁知道呢?

AI 编程早期的一个常见预测是,新的语言将会消亡——因为 AI 只能使用训练数据中流行的语言。但这一预测并未成真。截至 2026 年 5 月(甚至在 Rhombus 1.0 之前),编程代理已经相当擅长编写地道的 Rhombus 代码。也许好的文档有帮助。

至于 DSL,似乎有可能:提高编程中的交流层次,对人来说是好事情,对自主编程代理也是好事情,对它们之间的对话同样是好事。如果是这样,我们将需要具有更好 DSL 支持的语言,而这正是 Rhombus 的目标。


Rhombus 示例程序

Rhombus 官方网站 https://rhombus-lang.org/ 包含一个简短示例的轮播展示。

至于更大规模和真实的示例项目,现在还处于早期阶段,但 Rhombus 的贡献者已经用 Rhombus 完成了一些任务——当然也包括 Rhombus 发行版中的库。

Pille 是一门构建在 Rhombus 之上的新语言。它利用 Rhombus 的语言构建机制,同时使用 LLVM 作为后端。这是一个元编程密集型的例子。

Economancy 是一款桌面游戏,包含用 Rhombus 实现的裁判、玩家程序和最小的 GUI 界面,作为函数式编程课程的一部分。它展示了使用 Rhombus 进行日常函数式编程的能力。

rhombus-html-lib 是 Rhombus 附带的包。它提供了一个完整的 HTML 5 解析器,按照 HTML 5 规范由 AI 实现。该实现的风格偏 Java 式和命令式,对 Rhombus 代码来说并不理想,性能也有提升空间,但它展示了 Rhombus 在较大规模项目中的应用。

网络与安全课程的幻灯片全部用 Rhombus 及其动画图片库 pict 实现。幻灯片代码虽然不典型,且作为最早期的 Rhombus 代码之一并非最现代,但它是一个庞大的代码库。

pict-demo 更进一步展示了 pict 和元编程。仓库中包含了一篇即将在 ICFP'26 上发表关于 pict 库的论文草稿。运行示例涉及对求值步骤进行动画展示,实现使用了一个 eval_tree.rhm 库,将程序展开为求值与动画组件的组合。

Shplait 是另一个教学工具:一门将 ML 的类型系统与 Rhombus 语法相结合的语言。它用于犹他大学的编程语言课程。

rhombus-draw-lib 是另一个 Rhombus 附带的包。它封装并改进了 racket/draw 库,实现了 Rhombus 版本的 draw。像其他一些 Rhombus 包一样,它展示了复用 Racket 库的方法。


原文:https://blog.racket-lang.org/2026/06/rhombus-v1.0.html

——

🧑‍💻

zhirenhun

一个热爱技术的程序员,喜欢分享前沿AI知识和开发经验。

编程语言 Racket Rhombus 语言设计
← 上一篇
艾尔登法环的低技术AI

📌 相关推荐

📄
艾尔登法环的低技术AI
2026/6/24
提示注入的理论基础:角色混淆(Prompt Injection as Role Confusion)
2026/6/23
GLM-5.2 本地部署指南
2026/6/23
← 返回文章列表