@volter/browser-wali 0.1.9 → 0.1.11

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 (113) hide show
  1. package/dist/bulk-memory.d.ts +23 -0
  2. package/dist/bulk-memory.d.ts.map +1 -0
  3. package/dist/bulk-memory.js +50 -0
  4. package/dist/bulk-memory.js.map +1 -0
  5. package/dist/coherent-file-locks.d.ts +4 -1
  6. package/dist/coherent-file-locks.d.ts.map +1 -1
  7. package/dist/coherent-file-locks.js +24 -1
  8. package/dist/coherent-file-locks.js.map +1 -1
  9. package/dist/descriptors.d.ts +18 -1
  10. package/dist/descriptors.d.ts.map +1 -1
  11. package/dist/descriptors.js +51 -6
  12. package/dist/descriptors.js.map +1 -1
  13. package/dist/filesystem-host.d.ts +81 -0
  14. package/dist/filesystem-host.d.ts.map +1 -0
  15. package/dist/filesystem-host.js +849 -0
  16. package/dist/filesystem-host.js.map +1 -0
  17. package/dist/filesystem-protocol.d.ts +49 -1
  18. package/dist/filesystem-protocol.d.ts.map +1 -1
  19. package/dist/filesystem-protocol.js +17 -0
  20. package/dist/filesystem-protocol.js.map +1 -1
  21. package/dist/filesystem-remote.d.ts +72 -18
  22. package/dist/filesystem-remote.d.ts.map +1 -1
  23. package/dist/filesystem-remote.js +271 -40
  24. package/dist/filesystem-remote.js.map +1 -1
  25. package/dist/filesystem-worker.js +8 -502
  26. package/dist/filesystem-worker.js.map +1 -1
  27. package/dist/filesystem.d.ts +9 -0
  28. package/dist/filesystem.d.ts.map +1 -1
  29. package/dist/filesystem.js +209 -61
  30. package/dist/filesystem.js.map +1 -1
  31. package/dist/host-idle.d.ts +29 -0
  32. package/dist/host-idle.d.ts.map +1 -0
  33. package/dist/host-idle.js +68 -0
  34. package/dist/host-idle.js.map +1 -0
  35. package/dist/host.d.ts +1 -0
  36. package/dist/host.d.ts.map +1 -1
  37. package/dist/host.js +1 -3
  38. package/dist/host.js.map +1 -1
  39. package/dist/memory.d.ts.map +1 -1
  40. package/dist/memory.js +79 -18
  41. package/dist/memory.js.map +1 -1
  42. package/dist/module-layout.d.ts +6 -0
  43. package/dist/module-layout.d.ts.map +1 -1
  44. package/dist/module-layout.js +26 -3
  45. package/dist/module-layout.js.map +1 -1
  46. package/dist/monotonic-clock.d.ts +9 -0
  47. package/dist/monotonic-clock.d.ts.map +1 -1
  48. package/dist/monotonic-clock.js +11 -0
  49. package/dist/monotonic-clock.js.map +1 -1
  50. package/dist/network-worker.js +7 -2
  51. package/dist/network-worker.js.map +1 -1
  52. package/dist/network.d.ts.map +1 -1
  53. package/dist/network.js +11 -8
  54. package/dist/network.js.map +1 -1
  55. package/dist/process-bridge.d.ts.map +1 -1
  56. package/dist/process-bridge.js +25 -5
  57. package/dist/process-bridge.js.map +1 -1
  58. package/dist/program.d.ts +5 -1
  59. package/dist/program.d.ts.map +1 -1
  60. package/dist/program.js +13 -12
  61. package/dist/program.js.map +1 -1
  62. package/dist/runtime.d.ts.map +1 -1
  63. package/dist/runtime.js +75 -9
  64. package/dist/runtime.js.map +1 -1
  65. package/dist/shared-file-layer.d.ts +69 -0
  66. package/dist/shared-file-layer.d.ts.map +1 -0
  67. package/dist/shared-file-layer.js +299 -0
  68. package/dist/shared-file-layer.js.map +1 -0
  69. package/dist/shared-pipes.d.ts +7 -0
  70. package/dist/shared-pipes.d.ts.map +1 -1
  71. package/dist/shared-pipes.js +56 -17
  72. package/dist/shared-pipes.js.map +1 -1
  73. package/dist/signals.d.ts +2 -0
  74. package/dist/signals.d.ts.map +1 -1
  75. package/dist/signals.js +5 -1
  76. package/dist/signals.js.map +1 -1
  77. package/dist/snapshot-filesystem.d.ts +36 -3
  78. package/dist/snapshot-filesystem.d.ts.map +1 -1
  79. package/dist/snapshot-filesystem.js +204 -19
  80. package/dist/snapshot-filesystem.js.map +1 -1
  81. package/dist/stdin.d.ts.map +1 -1
  82. package/dist/stdin.js +3 -2
  83. package/dist/stdin.js.map +1 -1
  84. package/dist/symlink.d.ts.map +1 -1
  85. package/dist/symlink.js +91 -1
  86. package/dist/symlink.js.map +1 -1
  87. package/dist/system.d.ts.map +1 -1
  88. package/dist/system.js +17 -6
  89. package/dist/system.js.map +1 -1
  90. package/dist/thread-coordinator-worker.d.ts +1 -25
  91. package/dist/thread-coordinator-worker.d.ts.map +1 -1
  92. package/dist/thread-coordinator-worker.js +29 -2
  93. package/dist/thread-coordinator-worker.js.map +1 -1
  94. package/dist/thread-worker.js +13 -8
  95. package/dist/thread-worker.js.map +1 -1
  96. package/dist/threads.d.ts +4 -0
  97. package/dist/threads.d.ts.map +1 -1
  98. package/dist/threads.js +72 -43
  99. package/dist/threads.js.map +1 -1
  100. package/dist/types.d.ts +10 -0
  101. package/dist/types.d.ts.map +1 -1
  102. package/dist/websocket-peer.d.ts.map +1 -1
  103. package/dist/websocket-peer.js +2 -1
  104. package/dist/websocket-peer.js.map +1 -1
  105. package/dist/worker-program-protocol.d.ts +26 -0
  106. package/dist/worker-program-protocol.d.ts.map +1 -1
  107. package/dist/worker-program-worker.js +26 -8
  108. package/dist/worker-program-worker.js.map +1 -1
  109. package/dist/worker-program.d.ts +43 -0
  110. package/dist/worker-program.d.ts.map +1 -1
  111. package/dist/worker-program.js +198 -24
  112. package/dist/worker-program.js.map +1 -1
  113. package/package.json +1 -1
