【Rust日报】2026-10-02 单用途设备用 Rust 裸机,不必再塞一整套 Linux

💡 原文中文,约2100字,阅读约需5分钟。
📝

内容提要

本期 Rust 资讯:单用途设备可直接运行 Rust 裸机固件,借助 Embassy 等框架省去 Linux;Rust Glancer 0.3 改用 rustc 新 trait solver,静态查询达 88.5%;maillon 提供并发侵入式链表,插入无锁,用于 Semaphore 和 Notify;Arm64JS 将 ARM64 解释器编译为 wasm,在浏览器中运行精简 Linux。

🔎

延伸解读

裸机 Rust 的适用边界

文章以路由器和摄像头为例,指出单用途设备软件来自同一厂商,却常带过时 Linux 或 Android 镜像。裸机 Rust 固件可做成单文件静态链接,经死代码消除和 LTO,同类功能只需数 KB/MB 内存和 2MB flash。这提示:当设备功能固定、无需通用操作系统时,裸机方案能显著降低资源占用,但前提是硬件描述和驱动生态足够支撑。

Rust Glancer 0.3 的进展与局限

Rust Glancer 0.3 将内部对照 rust-analyzer 的 141 条静态查询做到约 88.5%,但作者明确这不是完整 LSP 完成度,主要反映定义跳转、inlay hint 和 hover 的进展。类型推断改为递归调度,trait solver 迁到 rustc 新 solver,derive 不再走 proc-macro 展开。读者需注意:该数字是特定查询集的对照结果,不代表所有编辑器功能已完备。

maillon 的设计取舍与验证

maillon 把并发侵入式链表的插入做成 lock-free,用原子尾指针判断空表,空表时尾指针低位还可存信号量计数或 mutex 状态。作者用它重做兼容 Tokio 的 Semaphore 和 Notify,并称在 Tokio 基准及 futures-intrusive、asyncband 等对照里更快。正确性用 loom 和 miri 测,Semaphore/Notify 也过 Tokio 的 loom 套件。这显示其优势集中在插入路径,但整体性能仍取决于具体场景。

Arm64JS 的用途与限制

Arm64JS 把 ARM64 解释器编成 wasm32,在浏览器中模拟最小硬件栈,每个 Web Worker 实例化一个模块,共用 SharedArrayBuffer 当虚拟机内存。作者写它是为了让 2MB 的 TUI 工具不必本机安装就能试。文中给出 shell 输入延迟 8ms、vim 37ms、从快照启动略多于 1 秒(远程数据另加下载)。解释器源码未开源,对外提供非商用免费的 JS SDK,商用需留意授权。

❓

Q&A

单用途设备为什么适合用 Rust 裸机而不是 Linux?

单用途设备只做有限几件事,软件来自同一厂商,却常带着过时的 Linux 或 Android 镜像。直接跑 Rust 裸机固件可以做成单文件静态链接,经过死代码消除和 LTO,同类功能只需数 KB/MB 内存和 2MB flash,省去整套 Linux。

Rust 裸机开发可以用哪些框架和工具?

文中建议用 Embassy 和 embedded-io trait 当框架,驱动当普通 crate 依赖,再用 cargo feature 在 ESP32-C6 和 nRF52840 等目标之间切换,build.rs 按 CARGO_FEATURE_ 选 memory.x。

Rust Glancer 0.3 在静态查询上的准确率是多少?

Rust Glancer 0.3.0 把内部对照 rust-analyzer 的 141 条静态查询做到约 88.5%。作者说明这不是完整 LSP 完成度,主要反映定义跳转、inlay hint 和 hover 的进展。

maillon 这个并发侵入式链表有什么特点?

maillon 是一个并发侵入式链表 crate,节点自带链接指针,可以放在栈上,适合异步 wait-list 登记 waker。插入是 lock-free 的,用原子尾指针判断空表,空表时尾指针低位还可以存信号量计数或 mutex 状态。作者用它重做了兼容 Tokio 的 Semaphore 和 Notify,并在基准测试中更快。

Arm64JS 是什么?它能在浏览器里做什么?

Arm64JS 是一个把 ARM64 解释器编成 wasm32、在浏览器里模拟最小硬件栈的项目。每个 Web Worker 实例化一个模块,共用一块 SharedArrayBuffer 当虚拟机内存。它可以让 2MB 的 TUI 工具不必本机安装就能在浏览器中试用。

Arm64JS 的运行性能如何?

文中给出的数字:shell 输入延迟 8ms,vim 37ms,从快照启动略多于 1 秒(远程数据另加下载)。

🏷️

标签

➡️

继续阅读