【Rust日报】2026-10-09 Bevy 0.20:Solari 支持 macOS
内容提要
Bevy 0.20发布:Solari路径追踪支持macOS,ReSTIR改为可选,光照新增Atmosphere,BSN语法和Feathers组件更新。M4基准测试显示std::simd与手写NEON性能差距在5%以内。P99 CONF公布五场Rust演讲。CppCast 412期讨论Rust与C++互操作及内存安全。
延伸解读
Bevy 0.20 升级注意:ReSTIR 默认关闭与 DLSS 更新
Bevy 0.20 将 Solari 的 ReSTIR 改为可选且默认关闭。若从 0.19 升级且之前开启过 Solari,关闭 ReSTIR 可能导致多光源场景阴影质量下降、运动时缺阴影,需手动重新启用 SolariLighting::restir。此外,使用 DLSS 的项目必须更新到新 DLSS SDK,否则编译失败。升级前建议查阅迁移指南,并评估这些改动对渲染效果和构建的影响。
std::simd 与手写 NEON 性能对比:对齐后差距在 5% 以内
在 Apple M4 上的基准测试显示,对齐向量宽度、累加器数量等条件后,std::simd 与手写 NEON 在 9 个场景中性能差距在 5% 以内,仅 Find Byte 例外(NEON 快 9%)。但需注意,std::simd 的乘加不会自动合成 FMA,需使用 mul_add;Mask::to_bitmask 在 NEON 上无单指令,16 路可能比 32 路更快。这些细节提醒开发者,可移植 SIMD 的性能高度依赖实现方式。
P99 CONF Rust 演讲:关注生产环境性能与工具
P99 CONF 将于 2026 年 10 月 21-22 日线上免费举行,包含五场 Rust 相关演讲,涵盖 Web 应用、功能标志评估、io_uring 管道、AI 辅助性能剖析和消息流处理等主题。这些演讲聚焦于 Rust 在高性能生产环境中的实际应用,适合对系统性能、可观测性和工具链感兴趣的开发者。演讲者会在线回答问题,提供直接交流机会。
CppCast 探讨 Rust 与 C++ 互操作:安全含义与工具
CppCast 第 412 期讨论了 Rust 与 C++ 的互操作及内存安全,嘉宾 Jon Bauman 分析了 safety 的不同含义、C++ 如何实现内存安全,以及两者结合时的问题。节目笔记引用了 WG21 论文 P3874R1、Rust Foundation 的互操作倡议和 BorrowSanitizer 等资源。对于关注跨语言安全与工具链的开发者,这期内容提供了问题空间映射和现有解决方案的参考。
Q&A
Bevy 0.20 中 Solari 渲染器有哪些主要更新?
Solari 是 Bevy 的实时路径追踪渲染器。0.20 中 ReSTIR 改进后渲染大体无偏,移动物体阴影不再滞后,非金属材质运动时反射闪烁减少。ReSTIR 改为可选且默认关闭,关闭后多光源场景阴影质量下降,运动中会缺阴影。场景管理改为 retained,CPU 开销下降。可调项包括 world cache size、每像素光源采样数、时间累积和路径追踪反弹次数。Solari 现在可以通过 Metal 在 macOS 上运行。
Bevy 0.20 的 BSN 语法有哪些变化?
BSN 语法有几处改动:场景引用都要加 @ 前缀;组件值可以去掉 template_value;实现了 Default 和 Clone 的枚举不再需要 VariantDefaults 或 FromTemplate,每个字段都要写出来;实体列表用 -- 分隔,这个位置的 () 和逗号已弃用;场景实体在全部子实体生成完后触发 Ready;Add 事件是自上而下触发的,当时子实体还不可用。
在 M4 芯片上,std::simd 和手写 NEON 的性能差距有多大?
在 Apple M4 上,对齐向量宽度、累加器数量、横向归约次数和算法之后,9 个场景里两个 API 的差距在 5% 以内。Find Byte 除外,NEON 快 9%。例如 RGB 转灰度(200 万像素)三套实现都是 0.090 毫秒;音量调整(530 万采样)是 0.447 / 0.450 / 0.452 毫秒;混音是 0.279 / 0.280 / 0.278 毫秒。统计换行(10MB)scalar 1.228 毫秒,std::simd 0.193 毫秒(6.36 倍),NEON 0.192 毫秒(6.40 倍)。
P99 CONF 上有哪些 Rust 相关的演讲?
P99 CONF 有五场 Rust 演讲:Carl Lerche 的 The Age of Slow Apps Is Over: Topcoat Brings Rust to Web Apps;Dylan Martin 的 Rewriting PostHog’s Feature Flag Evaluation Infrastructure in Rust;Evan Chan 的 Building a Real-World 14 GB/sec io_uring + tokio + Arrow + Rust Pipeline;Hayden Stainsby 的 AI-Assisted Profiling for Rust Services in Production;Piotr Gankiewicz 的 Building Ultra-Performant Message Streaming for Apache Iggy with Rust。会议线上免费,日期是 2026-10-21 和 2026-10-22。
CppCast 412 期讨论了 Rust 与 C++ 互操作的哪些内容?
CppCast 第 412 期标题是 Safety and Interoperability with Rust and C++,发布日期 2026-10-05。主持人是 Mathieu 和 Jason,嘉宾是 Jon Bauman。讨论涵盖 safety 的几类含义、哪些能保证哪些不能、C++ 怎样变成内存安全语言,以及 Rust 和 C++ 放在一起时的问题。节目笔记列出了 WG21 论文 P3874R1、Rust Foundation 的 C++ Interoperability Initiative problem statement、BorrowSanitizer 以及 Rust Project Goals 2025H2 的 C++/Rust Interop Problem Space Mapping。
Bevy 0.20 在光照和渲染方面新增了哪些功能?
光照现在包括 Atmosphere,以及相机上的 EnvironmentMapLight。原有的 DirectionalLight 和自发光网格仍然可用。PointLight、SpotLight、RectLight 还没接上,对应改动在 bevy#25913。Solari 可以通过 Metal 在 macOS 上跑,但 bevy_solari 目前没有内置的 macOS 降噪器。dlss_wgpu 更新到最新 DLSS,支持 DLSS-RR 4.5。从 0.19 接着用 DLSS 的项目需要换成新的 DLSS SDK,否则会编译失败。