Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deny internal exectuion order ambiguities in CI #7386

Open
alice-i-cecile opened this issue Jan 27, 2023 · 1 comment
Open

Deny internal exectuion order ambiguities in CI #7386

alice-i-cecile opened this issue Jan 27, 2023 · 1 comment
Labels
A-Build-System Related to build systems or continuous integration A-ECS Entities, components, systems, and events C-Testing A change that impacts how we test Bevy or how users test their apps S-Blocked This cannot move forward until something else changes

Comments

@alice-i-cecile
Copy link
Member

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?

  1. Recreate the enum from Improvements to execution order ambiguity reporting #4299 to create configurable levels of system execution order ambiguity reporting / strictness first.
  2. Run the example from [Merged by Bors] - Reduce internal system order ambiguities, and add an example explaining them #7383 in CI.
  3. 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.

@alice-i-cecile alice-i-cecile added A-ECS Entities, components, systems, and events A-Build-System Related to build systems or continuous integration S-Blocked This cannot move forward until something else changes C-Testing A change that impacts how we test Bevy or how users test their apps labels Jan 27, 2023
@Vrixyz
Copy link
Member

Vrixyz commented Jul 8, 2024

#13950 adds a dedicated example for ambiguity detection, which is run on CI.

You'll notice on the PR a list of disabled schedule labels, which you can clear to get a full list of current ambiguities.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-Build-System Related to build systems or continuous integration A-ECS Entities, components, systems, and events C-Testing A change that impacts how we test Bevy or how users test their apps S-Blocked This cannot move forward until something else changes
Projects
None yet
Development

No branches or pull requests

2 participants