Skip to content

Detecting system order ambiguities requires a specific world #4364

@alice-i-cecile

Description

@alice-i-cecile

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

  1. Clearly differentiate between "factual conflicts" and "hypothetical conflicts" on data access (Hypothetical and factual archetypes: unifying our data access checks #3119).
  2. Ensure that the former requires a specific world, while the latter does not.
  3. 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

No one assigned

    Labels

    A-ECSEntities, components, systems, and eventsC-Code-QualityA section of code that is hard to understand or changeD-ComplexQuite challenging from either a design or technical perspective. Ask for help!

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions