【Rust日报】2026-09-20 Valen:带线性类型的更高层 “Rust++” 语言
内容提要
Valen 重启 Vale 路线,探索线性类型、group 借用检查与 Rust 互操作,仍属实验;Bend 2 采用仿射类型、证明系统与并行运行时,编译到 C;posixutils 0.9.0 完成 POSIX.1-2024 符合性审计;tokio_rcu 0.2 为 Tokio 提供 RCU,在读多写少场景下显著加速读路径。
延伸解读
Valen 的跨语言泛型挑战
Valen 试图在保留 Rust 生态的同时引入线性类型等特性,但跨语言泛型是核心难点。C ABI 不支持泛型,而许多 Rust API 依赖泛型与 trait。Valen 通过 rustc_driver::run_compiler 将 rustc 作为库运行,在回调中查询依赖并协作单态化,这比外部调用 rustc 更深入。目前线性类型已有,但无法声明既有 Rust 类型为线性;group borrowing 可跨边界检查(闭包除外);跨边界 struct 和实现 Rust trait 有限制;世代引用暂时关闭。项
Bend 2 的证明系统与 AI 协作
Bend 2 采用仿射类型,无需借用检查,编译到接近 C 的本地代码,并支持多核乃至 GPU 扩展。其类型检查同时是证明检查,强调秒级完成,便于 AI 每次改动后快速验证。通过 LAWS.bend 和 PROOF.bend,开发者可声明不可违反的性质,无法通过证明的改动不能合入。示例中,AI 修改棋盘规则时被“任意走子序列都无法获胜”的定律挡住。语言仍在快速演进,适合后端场景,Linux/macOS 优先。
posixutils 0.9.0 的 POSIX 符合性进展
posixutils-rs 0.9.0 完成了 POSIX.1-2024 条款审计与修复,约 1,009 次提交、70 个 PR,其中 C 编译器相关改动约占三分之一。亮点包括:pcc 收敛为只编译 C17 的 c17;make 支持 VPATH、内建推理规则、% 模式规则、$(eval) 等;pax 承接 tar/cpio 前端;man 换成 roff/mdoc 解释器;sh/tr/diff 等改为字节向文本处理,非 UTF-8 文件名不再中断。工作区依赖从 159 降到 102 个 crate,并增加 aarc
tokio_rcu 0.2 的读路径加速与约束
tokio_rcu 为 Tokio 提供 RCU 原语,适合读多写少的共享状态。核心是 synchronize_rcu 等待 grace period 后回收旧数据,高层 RcuBox 读路径基本是一次原子指针 load。实现将 quiescent state 定在 Tokio 的 on_after_task_poll,并约束 RCU 指针不可跨 .await 持有。使用需 RCU 启用的 runtime(rcu_block_on / enable_rcu),并依赖 tokio_unstable。在 20 核机器上
Q&A
Valen 语言是什么?它和 Rust 有什么关系?
Valen 是 Evan 在 Vale 路线上重启的实验性语言,目标是在保留 Rust 生态可达性的前提下,提供更贴近作者愿望列表的语言能力,包括 group borrow checking、线性类型、世代引用、Zig 风格 comptime,以及可直接调用 Rust 库的互操作。
Valen 如何解决跨语言泛型调用 Rust 的问题?
Valen 通过 rustc_driver::run_compiler 把 rustc 当库跑起来,在 callback 中查询依赖 crate,并让 valenc 与 rustc 的 monomorphizer 协作发现彼此调用的具体化函数,从而解决 C ABI 没有 generics 而 Rust API 依赖泛型与 trait 的问题。
Bend 2 语言有哪些主要特点?
Bend 2 采用仿射类型、无借用检查,可编译为接近 C 的本地代码,同一二进制可扩到多核乃至 GPU;类型检查同时是证明检查,强调秒级完成;并行模型不写线程/锁/kernel,把工作对半拆分即可在可用核上展开。
Bend 2 如何利用证明系统与 AI 协作?
Bend 2 通过 LAWS.bend 与 PROOF.bend 机制,在 laws 中声明不可违反的性质后,无法通过证明的改动不能合入。示例用“任意走子序列都无法获胜”一类定律演示 AI 改棋盘规则时被证明挡住。
posixutils 0.9.0 版本有哪些主要更新?
posixutils 0.9.0 完成了 POSIX.1-2024 符合性审计与修复,约 1,009 次提交、70 个 PR。亮点包括:pcc 收敛为只编译 C17 的 c17;make 支持 VPATH、内建推理规则、% 模式规则、$(eval)、宏函数与条件/define;pax 承接 tar/cpio 前端;man 换成 roff/mdoc 解释器;sh/tr/diff 等改为字节向文本处理;工作区依赖从 159 降到 102 个 crate,并增加 aarch64 Linux CI。
tokio_rcu 0.2 是什么?它如何加速读路径?
tokio_rcu 为 async Tokio 提供 RCU 原语,适合读多写少的共享状态。核心是 synchronize_rcu 和 RcuBox:读路径基本是一次原子指针 load,不做分支或共享写;写路径 swap 后需等待各 Tokio worker 经过 quiescent state 才能释放旧分配。在 20 核机器上对比 arc_swap,只读与读多写少场景下 RcuBox 读大约 9–40× 更快,写完成墙钟时间大约慢 2×。