-
-
Notifications
You must be signed in to change notification settings - Fork 4.4k
Open
Labels
A-Build-SystemRelated to build systems or continuous integrationRelated to build systems or continuous integrationA-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-TestingA change that impacts how we test Bevy or how users test their appsA change that impacts how we test Bevy or how users test their appsD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!S-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!This issue is ready for an implementation PR. Go for it!
Description
What problem does this solve or what need does it fill?
As discussed in #7383, internal execution order ambiguities are genuinely bad.
They often represent subtle bugs, break determinism for end users, and result in noisy logs for users.
What solution would you like?
- Recreate the
enumfrom Improvements to execution order ambiguity reporting #4299 to create configurable levels of system execution order ambiguity reporting / strictness first. - Run the example from [Merged by Bors] - Reduce internal system order ambiguities, and add an example explaining them #7383 in CI.
- Ensure that this example panics if any ambiguities are found
To actually get this to pass, we need more powerful tools to resolve or ignore ambiguities between plugins that aren't aware of them.
Once #7267 is merged, we should have those.
Then, add some form of IntegrationPlugin to DefaultPlugins that uses system set configuration + feature flags to resolve or ignore cross-plugin ambiguities.
What alternative(s) have you considered?
Do this manually before every release 🥲
We could just ignore ambiguities on the offending systems completely, but that's definitely incorrect for important systems like UI layout and animation.
Current status
- clean up tests in #146760
- resolve all main app ambiguities and set the allowed number to 0
- figure out how to count the number of ambiguities in the RenderApp and make sure they don't increase
- resolve all render app ambiguities and set the allowed number to 0
Metadata
Metadata
Assignees
Labels
A-Build-SystemRelated to build systems or continuous integrationRelated to build systems or continuous integrationA-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-TestingA change that impacts how we test Bevy or how users test their appsA change that impacts how we test Bevy or how users test their appsD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!S-Ready-For-ImplementationThis issue is ready for an implementation PR. Go for it!This issue is ready for an implementation PR. Go for it!