@adobe/ecs 0.2.3 → 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.
Files changed (179) hide show
  1. package/dist/implementation/compiler/body-access.d.ts +18 -1
  2. package/dist/implementation/compiler/body-access.js +104 -15
  3. package/dist/implementation/compiler/body-access.js.map +1 -1
  4. package/dist/implementation/compiler/estree.d.ts +5 -2
  5. package/dist/implementation/compiler/estree.js +8 -5
  6. package/dist/implementation/compiler/estree.js.map +1 -1
  7. package/dist/implementation/compiler/inferred.js +4 -2
  8. package/dist/implementation/compiler/inferred.js.map +1 -1
  9. package/dist/implementation/compiler/transform.js +5 -4
  10. package/dist/implementation/compiler/transform.js.map +1 -1
  11. package/dist/implementation/world/activate.js +14 -2
  12. package/dist/implementation/world/activate.js.map +1 -1
  13. package/dist/implementation/world/buffer.d.ts +7 -0
  14. package/dist/implementation/world/buffer.js +7 -0
  15. package/dist/implementation/world/buffer.js.map +1 -1
  16. package/dist/implementation/world/cascade.d.ts +10 -3
  17. package/dist/implementation/world/cascade.js +48 -23
  18. package/dist/implementation/world/cascade.js.map +1 -1
  19. package/dist/implementation/world/commands.js +40 -5
  20. package/dist/implementation/world/commands.js.map +1 -1
  21. package/dist/implementation/world/create.js +53 -2
  22. package/dist/implementation/world/create.js.map +1 -1
  23. package/dist/implementation/world/execute.d.ts +4 -4
  24. package/dist/implementation/world/execute.js +132 -83
  25. package/dist/implementation/world/execute.js.map +1 -1
  26. package/dist/implementation/world/finalizers.d.ts +2 -0
  27. package/dist/implementation/world/finalizers.js +24 -3
  28. package/dist/implementation/world/finalizers.js.map +1 -1
  29. package/dist/implementation/world/join.js +12 -2
  30. package/dist/implementation/world/join.js.map +1 -1
  31. package/dist/implementation/world/resource-changes.d.ts +18 -0
  32. package/dist/implementation/world/resource-changes.js +66 -0
  33. package/dist/implementation/world/resource-changes.js.map +1 -0
  34. package/dist/implementation/world/rows.js +21 -16
  35. package/dist/implementation/world/rows.js.map +1 -1
  36. package/dist/implementation/world/run-changes.d.ts +38 -0
  37. package/dist/implementation/world/run-changes.js +138 -0
  38. package/dist/implementation/world/run-changes.js.map +1 -0
  39. package/dist/implementation/world/runner.js +16 -12
  40. package/dist/implementation/world/runner.js.map +1 -1
  41. package/dist/implementation/world/state.d.ts +13 -0
  42. package/dist/implementation/world/state.js +13 -1
  43. package/dist/implementation/world/state.js.map +1 -1
  44. package/dist/implementation/world/synchronize.js +72 -22
  45. package/dist/implementation/world/synchronize.js.map +1 -1
  46. package/dist/implementation/world/tables-read.d.ts +5 -3
  47. package/dist/implementation/world/tables-read.js +16 -4
  48. package/dist/implementation/world/tables-read.js.map +1 -1
  49. package/dist/implementation/world/tables.d.ts +3 -2
  50. package/dist/implementation/world/tables.js +83 -37
  51. package/dist/implementation/world/tables.js.map +1 -1
  52. package/dist/implementation/world/thread-observer.js +1 -1
  53. package/dist/implementation/world/thread-observer.js.map +1 -1
  54. package/dist/implementation/world/thread-systems.js +10 -6
  55. package/dist/implementation/world/thread-systems.js.map +1 -1
  56. package/dist/implementation/world/up.js +7 -1
  57. package/dist/implementation/world/up.js.map +1 -1
  58. package/dist/implementation/world/where.d.ts +8 -0
  59. package/dist/implementation/world/where.js +40 -11
  60. package/dist/implementation/world/where.js.map +1 -1
  61. package/dist/interface/finalizer/body.d.ts +18 -3
  62. package/dist/interface/finalizer/create.d.ts +7 -5
  63. package/dist/interface/finalizer/create.js +8 -5
  64. package/dist/interface/finalizer/create.js.map +1 -1
  65. package/dist/interface/finalizer/declaration.d.ts +4 -2
  66. package/dist/interface/indexes/declaration-of.d.ts +17 -0
  67. package/dist/interface/indexes/declaration-of.js +20 -0
  68. package/dist/interface/indexes/declaration-of.js.map +1 -0
  69. package/dist/interface/indexes/index.d.ts +1 -0
  70. package/dist/interface/indexes/index.js +1 -0
  71. package/dist/interface/indexes/index.js.map +1 -1
  72. package/dist/interface/registry/schedule.d.ts +28 -1
  73. package/dist/interface/registry/schedule.js +182 -21
  74. package/dist/interface/registry/schedule.js.map +1 -1
  75. package/dist/interface/system/access.d.ts +15 -0
  76. package/dist/interface/system/check.d.ts +7 -0
  77. package/dist/interface/system/check.js +17 -3
  78. package/dist/interface/system/check.js.map +1 -1
  79. package/dist/interface/system/commands.d.ts +26 -5
  80. package/dist/interface/system/create-resolved.js +1 -1
  81. package/dist/interface/system/create-resolved.js.map +1 -1
  82. package/dist/interface/system/create.d.ts +10 -6
  83. package/dist/interface/system/create.js +5 -4
  84. package/dist/interface/system/create.js.map +1 -1
  85. package/dist/interface/system/describe.d.ts +120 -0
  86. package/dist/interface/system/describe.js +116 -0
  87. package/dist/interface/system/describe.js.map +1 -0
  88. package/dist/interface/system/index.d.ts +1 -0
  89. package/dist/interface/system/index.js +1 -0
  90. package/dist/interface/system/index.js.map +1 -1
  91. package/dist/interface/system/leaf.d.ts +6 -0
  92. package/dist/interface/system/render.js +1 -0
  93. package/dist/interface/system/render.js.map +1 -1
  94. package/dist/interface/system/resolve.d.ts +5 -1
  95. package/dist/interface/system/resolve.js +19 -1
  96. package/dist/interface/system/resolve.js.map +1 -1
  97. package/dist/interface/system/shared-only.d.ts +7 -0
  98. package/dist/interface/system/shared-only.js +2 -0
  99. package/dist/interface/system/shared-only.js.map +1 -0
  100. package/dist/interface/system/tables.d.ts +9 -1
  101. package/dist/interface/world/table/index.d.ts +3 -2
  102. package/dist/interface/world/world.d.ts +15 -0
  103. package/package.json +11 -2
  104. package/src/guide/03-systems.out +1 -1
  105. package/src/guide/06-sync-points.md +12 -8
  106. package/src/guide/06-sync-points.out +1 -2
  107. package/src/guide/06-sync-points.ts +9 -5
  108. package/src/guide/18-identity.out +1 -1
  109. package/src/guide/guide.test.ts +3 -150
  110. package/src/implementation/compiler/body-access.ts +102 -12
  111. package/src/implementation/compiler/estree.ts +9 -6
  112. package/src/implementation/compiler/inferred.test.ts +1 -1
  113. package/src/implementation/compiler/inferred.ts +4 -2
  114. package/src/implementation/compiler/transform.test.ts +41 -21
  115. package/src/implementation/compiler/transform.ts +5 -3
  116. package/src/implementation/world/activate.ts +11 -2
  117. package/src/implementation/world/batches.test.ts +3 -3
  118. package/src/implementation/world/buffer.ts +7 -0
  119. package/src/implementation/world/cascade.ts +46 -22
  120. package/src/implementation/world/commands.ts +36 -5
  121. package/src/implementation/world/create.test.ts +8 -8
  122. package/src/implementation/world/create.ts +57 -2
  123. package/src/implementation/world/despawn-where.test.ts +287 -0
  124. package/src/implementation/world/execute.ts +125 -78
  125. package/src/implementation/world/finalizers.ts +27 -4
  126. package/src/implementation/world/ids.test.ts +1 -1
  127. package/src/implementation/world/indexes.test.ts +2 -1
  128. package/src/implementation/world/join.test.ts +19 -0
  129. package/src/implementation/world/join.ts +16 -2
  130. package/src/implementation/world/names.test.ts +1 -2
  131. package/src/implementation/world/perf.md +3 -1
  132. package/src/implementation/world/resource-changes.test.ts +61 -0
  133. package/src/implementation/world/resource-changes.ts +67 -0
  134. package/src/implementation/world/rows.ts +21 -14
  135. package/src/implementation/world/rules.test.ts +37 -0
  136. package/src/implementation/world/run-changes.test.ts +88 -0
  137. package/src/implementation/world/run-changes.ts +160 -0
  138. package/src/implementation/world/runner.ts +17 -13
  139. package/src/implementation/world/shared.test.ts +2 -2
  140. package/src/implementation/world/state.ts +19 -0
  141. package/src/implementation/world/sync-points.test.ts +135 -0
  142. package/src/implementation/world/synchronize.ts +65 -18
  143. package/src/implementation/world/tables-read.ts +16 -5
  144. package/src/implementation/world/tables.test.ts +106 -4
  145. package/src/implementation/world/tables.ts +71 -33
  146. package/src/implementation/world/thread-observer.ts +1 -1
  147. package/src/implementation/world/thread-systems.ts +10 -6
  148. package/src/implementation/world/up.test.ts +13 -1
  149. package/src/implementation/world/up.ts +6 -1
  150. package/src/implementation/world/where.ts +38 -10
  151. package/src/interface/finalizer/body.ts +13 -3
  152. package/src/interface/finalizer/create.test.ts +3 -1
  153. package/src/interface/finalizer/create.ts +12 -7
  154. package/src/interface/finalizer/declaration.ts +4 -2
  155. package/src/interface/indexes/create.test.ts +10 -0
  156. package/src/interface/indexes/declaration-of.ts +34 -0
  157. package/src/interface/indexes/index.ts +1 -0
  158. package/src/interface/registry/schedule.ts +196 -23
  159. package/src/interface/system/access.ts +16 -0
  160. package/src/interface/system/check.ts +15 -2
  161. package/src/interface/system/commands.ts +23 -4
  162. package/src/interface/system/commands.type-test.ts +31 -0
  163. package/src/interface/system/create-resolved.ts +1 -1
  164. package/src/interface/system/create.test.ts +8 -0
  165. package/src/interface/system/create.ts +9 -5
  166. package/src/interface/system/describe.test.ts +79 -0
  167. package/src/interface/system/describe.ts +122 -0
  168. package/src/interface/system/index.ts +1 -0
  169. package/src/interface/system/leaf.ts +6 -0
  170. package/src/interface/system/render.ts +1 -0
  171. package/src/interface/system/resolve.ts +25 -2
  172. package/src/interface/system/shared-only.ts +5 -0
  173. package/src/interface/system/tables.ts +7 -1
  174. package/src/interface/world/run.type-test.ts +11 -1
  175. package/src/interface/world/table/index.ts +3 -2
  176. package/src/interface/world/world.ts +13 -0
  177. package/src/perftest/benchmarks.ts +18 -0
  178. package/src/perftest/structural.ts +20 -0
  179. package/src/perftest/tables.ts +107 -0
