@pilates/core 1.0.1 → 2.0.0

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 (77) hide show
  1. package/dist/algorithm/cache.d.ts +7 -19
  2. package/dist/algorithm/cache.d.ts.map +1 -1
  3. package/dist/algorithm/cache.js +31 -27
  4. package/dist/algorithm/cache.js.map +1 -1
  5. package/dist/algorithm/index.d.ts +31 -0
  6. package/dist/algorithm/index.d.ts.map +1 -1
  7. package/dist/algorithm/index.js +105 -13
  8. package/dist/algorithm/index.js.map +1 -1
  9. package/dist/algorithm/round.d.ts +13 -0
  10. package/dist/algorithm/round.d.ts.map +1 -1
  11. package/dist/algorithm/round.js +33 -16
  12. package/dist/algorithm/round.js.map +1 -1
  13. package/dist/algorithm/spineless/classify.d.ts +47 -0
  14. package/dist/algorithm/spineless/classify.d.ts.map +1 -0
  15. package/dist/algorithm/spineless/classify.js +109 -0
  16. package/dist/algorithm/spineless/classify.js.map +1 -0
  17. package/dist/algorithm/spineless/field-id-pool.d.ts +28 -0
  18. package/dist/algorithm/spineless/field-id-pool.d.ts.map +1 -0
  19. package/dist/algorithm/spineless/field-id-pool.js +35 -0
  20. package/dist/algorithm/spineless/field-id-pool.js.map +1 -0
  21. package/dist/algorithm/spineless/flex-grammar.d.ts +394 -0
  22. package/dist/algorithm/spineless/flex-grammar.d.ts.map +1 -0
  23. package/dist/algorithm/spineless/flex-grammar.js +2509 -0
  24. package/dist/algorithm/spineless/flex-grammar.js.map +1 -0
  25. package/dist/algorithm/spineless/grammar.d.ts +156 -0
  26. package/dist/algorithm/spineless/grammar.d.ts.map +1 -0
  27. package/dist/algorithm/spineless/grammar.js +145 -0
  28. package/dist/algorithm/spineless/grammar.js.map +1 -0
  29. package/dist/algorithm/spineless/layout.d.ts +167 -0
  30. package/dist/algorithm/spineless/layout.d.ts.map +1 -0
  31. package/dist/algorithm/spineless/layout.js +893 -0
  32. package/dist/algorithm/spineless/layout.js.map +1 -0
  33. package/dist/algorithm/spineless/order-maintenance.bench.d.ts +25 -0
  34. package/dist/algorithm/spineless/order-maintenance.bench.d.ts.map +1 -0
  35. package/dist/algorithm/spineless/order-maintenance.bench.js +78 -0
  36. package/dist/algorithm/spineless/order-maintenance.bench.js.map +1 -0
  37. package/dist/algorithm/spineless/order-maintenance.d.ts +201 -0
  38. package/dist/algorithm/spineless/order-maintenance.d.ts.map +1 -0
  39. package/dist/algorithm/spineless/order-maintenance.js +300 -0
  40. package/dist/algorithm/spineless/order-maintenance.js.map +1 -0
  41. package/dist/algorithm/spineless/priority-queue.bench.d.ts +17 -0
  42. package/dist/algorithm/spineless/priority-queue.bench.d.ts.map +1 -0
  43. package/dist/algorithm/spineless/priority-queue.bench.js +57 -0
  44. package/dist/algorithm/spineless/priority-queue.bench.js.map +1 -0
  45. package/dist/algorithm/spineless/priority-queue.d.ts +73 -0
  46. package/dist/algorithm/spineless/priority-queue.d.ts.map +1 -0
  47. package/dist/algorithm/spineless/priority-queue.js +149 -0
  48. package/dist/algorithm/spineless/priority-queue.js.map +1 -0
  49. package/dist/algorithm/spineless/runtime.d.ts +292 -0
  50. package/dist/algorithm/spineless/runtime.d.ts.map +1 -0
  51. package/dist/algorithm/spineless/runtime.js +609 -0
  52. package/dist/algorithm/spineless/runtime.js.map +1 -0
  53. package/dist/algorithm/spineless/style-dirty.d.ts +65 -0
  54. package/dist/algorithm/spineless/style-dirty.d.ts.map +1 -0
  55. package/dist/algorithm/spineless/style-dirty.js +75 -0
  56. package/dist/algorithm/spineless/style-dirty.js.map +1 -0
  57. package/dist/dirty-flags.d.ts +30 -0
  58. package/dist/dirty-flags.d.ts.map +1 -0
  59. package/dist/dirty-flags.js +35 -0
  60. package/dist/dirty-flags.js.map +1 -0
  61. package/dist/index.d.ts +4 -1
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +9 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/inspect.d.ts +27 -0
  66. package/dist/inspect.d.ts.map +1 -0
  67. package/dist/inspect.js +61 -0
  68. package/dist/inspect.js.map +1 -0
  69. package/dist/layout-pool.d.ts +49 -0
  70. package/dist/layout-pool.d.ts.map +1 -0
  71. package/dist/layout-pool.js +75 -0
  72. package/dist/layout-pool.js.map +1 -0
  73. package/dist/node.d.ts +20 -3
  74. package/dist/node.d.ts.map +1 -1
  75. package/dist/node.js +63 -42
  76. package/dist/node.js.map +1 -1
  77. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../src/algorithm/spineless/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Microbenchmark for the Order Maintenance data structure.