@@ -0,0 +1,23 @@
1
+ /**
2
+ * The program's own bulk-memory instructions, run against its memory from the
3
+ * host: `memory.fill` and `memory.copy` in a two-function module that imports
4
+ * the memory it is handed.
5
+ *
6
+ * MEASURED 2026-09-28 (node 22, an 8 MB range of a shared wasm memory): V8's
7
+ * `Float64Array.fill` took 0.356 ms (24 GB/s), `memory.fill` 0.062 (136 GB/s);
8
+ * `Uint8Array.set` within the memory 0.269 ms, `memory.copy` 0.132. A typed
9
+ * array over a SharedArrayBuffer is filled and copied with relaxed-atomic
10
+ * word stores; the instructions are the engine's memset and memmove. This is
11
+ * how the Emscripten build zeroes and copies (its libc is compiled with bulk
12
+ * memory), and every range the host zeroes for a program -- each reused
13
+ * mmap -- paid the difference.
14
+ */
15
+ export interface BulkMemory {
16
+ /** Every byte of [start, start + length) set to `value`; the caller has checked the range. */
17
+ fill(start: number, value: number, length: number): void;
18
+ /** `length` bytes from `source` to `target`, overlapping or not; the caller has checked both ranges. */
19
+ copy(target: number, source: number, length: number): void;
20
+ }
21
+ /** The helper for `memory`, made once; null where the engine will not compile it (then the caller's typed arrays are the path). */
22
+ export declare function bulkMemory(memory: WebAssembly.Memory): BulkMemory | null;
23
+ //# sourceMappingURL=bulk-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-memory.d.ts","sourceRoot":"","sources":["../src/bulk-memory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,UAAU;IACzB,8FAA8F;IAC9F,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,wGAAwG;IACxG,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5D;AAID,mIAAmI;AACnI,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAaxE"}
@@ -0,0 +1,50 @@
1
+ const helpers = new WeakMap();
2
+ /** The helper for `memory`, made once; null where the engine will not compile it (then the caller's typed arrays are the path). */
3
+ export function bulkMemory(memory) {
4
+ let helper = helpers.get(memory);
5
+ if (helper !== undefined)
6
+ return helper;
7
+ try {
8
+ const shared = typeof SharedArrayBuffer !== "undefined" && memory.buffer instanceof SharedArrayBuffer;
9
+ const instance = new WebAssembly.Instance(new WebAssembly.Module(helperModule(shared)), { e: { m: memory } });
10
+ const exports = instance.exports;
11
+ helper = { fill: exports.fill, copy: exports.copy };
12
+ }
13
+ catch {
14
+ helper = null;
15
+ }
16
+ helpers.set(memory, helper);
17
+ return helper;
18
+ }
19
+ /**
20
+ * (module
21
+ * (import "e" "m" (memory 0 65536 [shared]))
22
+ * (func (export "fill") (param i32 i32 i32) local.get 0 local.get 1 local.get 2 memory.fill)
23
+ * (func (export "copy") (param i32 i32 i32) local.get 0 local.get 1 local.get 2 memory.copy))
24
+ * The limits admit any wasm32 memory: an import's minimum 0 is below every
25
+ * memory's, and a shared one's maximum of 65536 pages (4 GiB) is at or above
26
+ * every declared one.
27
+ */
28
+ function helperModule(shared) {
29
+ const i32 = 0x7f;
30
+ return new Uint8Array([
31
+ 0x00, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00,
32
+ // type: (i32 i32 i32) -> ()
33
+ 0x01, 0x07, 0x01, 0x60, 0x03, i32, i32, i32, 0x00,
34
+ // import "e" "m": memory. Shared (flags 3): min 0, max 65536, since a shared
35
+ // memory always declares one. Plain (flags 0): min 0 and no maximum, which
36
+ // any plain memory satisfies, with a maximum or without.
37
+ ...(shared
38
+ ? [0x02, 0x0b, 0x01, 0x01, 0x65, 0x01, 0x6d, 0x02, 0x03, 0x00, 0x80, 0x80, 0x04]
39
+ : [0x02, 0x08, 0x01, 0x01, 0x65, 0x01, 0x6d, 0x02, 0x00, 0x00]),
40
+ // two functions of type 0
41
+ 0x03, 0x03, 0x02, 0x00, 0x00,
42
+ // exports "fill" -> 0, "copy" -> 1
43
+ 0x07, 0x0f, 0x02, 0x04, 0x66, 0x69, 0x6c, 0x6c, 0x00, 0x00, 0x04, 0x63, 0x6f, 0x70, 0x79, 0x00, 0x01,
44
+ // code
45
+ 0x0a, 0x1a, 0x02,
46
+ 0x0b, 0x00, 0x20, 0x00, 0x20, 0x01, 0x20, 0x02, 0xfc, 0x0b, 0x00, 0x0b,
47
+ 0x0c, 0x00, 0x20, 0x00, 0x20, 0x01, 0x20, 0x02, 0xfc, 0x0a, 0x00, 0x00, 0x0b,
48
+ ]);
49
+ }
50
+ //# sourceMappingURL=bulk-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-memory.js","sourceRoot":"","sources":["../src/bulk-memory.ts"],"names":[],"mappings":"AAqBA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAyC,CAAC;AAErE,mIAAmI;AACnI,MAAM,UAAU,UAAU,CAAC,MAA0B;IACnD,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,OAAO,iBAAiB,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,YAAY,iBAAiB,CAAC;QACtG,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9G,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA8I,CAAC;QACxK,MAAM,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,YAAY,CAAC,MAAe;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC;IACjB,OAAO,IAAI,UAAU,CAAC;QACpB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC9C,4BAA4B;QAC5B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI;QACjD,6EAA6E;QAC7E,2EAA2E;QAC3E,yDAAyD;QACzD,GAAG,CAAC,MAAM;YACR,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;YAChF,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjE,0BAA0B;QAC1B,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QAC5B,mCAAmC;QACnC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QACpG,OAAO;QACP,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;QACtE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;KAC7E,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import { BrowserFileCoherenceClient } from "@volter/browser-runtime/browser-file-coherence.js";
2
- import type { BrowserFileLockClient, BrowserFileLockRequest, BrowserFileLockResponse } from "@volter/browser-runtime/browser-file-locks.js";
2
+ import { BrowserFileLockClient } from "@volter/browser-runtime/browser-file-locks.js";
3
+ import type { BrowserFileLockRequest, BrowserFileLockResponse } from "@volter/browser-runtime/browser-file-locks.js";
3
4
  import type { WaliFileSystem } from "./types.js";
