Show HN:Wyzer 编程语言

一门新的、受 Rust 启发的系统语言 Wyzer 正在引发关注,因为它试图用线性/仿射类型、Perceus 风格的引用计数,以及“编舞式编程”来统一内存、线程和网络上的所有权规则,从而生成分布式代码。评论者对“无死锁、无 GC、多节点程序”的前景很感兴趣,但反复指出当前 README 和网站把这些核心思想的具体示例埋掉或省略了,让这门语言看起来像“没有借用检查器的 Rust”。许多人认为它很有潜力——尤其考虑到作者的年轻——但也认为在更清晰的文档、现实的分布式与重内存示例,以及对引用计数性能和循环处理等权衡的明确说明出现之前,还不适合正式采用。

整体反响

  • 许多人认为这个想法和雄心都令人印象深刻,尤其考虑到作者的年龄,而且很喜欢其清晰、明显不是 AI 写出来的语气。
  • 也有人把它看作“又一个类似 Rust 的语言”,并怀疑它最终不会超过一个个人项目。
  • 也有几个人明确表示,一旦他们深入了解,编舞(choreography)这个概念确实很有意思。

语法与文档

  • 语法被普遍描述为保守且熟悉(类似 C/Java/TypeScript/Rust),很多人对此持正面看法。
  • 多位评论者批评 README 和网站把新颖的想法(编舞式编程、Perceus 风格的内存模型)埋在基础语法和零散的 markdown 文件之后。
  • 他们提出的请求包括:
    • 更多且更有条理的示例(尤其是非平凡程序、数据结构和分布式场景)。
    • 一个 examples/ 目录。
    • 一个自顶向下的 README,先介绍独特特性。
  • 一些链接(文档网站)目前已损坏或仍处于“开发中”,这让早期使用者感到沮丧。

编舞式编程

  • 几个人表示在仓库里找不到任何具体示例;现有测试被描述为很简单。
  • 在线程中被解释后,编舞被描述为:
    • 一种用高层方式指定全局通信步骤的方法(把发送+接收作为一个原子构造)。
    • 编译器将这些“投影”成端点代码,从而为已编译程序按构造保证无死锁。
  • 引发的问题包括:
    • 在实践中如何保证无死锁,尤其是在复杂分布式系统里。
    • 与会话类型、MPI/PGAS 语言、架构感知编译器,以及现代 Web 框架中的“server functions”的比较。
    • 如何区分本地调用与远程调用,以及如何处理延迟/超时。

内存模型与性能

  • Wyzer 使用线性/仿射思想加上 Perceus 风格的引用计数;其定位是“无需追踪式 GC 的内存安全”。
  • 评论者提出:
    • 如何处理循环引用(泄漏、循环收集器,还是类型限制)。
    • 多个所有者是否会带来微妙的性能问题。
  • 一个较长的分支讨论了垃圾回收是否天生更慢/更不可预测,并对不同 GC 设计给出了细致的论证。

项目成熟度与定位

  • 有人建议这个项目展示得太早;核心文档、分布式示例和现实程序仍然缺失。
  • 建议强调:
    • “单一所有权规则”(内存/线程/网络),但也要澄清其限制。
    • Wyzer 能够发现或防止哪些具体问题,这些是 Rust 或其他系统所不能覆盖的。