bevyengine / bevyengine/bevy

Detecting system order ambiguities requires a specific world

Open
#4,364 3 comments 0 reactions 0 assignees View on GitHub
A-ECS C-Code-Quality D-Complex
Dominant language
Rust
Stars
48.2k
Forks
4.8k
Avg merge
3d 22h
Merged PRs (30d)
161

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

1. Clearly differentiate between "factual conflicts" and "hypothetical conflicts" on data access (#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

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.