< 返回版块

Yuan YQ 发表于 2025-11-20 11:29

2025 年 Rust 语言社区调查启动

自 2016 年起,Rust 项目每年开展“Rust 社区现状调查”(State of Rust Survey),今年是第十届。

无论你是 Rust 新手、中级/高级用户,还是尚未使用但有意尝试 Rust 的开发者,都欢迎参与。

完成调查问卷需10–25 分钟,匿名提交,截止日期为 2025 年 12 月 17 日。问卷支持简体中文。调查结果将帮助 Rust 团队更深入理解全球社区的构成与演变趋势,并在 blog.rust-lang.org 公布关键洞察。

欢迎大家通过社交媒体、技术聚会、同事圈等渠道分享调查链接:https://www.surveyhero.com/c/state-of-rust-2025

Stomata v0.1.8 优化可视化效果

Stomata 是一款用于实时收集和可视化系统指标的命令行工具。它提供了一个轻量级的终端仪表盘,以简洁的界面监控内存、swap 空间、CPU 以及其他系统资源。此次 0.1.8 版本主要是优化了磁盘、CPU、内存等使用情况的图表效果。

Github: https://github.com/aditya172926/stomata-cli

文章:在 Wasmtime 中实现函数内联编译

背景与动机

  • Wasmtime 是一个注重安全与性能的 WebAssembly 运行时,其底层编译器 Cranelift 长期未支持函数内联,主要出于两点考虑:
    1. Cranelift 按函数并行编译,而内联是跨函数操作,会破坏并行性;
    2. Wasm 模块通常由 LLVM 等优化器生成,已有充分内联,剩余调用多为不值得内联的“冷路径”。
  • WebAssembly 组件模型改变了这一前提:多个模块由不同工具链生成,彼此无法看到对方的函数定义,因此无法进行跨模块内联。只有运行时(如 Wasmtime)掌握完整调用图,具备内联条件。

实现方案

  • Wasmtime/Cranelift 在 v36 中引入了可选的函数内联器。
  • 设计原则:
    • 保留并行编译能力:通过基于强连通分量(SCC)的“蒸发图”(evaporation)算法,在确保编译确定性的同时最大化并行性。
    • 解耦机制与策略:Cranelift 负责内联的机械变换(如参数绑定、代码复制),而 Wasmtime 决定是否内联及提供函数体。
  • 整体流程:构建调用图 → 分解 SCC → 构建“蒸发图”→ 按依赖层并行内联 → 后续正常编译与链接。

初步性能结果

  1. 合成测试(跨模块空函数循环调用):
    • 内联后循环指令从 12 条减至 4 条;
    • 运行时间从 138 ms 降至 37.5 ms,提速约 3.7 倍。
  2. 真实场景测试(pulldown-cmark Markdown 解析器,强制关闭 LLVM 内联后启用 Cranelift 内联):
    • 执行指令数减少约 20%;
    • 运行速度提升约 1.26 倍。

结论

  • Wasmtime 和 Cranelift 现已支持函数内联,特别适合组件化 Wasm 应用;
  • 鼓励用户试用并反馈实际效果;
  • 未来将根据使用反馈优化内联启发式。

原文:https://fitzgen.com/2025/11/19/inliner.html

--

From 日报小组 Yuan YQ

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页