4
5
  /** Couples advisory-lock ownership to exact file refresh/publish boundaries. */
5
6
  export declare class WaliCoherentFileLockClient {
@@ -14,6 +15,8 @@ export declare class WaliCoherentFileLockClient {
14
15
  request(request: BrowserFileLockRequest): BrowserFileLockResponse;
15
16
  private refresh;
16
17
  private publish;
18
+ private refreshNow;
19
+ private publishNow;
17
20
  private readLocal;
18
21
  private writeLocal;
19
22
  private install;
@@ -1 +1 @@
1
- {"version":3,"file":"coherent-file-locks.d.ts","sourceRoot":"","sources":["../src/coherent-file-locks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAK3B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EAGrB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,gFAAgF;AAChF,qBAAa,0BAA0B;IAKnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAGjC,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,0BAA0B,EACrC,UAAU,EAAE,cAAc;IAG7C,8EAA8E;IAC9E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,uBAAuB;IAiDjE,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,WAAW;CACpB"}
1
+ {"version":3,"file":"coherent-file-locks.d.ts","sourceRoot":"","sources":["../src/coherent-file-locks.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAK3B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,+CAA+C,CAAC;AACtF,OAAO,KAAK,EAGV,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAQjD,gFAAgF;AAChF,qBAAa,0BAA0B;IAKnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqB;gBAGjC,KAAK,EAAE,qBAAqB,EAC5B,SAAS,EAAE,0BAA0B,EACrC,UAAU,EAAE,cAAc;IAG7C,8EAA8E;IAC9E,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,OAAO,EAAE,sBAAsB,GAAG,uBAAuB;IAqDjE,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,OAAO;IAUf,OAAO,CAAC,WAAW;CACpB"}
@@ -1,4 +1,5 @@
1
1
  import { BrowserFileCoherenceClient, coherentFileFamily, coherentFileParents, ensureCoherentFileParents, } from "@volter/browser-runtime/browser-file-coherence.js";
2
+ import { BrowserFileLockClient } from "@volter/browser-runtime/browser-file-locks.js";
2
3
  /** Couples advisory-lock ownership to exact file refresh/publish boundaries. */
3
4
  export class WaliCoherentFileLockClient {
4
5
  locks;
@@ -71,7 +72,29 @@ export class WaliCoherentFileLockClient {
71
72
  // shapes of the one race in a minute. So every family member carried here
72
73
  // is dropped from the changed set, and the host side tells its base what
73
74
  // coherence wrote (`worker-program.ts`, `onApplied`).
75
+ // A lock's coherence -- the pull when it is taken, the push when it is let
76
+ // go -- is part of what a close or fcntl waits for, and is counted with the
77
+ // lock requests (`BrowserFileLockClient.waited`, the profile's `locks`;
78
+ // review of 5b9a6d3).
74
79
  refresh(path) {
80
+ const began = performance.now();
81
+ try {
82
+ this.refreshNow(path);
83
+ }
84
+ finally {
85
+ BrowserFileLockClient.waited.ms += performance.now() - began;
86
+ }
87
+ }
88
+ publish(path) {
89
+ const began = performance.now();
90
+ try {
91
+ this.publishNow(path);
92
+ }
93
+ finally {
94
+ BrowserFileLockClient.waited.ms += performance.now() - began;
95
+ }
96
+ }
97
+ refreshNow(path) {
75
98
  for (const member of coherentFileFamily(path)) {
76
99
  const shared = this.coherence.pull(member);
77
100
  if (!shared && this.locallyCreated.delete(member)) {
@@ -84,7 +107,7 @@ export class WaliCoherentFileLockClient {
84
107
  this.filesystem.dropChangedPaths?.([member]);
85
108
  }
86
109
  }
87
- publish(path) {
110
+ publishNow(path) {
88
111
  for (const member of coherentFileFamily(path)) {
89
112
  this.coherence.push(member, this.readLocal(member));
90
113
  this.filesystem.dropChangedPaths?.([member]);
@@ -1 +1 @@
1
- {"version":3,"file":"coherent-file-locks.js","sourceRoot":"","sources":["../src/coherent-file-locks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coherent-file-locks.js","sourceRoot":"","sources":["../src/coherent-file-locks.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ export interface WaliOpenDescription<T = unknown> {
4
4
  readonly kind: string;
5
5
  readonly value: T;
6
6
  references: number;
7
- release?: () => void;
7
+ release?: (() => void) | undefined;
8
8
  }
9
9
  export declare class WaliDescriptionRegistry {
10
10
  private nextId;
@@ -24,11 +24,15 @@ export interface WaliDescriptorEntry {
24
24
  export declare class WaliProcessDescriptorTable {
25
25
  readonly registry: WaliDescriptionRegistry;
26
26
  readonly entries: Array<WaliDescriptorEntry | undefined>;
27
+ /** How many of this table's descriptors name each open description. */
28
+ private readonly named;
27
29
  sharedEntries: Int32Array;
28
30
  constructor(registry: WaliDescriptionRegistry, buffer?: SharedArrayBuffer);
29
31
  get(fd: number): WaliOpenDescription | undefined;
30
32
  set(fd: number, description: WaliOpenDescription, flags?: number): void;
31
33
  close(fd: number): boolean;
34
+ /** Whether any of this table's descriptors still names the description: a process's own count, whatever other processes hold. */
35
+ names(description: number): boolean;
32
36
  copy(): WaliProcessDescriptorTable;
33
37
  exec(): void;
34
38
  exit(): void;
@@ -40,6 +44,19 @@ export declare class WaliDescriptionView<T> {
40
44
  private readonly kind;
41
45
  private readonly release?;
42
46
  constructor(table: WaliProcessDescriptorTable, kind: string, release?: ((value: T) => void) | undefined);
47
+ /**
48
+ * What each descriptor resolved to, and the table entry it was resolved
49
+ * from. An entry object is made by every `set` and dropped by every
50
+ * `close`, whoever calls them (a pipe's dup2 goes to the table, not this
51
+ * view), and the description it names cannot change under it: so while the
52
+ * table holds the same entry, the answer stands. A file call resolved its
53
+ * descriptor through the entry, the registry's map and the kind on every
54
+ * call, twice (2026-09-28); a kernel indexes an array.
55
+ */
56
+ private readonly resolvedEntries;
57
+ private readonly resolvedValues;
58
+ private readonly resolvedOwn;
59
+ private resolve;
43
60
  get(fd: number): T | undefined;
44
61
  has(fd: number): boolean;
45
62
  set(fd: number, value: T): void;
@@ -1 +1 @@
1
- {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAK;IACnB,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;gBACtB,MAAM,oBAAwC;IAC1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IAEvE,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC;IAc/E,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAEhD,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAMxB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;CAW1B;AAED,MAAM,WAAW,mBAAmB;IAAG,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE3E,qEAAqE;AACrE,qBAAa,0BAA0B;IAGzB,QAAQ,CAAC,QAAQ,EAAE,uBAAuB;IAFtD,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAAM;IAC9D,aAAa,EAAE,UAAU,CAAC;gBACL,QAAQ,EAAE,uBAAuB,EAAE,MAAM,oBAAoC;IAElG,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAKhD,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,SAAI,GAAG,IAAI;IAOlE,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAS1B,IAAI,IAAI,0BAA0B;IAQlC,IAAI,IAAI,IAAI;IAIZ,IAAI,IAAI,IAAI;IAEZ,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAG5E;AAED,wEAAwE;AACxE,qBAAa,mBAAmB,CAAC,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAA8B,OAAO,CAAC,QAAQ,CAAC,IAAI;IACnF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;gBADE,KAAK,EAAE,0BAA0B,EAAmB,IAAI,EAAE,MAAM,EAC1E,OAAO,CAAC,GAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,aAAA;IAC/C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAI9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IACxB,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI/B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAC1B,MAAM,IAAI,gBAAgB,CAAC,CAAC,CAAC;CAK/B"}
1
+ {"version":3,"file":"descriptors.d.ts","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,8 @@ export class WaliDescriptionRegistry {
13
13
  if (this.nextId >= 65_536)
14
14
  throw new Error("EMFILE");
15
15
  }
16
- const description = { id: this.nextId++, kind, value, references: 0, ...(release ? { release } : {}) };
16
+ // One shape for every description: an object spread gave each its own, slow to make and to read.
17
+ const description = { id: this.nextId++, kind, value, references: 0, release };
17
18
  this.descriptions.set(description.id, description);
18
19
  if (kind === "special" && typeof value === "object" && value !== null && "stdio" in value)
19
20
  Atomics.store(this.pipeMetadata, description.id * 3 + 2, Number(value.stdio) + 1);
@@ -43,6 +44,8 @@ export class WaliDescriptionRegistry {
43
44
  export class WaliProcessDescriptorTable {
44
45
  registry;
45
46
  entries = [];
47
+ /** How many of this table's descriptors name each open description. */
48
+ named = new Map();
46
49
  sharedEntries;
47
50
  constructor(registry, buffer = new SharedArrayBuffer(65_536 * 4)) {
48
51
  this.registry = registry;
@@ -56,6 +59,7 @@ export class WaliProcessDescriptorTable {
56
59
  this.registry.retain(description.id);
57
60
  this.close(fd);
58
61
  this.entries[fd] = { description: description.id, flags };
62
+ this.named.set(description.id, (this.named.get(description.id) ?? 0) + 1);
59
63
  Atomics.store(this.sharedEntries, fd, description.id);
60
64
  }
61
65
  close(fd) {
@@ -63,10 +67,17 @@ export class WaliProcessDescriptorTable {
63
67
  if (!entry)
64
68
  return false;
65
69
  delete this.entries[fd];
70
+ const left = (this.named.get(entry.description) ?? 1) - 1;
71
+ if (left > 0)
72
+ this.named.set(entry.description, left);
73
+ else
74
+ this.named.delete(entry.description);
66
75
  Atomics.store(this.sharedEntries, fd, 0);
67
76
  this.registry.release(entry.description);
68
77
  return true;
69
78
  }
79
+ /** Whether any of this table's descriptors still names the description: a process's own count, whatever other processes hold. */
80
+ names(description) { return this.named.has(description); }
70
81
  copy() {
71
82
  const child = new WaliProcessDescriptorTable(this.registry);
72
83
  this.entries.forEach((entry, fd) => {
@@ -95,16 +106,50 @@ export class WaliDescriptionView {
95
106
  this.kind = kind;
96
107
  this.release = release;
97
108
  }
98
- get(fd) {
99
- const description = this.table.get(fd);
100
- return description?.kind === this.kind ? description.value : undefined;
109
+ /**
110
+ * What each descriptor resolved to, and the table entry it was resolved
111
+ * from. An entry object is made by every `set` and dropped by every
112
+ * `close`, whoever calls them (a pipe's dup2 goes to the table, not this
113
+ * view), and the description it names cannot change under it: so while the
114
+ * table holds the same entry, the answer stands. A file call resolved its
115
+ * descriptor through the entry, the registry's map and the kind on every
116
+ * call, twice (2026-09-28); a kernel indexes an array.
117
+ */
118
+ resolvedEntries = [];
119
+ resolvedValues = [];
120
+ resolvedOwn = [];
121
+ resolve(fd) {
122
+ const entry = this.table.entries[fd];
123
+ if (entry === undefined) {
124
+ if (this.resolvedEntries[fd] !== undefined) {
125
+ this.resolvedEntries[fd] = undefined;
126
+ this.resolvedValues[fd] = undefined;
127
+ }
128
+ return false;
129
+ }
130
+ if (this.resolvedEntries[fd] !== entry) {
131
+ const description = this.table.registry.get(entry.description);
132
+ const own = description?.kind === this.kind;
133
+ this.resolvedEntries[fd] = entry;
134
+ this.resolvedValues[fd] = own ? description.value : undefined;
135
+ this.resolvedOwn[fd] = own;
136
+ }
137
+ return this.resolvedOwn[fd];
101
138
  }
102
- has(fd) { return this.table.get(fd)?.kind === this.kind; }
139
+ get(fd) { return this.resolve(fd) ? this.resolvedValues[fd] : undefined; }
140
+ has(fd) { return this.resolve(fd); }
103
141
  set(fd, value) {
104
142
  const description = this.table.registry.create(this.kind, value, () => this.release?.(value));
105
143
  this.table.set(fd, description);
106
144
  }
107
- delete(fd) { return this.has(fd) && this.table.close(fd); }
145
+ delete(fd) {
146
+ if (!this.has(fd))
147
+ return false;
148
+ // Not held past its close: the value may be a pipe handle or a special's closures (review of a328f98).
149
+ this.resolvedEntries[fd] = undefined;
150
+ this.resolvedValues[fd] = undefined;
151
+ return this.table.close(fd);
152
+ }
108
153
  *values() {
109
154
  for (let fd = 0; fd < this.table.entries.length; fd++) {
110
155
  if (this.has(fd))
@@ -1 +1 @@
1
- {"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptors.js","sourceRoot":"","sources":["../src/descriptors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import { WaliFileDescriptorTable } from "./filesystem.js";
2
+ import { type FilesystemWorkerMessage, type WaliFilesystemChannel } from "./filesystem-protocol.js";
3
+ interface ChannelEntry {
4
+ control: Int32Array;
5
+ payload: Uint8Array;
6
+ state: ChannelState;
7
+ }
8
+ /** The program is about to run: the port is read no longer, and the page is told which import it took last. */
9
+ export declare function closeHostPort(): void;
10
+ /** The host's run is over: nothing of it is held for the next (review of c96148c). */
11
+ export declare function resetHost(): void;
12
+ /** The host runs on the calling realm's main thread from here on (ADR-0046); call before `initializeHost`. */
13
+ export declare function hostInThread(bell: SharedArrayBuffer): void;
14
+ interface ChannelState {
15
+ process: number;
16
+ snapshot?: Uint8Array;
17
+ replacement?: {
18
+ bytes: Uint8Array;
19
+ offset: number;
20
+ peerPatch: boolean;
21
+ };
22
+ /**
23
+ * The syscall handlers for this channel's process, and what they were made
24
+ * for. Every syscall made them again, with the shared-pipe host around them:
25
+ * two objects of a hundred closures for each call (2026-09-27).
26
+ */
27
+ handlers?: {
28
+ table: WaliFileDescriptorTable;
29
+ entries: ArrayBufferLike;
30
+ imports: Record<string, (...args: Array<number | bigint>) => number | bigint | void>;
31
+ };
32
+ /** `handlersNow`'s answer for the main thread's router, and the table it was made for. */
33
+ direct?: {
34
+ table: WaliFileDescriptorTable;
35
+ handlers: {
36
+ imports: Record<string, (...args: Array<number | bigint>) => number | bigint | void>;
37
+ errno(error: unknown): number;
38
+ owns(fd: number): boolean;
39
+ };
40
+ };
41
+ view?: DataView;
42
+ }
43
+ /** The host's tree and descriptors for a run, in whichever realm runs it. */
44
+ export declare function initializeHost(data: Extract<FilesystemWorkerMessage, {
45
+ kind: "initialize";
46
+ }>): Promise<void>;
47
+ export declare function attachChannel(channel: WaliFilesystemChannel & {
48
+ process?: number;
49
+ }): ChannelEntry;
50
+ /**
51
+ * One channel's waiting request, answered now on this thread (ADR-0046). A
52
+ * request whose blocking lock is held is left waiting and asked again later.
53
+ * Answers exactly as `dispatch` does.
54
+ */
55
+ export declare function serveNow(entry: ChannelEntry): boolean;
56
+ /** Whether a pump has anything to do: a ring or a deferred lock. */
57
+ export declare function hostWaiting(): boolean;
58
+ /**
59
+ * What the main thread owes while it is in the host (ADR-0046): the page's
60
+ * import, every other channel's waiting request, and, when it is about to
61
+ * block or has not published for a while, its changes to the page.
62
+ */
63
+ export declare function pumpHost(blocking?: boolean): void;
64
+ /** Whether `path` is `root` or lies below it. */
65
+ export declare function underRoot(path: string, root: string): boolean;
66
+ /**
67
+ * A syscall on the main thread's own channel, called (ADR-0046): the same
68
+ * handlers `SyscallBinary` reaches, with no payload encoded and decoded
69
+ * between the caller and them. Undefined while a held lock defers it.
70
+ */
71
+ export declare function syscallNow(entry: ChannelEntry, name: string, args: Array<number | bigint>): bigint | {
72
+ failed: number;
73
+ } | undefined;
74
+ /** The main thread's own channel's handlers, and the errno a throw from one answers (ADR-0046). */
75
+ export declare function handlersNow(entry: ChannelEntry): {
76
+ imports: Record<string, (...args: Array<number | bigint>) => number | bigint | void>;
77
+ errno(error: unknown): number;
78
+ owns(fd: number): boolean;
79
+ };
80
+ export {};
81
+ //# sourceMappingURL=filesystem-host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem-host.d.ts","sourceRoot":"","sources":["../src/filesystem-host.ts"],"names":[],"mappings":"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"}