Bevy Engine Changes — September 2026

Monthly tracking page for Bevy engine main-branch changes. Sister page to bevy-migration-2026-09.

Continues from bevy-game-dev-2026-08.

2026-09-09 ~ 09-10 engine changes(last-24h;1 non-trivial)

  • Merge window ~09-09T00:45Z→09-10T00:12Z(Asia/Shanghai 2026-09-10 / FM-WIKI-BEVY-20260910)。入库 1 条;skip #25674(D-Trivial)。无 M-Migration-Guide。
  • #25715 — Allow the name of a PipeSystem to be set(chescock, A-ECS, C-Usability, D-Straightforward, merged 03:29Z):IntoPipeSystem 新增 with_name_fn / with_name / with_first_name / with_second_name(等),可覆盖默认冗长 pipe 名;命名策略惰性存储以保持 ZST/run_system_cached。^[https://github.com/bevyengine/bevy/pull/25715]

2026-09-08 ~ 09-09 engine changes(last-24h;11 non-trivial;2× M-Migration-Guide)

  • Merge window ~09-08T00:32Z→09-09T00:45Z(Asia/Shanghai 2026-09-09 / FM-WIKI-BEVY-20260909)。入库 11 条;2× M-Migration-Guide(#25722 / #25426)。详见 bevy-migration-2026-09
  • 评级:2 important 迁移 + 1× M-Release-Note(BSN --)+ sprite 帧跳过修 + Feathers 色轮 + UI stack 性能 + 若干渲染/截图。

important / 迁移

  • ⭐ #25722 — Fix pipelined rendering shutdown deadlock(stuartparmenter, A-Rendering, A-Windowing, O-MacOS, C-Bug, M-Migration-Guide, D-Modest, 21:31Z):关停时泵 MainThreadExecutor,避免 pipelined render 死锁;RenderAppChannels::new 第三参需传入共享 executor clone。详见 bevy-migration-2026-09
  • ⭐ #25426 — Explicit buffer size for ShaderBuffer(beicause, A-Rendering, M-Migration-Guide, 01:20Z):ShaderBufferData::Initialized 显式 buffer_size;CPU 数据改 AlignedVecas_slicecast_slice;承接 #24938。详见迁移页。
  • ⭐ #25626 — BSN: line separator syntax(cart, A-Scenes, C-Usability, M-Release-Note, 06:45Z):可选 -- 分隔列表实体,兼顾简洁与可读(fixes #25616)。
  • #25719 — Fix sprites skipping a frame when changed(stuartparmenter, A-Rendering, C-Bug, 21:38Z):#25432 后每帧变更的 sprite 不渲染 / 少变更跳帧;调 add_material 顺序 + extract 占位 binding(fixes #25709)。
  • #25079 — Add color wheel widget v2(tmstorey, A-UI, A-Editor, C-Feature, 01:19Z):bevy_feathers 三角-in-ring 色轮(HWB;接入 color input)。
  • #25593 — Replace ChildBufferCache with stack allocator(ickshonpe, A-UI, C-Performance, C-Code-Quality, 22:10Z):ui_stack_system 用单 vec stack allocator 替 ChildBufferCache。
  • #25439 — Fix shader compile errors in custom_stencil / specialized_mesh_pipeline wesl(beicause, A-Rendering, C-Bug, C-Examples, 22:13Z):改走 mesh_functions::get_metadata(aabb 字段已不存在)。
  • #25358 — Disable SSAO for meshes without depth writes(venhelhardt, A-Rendering, C-Bug, D-Straightforward, 20:18Z):无 depth write 的 mesh 关闭 SSAO,避免错误遮挡。
  • #25623 — Support two-channel metallic-roughness textures(stuartparmenter, A-Rendering, C-Feature, 01:25Z):双通道 MR(R=roughness,G=metallic)与 glTF 三通道布局分流。
  • #25657 — Keep float values when saving screenshots to .exr or .hdr(stuartparmenter, A-Rendering, C-Feature, 00:52Z):Rgba16Float/Rgba32Float 截图可存;.exr/.hdr 保浮点范围。
  • #25685 — Follow-ups to Tonemapping::None(stuartparmenter, A-Rendering, C-Bug, 00:47Z):Camera2d 默认改 LinearNone+dither/grading 告警;升级反馈补齐(更新 tonemapping 迁移文)。

2026-09-07 ~ 09-08 engine changes(last-24h;5 non-trivial)

  • Merge window ~09-07T00:32Z→09-08T00:32Z(Asia/Shanghai 2026-09-08 / FM-WIKI-BEVY-20260908)。入库 5 条;skip #25718 #25701(D-Trivial)、#25711 + #25148 #25147 #25146 #25145 #24854(deps)。无 M-Migration-Guide。
  • #25713 — Fix unmatched DirtySpecializations lifecycle against SpecializedMaterialPipelineCache(CodingDaniel1, A-Rendering, C-Bug, D-Modest, 20:28Z):DirtySpecializations must_wipe 与 SpecializedMaterialPipelineCache 视图清理对齐,修复最小化窗口恢复后材质管线缓存全空。
  • #25699 — Fix AtmosphereEnvironmentMap handling(JMS55, A-Rendering, C-Bug, 00:17Z):insert/remove observer 管理关联组件,避免移除后残留 EnvironmentMapLight 等。
  • #25311 — Tighten Reflection iterator size hints(raldone01, A-Reflection, C-Bug, 21:08Z):bevy_reflect 迭代器 size_hint 报告剩余项而非总量,收紧边界。
  • #24660 — Render optional bevy_dev_tools(Zeophlite, A-Rendering, A-Dev-Tools, D-Straightforward, 00:14Z):为 bevy_dev_tools 加 render / render_dev_tools feature,使开发工具渲染可选。
  • #24572 — Refactor mesh compression methods(beicause, A-Rendering, C-Code-Quality, D-Modest, 00:15Z):拆分 Mesh::compress_*、泛化 quantize,提升 mesh compression 可维护性。

2026-09-06 ~ 09-07 engine changes(last-24h;1 non-trivial)

  • Merge window ~09-06T00:13Z→09-07T00:13Z(Asia/Shanghai 2026-09-07 / FM-WIKI-BEVY-20260907)。入库 1 条;无 M-Migration-Guide。
  • #25627 — Mesh shader pipelines(ChristopherBiscardi, A-Rendering, C-Feature, D-Modest, 08:21Z):wgpu mesh shader 管线基础设施与示例(mesh shader 替代传统 vertex shader;尚未接 StandardMaterial)。

2026-09-05 ~ 09-06 engine changes(last-24h;2 non-trivial)

  • Merge window ~09-05T00:19Z→09-06T00:19Z(Asia/Shanghai 2026-09-06 / FM-WIKI-BEVY-20260906)。入库 2 条;skip #25688(doc-only)、#25663(D-Trivial/doc)。无 M-Migration-Guide。
  • #25656 — Fix unsound observer initialization(chescock, A-ECS, P-Unsound, C-Bug, 05:41Z):observer initialize 时同时持有 &mut World 与系统自身,系统可在 initialize 中 despawn 自己导致 UB;改为 Option 先取出再 initialize。
  • #25665 — Remove old sprite code not used by text2d(IceSentry, A-Rendering, C-Code-Quality, 05:41Z):删掉 text2d 兼容路径上已无用的旧 sprite 后端死代码。

2026-09-04 ~ 09-05 engine changes(last-24h;2 non-trivial)

  • Merge window ~09-04T00:11Z→09-05T00:11Z(Asia/Shanghai 2026-09-05 / FM-WIKI-BEVY-20260905)。入库 2 条;skip #25529(build/action cache)、#25666(D-Trivial)。无 M-Migration-Guide。
  • #25670 — Fix rendering corruption related to opaque mesh binning when restoring a minimized window(CodingDaniel1, A-Rendering, C-Bug, 17:31Z):相机 inactive / size 0×0 时勿清 RenderVisibleEntities,避免恢复最小化窗口后 opaque mesh binning 损坏。
  • #25513 — Solari v8: Disable ReSTIR by default(JMS55, A-Rendering, C-Performance, 17:31Z):ReSTIR 默认关(可开);作者测 RTX 3080 ~2× 更快并省内存/复杂度,denoiser 已覆盖多数时空复用。

2026-09-02 ~ 09-03 engine changes(23 PRs;1× M-Migration-Guide)

  • 23 PRs merged 09-02T01:33Z–09-02T21:53Z(窗口约 09-02T00:11Z→09-03T00:11Z)。第三波主线:Sprite 渲染后端换血 + UI 色板控件 + 若干渲染/ECS 修与性能。
  • 评级:1 important 迁移(Sprite→SpriteMesh 换名落地)+ 2× M-Release-Note(自定义材质 / 色板)+ 多条渲染 bug / ECS 性能。trivial/deps/examples ×8 不入库正文。

important / 迁移

  • ⭐ #25432 — Replace Sprite with SpriteMesh(IceSentry, A-Rendering, M-Migration-Guide, M-Release-Note, X-Contentious, 20:10Z)。SpriteMesh 改名落地为 Sprite,旧 sprite 后端退场(text2d 仍暂依赖旧路径,后续跟进)。多数用户迁移应透明。详见 bevy-migration-2026-09
  • ⭐ #25415 — Custom materials for SpriteMesh(cookie1170, A-Rendering, C-Feature, M-Release-Note, D-Complex, X-Contentious, 14:41Z)。新 sprite 路径支持自定义材质(与 #25432 同批合入)。
  • ⭐ #25446 — Color input and color swatch grid(viridia, A-UI, A-Editor, C-Feature, M-Release-Note, 16:46Z)。编辑器/UI 色板:颜色输入 + swatch grid。
  • #25618 — required components 接受 impl Fn() -> C 构造器(loreball, A-ECS, 14:56Z)。
  • #24396 — Add PointerCaptureMap(joaoconceicao12, A-Pointers, A-Picking, C-Feature, 18:55Z)。
  • #25408 — Mitigate insertion performance regression(JaySpruce, A-ECS, C-Performance, 04:21Z)。
  • #23740 — Optimize World::get_entity_mut for large entity slices(CrazyRoka, A-ECS, C-Performance, 18:48Z)。
  • #24744 — Fix stale transmission texture sampling for blended materials(cachebag, A-Rendering, C-Bug, 15:54Z)。
  • #25622 — Copy deferred lighting ID after prepass set(stuartparmenter, A-Rendering, C-Bug, 14:56Z)。
  • #25641 — enable ScreenSpaceTransmission on anisotropy camera(mockersf, A-Rendering, C-Bug, C-Examples, 01:36Z)。
  • #25643 — flaky dropping_subasset_handle_while_loading_cancels_load(andriyDev, A-Assets, C-Bug, 21:52Z)。
  • #25536 — Fix debug-profile slider stutter(bugsweeper, A-UI, C-Performance, 14:36Z)。
  • #25651 — Bevy curve/shape cleanup(mockersf, C-Code-Quality, 14:52Z)。
  • #25632 — Use NonNull in UnsafeWorldCell(loreball, A-ECS, D-Unsafe, 21:53Z)。
  • #25637 — safety comment for QueryContiguousParIter::for_each_init(mockersf, 01:36Z)。

trivial / deps / examples(8,不展开)

  • #25659 wasm clippy ignore(D-Trivial);#25639 camera_controller deps 排序(D-Trivial);#25636 CursorSystems reflect gate(D-Trivial);#25635 stray empty line(D-Trivial);#25633 into_length_percentage_for_border(D-Trivial);#25617 clipping submodule(D-Trivial);#25546 ReflectSettingsGroup accessors(D-Trivial);#25526 PCCM example asset URLs(C-Examples)。
  • Milestones (09-03 check):0.19.2 12 closed / 4 open / 16 total(较 09-02:不变);0.20 105 closed / 17 open / 122 total(较 09-02 94/40 / 134:closed +11,open −23,total −12);0.21 0 closed / 15 open(较 09-02 0/8:open +7)。v0.19.1 仍最新。^[https://github.com/bevyengine/bevy/milestones]
  • Takeaway:Sprite 渲染换后端落地(SpriteMeshSprite + 自定义材质),UI 色板控件入主线;ECS 插入/get_entity_mut 性能;若干 transmission / deferred lighting 修。0.20 开放票从 40 压到 17。

2026-09-01 ~ 09-02 engine changes(18 PRs;3× M-Migration-Guide)

  • 18 PRs merged 09-01T00:21Z–09-01T23:15Z(窗口约 09-01T00:15Z→09-02T00:17Z)。紧接 08-31 大日的第二波:3 个 M-Migration-Guide、1 个 M-Release-Note、bevy_curve 拆分、Solari CPU、0.20 弃用清理。
  • 评级:3 important 迁移 + curve 拆 crate + Solari + cart deprecate sweep。trivial/docs/deps/examples ×5 不入库正文。

important / 迁移

  • ⭐ #25640 — Bevy 0.20: remove deprecated items(cart, C-Code-Quality, 23:15Z)。0.20 发版前清弃用 API。
  • ⭐ #25597 — panic handling cleanup(hymm, A-ECS, M-Migration-Guide, 19:14Z)。收紧 panic handler 输出,减少系统 panic 时的重复嵌套消息。详见 bevy-migration-2026-09
  • ⭐ #25331 — Deprecate FilteredResources(Trashtalk217, A-ECS, M-Migration-Guide, 13:00Z)。改走 QueryBuilder / QueryParamBuilder;约减 1k 行。详见迁移页。
  • ⭐ #25318 — BSN Syntax Improvements(cart, A-Scenes, M-Migration-Guide, M-Release-Note, 02:12Z)。减少 template_value 噪音,变量/内联函数与场景 inclusion 语义对齐。
  • ⭐ #25380 — Bevy curve(JasmineLowen, A-Math, X-Blessed, 19:26Z)。curves 从 bevy_math 拆到 bevy_curve(承接昨日 bevy_shape 拆分思路)。
  • ⭐ #25244 — Solari: Improve CPU performance(JMS55, A-Rendering, C-Performance, D-Complex, 02:01Z)。scene binding / TLAS 路径减 CPU:直接写 transform buffer、AtomicSparseBufferVec、非 Metal 走 wgpu_hal + compute + indirect build。

contextual

  • #25615 — safe Align* / Justify* variants(loreball, C-Feature, A-UI)。
  • #25613 — Unrequire OverrideClip from FixedNode(ickshonpe, A-UI)。
  • #25602 — FeathersNumberInput hover chevrons(Tatsuya0330, A-UI, C-Refinement)。
  • #25525 — editable_text layout 绕过 change detection(gagnus, C-Bug, A-UI)。
  • #18976 — Mesh::try_disjoint_attributes_mut(hukasu, A-Rendering, C-Usability)。
  • #24845 — winit modifier key 尽力对账(robtfm, C-Bug, A-Input, A-Windowing)。
  • #23318 — UnsafeWorldCell from raw pointer(MalekiRe, A-ECS, D-Unsafe)。

trivial / docs / deps / examples(5,不展开)

  • #25610 FloatOrd docs;#25607 ScheduleConfigs must_use(D-Trivial);#25604 skybox ray(D-Trivial);#25078 rustup targets/components(deps);#20904 hierarchy spawn examples。
  • Milestones (09-02 check):0.19.2 12 closed / 4 open / 16 total(较 09-01:closed +1,open −1);0.20 94 closed / 40 open / 134 total(较 09-01 91/35 / 126:closed +3,open +5,total +8);0.21 0 closed / 8 open(不变)。v0.19.1 仍最新。^[https://github.com/bevyengine/bevy/milestones]
  • Takeaway:连续第二波主线合入。迁移面:panic handler、FilteredResources 弃用、BSN 语法;math 再拆 bevy_curve;Solari CPU;cart 清 0.20 弃用。UI 小刀若干。

2026-08-31 ~ 09-01 engine changes(21 PRs;4× M-Migration-Guide)

  • 21 PRs merged 08-31T14:00Z–09-01T00:13Z(search merged:>=2026-08-31,窗口 08-31T00:15Z→09-01T00:15Z)。08-25/08-30 静默后的大日。4 个 M-Migration-Guide、1 个 M-Release-Note、1 个 P-Regression(D-Trivial)。
  • 评级:4 important 迁移项 + Jackdaw Tab + HDR 合成基建 + 若干 bugfix。trivial/test/docs ×7 不入库正文。

important / 迁移

  • ⭐ #25507 — Unify exclusive systems(ItsDoot, A-ECS, M-Migration-Guide, D-Complex, X-Contentious, D-Unsafe, 22:52Z)。去掉 ExclusiveFunctionSystem / ExclusiveSystemParam&mut World&mut SystemState&mut QueryState 现为普通 SystemParamSystem::initialize() 返回 SystemAccess;exclusive 改运行时判定。详见 bevy-migration-2026-09
  • ⭐ #25302 — Bevy shapes(JasmineLowen, A-Math, M-Migration-Guide, X-Blessed, 21:58Z)。primitives / rays / 相关 trait 从 bevy_math 拆到新 crate bevy_shape
  • ⭐ #25201 — Make ScreenSpaceTransmission opt-in(beicause, A-Rendering, M-Migration-Guide, 22:52Z)。可关 SST,省 1 texture + 1 sampler;关掉后 specular_transmission > 0 按 alpha mode 回退其它 phase。
  • #25512 — Switch WgpuWrapper to a macro(SkiFire13, A-Rendering, M-Migration-Guide, 0.20, 23:01Z)。eager Send/Syncbevy_render debug 编译约 20s→9s;去掉部分 wrapper 上的 Arc
  • ⭐ #25515 — Upstream Jackdaw tab widget(jbuehler23, C-Feature, A-UI, M-Release-Note, D-Modest, 23:29Z)。bevy_ui_widgets 无样式 headless Tab(外部拥有 selection + 键盘 roving tabindex)。widgets roadmap #19236 第一刀。
  • ⭐ #25481 — Resolve one compositing space per camera stack(stuartparmenter, C-Feature, A-Rendering, 22:52Z)。HDR 上游化:同 render target 的相机解析成一个 ResolvedCompositingSpace,避免 stacked cameras 各写各的编码。

contextual

  • #25545 — Update to Taffy 14(ickshonpe, A-UI, 0.20, 23:29Z)。Taffy 13 刚在 08-19;min/max 改 LengthPercentageAutocontent_sizescrollable_overflow_rect
  • #25563 — fullscreen material pipeline IDs material-specific(Kyriota, A-Rendering, 23:58Z)。fixes #25560:多个 FullscreenMaterialPlugin 不再共用一个 pipeline ID 组件。
  • #25509 — MetaTransform 挪进 AssetInfo(andriyDev, A-Assets, 23:01Z)。不再挂在 Handle 上,避免不同 handle 报告不同 settings / reload 抹掉 meta。
  • #25599 — handle_delayed_saveTime<Real>(Tatsuya0330, C-Bug, A-Settings, 0.19.2, 09-01 00:13Z)。fixes #25571:暂停时设置也能延迟保存。
  • #25542 — Timer::almost_finish saturating_sub(justDeeevin, A-Time, 23:29Z)。已结束 timer 不再 underflow panic。
  • #25395 — wasm 文本快捷键按运行时 host OS 解析(Cyannide, C-Bug, A-UI, O-Web, A-Text, 21:58Z)。fixes #25340 的 copy/cut/paste 半边:wasm target_os=unknown 不再把 macOS 浏览器用户锁在 Ctrl 布局。
  • #23593 — RenderTarget::Nonecomputed.target_info 不更新(kaio-matos, C-Bug, A-Rendering, 20:56Z)。fixes #23437。
  • #23439 — GPU clustering 时跳过 dynamic cluster resize(holg, A-Rendering, C-Performance, 0.20, 21:58Z)。fixes #23438:UBO 上限 16384 在 storage-buffer clustering 下误缩 grid。

trivial / test / docs(7,不展开)

  • #25614 P-Regression D-Trivial deferred SSAO 缺 view shader import;#25591 unused schedule expr;#25583 weak-table 0.3→0.4;#25554 RenderDebugOverlay docs;#25551 Android EmptyPathStream;test 25584/25555
  • Milestones (09-01 check):0.19.2 11 closed / 5 open / 16 total(较 08-31:closed +1 = #25599);0.20 91 closed / 35 open / 126 total(72.2%)(较 08-31 87/43 / 130:closed +4,open −8,total −4);0.21 新出现 0 closed / 8 open。v0.19.1 仍最新。^[https://github.com/bevyengine/bevy/milestones]
  • Takeaway:合并暂停后的 21 PR 大日。0.20 迁移面一次铺开:exclusive systems 统一、math/shape 拆 crate、SST 改 opt-in、WgpuWrapper 宏化。UI:Jackdaw Tab 上游 + Taffy 14。HDR:camera stack 共用 compositing space。0.21 milestone 出现。