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
PipeSystemto 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 数据改AlignedVec;as_slice→cast_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默认改Linear;None+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_mutfor 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
NonNullinUnsafeWorldCell(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 渲染换后端落地(
SpriteMesh→Sprite+ 自定义材质),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
OverrideClipfromFixedNode(ickshonpe, A-UI)。- #25602 —
FeathersNumberInputhover 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 —
UnsafeWorldCellfrom 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现为普通SystemParam。System::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拆到新 cratebevy_shape。- ⭐ #25201 — Make
ScreenSpaceTransmissionopt-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/Sync让bevy_renderdebug 编译约 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 改
LengthPercentageAuto,content_size→scrollable_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_save用Time<Real>(Tatsuya0330, C-Bug, A-Settings, 0.19.2, 09-01 00:13Z)。fixes #25571:暂停时设置也能延迟保存。- #25542 —
Timer::almost_finishsaturating_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::None后computed.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 出现。
Related pages
- bevy — Bevy engine/entity hub.
- bevy-game-dev-2026-08 — August 2026 tracking (previous month).
- bevy-migration-2026-09 — September 2026 migration-sensitive changes.
- bevy-rendering — rendering notes.
- bevy-ui-text — UI/text notes.