3
+ *
4
+ * This is the **kill switch** for Phase 5 (Spineless Traversal): if OM
5
+ * operations cost more than a small constant per op at 1k-10k node scale,
6
+ * the algorithmic novelty of Spineless Traversal won't pay off in pure JS.
7
+ *
8
+ * Targets (Phase 5 viability criteria):
9
+ * - `compare`: < 200ns per op at 10k nodes (it's the hot path; the
10
+ * Spineless priority queue calls it on every insert/extract).
11
+ * - `insertAfter`: < 5µs amortized at 10k nodes (rarer, called when
12
+ * the dependency graph adds nodes — typically only during tree
13
+ * construction or large mutations).
14
+ *
15
+ * The naive impl is O(N) per insert, so it will exceed the insertAfter
16
+ * target at scale. That's expected — the Bender et al. amortized O(1)
17
+ * impl is what hits the target. We measure naive here as a baseline so
18
+ * we can show the speedup when Bender lands.
19
+ *
20
+ * Run with: `tsx packages/core/src/algorithm/spineless/order-maintenance.bench.ts`
21
+ *
22
+ * @internal
23
+ */
24
+ export {};
25
+ //# sourceMappingURL=order-maintenance.bench.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-maintenance.bench.d.ts","sourceRoot":"","sources":["../../../src/algorithm/spineless/order-maintenance.bench.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Microbenchmark for the Order Maintenance data structure.
3
+ *
4
+ * This is the **kill switch** for Phase 5 (Spineless Traversal): if OM
5
+ * operations cost more than a small constant per op at 1k-10k node scale,
6
+ * the algorithmic novelty of Spineless Traversal won't pay off in pure JS.
7
+ *
8
+ * Targets (Phase 5 viability criteria):
9
+ * - `compare`: < 200ns per op at 10k nodes (it's the hot path; the
10
+ * Spineless priority queue calls it on every insert/extract).
11
+ * - `insertAfter`: < 5µs amortized at 10k nodes (rarer, called when
12
+ * the dependency graph adds nodes — typically only during tree
13
+ * construction or large mutations).
14
+ *
15
+ * The naive impl is O(N) per insert, so it will exceed the insertAfter
16
+ * target at scale. That's expected — the Bender et al. amortized O(1)
17
+ * impl is what hits the target. We measure naive here as a baseline so
18
+ * we can show the speedup when Bender lands.
19
+ *
20
+ * Run with: `tsx packages/core/src/algorithm/spineless/order-maintenance.bench.ts`
21
+ *
22
+ * @internal
23
+ */
24
+ import { BenderOrderMaintenance, NaiveOrderMaintenance, } from './order-maintenance.js';
25
+ function median(xs) {
26
+ const sorted = [...xs].sort((a, b) => a - b);
27
+ return sorted[Math.floor(sorted.length / 2)];
28
+ }
29
+ function bench(label, make, sizes, opsPerTrial, trials, op) {
30
+ console.log(`\n## ${label} — ${op}`);
31
+ for (const N of sizes) {
32
+ const trialMs = [];
33
+ for (let t = 0; t < trials; t++) {
34
+ const om = make();
35
+ const nodes = [om.init()];
36
+ // Pre-build N-1 more nodes
37
+ for (let i = 1; i < N; i++)
38
+ nodes.push(om.insertAfter(nodes[i - 1]));
39
+ const start = performance.now();
40
+ if (op === 'compare') {
41
+ // Fixed-pattern compares to avoid letting V8 optimize away
42
+ let acc = 0;
43
+ for (let k = 0; k < opsPerTrial; k++) {
44
+ // Pick two pseudo-random nodes (deterministic, no Math.random cost)
45
+ const i = (k * 2654435761) % N;
46
+ const j = (k * 1597334677) % N;
47
+ acc += om.compare(nodes[i], nodes[j]);
48
+ }
49
+ if (acc === 12345.6789)
50
+ console.log('!!!');
51
+ }
52
+ else {
53
+ // Insert opsPerTrial new nodes; insert position cycles through
54
+ // existing nodes so we hit middle-of-list (worst case for naive
55
+ // renumber).
56
+ for (let k = 0; k < opsPerTrial; k++) {
57
+ const after = nodes[(k * 2654435761) % nodes.length];
58
+ nodes.push(om.insertAfter(after));
59
+ }
60
+ }
61
+ const end = performance.now();
62
+ trialMs.push(end - start);
63
+ }
64
+ const ms = median(trialMs);
65
+ const usPerOp = (ms * 1000) / opsPerTrial;
66
+ const opsPerSec = (opsPerTrial / ms) * 1000;
67
+ console.log(` N=${N.toString().padStart(6)} ${usPerOp.toFixed(3).padStart(8)} µs/op ${(opsPerSec / 1000).toFixed(1).padStart(8)} kops/s`);
68
+ }
69
+ }
70
+ console.log('Order Maintenance microbench (single-threaded JS, Node.js)');
71
+ console.log('Targets: compare < 0.2µs, insertAfter amortized < 5µs at N=10k');
72
+ const naive = () => new NaiveOrderMaintenance();
73
+ const bender = () => new BenderOrderMaintenance();
74
+ bench('Naive compare', naive, [100, 1000, 10000], 100_000, 5, 'compare');
75
+ bench('Bender compare', bender, [100, 1000, 10000], 100_000, 5, 'compare');
76
+ bench('Naive insertAfter (O(N) renumber)', naive, [100, 1000, 10000], 1_000, 5, 'insertAfter');
77
+ bench('Bender insertAfter (amortized O(log N))', bender, [100, 1000, 10000], 1_000, 5, 'insertAfter');
78
+ //# sourceMappingURL=order-maintenance.bench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-maintenance.bench.js","sourceRoot":"","sources":["../../../src/algorithm/spineless/order-maintenance.bench.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Order Maintenance (OM) data structure.
3
+ *
4
+ * Maintains a totally-ordered set of items under insertions, deletions,
5
+ * and `compare(a, b)` queries that return the relative order in O(1) (or
6
+ * O(1) amortized). Foundational primitive for Spineless Traversal
7
+ * (Kirisame, Wang, Panchekha — PLDI 2025): the priority queue that
8
+ * drives incremental layout invalidation is keyed on OM timestamps,
9
+ * so a fast OM comparator dominates per-operation cost.
10
+ *
11
+ * Reference: Bender, Cole, Demaine, Farach-Colton, Zito. "Two
12
+ * simplified algorithms for maintaining order in a list." ESA 2002.
13
+ *
14
+ * ## What this file ships
15
+ *
16
+ * **The interface** — `OMNode`, `OrderMaintenance` — is the surface the
17
+ * Spineless runtime will consume. We design it so the implementation
18
+ * can be swapped (naive ↔ Bender amortized O(1)) without ripple.
19
+ *
20
+ * **The naive implementation** — `NaiveOrderMaintenance` — uses a single
21
+ * doubly-linked list with sequential integer tags assigned on insert.
22
+ * Inserts trigger O(N) renumbering of trailing nodes. Compare is O(1).
23
+ *
24
+ * This is the **scaffolding implementation**: correct, simple, lets us
25
+ * write all the consumer code (priority queue, runtime, attribute grammar
26
+ * interpreter) without waiting for the optimized impl. The Bender et al.
27
+ * amortized-O(1) implementation lands as a drop-in replacement once the
28
+ * Spineless runtime is wired and we can benchmark end-to-end. The naive
29
+ * impl stays in tree forever as a reference oracle: every Bender op is
30
+ * differentially compared against naive in the property-based test.
31
+ *
32
+ * ## Why JS and not WASM
33
+ *
34
+ * The paper's reference (Megatron) emits C++ and uses inline `cmov` for
35
+ * branchless compare. We can't use inline assembly in JS, but we don't
36
+ * have to: V8 already lowers `a < b` on 32-bit-integer hidden classes
37
+ * to a branchless `cmp` + `setb` sequence on x86-64. The TS-side cost is
38
+ * predominantly in the `lookup` (Map.get) and the unboxed compare itself.
39
+ *
40
+ * @internal
41
+ */
42
+ /**
43
+ * A node in the order. The user holds these directly; comparisons happen
44
+ * via {@link OrderMaintenance.compare}. Implementations are free to use
45
+ * different node-internal representations; the interface only commits to
46
+ * identity (`===`) being the way to look a node up.
47
+ *
48
+ * @internal
49
+ */
50
+ export interface OMNode {
51
+ /**
52
+ * Implementation-defined opaque tag. Consumers must NOT read this
53
+ * directly. Treated as an internal invariant that survives compares
54
+ * but may shift after inserts/deletes (renumbering, rebalance).
55
+ *
56
+ * @internal
57
+ */
58
+ readonly _omTag: number;
59
+ }
60
+ /**
61
+ * @internal
62
+ */
63
+ export interface OrderMaintenance {
64
+ /**
65
+ * The current count of live nodes in the order. Exposed for tests
66
+ * and microbenchmarks; consumers should not depend on the value.
67
+ */
68
+ readonly size: number;
69
+ /**
70
+ * Create the very first node in an empty order, or assert that an
71
+ * order is non-empty by looking up an existing first/last anchor.
72
+ * Returns a node identity that can be used as the `after` argument
73
+ * to subsequent `insertAfter` calls.
74
+ *
75
+ * Calling `init` on an already-initialised order replaces all
76
+ * existing nodes; this is provided for `reset()` semantics.
77
+ */
78
+ init(): OMNode;
79
+ /**
80
+ * Insert a fresh node immediately after `after` in the order.
81
+ * Returns the new node identity. The returned node compares >
82
+ * `after` and < whatever was at `after.next` previously.
83
+ *
84
+ * Amortized O(1) in the Bender impl; O(N) worst case here in the
85
+ * naive impl due to trailing-node renumbering.
86
+ */
87
+ insertAfter(after: OMNode): OMNode;
88
+ /**
89
+ * Remove `node` from the order. Subsequent compares involving
90
+ * `node` are undefined behaviour. Other nodes' relative order is
91
+ * preserved.
92
+ */
93
+ delete(node: OMNode): void;
94
+ /**
95
+ * Compare the relative order of `a` and `b`. Returns:
96
+ * - a negative integer if `a` precedes `b` (was inserted earlier
97
+ * or recipient-of-`insertAfter` chain),
98
+ * - zero if `a === b`,
99
+ * - a positive integer if `a` follows `b`.
100
+ *
101
+ * O(1) amortized in both naive and Bender impls. This is the
102
+ * hot path — the Spineless priority queue calls compare per
103
+ * insert/extract.
104
+ */
105
+ compare(a: OMNode, b: OMNode): number;
106
+ /**
107
+ * Return the node immediately before `node` in the order, or `null`
108
+ * if `node` is the first. O(1). Used by the runtime to find the new
109
+ * order tail after the current tail is deleted, without an O(N)
110
+ * scan of all live nodes.
111
+ */
112
+ predecessor(node: OMNode): OMNode | null;
113
+ }
114
+ /**
115
+ * Naive O(N)-per-insert Order Maintenance. Correctness-only impl
116
+ * for scaffolding and as a fuzzer oracle for the future Bender impl.
117
+ *
118
+ * Invariants:
119
+ * - `_omTag` is strictly increasing along the `next` chain.
120
+ * - `_omTag` values are arbitrary integers but always orderable.
121
+ * - Insert renumbers all trailing nodes to maintain monotonicity.
122
+ *
123
+ * @internal
124
+ */
125
+ export declare class NaiveOrderMaintenance implements OrderMaintenance {
126
+ private firstNode;
127
+ private nodeCount;
128
+ get size(): number;
129
+ /**
130
+ * Returns the first node in the order, or `null` if empty. Exposed
131
+ * for tests and for the priority queue's extract-min operation.
132
+ *
133
+ * @internal
134
+ */
135
+ first(): OMNode | null;
136
+ init(): OMNode;
137
+ insertAfter(after: OMNode): OMNode;
138
+ delete(node: OMNode): void;
139
+ compare(a: OMNode, b: OMNode): number;
140
+ predecessor(node: OMNode): OMNode | null;
141
+ }
142
+ /**
143
+ * Bender, Cole, Demaine, Farach-Colton, Zito (2002): "Two simplified
144
+ * algorithms for maintaining order in a list." Algorithm 1 — list-
145
+ * labeling with exponentially-growing window relabel.
146
+ *
147
+ * Operations:
148
+ * - `compare`: O(1) integer subtract.
149
+ * - `insertAfter`: amortized O(log N) per operation (looser than the
150
+ * paper's O(1) amortized when using density bound (3/2)^d at depth d;
151
+ * we trade a log factor for simpler integer arithmetic and avoid
152
+ * BigInt).
153
+ * - `delete`: O(1).
154
+ *
155
+ * Cross-validated against `NaiveOrderMaintenance` via property fuzzer.
156
+ *
157
+ * @internal
158
+ */
159
+ export declare class BenderOrderMaintenance implements OrderMaintenance {
160
+ private firstNode;
161
+ private nodeCount;
162
+ get size(): number;
163
+ first(): OMNode | null;
164
+ init(): OMNode;
165
+ insertAfter(after: OMNode): OMNode;
166
+ delete(node: OMNode): void;
167
+ compare(a: OMNode, b: OMNode): number;
168
+ predecessor(node: OMNode): OMNode | null;
169
+ /**
170
+ * Walk exponentially-growing windows around `pivot` until a window
171
+ * with low enough density to redistribute is found. Redistribute
172
+ * labels uniformly across that window.
173
+ *
174
+ * Density bound: `count * 2 ≤ span`. This guarantees:
175
+ * - Every node gets a distinct integer label (count ≤ span).
176
+ * - Each interval between consecutive labels has at least 2 units
177
+ * of room, so subsequent midpoint inserts succeed without
178
+ * triggering relabel again at the same depth.
179
+ *
180
+ * Window definition at depth d:
181
+ * span = 2^d
182
+ * tagLow = pivot._omTag aligned down to multiple of span
183
+ * tagHigh = tagLow + span
184
+ *
185
+ * Amortized cost: O(log N) per insert. (Tighter than the paper's
186
+ * O(1) amortized with density bound (3/2)^d, but the bound here uses
187
+ * pure integer arithmetic for V8-friendly speed.)
188
+ *
189
+ * @internal
190
+ */
191
+ private relabel;
192
+ /**
193
+ * Fallback when the windowed relabel walks all the way up to the
194
+ * full label space without finding a sparse-enough window. Spreads
195
+ * every node uniformly across [0, LABEL_MAX).
196
+ *
197
+ * @internal
198
+ */
199
+ private globalRelabel;
200
+ }
201
+ //# sourceMappingURL=order-maintenance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-maintenance.d.ts","sourceRoot":"","sources":["../../../src/algorithm/spineless/order-maintenance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACrB;;;;;;OAMG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;;;;;OAQG;IACH,IAAI,IAAI,MAAM,CAAC;IAEf;;;;;;;OAOG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAEnC;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAEtC;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CAC1C;AAkBD;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC5D,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,SAAS,CAAK;IAEtB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;;OAKG;IACH,KAAK,IAAI,MAAM,GAAG,IAAI;IAItB,IAAI,IAAI,MAAM;IAOd,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAyBlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAkB1B,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAMrC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAGzC;AA0BD;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAK;IAEtB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,MAAM,GAAG,IAAI;IAItB,IAAI,IAAI,MAAM;IASd,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAwBlC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAc1B,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIrC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,OAAO;IAqDf;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;CActB"}