@@ -1 +1 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/implementation/world/create.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/implementation/world/create.ts"],"names":[],"mappings":"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"}
@@ -18,10 +18,10 @@ export type ExecuteContext = {
18
18
  tails: Promise<TailOutcome> | null;
19
19
  };
20
20
  /**
21
- * Runs a schedule tier by tier, then applies one sync point, and reports what went wrong. Within a tier, kernels start
22
- * first so workers run while main-thread systems do; commands merge in tier order, then chunk order, whichever thread
23
- * ran them. A failing system stops the run after its tier finishes: later tiers are skipped, and commands so far still
24
- * apply. `system` is the one the run was given, which the GPU's errors are reported under.
21
+ * Runs a schedule tier by tier, applying a sync point after each tier its schedule says and after the last, and reports
22
+ * what went wrong. Within a tier, kernels start first so workers run while main-thread systems do; commands merge in
23
+ * tier order, then chunk order, whichever thread ran them. A failing system stops the run after its tier finishes:
24
+ * 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.
25
25
  */
26
26
  export declare const execute: (context: ExecuteContext, schedule: Schedule, args: unknown, system: {
27
27
  readonly name: string;
@@ -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, then applies one sync point, and reports what went wrong. Within a tier, kernels start
23
- * first so workers run while main-thread systems do; commands merge in tier order, then chunk order, whichever thread
24
- * ran them. A failing system stops the run after its tier finishes: later tiers are skipped, and commands so far still
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
- return { schedule: { tiers: rest, reductions: schedule.reductions, observer: schedule.observer }, runners: leaves.map(context.runnerOf), leaves, tiers };
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, then applies one sync point, and reports what went wrong (`execute`). Runs with no GPU,
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
- dropped = finishSync(context, prepared);
459
+ syncNow(context, prepared, true);
452
460
  }
453
- return reportOf(state, prepared, dropped);
461
+ return reportOf(state, prepared);
454
462
  };
455
463
  /**
456
- * A run's sync point with nothing to wait for: no GPU, tails or observer posts, which `executeTiers` checked before
457
- * each tier and bodies can't add. Returns how many commands it dropped.
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 finishSync = (context, prepared) => {
467
+ const syncNow = (context, prepared, last) => {
460
468
  const { state, workers, publish } = context;
461
- const { outcome } = prepared;
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 = state.plan.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
- state.strings?.settle();
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, publish } = context;
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
- // This run's tasks on joined threads are done: they return to their event loops while its sync point applies.
568
- for (let k = 0; k < state.logs.length; k++)
569
- markRun(state.logs[k]);
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, dropped);
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, dropped) => {
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));