Bevy 0.19 发布:BSN 新场景系统与大场景渲染一起升级
Bevy 正式发布 0.19,这次不是小修小补,而是把几个长期铺垫的大块能力一起推到了主线上。官方在 release 里提到,版本背后有 261 位贡献者、1185 个 PR,也说明这轮更新的体量确实不小。
这次最值得关注的亮点主要集中在几个方向:
- 新一代场景系统 BSN(Bevy Scene Notation) 正式落地,开发者可以用更接近 Rust 语法的方式描述 scene,并支持 patch、组合、依赖感知、scene function、scene component 等能力,明显在为后续编辑器与复杂项目工作流铺路
- 大场景渲染性能继续明显提升。官方给出的 many_cubes 基准里,0.19 相比 0.18 在 160 万 cube 的场景上,把移动 4090 笔记本的帧时间从约 49.47ms 压到 18.77ms;关闭 culling 时也从 93.1ms 降到 41.2ms
- 图形栈上还补进了 contact shadows、更多 post-processing、改进的 skinned mesh culling、GPU clustering、更多并行化,说明这次不只是“加 feature”,而是持续把引擎往更大规模与更现代的渲染架构推进
- UI / 工具链侧也有实打实更新,比如 EditableText 上游支持、字体家族与 variable font 属性、更完整的 app settings 框架,以及更多 Feathers widgets
从 Rust 游戏与图形生态的角度看,Bevy 0.19 最有分量的地方,是它一边继续抬高“纯 Rust 游戏引擎”的上限,一边把 scene authoring、编辑器前置能力与大场景性能一起往工程化方向推了一大步。
发布说明:https://bevy.org/news/bevy-0-19/ 项目仓库:https://github.com/bevyengine/bevy Migration Guide:https://bevy.org/learn/migration-guides/0-18-to-0-19/
原文链接:https://bevy.org/news/bevy-0-19/
Ratatui 0.30.2 发布:新增 Termina backend,并修正 Send/宽字符回归
Ratatui 发布了 0.30.2。虽然这是个 patch 版本,但这次更新不是单纯补 bug,而是顺手补进了一个对终端生态挺有意思的新能力:新增 ratatui-termina backend。
这次更新的关键点包括:
- 新增 Termina backend,通过
terminafeature 暴露,意味着 Ratatui 在现有 Backend 抽象下又多了一条终端后端接入路线,现有 widget / app 架构基本不用改就能复用 - 修复了 0.30.1 block shadows 引入的回归:某些 widget 因内部 custom shadow effect 存储方式,意外失去了
Send/Sync语义,导致下游多线程 TUI 应用直接编译报错;0.30.2 把这个兼容性问题修回来了 - 修正了 宽字符覆盖后的残留单元格刷新问题。像“你好,世界!”切成 “Hello” 这类场景里,旧的 trailing cell 背景可能残留;这次补丁把这些终端显示细节也处理干净了
- 另外还修了 大 scrollbar thumb 挤掉末端箭头 的 UI 回归,并把
cargo-udeps依赖检查纳入 CI
这类版本的价值点在于:它未必像大版本那样显眼,但很能说明项目成熟度。Ratatui 现在已经不只是“能做 TUI”,而是在认真打磨 后端扩展性、线程语义稳定性、宽字符显示细节 这些真正影响生产体验的地方。
发布说明:https://ratatui.rs/highlights/v0302/ 项目仓库:https://github.com/ratatui/ratatui 变更记录:https://github.com/ratatui/ratatui/blob/main/CHANGELOG.md
原文链接:https://ratatui.rs/highlights/v0302/
Safe SIMD in Rust:把“高性能”里的 unsafe 收到几乎只剩一个可审计入口
作者在新文里讨论了一个很 Rust、也很底层的问题:高层 SIMD 抽象到底能不能既保住性能,又别把大量 unsafe 藏在库内部到处流窜? 这篇文章给出的答案相当漂亮,而且已经落到生产实现里。
文章的核心思路有几层:
- 先利用 Rust 1.87 之后编译器对
#[target_feature]的改进,把不少 intrinsic 调用从“每处都得包 unsafe”推进到“可以在带 feature 标注的函数里安全调用” - 再通过 CPU feature token 把“当前机器确实支持 AVX2 / 其他指令集”这个前提编码进类型系统,让调用者拿到一个零成本、不可伪造的证明
- 然后把真正需要的 unsafe 集中封装进单个可复查的包装层 / 宏,避免过去那种到处手写 target feature 对照与 unsafe wrapper 的做法
- 在 API 层再借助 泛型 + level token,把运行时指令集选择与
a + b这类高层操作统一起来,最后落到fearless_simd这类更像“正常 Rust”而不是“intrinsics 手工活”的接口上
作者也没有回避现实限制:#[target_feature] 与 inlining / ABI 的关系,依然让“既优雅又零额外开销”的 SIMD 抽象有不少边角问题,尤其是运算符重载场景里仍然很依赖内联是否成功。
但即便如此,这篇文章最重要的意义仍然是:它把 Rust 里 SIMD 抽象的安全边界重新往前推了一截,让“高层 SIMD 库内部堆满难审计 unsafe”不再像过去那样理所当然。
文章链接:https://shnatsel.medium.com/safe-simd-in-rust-even-on-the-inside-c6f1ff381828 crates.io:https://crates.io/crates/fearless_simd 示例代码:https://github.com/linebender/fearless_simd/blob/d2411665f0726cd6c09bd6fd98af4af18e3c1778/fearless_simd/examples/sigmoid.rs
原文链接:https://shnatsel.medium.com/safe-simd-in-rust-even-on-the-inside-c6f1ff381828
Carboxyl 0.1.0-rc:把终端浏览器从 Chromium 补丁路线上转向 Servo 运行时
Carboxyl 团队发布了一个早期 0.1.0-rc,但这次真正值得关注的不只是“有了个 RC”,而是它正在尝试把项目的底层路线改掉:从原来基于 Carbonyl 的 Chromium patch runtime,转向 直接嵌入 Servo 的新运行时。
作者在说明里讲得很直接:
- Carboxyl 是 Carbonyl 的社区分叉,目标仍然是把“现代网页浏览器”塞进终端里,而不是退回到纯文本浏览体验
- 这次 RC 主打的是 servo-dev 分支 的新运行时验证。项目希望用 Servo 替掉原来带补丁的 Chromium 方案,从而让构建、维护与贡献门槛都更低
- 新路线强调通过 Servo 的软件渲染路径 面向 terminal-first 场景,这意味着它在理念上不只是“把网页降级显示到终端”,而是继续追求尽量完整的现代 Web 能力
- 从 Carboxyl 既有仓库介绍看,这条产品线一直强调 支持大量 Web API、60 FPS、低 idle CPU、可在无窗口服务器 / SSH 场景下运行;如果 Servo 路线最终跑通,项目的长期可维护性会比继续扛 Chromium 私有补丁更有想象空间
终端浏览器一直是个很容易“看着很酷但不好持续维护”的方向。Carboxyl 这次的看点,不只是 demo 感,而是它试图把一个炫技项目往更可持续的浏览器内核整合路线上推。
Reddit 说明:https://old.reddit.com/r/rust/comments/1uadj48/carboxyl_v010rc_a_servobased_browser_for_the/ 项目仓库:https://github.com/carboxyl-rs/carboxyl 原始 Carbonyl 背景文:https://fathy.fr/carbonyl
原文链接:https://old.reddit.com/r/rust/comments/1uadj48/carboxyl_v010rc_a_servobased_browser_for_the/
评论区
写评论还没有评论