-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Open
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-Code-QualityA section of code that is hard to understand or changeA section of code that is hard to understand or changeD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!
Description
Problem
Detecting system order ambiguities should be entirely agnostic to the world that we're running on.
However, schedules (well, SystemStage
for now) must be initialized on a specific World
(taking &mut World
) before we can check for ambiguities, or the whole thing panics.
Proposed solution
- Clearly differentiate between "factual conflicts" and "hypothetical conflicts" on data access (Hypothetical and factual archetypes: unifying our data access checks #3119).
- Ensure that the former requires a specific world, while the latter does not.
- Compute system execution order ambiguities using only hypothetical conflicts.
Additional context
Discovered in #4299, as this makes exposing useful APIs and writing tests substantially harder than it should.
#1481 needs to take this design into account: we'll need to pass in the archetype invariants to the methods that compute hypothetical invariants
Metadata
Metadata
Assignees
Labels
A-ECSEntities, components, systems, and eventsEntities, components, systems, and eventsC-Code-QualityA section of code that is hard to understand or changeA section of code that is hard to understand or changeD-ComplexQuite challenging from either a design or technical perspective. Ask for help!Quite challenging from either a design or technical perspective. Ask for help!