第16届 RacketCon 于2026年10月3日至4日在美国加州奥克兰 Oakstop 举行,线上通过 BoxCast 进行同步直播。长期以来,源自 Scheme 谱系的 Racket 常被工业界视为编程语言理论教学与高阶语法宏实验的学院派玩具。但本届大会释放出一个截然不同的信号:这门以语言导向编程闻名的语言,正试图剥离厚重的虚拟机与垃圾回收器,借助 LLVM 和代数子类型化理论,向硬件底层和类型推断盲区发起正面突围。

大会由2019年 ACM 图灵奖得主、RenderMan 首席设计者兼 Tableau 联合创始人 Pat Hanrahan 带来的演讲《On Notation》拉开序幕。然而真正引发工程界震动的,是西北大学博士生 Lucas Myers 公布的底层编译项目 Pille,以及印第安纳大学 Fred Fu 针对渐进类型宏推断难题给出的理论破解。

Pille 绕开运行时,Rhombus 宏系统直插单片机

Racket 长期面临一道难以逾越的物理高墙。依靠强大的宏扩展机制,开发者可以在数小时内构建一套领域特定语言,但这些程序最终都必须跑在带有自动内存管理和庞大运行时的 Racket VM 之上。这意味着它被彻底锁死在服务器和桌面环境,无法涉足资源极度受限的单片机与裸机嵌入式硬件。

Pille 剥离厚重运行时直接生成单片机机器码
Pille 剥离厚重运行时直接生成单片机机器码

这一僵局正在被打破。Lucas Myers 展示的新型低阶语言 Pille,把现代前端语言 Rhombus 的 enforestation 语法展开机制,完整嫁接到了一个全新的 LLVM 核心编译器之上。它不再依赖 Racket 虚拟机,而是将高阶元编程生成的指令直接降级为 LLVM IR,编译出高度紧凑的原生机器码。

架构转向:从重型运行时到裸机编译 经典 Racket 运行链路 S-表达式与宏展开 Racket VM 字节码 厚重运行时 + GC(阻绝微控制器) Pille 底层直译链路 Rhombus 现代语法与元编程 自定义核心 IR 转译 LLVM 无运行时原生代码(微控制器就绪)

虽然官方在2026年6月发布 Rhombus v1.0 时就曾简单提及 Pille 的概念,但此次 Myers 详细公开了其宏系统处理裸机寄存器映射和低延迟任务的机制。它证明了一件事:宏系统并不必然等同于高开销,表达力与底层硬件控制力在现代编译管线下可以共存。

剥离虚拟机不仅是为了运行速度,更是要把元编程推向硬件寄存器。

攻克十六年旧疾,代数子类型化补完类型推断

如果说 Pille 是向外拓展硬件边界,那么 Fred Fu 的研究则是向内修复生态割裂。在很长一段时间里,动态无类型的 Racket 宏与静态强类型的 Typed Racket 之间横亘着一道深沟。

代数子类型化算法弥合了无类型宏与类型推断(示意图)
代数子类型化算法弥合了无类型宏与类型推断(示意图)

问题出在宏展开后的局部类型推断上。当静态类型代码引用未标注类型的外部宏时,展开产物经常包含复杂的 lambda 表达式。现有的局部推断机制无法推导未经标注的匿名函数参数类型,导致类型检查器保守报错。十多年来,开发者被迫把大量优秀的无类型宏用静态语法重新手工编写一遍。

Typed Racket 类型推断瓶颈与理论突围 历史症结 (2010) 宏生成匿名 lambda 参数缺失类型标注 推断器直接保守报错 形式化补完 (2026.09) arXiv 预印本发布 Lean 语义可靠性证明 修正 Occurrence Typing 代数子类型化原型 双向合一自动推断 无需手动标注参数 终结重复造宏困局

印第安纳大学博士生 Fred Fu(Yuquan Fu)在2026年9月14日联合 Carlo Angiuli 与 Sam Tobin-Hochstadt 在 arXiv 发表论文,用 Lean 定理证明器形式化重构了 occurrence typing 的语义可靠性,修正了2010年 ICFP 经典理论中的缺陷。Fu 在本届大会展示的全新原型,通过引入代数子类型化与双向合一算法,成功推导了宏生成参数的类型边界。这意味着,困扰社区多年的宏重写成本将大幅降低。


宏大构想背后的工程现实与语法之争

技术理论的演进令人振奋,但从学术原型走向工程可用依然面临严苛考验。

实验阶段的编译器原型面临严苛的工业基准检验
实验阶段的编译器原型面临严苛的工业基准检验
  • 风险.代数子类型化在推断表达力上十分出色,但核心团队导师 Sam Tobin-Hochstadt 此前已在社区讨论中发出预警,该算法在大规模工业级项目中的编译开销与扩展能力尚未得到验证,且存在向后兼容隐患,合并进 Typed Racket 主干仍需漫长时间。

硬件层面的工程现实同样骨感。Pille 目前依然停留在学术验证阶段,官方尚未公开开源代码仓库,也缺乏诸如 ARM Cortex-M 架构下的二进制体积、RAM 开销与中断延迟基准测试。在 Rust、Zig 和 C 语言早已建立深厚壁垒的嵌入式领域,一门缺乏生态和成熟调试工具链的 DSL 编译器,很难短期内被系统工程师采纳。

更深层的分歧发生在文化层面。从传统 S-表达式的括号海洋,到缩进风格的 Rhombus,再到底层编译器 Pille,老牌 Scheme 阵营内部始终存在关于是否背离极简主义的审视。Matthew Flatt 在周日展示的新一代外部函数接口 ffi2,试图以静态化手段拉平与 Chez Scheme 的交互损耗,同样反映出这种向工程性能妥协的务实倾向。

  • 结论.Racket 生态正在经历三十年来最彻底的技术突围,若能在微控制器原型落地与自动化类型推断上交出合格答卷,它将为现代语言设计提供一份罕见的兼顾元编程与底层控制的演进样本。