@adobe/ecs 0.2.1 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/implementation/compiler/body-access.d.ts +18 -1
- package/dist/implementation/compiler/body-access.js +104 -15
- package/dist/implementation/compiler/body-access.js.map +1 -1
- package/dist/implementation/compiler/describe.d.ts +1 -1
- package/dist/implementation/compiler/describe.js +3 -3
- package/dist/implementation/compiler/describe.js.map +1 -1
- package/dist/implementation/compiler/estree.d.ts +5 -2
- package/dist/implementation/compiler/estree.js +8 -5
- package/dist/implementation/compiler/estree.js.map +1 -1
- package/dist/implementation/compiler/inferred.js +4 -2
- package/dist/implementation/compiler/inferred.js.map +1 -1
- package/dist/implementation/compiler/signature.js +1 -1
- package/dist/implementation/compiler/transform.js +6 -5
- package/dist/implementation/compiler/transform.js.map +1 -1
- package/dist/implementation/world/activate.js +14 -2
- package/dist/implementation/world/activate.js.map +1 -1
- package/dist/implementation/world/buffer.d.ts +7 -0
- package/dist/implementation/world/buffer.js +7 -0
- package/dist/implementation/world/buffer.js.map +1 -1
- package/dist/implementation/world/cascade.d.ts +10 -3
- package/dist/implementation/world/cascade.js +48 -23
- package/dist/implementation/world/cascade.js.map +1 -1
- package/dist/implementation/world/commands.js +86 -2
- package/dist/implementation/world/commands.js.map +1 -1
- package/dist/implementation/world/create.js +53 -2
- package/dist/implementation/world/create.js.map +1 -1
- package/dist/implementation/world/entities.d.ts +2 -0
- package/dist/implementation/world/entities.js +6 -0
- package/dist/implementation/world/entities.js.map +1 -1
- package/dist/implementation/world/execute.d.ts +4 -4
- package/dist/implementation/world/execute.js +132 -83
- package/dist/implementation/world/execute.js.map +1 -1
- package/dist/implementation/world/finalizers.d.ts +2 -0
- package/dist/implementation/world/finalizers.js +24 -3
- package/dist/implementation/world/finalizers.js.map +1 -1
- package/dist/implementation/world/join.js +22 -4
- package/dist/implementation/world/join.js.map +1 -1
- package/dist/implementation/world/register.js +2 -2
- package/dist/implementation/world/resource-changes.d.ts +18 -0
- package/dist/implementation/world/resource-changes.js +66 -0
- package/dist/implementation/world/resource-changes.js.map +1 -0
- package/dist/implementation/world/rows.d.ts +1 -1
- package/dist/implementation/world/rows.js +23 -13
- package/dist/implementation/world/rows.js.map +1 -1
- package/dist/implementation/world/run-changes.d.ts +38 -0
- package/dist/implementation/world/run-changes.js +138 -0
- package/dist/implementation/world/run-changes.js.map +1 -0
- package/dist/implementation/world/runner.js +19 -15
- package/dist/implementation/world/runner.js.map +1 -1
- package/dist/implementation/world/sharing.js +1 -1
- package/dist/implementation/world/staging.d.ts +4 -0
- package/dist/implementation/world/staging.js +15 -3
- package/dist/implementation/world/staging.js.map +1 -1
- package/dist/implementation/world/state.d.ts +13 -0
- package/dist/implementation/world/state.js +13 -1
- package/dist/implementation/world/state.js.map +1 -1
- package/dist/implementation/world/synchronize.js +72 -22
- package/dist/implementation/world/synchronize.js.map +1 -1
- package/dist/implementation/world/tables-read.d.ts +9 -0
- package/dist/implementation/world/tables-read.js +72 -0
- package/dist/implementation/world/tables-read.js.map +1 -0
- package/dist/implementation/world/tables.d.ts +10 -0
- package/dist/implementation/world/tables.js +401 -0
- package/dist/implementation/world/tables.js.map +1 -0
- package/dist/implementation/world/thread-observer.js +1 -1
- package/dist/implementation/world/thread-observer.js.map +1 -1
- package/dist/implementation/world/thread-systems.js +11 -6
- package/dist/implementation/world/thread-systems.js.map +1 -1
- package/dist/implementation/world/up.js +7 -1
- package/dist/implementation/world/up.js.map +1 -1
- package/dist/implementation/world/where.d.ts +8 -0
- package/dist/implementation/world/where.js +40 -11
- package/dist/implementation/world/where.js.map +1 -1
- package/dist/index.d.ts +8 -28
- package/dist/index.js +4 -9
- package/dist/index.js.map +1 -1
- package/dist/interface/component/declarations.d.ts +4 -0
- package/dist/interface/component/declarations.js +8 -0
- package/dist/interface/component/declarations.js.map +1 -0
- package/dist/interface/component/declared.d.ts +12 -0
- package/dist/interface/component/declared.js +2 -0
- package/dist/interface/component/declared.js.map +1 -0
- package/dist/interface/component/index.d.ts +2 -0
- package/dist/interface/component/index.js +1 -1
- package/dist/interface/component/index.js.map +1 -1
- package/dist/interface/finalizer/body.d.ts +18 -3
- package/dist/interface/finalizer/create.d.ts +7 -5
- package/dist/interface/finalizer/create.js +8 -5
- package/dist/interface/finalizer/create.js.map +1 -1
- package/dist/interface/finalizer/declaration.d.ts +4 -2
- package/dist/interface/indexes/declaration-of.d.ts +17 -0
- package/dist/interface/indexes/declaration-of.js +20 -0
- package/dist/interface/indexes/declaration-of.js.map +1 -0
- package/dist/interface/indexes/index.d.ts +1 -0
- package/dist/interface/indexes/index.js +1 -0
- package/dist/interface/indexes/index.js.map +1 -1
- package/dist/interface/registry/names.d.ts +2 -0
- package/dist/interface/registry/names.js +9 -0
- package/dist/interface/registry/names.js.map +1 -1
- package/dist/interface/registry/schedule.d.ts +31 -4
- package/dist/interface/registry/schedule.js +185 -24
- package/dist/interface/registry/schedule.js.map +1 -1
- package/dist/interface/resource/declarations.d.ts +4 -0
- package/dist/interface/resource/declarations.js +8 -0
- package/dist/interface/resource/declarations.js.map +1 -0
- package/dist/interface/resource/index.d.ts +2 -0
- package/dist/interface/resource/index.js +1 -1
- package/dist/interface/resource/index.js.map +1 -1
- package/dist/interface/system/access.d.ts +15 -0
- package/dist/interface/system/body.d.ts +11 -6
- package/dist/interface/system/check.d.ts +8 -1
- package/dist/interface/system/check.js +42 -12
- package/dist/interface/system/check.js.map +1 -1
- package/dist/interface/system/commands.d.ts +37 -0
- package/dist/interface/system/create-resolved.js +1 -1
- package/dist/interface/system/create-resolved.js.map +1 -1
- package/dist/interface/system/create.d.ts +31 -15
- package/dist/interface/system/create.js +8 -7
- package/dist/interface/system/create.js.map +1 -1
- package/dist/interface/system/declaration.d.ts +9 -2
- package/dist/interface/system/describe.d.ts +120 -0
- package/dist/interface/system/describe.js +116 -0
- package/dist/interface/system/describe.js.map +1 -0
- package/dist/interface/system/index.d.ts +1 -0
- package/dist/interface/system/index.js +1 -0
- package/dist/interface/system/index.js.map +1 -1
- package/dist/interface/system/leaf.d.ts +6 -0
- package/dist/interface/system/render.js +1 -0
- package/dist/interface/system/render.js.map +1 -1
- package/dist/interface/system/resolve.d.ts +5 -1
- package/dist/interface/system/resolve.js +19 -1
- package/dist/interface/system/resolve.js.map +1 -1
- package/dist/interface/system/shared-only.d.ts +7 -0
- package/dist/interface/system/shared-only.js +2 -0
- package/dist/interface/system/shared-only.js.map +1 -0
- package/dist/interface/system/tables.d.ts +28 -0
- package/dist/interface/system/tables.js +2 -0
- package/dist/interface/system/tables.js.map +1 -0
- package/dist/interface/world/index.d.ts +1 -1
- package/dist/interface/world/table/index.d.ts +27 -0
- package/dist/interface/world/table/index.js +3 -0
- package/dist/interface/world/table/index.js.map +1 -0
- package/dist/interface/world/table/table.d.ts +11 -0
- package/dist/interface/world/table/table.js +2 -0
- package/dist/interface/world/table/table.js.map +1 -0
- package/dist/interface/world/world.d.ts +25 -10
- package/dist/world.d.ts +27 -0
- package/dist/world.js +27 -0
- package/dist/world.js.map +1 -0
- package/package.json +11 -2
- package/src/exports.test.ts +1 -1
- package/src/guide/00-keys.ts +1 -1
- package/src/guide/01-resources.md +1 -1
- package/src/guide/01-resources.ts +1 -1
- package/src/guide/02-entities.ts +2 -2
- package/src/guide/03-systems.md +2 -2
- package/src/guide/03-systems.out +1 -1
- package/src/guide/03-systems.ts +3 -3
- package/src/guide/04-ticks.md +1 -1
- package/src/guide/04-ticks.ts +3 -3
- package/src/guide/05-scheduling.ts +1 -1
- package/src/guide/06-sync-points.md +18 -7
- package/src/guide/06-sync-points.out +1 -2
- package/src/guide/06-sync-points.ts +10 -6
- package/src/guide/07-change-filters.ts +2 -2
- package/src/guide/08-input.ts +1 -1
- package/src/guide/09-rules.ts +1 -1
- package/src/guide/11-traits.ts +3 -3
- package/src/guide/12-lookups.ts +2 -2
- package/src/guide/13-indexes.ts +4 -4
- package/src/guide/14-kernels.ts +1 -1
- package/src/guide/15-reductions.ts +1 -1
- package/src/guide/16-gpu.ts +1 -1
- package/src/guide/17-hierarchies.ts +1 -1
- package/src/guide/18-identity.out +1 -1
- package/src/guide/19-threads.md +4 -2
- package/src/guide/19-threads.ts +2 -2
- package/src/guide/20-shared.ts +3 -3
- package/src/guide/21-dom.md +2 -2
- package/src/guide/21-dom.ts +1 -1
- package/src/guide/22-canvas.md +1 -1
- package/src/guide/22-canvas.ts +1 -1
- package/src/guide/CLAUDE.md +1 -1
- package/src/guide/guide.test.ts +9 -154
- package/src/implementation/compiler/body-access.ts +102 -12
- package/src/implementation/compiler/describe.test-helper.ts +1 -1
- package/src/implementation/compiler/describe.test.ts +1 -1
- package/src/implementation/compiler/describe.ts +3 -3
- package/src/implementation/compiler/estree.ts +9 -6
- package/src/implementation/compiler/hygiene.test.ts +1 -1
- package/src/implementation/compiler/inferred.test.ts +1 -1
- package/src/implementation/compiler/inferred.ts +4 -2
- package/src/implementation/compiler/plugin.test.ts +2 -2
- package/src/implementation/compiler/signature.ts +1 -1
- package/src/implementation/compiler/transform.test.ts +43 -23
- package/src/implementation/compiler/transform.ts +6 -4
- package/src/implementation/world/activate.ts +11 -2
- package/src/implementation/world/batches.test.ts +3 -3
- package/src/implementation/world/buffer.ts +7 -0
- package/src/implementation/world/cascade.ts +46 -22
- package/src/implementation/world/change-blocks.test.ts +1 -1
- package/src/implementation/world/commands.ts +76 -2
- package/src/implementation/world/create.test.ts +8 -8
- package/src/implementation/world/create.ts +57 -2
- package/src/implementation/world/defaults.test.ts +1 -1
- package/src/implementation/world/despawn-where.test.ts +287 -0
- package/src/implementation/world/entities.ts +6 -0
- package/src/implementation/world/execute.ts +125 -78
- package/src/implementation/world/finalizers.test.ts +1 -1
- package/src/implementation/world/finalizers.ts +27 -4
- package/src/implementation/world/ids.test.ts +1 -1
- package/src/implementation/world/index-changed.test.ts +2 -2
- package/src/implementation/world/index-joined.test.ts +5 -5
- package/src/implementation/world/index-order.test.ts +1 -1
- package/src/implementation/world/indexes.test.ts +2 -1
- package/src/implementation/world/join.test.ts +23 -4
- package/src/implementation/world/join.ts +26 -4
- package/src/implementation/world/joined-observer.test.ts +1 -1
- package/src/implementation/world/joining-worker.fixture.ts +1 -1
- package/src/implementation/world/joining.fixture.ts +1 -1
- package/src/implementation/world/joining.test-helper.ts +1 -1
- package/src/implementation/world/kernel-spawns.test.ts +1 -1
- package/src/implementation/world/names.test.ts +1 -2
- package/src/implementation/world/observe-factories.test.ts +2 -2
- package/src/implementation/world/observe-ticks-cases.test.ts +1 -1
- package/src/implementation/world/observe.test-helper.ts +1 -1
- package/src/implementation/world/observer-contained-worker.fixture.ts +1 -1
- package/src/implementation/world/observer-contained.test-helper.ts +1 -1
- package/src/implementation/world/observer-contained.test.ts +2 -2
- package/src/implementation/world/observer-joined.test-helper.ts +4 -4
- package/src/implementation/world/observer-joined.test.ts +23 -15
- package/src/implementation/world/observer.browser.test.ts +2 -2
- package/src/implementation/world/observer.test.ts +8 -8
- package/src/implementation/world/optional-workers.fixture.ts +1 -1
- package/src/implementation/world/optional.test.ts +7 -7
- package/src/implementation/world/perf.md +3 -1
- package/src/implementation/world/reclaim.test.ts +3 -3
- package/src/implementation/world/register.ts +2 -2
- package/src/implementation/world/remote-objects.test-helper.ts +1 -1
- package/src/implementation/world/resource-changes.test.ts +61 -0
- package/src/implementation/world/resource-changes.ts +67 -0
- package/src/implementation/world/rows.ts +24 -13
- package/src/implementation/world/rules.test.ts +37 -0
- package/src/implementation/world/run-changes.test.ts +88 -0
- package/src/implementation/world/run-changes.ts +160 -0
- package/src/implementation/world/run-results.test.ts +10 -10
- package/src/implementation/world/runner.ts +20 -16
- package/src/implementation/world/shared-gpu.browser.test.ts +2 -2
- package/src/implementation/world/shared-kernels.test.ts +2 -2
- package/src/implementation/world/shared-workers.fixture.ts +2 -2
- package/src/implementation/world/shared.test.ts +10 -10
- package/src/implementation/world/sharing.ts +1 -1
- package/src/implementation/world/staging.ts +16 -3
- package/src/implementation/world/state.ts +19 -0
- package/src/implementation/world/sync-points.test.ts +135 -0
- package/src/implementation/world/synchronize.ts +65 -18
- package/src/implementation/world/tables-read.ts +70 -0
- package/src/implementation/world/tables.test.ts +369 -0
- package/src/implementation/world/tables.ts +368 -0
- package/src/implementation/world/tails.test.ts +1 -1
- package/src/implementation/world/target.test.ts +2 -2
- package/src/implementation/world/thread-observer.ts +1 -1
- package/src/implementation/world/thread-systems.test-helper.ts +3 -3
- package/src/implementation/world/thread-systems.ts +11 -6
- package/src/implementation/world/up.test.ts +13 -1
- package/src/implementation/world/up.ts +6 -1
- package/src/implementation/world/where.test.ts +4 -4
- package/src/implementation/world/where.ts +38 -10
- package/src/implementation/world/workers.fixture.ts +2 -2
- package/src/index.ts +4 -29
- package/src/interface/component/declarations.ts +11 -0
- package/src/interface/component/declared.ts +9 -0
- package/src/interface/component/index.ts +2 -0
- package/src/interface/finalizer/body.ts +13 -3
- package/src/interface/finalizer/create.test.ts +3 -1
- package/src/interface/finalizer/create.ts +12 -7
- package/src/interface/finalizer/declaration.ts +4 -2
- package/src/interface/index.type-test.ts +2 -2
- package/src/interface/indexes/create.test.ts +10 -0
- package/src/interface/indexes/declaration-of.ts +34 -0
- package/src/interface/indexes/index.ts +1 -0
- package/src/interface/indexes/index.type-test.ts +1 -1
- package/src/interface/registry/names.ts +8 -0
- package/src/interface/registry/schedule.ts +200 -27
- package/src/interface/resource/declarations.ts +11 -0
- package/src/interface/resource/index.ts +2 -0
- package/src/interface/system/access.ts +16 -0
- package/src/interface/system/body.ts +7 -5
- package/src/interface/system/check.ts +37 -10
- package/src/interface/system/commands.ts +33 -0
- package/src/interface/system/commands.type-test.ts +31 -0
- package/src/interface/system/create-resolved.ts +1 -1
- package/src/interface/system/create.test.ts +21 -13
- package/src/interface/system/create.ts +24 -15
- package/src/interface/system/declaration.ts +9 -2
- package/src/interface/system/describe.test.ts +79 -0
- package/src/interface/system/describe.ts +122 -0
- package/src/interface/system/index.ts +1 -0
- package/src/interface/system/leaf.ts +6 -0
- package/src/interface/system/lists.type-test.ts +1 -1
- package/src/interface/system/optional.type-test.ts +1 -1
- package/src/interface/system/render.ts +1 -0
- package/src/interface/system/resolve.ts +25 -2
- package/src/interface/system/shared-only.ts +5 -0
- package/src/interface/system/shared.type-test.ts +1 -1
- package/src/interface/system/system.type-test.ts +26 -20
- package/src/interface/system/tables.ts +27 -0
- package/src/interface/system/up.type-test.ts +3 -3
- package/src/interface/world/index.ts +2 -2
- package/src/interface/world/run.type-test.ts +14 -4
- package/src/interface/world/table/index.ts +20 -0
- package/src/interface/world/table/table.ts +12 -0
- package/src/interface/world/world.ts +23 -10
- package/src/observe/entity.ts +2 -2
- package/src/observe/resource.ts +2 -2
- package/src/observe/select.ts +4 -4
- package/src/observe/world-state.ts +3 -3
- package/src/perftest/benchmarks.ts +19 -1
- package/src/perftest/indexes.ts +3 -3
- package/src/perftest/loop.ts +1 -1
- package/src/perftest/observer.ts +4 -4
- package/src/perftest/reads.ts +2 -2
- package/src/perftest/remote.ts +5 -5
- package/src/perftest/strings.ts +1 -1
- package/src/perftest/structural.ts +20 -0
- package/src/perftest/suite.ts +1 -1
- package/src/perftest/tables.ts +107 -0
- package/src/world.test.ts +2 -2
- package/src/world.ts +32 -0
|
@@ -19,10 +19,10 @@ const noChunks = [];
|
|
|
19
19
|
/** The report of a run with nothing to report. */
|
|
20
20
|
export const clean = { failures: none, skipped: none, dropped: 0, warnings: none };
|
|
21
21
|
/**
|
|
22
|
-
* Runs a schedule tier by tier,
|
|
23
|
-
* first so workers run while main-thread systems do; commands merge in
|
|
24
|
-
* ran them. A failing system stops the run after its tier finishes:
|
|
25
|
-
* apply. `system` is the one the run was given, which the GPU's errors are reported under.
|
|
22
|
+
* Runs a schedule tier by tier, applying a sync point after each tier its schedule says and after the last, and reports
|
|
23
|
+
* what went wrong. Within a tier, kernels start first so workers run while main-thread systems do; commands merge in
|
|
24
|
+
* tier order, then chunk order, whichever thread ran them. A failing system stops the run after its tier finishes:
|
|
25
|
+
* later tiers are skipped, and commands so far still apply. `system` is the one the run was given, which the GPU's errors are reported under.
|
|
26
26
|
*/
|
|
27
27
|
export const execute = (context, schedule, args, system) => {
|
|
28
28
|
const { gpu } = context.state;
|
|
@@ -75,6 +75,7 @@ const tailingOf = (context, schedule) => {
|
|
|
75
75
|
const leaves = [];
|
|
76
76
|
const tiers = [];
|
|
77
77
|
const rest = [];
|
|
78
|
+
const syncs = [];
|
|
78
79
|
schedule.tiers.forEach((tier, t) => {
|
|
79
80
|
const kept = tier.filter((leaf, i) => {
|
|
80
81
|
if (!flags[t][i])
|
|
@@ -85,10 +86,15 @@ const tailingOf = (context, schedule) => {
|
|
|
85
86
|
});
|
|
86
87
|
if (kept.length > 0)
|
|
87
88
|
rest.push(kept);
|
|
89
|
+
// A sync point after a tier left empty follows the tier kept before it.
|
|
90
|
+
const reasons = schedule.syncs[t];
|
|
91
|
+
if (reasons !== null && rest.length > 0)
|
|
92
|
+
syncs[rest.length - 1] = [...syncs[rest.length - 1] ?? [], ...reasons];
|
|
88
93
|
});
|
|
89
94
|
if (leaves.length === 0)
|
|
90
95
|
return null;
|
|
91
|
-
|
|
96
|
+
const kept = rest.map((_, t) => t < rest.length - 1 ? syncs[t] ?? null : null);
|
|
97
|
+
return { schedule: { tiers: rest, reductions: schedule.reductions, observer: schedule.observer, syncs: kept }, runners: leaves.map(context.runnerOf), leaves, tiers };
|
|
92
98
|
};
|
|
93
99
|
const preparedBy = new WeakMap();
|
|
94
100
|
const preparedFor = (context, schedule) => {
|
|
@@ -101,7 +107,7 @@ const preparedFor = (context, schedule) => {
|
|
|
101
107
|
runners: schedule.tiers.map(tier => tier.map(context.runnerOf)), remotes: schedule.tiers.map(() => 0), uses: schedule.tiers.map(() => []), version: -1,
|
|
102
108
|
started: schedule.tiers.map(tier => new Array(tier.length)),
|
|
103
109
|
systems: [], tiers: [], tasks: new Map(), warnings: [], warningCount: 0, warned: null, outcome: { failures: null, skipped: null },
|
|
104
|
-
placement: -1, tailing: null, settling: 0, chunk: 0, error: undefined, tierFailed: false,
|
|
110
|
+
placement: -1, tailing: null, settling: 0, chunk: 0, error: undefined, tierFailed: false, dropped: 0,
|
|
105
111
|
};
|
|
106
112
|
bySchedule.set(schedule, prepared);
|
|
107
113
|
}
|
|
@@ -256,8 +262,8 @@ const runFused = async (context, schedule, prepared, folds, args, first, channel
|
|
|
256
262
|
let last = first;
|
|
257
263
|
if (prepared.version !== state.runnersVersion)
|
|
258
264
|
refresh(context, schedule, prepared);
|
|
259
|
-
// A tier using an index starts a task of its own, after the index is refreshed for it.
|
|
260
|
-
while (last + 1 < schedule.tiers.length && allOn(prepared.runners[last + 1], channel) && prepared.uses[last + 1].length === 0)
|
|
265
|
+
// A tier using an index starts a task of its own, after the index is refreshed for it, as does one after a sync point.
|
|
266
|
+
while (last + 1 < schedule.tiers.length && schedule.syncs[last] === null && allOn(prepared.runners[last + 1], channel) && prepared.uses[last + 1].length === 0)
|
|
261
267
|
last++;
|
|
262
268
|
if (channel.busy())
|
|
263
269
|
await channel.idle();
|
|
@@ -392,7 +398,7 @@ const endTier = (state, gpu, prepared, schedule, t) => {
|
|
|
392
398
|
return true;
|
|
393
399
|
};
|
|
394
400
|
/**
|
|
395
|
-
* Runs a schedule tier by tier
|
|
401
|
+
* Runs a schedule tier by tier with its sync points, and reports what went wrong (`execute`). Runs with no GPU,
|
|
396
402
|
* tails or observer posts awaiting nothing, so a run that waits for nothing allocates no async frame: at the first
|
|
397
403
|
* tier on a joined thread, index build across the pool or chunk on workers, `executeFrom` goes on from there.
|
|
398
404
|
*/
|
|
@@ -417,12 +423,12 @@ const executeTiers = (context, whole, args) => {
|
|
|
417
423
|
(folds ??= new Map()).set(key, { target: null, values: [], remaining: contributors, ran: false, failed: false });
|
|
418
424
|
const { outcome } = prepared;
|
|
419
425
|
prepared.warningCount = 0;
|
|
426
|
+
prepared.dropped = 0;
|
|
420
427
|
outcome.failures = null;
|
|
421
428
|
outcome.skipped = null;
|
|
422
429
|
if (state.gpu !== null || tailing !== null || state.tails.length !== 0 || state.observer.posts.length !== 0)
|
|
423
430
|
return executeFrom(context, schedule, prepared, folds, args, tailing, 0, null, null);
|
|
424
431
|
let handed = null;
|
|
425
|
-
let dropped = 0;
|
|
426
432
|
try {
|
|
427
433
|
for (let t = 0; t < schedule.tiers.length; t++) {
|
|
428
434
|
// A tick in progress takes up runners replaced since it started from its next tier on.
|
|
@@ -444,51 +450,50 @@ const executeTiers = (context, whole, args) => {
|
|
|
444
450
|
return handed = executeFrom(context, schedule, prepared, folds, args, null, t, null, waiting);
|
|
445
451
|
if (endTier(state, null, prepared, schedule, t))
|
|
446
452
|
break;
|
|
453
|
+
if (schedule.syncs[t] !== null)
|
|
454
|
+
syncNow(context, prepared, false);
|
|
447
455
|
}
|
|
448
456
|
}
|
|
449
457
|
finally {
|
|
450
458
|
if (handed === null)
|
|
451
|
-
|
|
459
|
+
syncNow(context, prepared, true);
|
|
452
460
|
}
|
|
453
|
-
return reportOf(state, prepared
|
|
461
|
+
return reportOf(state, prepared);
|
|
454
462
|
};
|
|
455
463
|
/**
|
|
456
|
-
* A
|
|
457
|
-
*
|
|
464
|
+
* A sync point with nothing to wait for: no GPU, tails or observer posts, which `executeTiers` checked before each
|
|
465
|
+
* tier and bodies can't add. The run's `last` lets go of strings no reader holds.
|
|
458
466
|
*/
|
|
459
|
-
const
|
|
467
|
+
const syncNow = (context, prepared, last) => {
|
|
460
468
|
const { state, workers, publish } = context;
|
|
461
|
-
|
|
462
|
-
let dropped = 0;
|
|
463
|
-
// This run's tasks on joined threads are done: they return to their event loops while its sync point applies.
|
|
469
|
+
// The run's tasks on joined threads so far are done: they return to their event loops while its sync point applies.
|
|
464
470
|
for (let k = 0; k < state.logs.length; k++)
|
|
465
471
|
markRun(state.logs[k]);
|
|
466
472
|
try {
|
|
467
473
|
if (prepareSync(state)) {
|
|
468
|
-
dropped
|
|
474
|
+
prepared.dropped += state.plan.dropped;
|
|
469
475
|
for (const { finalizer, error, kind } of applySync(state))
|
|
470
|
-
(outcome.failures ??= []).push(failureOf(kind ?? "finalizer", finalizer, error));
|
|
476
|
+
(prepared.outcome.failures ??= []).push(failureOf(kind ?? "finalizer", finalizer, error));
|
|
471
477
|
}
|
|
472
478
|
}
|
|
473
479
|
finally {
|
|
474
480
|
// Strings let go before the last run's sync point have no reader left: this run's waited for every one.
|
|
475
|
-
|
|
481
|
+
if (last)
|
|
482
|
+
state.strings?.settle();
|
|
476
483
|
rewind(state, workers);
|
|
477
484
|
publish();
|
|
478
485
|
}
|
|
479
|
-
return dropped;
|
|
480
486
|
};
|
|
481
487
|
/**
|
|
482
488
|
* `executeTiers` from tier `first` on, awaiting what it needs to: from the tier's start, or once `building`, its
|
|
483
489
|
* indexes' build, is done, or once `settling`, what settling it waits for, settles.
|
|
484
490
|
*/
|
|
485
491
|
const executeFrom = async (context, schedule, prepared, folds, args, tailing, first, building, settling) => {
|
|
486
|
-
const { state, workers
|
|
492
|
+
const { state, workers } = context;
|
|
487
493
|
const { gpu } = state;
|
|
488
494
|
const { outcome } = prepared;
|
|
489
495
|
let built = building;
|
|
490
496
|
let waited = settling;
|
|
491
|
-
let dropped = 0;
|
|
492
497
|
try {
|
|
493
498
|
for (let t = first; t < schedule.tiers.length; t++) {
|
|
494
499
|
const tier = schedule.tiers[t];
|
|
@@ -531,6 +536,11 @@ const executeFrom = async (context, schedule, prepared, folds, args, tailing, fi
|
|
|
531
536
|
if (last < 0)
|
|
532
537
|
break;
|
|
533
538
|
t = last;
|
|
539
|
+
if (schedule.syncs[t] !== null) {
|
|
540
|
+
const pending = syncPoint(context, prepared, false);
|
|
541
|
+
if (pending !== null)
|
|
542
|
+
await pending;
|
|
543
|
+
}
|
|
534
544
|
continue;
|
|
535
545
|
}
|
|
536
546
|
if (gpu !== null)
|
|
@@ -561,65 +571,17 @@ const executeFrom = async (context, schedule, prepared, folds, args, tailing, fi
|
|
|
561
571
|
waiting = settleTier(state, folds, prepared, tier, t, await waiting);
|
|
562
572
|
if (endTier(state, gpu, prepared, schedule, t))
|
|
563
573
|
break;
|
|
574
|
+
if (schedule.syncs[t] !== null) {
|
|
575
|
+
const pending = syncPoint(context, prepared, false);
|
|
576
|
+
if (pending !== null)
|
|
577
|
+
await pending;
|
|
578
|
+
}
|
|
564
579
|
}
|
|
565
580
|
}
|
|
566
581
|
finally {
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
try {
|
|
571
|
-
if (gpu !== null) {
|
|
572
|
-
gpu.submit();
|
|
573
|
-
gpu.beforeSync();
|
|
574
|
-
}
|
|
575
|
-
try {
|
|
576
|
-
// A sync point counts as a write to everything a tail still reads.
|
|
577
|
-
if (state.tails.length !== 0) {
|
|
578
|
-
activate(state);
|
|
579
|
-
const waiting = syncPending(state) ? settleAll(state) : null;
|
|
580
|
-
if (waiting !== null)
|
|
581
|
-
await waiting;
|
|
582
|
-
}
|
|
583
|
-
// Each sync point waits for observer systems on joined threads in progress, and cancels the rest.
|
|
584
|
-
if (state.observer.posts.length !== 0) {
|
|
585
|
-
const waiting = settlePosts(state);
|
|
586
|
-
if (waiting !== null)
|
|
587
|
-
await waiting;
|
|
588
|
-
}
|
|
589
|
-
if (prepareSync(state)) {
|
|
590
|
-
try {
|
|
591
|
-
if (gpu !== null) {
|
|
592
|
-
// The sync point moves and writes existing rows of these archetypes on the CPU, and
|
|
593
|
-
// finalizers read them, so it needs the GPU's writes there first.
|
|
594
|
-
const disturbed = disturbedBy(state);
|
|
595
|
-
gpu.disturb(disturbed.archetypes);
|
|
596
|
-
if (gpu.anyAhead())
|
|
597
|
-
await gpu.readback(disturbed.storages);
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
finally {
|
|
601
|
-
// Applied even when the readback fails, which only a lost device makes it do: the CPU state
|
|
602
|
-
// stays whole.
|
|
603
|
-
dropped = state.plan.dropped;
|
|
604
|
-
for (const { finalizer, error, kind } of applySync(state))
|
|
605
|
-
(outcome.failures ??= []).push(failureOf(kind ?? "finalizer", finalizer, error));
|
|
606
|
-
}
|
|
607
|
-
}
|
|
608
|
-
}
|
|
609
|
-
finally {
|
|
610
|
-
// Even a sync point that failed partway moved rows.
|
|
611
|
-
if (gpu !== null && state.touched !== null) {
|
|
612
|
-
gpu.touched(state.touched);
|
|
613
|
-
state.touched.clear();
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
finally {
|
|
618
|
-
// Strings let go before the last run's sync point have no reader left: this run's waited for every one.
|
|
619
|
-
state.strings?.settle();
|
|
620
|
-
rewind(state, workers);
|
|
621
|
-
publish();
|
|
622
|
-
}
|
|
582
|
+
const pending = syncPoint(context, prepared, true);
|
|
583
|
+
if (pending !== null)
|
|
584
|
+
await pending;
|
|
623
585
|
}
|
|
624
586
|
if (tailing !== null) {
|
|
625
587
|
// Placed again since, as when a joined thread is gone: they're found again next run.
|
|
@@ -636,11 +598,98 @@ const executeFrom = async (context, schedule, prepared, folds, args, tailing, fi
|
|
|
636
598
|
countRan(state, tailing.runners);
|
|
637
599
|
}
|
|
638
600
|
}
|
|
639
|
-
return reportOf(state, prepared
|
|
601
|
+
return reportOf(state, prepared);
|
|
602
|
+
};
|
|
603
|
+
/**
|
|
604
|
+
* Applies the commands so far as a sync point, once what it changes is read: by tails and observer systems on joined
|
|
605
|
+
* threads still reading it, and where it moves rows, by the GPU. One within a run lets the tiers after it see them;
|
|
606
|
+
* the run's `last` lets go of strings no reader holds. Returns what to wait for, or null once it applied, so a sync
|
|
607
|
+
* point with nothing to wait for takes no turn of the event loop before what follows it.
|
|
608
|
+
*/
|
|
609
|
+
const syncPoint = (context, prepared, last) => {
|
|
610
|
+
const { state } = context;
|
|
611
|
+
const { gpu } = state;
|
|
612
|
+
// The run's tasks on joined threads so far are done: they return to their event loops while its sync point applies.
|
|
613
|
+
for (let k = 0; k < state.logs.length; k++)
|
|
614
|
+
markRun(state.logs[k]);
|
|
615
|
+
let pending = null;
|
|
616
|
+
try {
|
|
617
|
+
if (gpu !== null) {
|
|
618
|
+
gpu.submit();
|
|
619
|
+
gpu.beforeSync();
|
|
620
|
+
}
|
|
621
|
+
const reading = readersDone(state);
|
|
622
|
+
pending = reading === null ? applyOnDevice(state, prepared) : reading.then(() => applyOnDevice(state, prepared) ?? undefined);
|
|
623
|
+
}
|
|
624
|
+
finally {
|
|
625
|
+
if (pending === null)
|
|
626
|
+
afterSync(context, last);
|
|
627
|
+
}
|
|
628
|
+
return pending === null ? null : pending.finally(() => afterSync(context, last));
|
|
629
|
+
};
|
|
630
|
+
/**
|
|
631
|
+
* Waits for the readers a sync point changes what they read for: tails, as it counts as a write to everything they
|
|
632
|
+
* read, then observer systems on joined threads in progress, cancelling the rest; null when none needs waiting for.
|
|
633
|
+
*/
|
|
634
|
+
const readersDone = (state) => {
|
|
635
|
+
if (state.tails.length !== 0) {
|
|
636
|
+
activate(state);
|
|
637
|
+
const waiting = syncPending(state) ? settleAll(state) : null;
|
|
638
|
+
if (waiting !== null)
|
|
639
|
+
return waiting.then(() => (state.observer.posts.length === 0 ? null : settlePosts(state)) ?? undefined);
|
|
640
|
+
}
|
|
641
|
+
return state.observer.posts.length === 0 ? null : settlePosts(state);
|
|
642
|
+
};
|
|
643
|
+
/**
|
|
644
|
+
* Prepares and applies a sync point, reading back first what the GPU wrote where it moves and writes existing rows,
|
|
645
|
+
* which finalizers read too; applied even when the readback fails, which only a lost device makes it do, so the CPU
|
|
646
|
+
* state stays whole.
|
|
647
|
+
*/
|
|
648
|
+
const applyOnDevice = (state, prepared) => {
|
|
649
|
+
if (!prepareSync(state))
|
|
650
|
+
return null;
|
|
651
|
+
const { gpu } = state;
|
|
652
|
+
let reading = null;
|
|
653
|
+
try {
|
|
654
|
+
if (gpu !== null) {
|
|
655
|
+
const disturbed = disturbedBy(state);
|
|
656
|
+
gpu.disturb(disturbed.archetypes);
|
|
657
|
+
if (gpu.anyAhead())
|
|
658
|
+
reading = gpu.readback(disturbed.storages);
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
finally {
|
|
662
|
+
if (reading === null)
|
|
663
|
+
apply(state, prepared);
|
|
664
|
+
}
|
|
665
|
+
return reading === null ? null : reading.finally(() => apply(state, prepared));
|
|
666
|
+
};
|
|
667
|
+
const apply = (state, prepared) => {
|
|
668
|
+
prepared.dropped += state.plan.dropped;
|
|
669
|
+
for (const { finalizer, error, kind } of applySync(state))
|
|
670
|
+
(prepared.outcome.failures ??= []).push(failureOf(kind ?? "finalizer", finalizer, error));
|
|
671
|
+
};
|
|
672
|
+
/** Once a sync point applied or failed: the rows it moved, even partway, the strings it let go, and its buffers. */
|
|
673
|
+
const afterSync = (context, last) => {
|
|
674
|
+
const { state, workers, publish } = context;
|
|
675
|
+
const { gpu } = state;
|
|
676
|
+
try {
|
|
677
|
+
if (gpu !== null && state.touched !== null) {
|
|
678
|
+
gpu.touched(state.touched);
|
|
679
|
+
state.touched.clear();
|
|
680
|
+
}
|
|
681
|
+
}
|
|
682
|
+
finally {
|
|
683
|
+
// Strings let go before the last run's sync point have no reader left: this run's waited for every one.
|
|
684
|
+
if (last)
|
|
685
|
+
state.strings?.settle();
|
|
686
|
+
rewind(state, workers);
|
|
687
|
+
publish();
|
|
688
|
+
}
|
|
640
689
|
};
|
|
641
690
|
/** A run's report once its sync point applied, its index conflicts included: a shared one when nothing went wrong. */
|
|
642
|
-
const reportOf = (state, prepared
|
|
643
|
-
const { outcome } = prepared;
|
|
691
|
+
const reportOf = (state, prepared) => {
|
|
692
|
+
const { outcome, dropped } = prepared;
|
|
644
693
|
// Conflicts unique indexes found while refreshing for finalizers.
|
|
645
694
|
if (state.indexFailures.length !== 0)
|
|
646
695
|
(outcome.failures ??= []).push(...state.indexFailures.splice(0));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/implementation/world/execute.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"execute.js","sourceRoot":"","sources":["../../../src/implementation/world/execute.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,8 @@ export type FinalizerRunner = {
|
|
|
14
14
|
readonly excluded: readonly number[];
|
|
15
15
|
/** For a changes finalizer: whether it watches a component, by id. */
|
|
16
16
|
readonly watches: (id: number) => boolean;
|
|
17
|
+
/** For a changes finalizer: the resources it watches, by id. */
|
|
18
|
+
readonly resourceWatches: readonly number[];
|
|
17
19
|
/** By archetype id: 1 if it matches, 2 if not, 0 until known. */
|
|
18
20
|
readonly matches: number[];
|
|
19
21
|
readonly context: Context;
|
|
@@ -8,6 +8,7 @@ import { newestKeyOf, threadOf } from '../../interface/registry/index.js';
|
|
|
8
8
|
import { resourceOffsetsOf, writeStops } from './stop-lists.js';
|
|
9
9
|
import { acquireLookups, refreshUses } from './indexes.js';
|
|
10
10
|
import { indexWatchesOf } from './lookup-keys.js';
|
|
11
|
+
import { takeResourceChanges, watchResource } from './resource-changes.js';
|
|
11
12
|
/** Before a sync point's finalizers run, or every live match's once the world is disposed: refreshes the indexes they look up through. */
|
|
12
13
|
export const refreshFinalizerIndexes = (state) => {
|
|
13
14
|
for (const runner of state.finalizers)
|
|
@@ -23,9 +24,17 @@ export const createFinalizerRunner = (state, finalizer) => {
|
|
|
23
24
|
// the objects a joined thread fills, whose storage here holds only tags.
|
|
24
25
|
let watches = (id) => !state.derived[id] && !state.resources.has(id) && state.remote[id] === undefined;
|
|
25
26
|
const watch = finalizer.kind === "changes" ? finalizer.declaration.watch : undefined;
|
|
27
|
+
const resourceWatches = [];
|
|
26
28
|
if (watch !== undefined) {
|
|
27
29
|
// `Finalizer.changes` rejected derived components.
|
|
28
30
|
const watched = new Set(watch.map(key => idOf(state, key)));
|
|
31
|
+
for (const id of watched) {
|
|
32
|
+
if (!state.resources.has(id))
|
|
33
|
+
continue;
|
|
34
|
+
watched.delete(id);
|
|
35
|
+
resourceWatches.push(id);
|
|
36
|
+
watchResource(state, id);
|
|
37
|
+
}
|
|
29
38
|
watches = id => watched.has(id);
|
|
30
39
|
}
|
|
31
40
|
const target = { buffer: createBuffer() };
|
|
@@ -42,6 +51,7 @@ export const createFinalizerRunner = (state, finalizer) => {
|
|
|
42
51
|
required: [...new Set([...reads, ...query?.has ?? []])].filter(key => !(query?.optional ?? []).includes(key)).map(key => idOf(state, key)),
|
|
43
52
|
excluded: (query?.not ?? []).map(key => idOf(state, key)),
|
|
44
53
|
watches,
|
|
54
|
+
resourceWatches,
|
|
45
55
|
matches: [],
|
|
46
56
|
context: createContext(state, declaration, commanding ? { commands, indexes: indexes.byName } : { indexes: indexes.byName }),
|
|
47
57
|
target,
|
|
@@ -211,8 +221,13 @@ export const isMissing = (value) => value === missing;
|
|
|
211
221
|
const essential = (state, id) => newestKeyOf(state.keys[id]);
|
|
212
222
|
/** No components, shared by every group that replaces none. */
|
|
213
223
|
const none = [];
|
|
214
|
-
|
|
215
|
-
const
|
|
224
|
+
const noResources = [];
|
|
225
|
+
const noResourceChanges = [];
|
|
226
|
+
/**
|
|
227
|
+
* The sync point's structural changes to a changes finalizer's components, grouped by how they changed, and of
|
|
228
|
+
* `written`, the resources it watches.
|
|
229
|
+
*/
|
|
230
|
+
const changesOf = (state, runner, queued, written) => {
|
|
216
231
|
const { plan, archetypes, entities } = state;
|
|
217
232
|
const { watches } = runner;
|
|
218
233
|
const names = (archetype) => archetype === null ? null : archetype.components.filter(watches).map(id => essential(state, id));
|
|
@@ -346,8 +361,12 @@ const changesOf = (state, runner, queued) => {
|
|
|
346
361
|
const value = commandValue(state, queued, entry, id);
|
|
347
362
|
return isMissing(value) ? live(entity, id) : value;
|
|
348
363
|
};
|
|
364
|
+
const resources = written.length === 0 || runner.resourceWatches.length === 0 ? noResources
|
|
365
|
+
: written.filter(change => runner.resourceWatches.includes(change.id)).map(({ id, previous, next }) => ({ key: newestKeyOf(state.keys[id]), previous, next }));
|
|
349
366
|
return {
|
|
350
367
|
groups: [...groups.values()],
|
|
368
|
+
// Stored values match each resource's registered schema, so they have its type.
|
|
369
|
+
resources: resources,
|
|
351
370
|
// Stored and commanded values match each component's registered schema, so they have its type.
|
|
352
371
|
previous: (entity, key) => (bornHere(entity) ? null : live(entity, idOf(state, key))),
|
|
353
372
|
next: (entity, key) => next(entity, idOf(state, key)),
|
|
@@ -368,6 +387,8 @@ const staged = (state) => {
|
|
|
368
387
|
export const runFinalizers = (state, queued, born, tick) => {
|
|
369
388
|
const errors = [];
|
|
370
389
|
state.born = born;
|
|
390
|
+
// Taken before any finalizer runs, so what finalizers write is seen at the next sync point.
|
|
391
|
+
const written = state.resourcesSeen.size === 0 ? noResourceChanges : takeResourceChanges(state);
|
|
371
392
|
try {
|
|
372
393
|
for (const runner of state.finalizers) {
|
|
373
394
|
const { finalizer, remote } = runner;
|
|
@@ -381,7 +402,7 @@ export const runFinalizers = (state, queued, born, tick) => {
|
|
|
381
402
|
else {
|
|
382
403
|
// The context is built to the finalizer's declaration, so its body accepts it.
|
|
383
404
|
const changes = finalizer;
|
|
384
|
-
guarded(state, errors, finalizer, () => changes.body(changesOf(state, runner, queued), runner.context.value));
|
|
405
|
+
guarded(state, errors, finalizer, () => changes.body(changesOf(state, runner, queued, written), runner.context.value));
|
|
385
406
|
}
|
|
386
407
|
if (runner.target.buffer.count > 0) {
|
|
387
408
|
state.queued.push({ buffer: runner.target.buffer, guarded: true });
|