From bc54cd68da76cb22f10f2236d62f1a77b302c11d Mon Sep 17 00:00:00 2001 From: Chris Russell <8494645+chescock@users.noreply.github.com> Date: Thu, 5 Mar 2026 15:43:49 -0500 Subject: [PATCH 1/7] Introduce `InfallibleSystemParam` trait. --- benches/benches/bevy_ecs/fragmentation.rs | 4 +- benches/benches/bevy_ecs/world/world_get.rs | 8 +- crates/bevy_audio/src/audio_output.rs | 7 +- .../tests/ui/query_lens_lifetime_safety.rs | 2 +- .../tests/ui/query_lifetime_safety.rs | 2 +- .../tests/ui/query_transmute_safety.rs | 2 +- .../ui/system_state_get_lifetime_safety.rs | 4 +- .../ui/system_state_iter_lifetime_safety.rs | 4 +- .../system_state_iter_mut_overlap_safety.rs | 2 +- crates/bevy_ecs/macros/src/lib.rs | 65 +- crates/bevy_ecs/src/component/mod.rs | 4 +- crates/bevy_ecs/src/lifecycle.rs | 24 +- crates/bevy_ecs/src/message/message_reader.rs | 5 +- crates/bevy_ecs/src/query/mod.rs | 2 +- .../bevy_ecs/src/reflect/entity_commands.rs | 16 +- crates/bevy_ecs/src/schedule/executor/mod.rs | 48 +- crates/bevy_ecs/src/schedule/mod.rs | 2 +- crates/bevy_ecs/src/system/builder.rs | 2 +- crates/bevy_ecs/src/system/commands/mod.rs | 31 +- .../src/system/commands/parallel_scope.rs | 4 +- .../src/system/exclusive_function_system.rs | 2 +- .../src/system/exclusive_system_param.rs | 14 +- crates/bevy_ecs/src/system/function_system.rs | 120 ++- crates/bevy_ecs/src/system/mod.rs | 28 +- crates/bevy_ecs/src/system/system_name.rs | 21 +- crates/bevy_ecs/src/system/system_param.rs | 745 ++++++++++++++---- crates/bevy_ecs/src/world/identifier.rs | 21 +- .../bevy_ecs/src/world/unsafe_world_cell.rs | 2 +- crates/bevy_gizmos/src/gizmos.rs | 4 +- crates/bevy_input_focus/src/lib.rs | 8 +- crates/bevy_input_focus/src/tab_navigation.rs | 8 +- crates/bevy_pbr/src/material.rs | 2 +- .../bevy_pbr/src/meshlet/instance_manager.rs | 2 +- crates/bevy_pbr/src/prepass/mod.rs | 2 +- crates/bevy_pbr/src/render/light.rs | 2 +- crates/bevy_render/src/erased_render_asset.rs | 2 +- crates/bevy_render/src/extract_param.rs | 6 +- crates/bevy_render/src/render_asset.rs | 2 +- crates/bevy_render/src/render_phase/draw.rs | 2 +- crates/bevy_render/src/renderer/mod.rs | 2 +- .../src/renderer/render_context.rs | 2 +- crates/bevy_render/src/sync_world.rs | 2 +- .../bevy_render/src/view/window/screenshot.rs | 3 +- crates/bevy_text/src/text_access.rs | 4 +- crates/bevy_transform/src/helper.rs | 6 +- .../src/experimental/ghost_hierarchy.rs | 15 +- crates/bevy_ui/src/ui_node.rs | 7 +- crates/bevy_ui_render/src/lib.rs | 4 +- crates/bevy_winit/src/cursor/mod.rs | 4 +- crates/bevy_winit/src/state.rs | 22 +- examples/async_tasks/async_compute.rs | 2 +- examples/ecs/fallible_params.rs | 4 +- examples/ecs/send_and_receive_messages.rs | 7 +- .../migration-guides/validation_merging.md | 74 +- 54 files changed, 1061 insertions(+), 328 deletions(-) diff --git a/benches/benches/bevy_ecs/fragmentation.rs b/benches/benches/bevy_ecs/fragmentation.rs index e7a2f4df78520..97864990a37e5 100644 --- a/benches/benches/bevy_ecs/fragmentation.rs +++ b/benches/benches/bevy_ecs/fragmentation.rs @@ -25,7 +25,7 @@ fn iter_frag_empty(c: &mut Criterion) { spawn_empty_frag_archetype::