bevy/crates
Cameron 3ec87e49ca Stageless: prettier cycle reporting (#7463)
Graph theory make head hurty. Closes #7367.

Basically, when we topologically sort the dependency graph, we already find its strongly-connected components (a really [neat algorithm][1]). This PR adds an algorithm that can dissect those into simple cycles, giving us more useful error reports.

test: `system_build_errors::dependency_cycle`
```
schedule has 1 before/after cycle(s):
cycle 1: system set 'A' must run before itself
system set 'A'
 ... which must run before system set 'B'
 ... which must run before system set 'A'
```
```
schedule has 1 before/after cycle(s):
cycle 1: system 'foo' must run before itself
system 'foo'
 ... which must run before system 'bar'
 ... which must run before system 'foo'
```

test: `system_build_errors::hierarchy_cycle`
```
schedule has 1 in_set cycle(s):
cycle 1: system set 'A' contains itself
system set 'A'
 ... which contains system set 'B'
 ... which contains system set 'A'
 ```

[1]: https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm
2023-02-21 13:42:20 +00:00
..
bevy_animation Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_app Use default schedule consistently in add_state (#7751) 2023-02-20 22:06:34 +00:00
bevy_asset Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_audio Basic spatial audio (#6028) 2023-02-20 15:31:07 +00:00
bevy_core Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_core_pipeline fix ambiguities in render schedule (#7725) 2023-02-20 00:16:47 +00:00
bevy_derive update winit to 0.28 (#7480) 2023-02-03 16:41:39 +00:00
bevy_diagnostic Make StartupSet a base set (#7574) 2023-02-19 03:10:06 +00:00
bevy_dylib Rename dynamic feature (#7340) 2023-01-23 14:28:00 +00:00
bevy_dynamic_plugin Adapt path type of dynamically_load_plugin (#6734) 2022-12-05 23:39:43 +00:00
bevy_ecs Stageless: prettier cycle reporting (#7463) 2023-02-21 13:42:20 +00:00
bevy_ecs_compile_fail_tests Fix clippy lints and failed test with Rust 1.66 (#6945) 2022-12-15 18:05:15 +00:00
bevy_encase_derive add helper for macro to get either bevy::x or bevy_x depending on how it was imported (#7164) 2023-01-11 21:12:02 +00:00
bevy_gilrs Make StartupSet a base set (#7574) 2023-02-19 03:10:06 +00:00
bevy_gltf Add extras field to GltfNode (#6973) 2023-02-13 17:56:36 +00:00
bevy_hierarchy Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_input Rename schedule v3 to schedule (#7519) 2023-02-06 18:44:40 +00:00
bevy_internal Initial tonemapping options (#7594) 2023-02-19 20:38:13 +00:00
bevy_log Fix suppression of all console logs when trace_tracy is enabled (#6955) 2022-12-20 23:45:43 +00:00
bevy_macro_utils Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_math Add Beziers to bevy_math (#7653) 2023-02-20 18:34:52 +00:00
bevy_mikktspace Release 0.9.0 (#6568) 2022-11-12 20:01:29 +00:00
bevy_pbr Fix some more typos (#7767) 2023-02-20 23:36:28 +00:00
bevy_ptr Fix minor typos in code and docs (#7378) 2023-01-27 12:12:53 +00:00
bevy_reflect Fix some more typos (#7767) 2023-02-20 23:36:28 +00:00
bevy_reflect_compile_fail_tests Enable deriving Reflect on structs with generic types (#7364) 2023-01-28 00:12:06 +00:00
bevy_render Fix some more typos (#7767) 2023-02-20 23:36:28 +00:00
bevy_scene Base Sets (#7466) 2023-02-06 03:10:08 +00:00
bevy_sprite fix ambiguities in render schedule (#7725) 2023-02-20 00:16:47 +00:00
bevy_tasks Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_text Fix some more typos (#7767) 2023-02-20 23:36:28 +00:00
bevy_time Fix some more typos (#7767) 2023-02-20 23:36:28 +00:00
bevy_transform Make StartupSet a base set (#7574) 2023-02-19 03:10:06 +00:00
bevy_ui Re-enable taffy send+sync assert (#7769) 2023-02-21 02:36:05 +00:00
bevy_utils Fix some typos (#7763) 2023-02-20 22:56:57 +00:00
bevy_window Fix closing window does not exit app in desktop_app mode (#7628) 2023-02-13 19:15:24 +00:00
bevy_winit create window as soon as possible (#7668) 2023-02-14 15:08:04 +00:00