@volter/browser-wali 0.1.166 → 0.1.167

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 (215) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +9 -0
  3. package/dist/browser-wali-command.d.ts +7 -0
  4. package/dist/browser-wali-command.d.ts.map +1 -1
  5. package/dist/browser-wali-command.js +70 -18
  6. package/dist/browser-wali-command.js.map +1 -1
  7. package/dist/bulk-memory.d.ts +4 -2
  8. package/dist/bulk-memory.d.ts.map +1 -1
  9. package/dist/bulk-memory.js +32 -9
  10. package/dist/bulk-memory.js.map +1 -1
  11. package/dist/capabilities.d.ts +1 -1
  12. package/dist/capabilities.d.ts.map +1 -1
  13. package/dist/capabilities.js +5 -2
  14. package/dist/capabilities.js.map +1 -1
  15. package/dist/child-processes.d.ts +2 -0
  16. package/dist/child-processes.d.ts.map +1 -1
  17. package/dist/child-processes.js +9 -1
  18. package/dist/child-processes.js.map +1 -1
  19. package/dist/clocks.d.ts +3 -0
  20. package/dist/clocks.d.ts.map +1 -0
  21. package/dist/clocks.js +44 -0
  22. package/dist/clocks.js.map +1 -0
  23. package/dist/coherent-file-locks.d.ts.map +1 -1
  24. package/dist/coherent-file-locks.js +2 -1
  25. package/dist/coherent-file-locks.js.map +1 -1
  26. package/dist/credentials.d.ts +4 -0
  27. package/dist/credentials.d.ts.map +1 -0
  28. package/dist/credentials.js +46 -0
  29. package/dist/credentials.js.map +1 -0
  30. package/dist/descriptors.d.ts +14 -0
  31. package/dist/descriptors.d.ts.map +1 -1
  32. package/dist/descriptors.js +45 -5
  33. package/dist/descriptors.js.map +1 -1
  34. package/dist/environment.d.ts +4 -0
  35. package/dist/environment.d.ts.map +1 -0
  36. package/dist/environment.js +23 -0
  37. package/dist/environment.js.map +1 -0
  38. package/dist/epoll-ready.d.ts +27 -0
  39. package/dist/epoll-ready.d.ts.map +1 -0
  40. package/dist/epoll-ready.js +88 -0
  41. package/dist/epoll-ready.js.map +1 -0
  42. package/dist/events.d.ts +1 -0
  43. package/dist/events.d.ts.map +1 -1
  44. package/dist/events.js +55 -24
  45. package/dist/events.js.map +1 -1
  46. package/dist/filesystem-host-session.d.ts +65 -0
  47. package/dist/filesystem-host-session.d.ts.map +1 -0
  48. package/dist/filesystem-host-session.js +951 -0
  49. package/dist/filesystem-host-session.js.map +1 -0
  50. package/dist/filesystem-host.d.ts +13 -81
  51. package/dist/filesystem-host.d.ts.map +1 -1
  52. package/dist/filesystem-host.js +14 -882
  53. package/dist/filesystem-host.js.map +1 -1
  54. package/dist/filesystem-protocol.d.ts +3 -1
  55. package/dist/filesystem-protocol.d.ts.map +1 -1
  56. package/dist/filesystem-remote.d.ts +8 -3
  57. package/dist/filesystem-remote.d.ts.map +1 -1
  58. package/dist/filesystem-remote.js +42 -20
  59. package/dist/filesystem-remote.js.map +1 -1
  60. package/dist/filesystem-service-client.d.ts +4 -0
  61. package/dist/filesystem-service-client.d.ts.map +1 -0
  62. package/dist/filesystem-service-client.js +16 -0
  63. package/dist/filesystem-service-client.js.map +1 -0
  64. package/dist/filesystem.d.ts +25 -4
  65. package/dist/filesystem.d.ts.map +1 -1
  66. package/dist/filesystem.js +548 -169
  67. package/dist/filesystem.js.map +1 -1
  68. package/dist/fork-memory.d.ts +23 -0
  69. package/dist/fork-memory.d.ts.map +1 -0
  70. package/dist/fork-memory.js +93 -0
  71. package/dist/fork-memory.js.map +1 -0
  72. package/dist/fork-worker.js +32 -11
  73. package/dist/fork-worker.js.map +1 -1
  74. package/dist/jumps.d.ts +7 -0
  75. package/dist/jumps.d.ts.map +1 -1
  76. package/dist/jumps.js +19 -1
  77. package/dist/jumps.js.map +1 -1
  78. package/dist/kernel-filesystem-worker.d.ts +2 -0
  79. package/dist/kernel-filesystem-worker.d.ts.map +1 -0
  80. package/dist/kernel-filesystem-worker.js +28 -0
  81. package/dist/kernel-filesystem-worker.js.map +1 -0
  82. package/dist/kernel-filesystem.d.ts +12 -0
  83. package/dist/kernel-filesystem.d.ts.map +1 -0
  84. package/dist/kernel-filesystem.js +45 -0
  85. package/dist/kernel-filesystem.js.map +1 -0
  86. package/dist/kernel-network-worker.d.ts +2 -0
  87. package/dist/kernel-network-worker.d.ts.map +1 -0
  88. package/dist/kernel-network-worker.js +14 -0
  89. package/dist/kernel-network-worker.js.map +1 -0
  90. package/dist/kernel-network.d.ts +14 -0
  91. package/dist/kernel-network.d.ts.map +1 -0
  92. package/dist/kernel-network.js +50 -0
  93. package/dist/kernel-network.js.map +1 -0
  94. package/dist/kernel-process-client.d.ts +6 -1
  95. package/dist/kernel-process-client.d.ts.map +1 -1
  96. package/dist/kernel-process-client.js +10 -1
  97. package/dist/kernel-process-client.js.map +1 -1
  98. package/dist/module-layout.d.ts +8 -0
  99. package/dist/module-layout.d.ts.map +1 -1
  100. package/dist/module-layout.js +263 -2
  101. package/dist/module-layout.js.map +1 -1
  102. package/dist/network-host.d.ts +6 -0
  103. package/dist/network-host.d.ts.map +1 -0
  104. package/dist/network-host.js +1582 -0
  105. package/dist/network-host.js.map +1 -0
  106. package/dist/network-protocol.d.ts +9 -2
  107. package/dist/network-protocol.d.ts.map +1 -1
  108. package/dist/network-protocol.js +3 -0
  109. package/dist/network-protocol.js.map +1 -1
  110. package/dist/network-service-client.d.ts +4 -0
  111. package/dist/network-service-client.d.ts.map +1 -0
  112. package/dist/network-service-client.js +16 -0
  113. package/dist/network-service-client.js.map +1 -0
  114. package/dist/network-worker.js +5 -1150
  115. package/dist/network-worker.js.map +1 -1
  116. package/dist/network.d.ts +13 -1
  117. package/dist/network.d.ts.map +1 -1
  118. package/dist/network.js +175 -48
  119. package/dist/network.js.map +1 -1
  120. package/dist/paths.d.ts +11 -0
  121. package/dist/paths.d.ts.map +1 -0
  122. package/dist/paths.js +97 -0
  123. package/dist/paths.js.map +1 -0
  124. package/dist/process-bridge.d.ts +12 -4
  125. package/dist/process-bridge.d.ts.map +1 -1
  126. package/dist/process-bridge.js +53 -17
  127. package/dist/process-bridge.js.map +1 -1
  128. package/dist/program.d.ts.map +1 -1
  129. package/dist/program.js +8 -0
  130. package/dist/program.js.map +1 -1
  131. package/dist/runtime.d.ts.map +1 -1
  132. package/dist/runtime.js +150 -92
  133. package/dist/runtime.js.map +1 -1
  134. package/dist/shared-buffer-pool.d.ts +18 -5
  135. package/dist/shared-buffer-pool.d.ts.map +1 -1
  136. package/dist/shared-buffer-pool.js +86 -14
  137. package/dist/shared-buffer-pool.js.map +1 -1
  138. package/dist/shared-file-layer.d.ts +3 -1
  139. package/dist/shared-file-layer.d.ts.map +1 -1
  140. package/dist/shared-file-layer.js +150 -35
  141. package/dist/shared-file-layer.js.map +1 -1
  142. package/dist/shared-pipes.d.ts +3 -1
  143. package/dist/shared-pipes.d.ts.map +1 -1
  144. package/dist/shared-pipes.js +105 -33
  145. package/dist/shared-pipes.js.map +1 -1
  146. package/dist/signal-interruption.d.ts +9 -0
  147. package/dist/signal-interruption.d.ts.map +1 -0
  148. package/dist/signal-interruption.js +6 -0
  149. package/dist/signal-interruption.js.map +1 -0
  150. package/dist/signals.d.ts +17 -6
  151. package/dist/signals.d.ts.map +1 -1
  152. package/dist/signals.js +101 -22
  153. package/dist/signals.js.map +1 -1
  154. package/dist/snapshot-filesystem.d.ts +1 -0
  155. package/dist/snapshot-filesystem.d.ts.map +1 -1
  156. package/dist/snapshot-filesystem.js +3 -0
  157. package/dist/snapshot-filesystem.js.map +1 -1
  158. package/dist/socket-flags.d.ts +3 -0
  159. package/dist/socket-flags.d.ts.map +1 -0
  160. package/dist/socket-flags.js +9 -0
  161. package/dist/socket-flags.js.map +1 -0
  162. package/dist/special-files.d.ts +6 -0
  163. package/dist/special-files.d.ts.map +1 -0
  164. package/dist/special-files.js +56 -0
  165. package/dist/special-files.js.map +1 -0
  166. package/dist/stdin.d.ts.map +1 -1
  167. package/dist/stdin.js +13 -5
  168. package/dist/stdin.js.map +1 -1
  169. package/dist/symlink.d.ts +2 -1
  170. package/dist/symlink.d.ts.map +1 -1
  171. package/dist/symlink.js +25 -93
  172. package/dist/symlink.js.map +1 -1
  173. package/dist/system.d.ts +2 -4
  174. package/dist/system.d.ts.map +1 -1
  175. package/dist/system.js +46 -29
  176. package/dist/system.js.map +1 -1
  177. package/dist/thread-coordinator-worker.js +58 -24
  178. package/dist/thread-coordinator-worker.js.map +1 -1
  179. package/dist/thread-lifecycle.d.ts +9 -0
  180. package/dist/thread-lifecycle.d.ts.map +1 -0
  181. package/dist/thread-lifecycle.js +30 -0
  182. package/dist/thread-lifecycle.js.map +1 -0
  183. package/dist/thread-worker.js +125 -44
  184. package/dist/thread-worker.js.map +1 -1
  185. package/dist/threads.d.ts +6 -0
  186. package/dist/threads.d.ts.map +1 -1
  187. package/dist/threads.js +46 -6
  188. package/dist/threads.js.map +1 -1
  189. package/dist/tty-job-control.d.ts +13 -0
  190. package/dist/tty-job-control.d.ts.map +1 -0
  191. package/dist/tty-job-control.js +56 -0
  192. package/dist/tty-job-control.js.map +1 -0
  193. package/dist/tty-settings.d.ts +3 -0
  194. package/dist/tty-settings.d.ts.map +1 -0
  195. package/dist/tty-settings.js +25 -0
  196. package/dist/tty-settings.js.map +1 -0
  197. package/dist/types.d.ts +12 -0
  198. package/dist/types.d.ts.map +1 -1
  199. package/dist/wait-state.d.ts +8 -0
  200. package/dist/wait-state.d.ts.map +1 -1
  201. package/dist/wait-state.js +15 -0
  202. package/dist/wait-state.js.map +1 -1
  203. package/dist/worker-program-protocol.d.ts +22 -2
  204. package/dist/worker-program-protocol.d.ts.map +1 -1
  205. package/dist/worker-program-worker.js +31 -9
  206. package/dist/worker-program-worker.js.map +1 -1
  207. package/dist/worker-program.d.ts +12 -2
  208. package/dist/worker-program.d.ts.map +1 -1
  209. package/dist/worker-program.js +214 -36
  210. package/dist/worker-program.js.map +1 -1
  211. package/dist/write-vector.d.ts +3 -0
  212. package/dist/write-vector.d.ts.map +1 -0
  213. package/dist/write-vector.js +35 -0
  214. package/dist/write-vector.js.map +1 -0
  215. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB/D,2EAA2E;AAC3E,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIlC;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM,EAAE,SAAS,SAAY;CAI1D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,qBAAa,cAAc;IAWvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAtBjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;IACvE,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuE;IAEjG,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAsB;gBAGnB,MAAM,EAAE,MAAM,WAAW,CAAC,MAAM,EAChC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,SAAS,YAAA,EACpB,YAAY,CAAC,EAAE,UAAU,YAAA,EACzB,gBAAgB,UAAQ;IACzC;;;;OAIG;IACc,cAAc,SAAI;IACnC,wFAAwF;IACvE,aAAa,CAAC,GAAE,MAAM,IAAI,aAAA;IAK7C,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAsC5C,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,KAAK;IAOb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;IAUhB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,KAAK;IA0Cb,OAAO,CAAC,KAAK;IAMb,OAAO,CAAC,KAAK;IA2Db;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,oBAAoB;CAO7B"}
1
+ {"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAiB/D,2EAA2E;AAC3E,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM;gBAAZ,IAAI,EAAE,MAAM;CAIlC;AAED;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAAb,KAAK,EAAE,MAAM,EAAE,SAAS,SAAY;CAI1D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAIR;AAED,qBAAa,cAAc;IAUvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,wFAAwF;IACxF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC/B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IAtBpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgD;IACvE,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuE;IAEjG,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,QAAQ,CAAoC;gBAGjC,MAAM,EAAE,MAAM,WAAW,CAAC,MAAM,EAChC,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,SAAS,YAAA,EACpB,YAAY,CAAC,EAAE,UAAU,YAAA,EACzB,gBAAgB,UAAQ;IACzC;;;;OAIG;IACc,cAAc,SAAI;IACnC,wFAAwF;IACvE,aAAa,CAAC,GAAE,MAAM,IAAI,aAAA,EAC1B,gBAAgB,CAAC,EAAE,iBAAiB,YAAA;IAKvD,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAuC5C,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IAEZ,OAAO,CAAC,KAAK;IAOb;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH;;;;OAIG;IACH,gBAAgB,IAAI,MAAM;IAI1B,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,cAAc;IAsCtB,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,QAAQ;IAiBhB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,KAAK;IASb,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,KAAK;IA8Cb,OAAO,CAAC,KAAK;IA2Db;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,OAAO,CAAC,oBAAoB;CAO7B"}
package/dist/system.js CHANGED
@@ -1,3 +1,9 @@
1
+ // Terminal ioctl dispatch translated from Emscripten libsyscall.js (MIT),
2
+ // 862dc0d48acc4134a0088d27ac8f5dd18baba1cd. Linux termios layout and the
3
+ // attached terminal remain ours; fake process-group answers are excluded.
4
+ import { waliCredentialImports } from "./credentials.js";
5
+ import { waliClockGetTime, waliClockGetResolution } from "./clocks.js";
6
+ import { createWaliTerminalSettings } from "./tty-settings.js";
1
7
  import { hostSleep, hostWait } from "./host-idle.js";
2
8
  import { waliActivityGuard } from "./wait-state.js";
3
9
  import { monotonicMilliseconds, realtimeMilliseconds } from "./monotonic-clock.js";
@@ -119,13 +125,13 @@ export class WaliSystemHost {
119
125
  terminalAttached;
120
126
  threadPoolSize;
121
127
  whileSleeping;
128
+ descriptorLimits;
122
129
  limits = new Map();
123
130
  signalMask = new Uint8Array(8);
124
131
  alternateSignalStack = new Uint8Array(12);
125
- fileCreationMask = 0o022;
126
132
  sleepWord = new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));
127
- termios = new Uint8Array(36);
128
- termios2 = new Uint8Array(44);
133
+ termios = createWaliTerminalSettings();
134
+ termios2 = createWaliTerminalSettings(true);
129
135
  constructor(memory, pid, terminal, pthreadFatal, terminalAttached = false,
130
136
  /**
131
137
  * How many pthread workers this process was given. It is the ceiling on
@@ -134,7 +140,7 @@ export class WaliSystemHost {
134
140
  */
135
141
  threadPoolSize = 1,
136
142
  /** What the process owes a sleep of its main thread (`WaliMemoryManager.growAhead`). */
137
- whileSleeping) {
143
+ whileSleeping, descriptorLimits) {
138
144
  this.memory = memory;
139
145
  this.pid = pid;
140
146
  this.terminal = terminal;
@@ -142,9 +148,11 @@ export class WaliSystemHost {
142
148
  this.terminalAttached = terminalAttached;
143
149
  this.threadPoolSize = threadPoolSize;
144
150
  this.whileSleeping = whileSleeping;
151
+ this.descriptorLimits = descriptorLimits;
145
152
  }
146
153
  imports() {
147
154
  return {
155
+ ...waliCredentialImports(this.memory),
148
156
  // The root runtime replaces these with real Asyncify captures. Pthread
149
157
  // entry exports do not yet have a continuation controller: refuse at
150
158
  // capture, before a program mistakes a no-op for error recovery.
@@ -156,7 +164,8 @@ export class WaliSystemHost {
156
164
  SYS_sched_getaffinity: (pid, size, mask) => this.schedGetAffinity(Number(pid), Number(size), Number(mask)),
157
165
  SYS_rt_sigprocmask: (_how, set, previous, size) => this.signalMaskCall(Number(set), Number(previous), Number(size)),
158
166
  SYS_sigaltstack: (stack, previous) => this.signalStack(Number(stack), Number(previous)),
159
- SYS_clock_getres: (clock, pointer) => this.clockGetResolution(Number(clock), Number(pointer)),
167
+ SYS_clock_gettime: (clock, pointer) => waliClockGetTime(this.memory(), Number(clock), Number(pointer)),
168
+ SYS_clock_getres: (clock, pointer) => waliClockGetResolution(this.memory(), Number(clock), Number(pointer)),
160
169
  SYS_clock_nanosleep: (clock, flags, request, remaining) => this.clockNanosleep(Number(clock), Number(flags), Number(request), Number(remaining)),
161
170
  SYS_nanosleep: (request, remaining) => this.clockNanosleep(1, 0, Number(request), Number(remaining)),
162
171
  SYS_getrlimit: (resource, pointer) => this.getLimit(Number(resource), Number(pointer)),
@@ -166,7 +175,6 @@ export class WaliSystemHost {
166
175
  SYS_uname: (pointer) => this.uname(Number(pointer)),
167
176
  SYS_sysinfo: (pointer) => this.sysinfo(Number(pointer)),
168
177
  SYS_ioctl: (fd, request, argument) => this.ioctl(Number(fd), Number(request), Number(argument)),
169
- SYS_umask: (mask) => this.umask(Number(mask)),
170
178
  SYS_set_robust_list: () => 0n,
171
179
  // The 4th, 5th and 6th arguments are the kernel's `timeout`, `uaddr2`
172
180
  // and `val3`. FUTEX_WAIT reads the 4th as a timespec pointer;
@@ -263,16 +271,6 @@ export class WaliSystemHost {
263
271
  }
264
272
  return 0n;
265
273
  }
266
- clockGetResolution(clock, pointer) {
267
- if (![0, 1, 2, 3, 4, 7].includes(clock))
268
- return -EINVAL;
269
- if (pointer !== 0) {
270
- this.range(pointer, 16);
271
- this.view().setBigInt64(pointer, 0n, true);
272
- this.view().setBigInt64(pointer + 8, 1000000n, true);
273
- }
274
- return 0n;
275
- }
276
274
  clockNanosleep(clock, flags, request, remaining) {
277
275
  if (![0, 1, 4].includes(clock) || (flags & ~1) !== 0)
278
276
  return -EINVAL;
@@ -325,7 +323,10 @@ export class WaliSystemHost {
325
323
  return [0xffffffffffffffffn, 0xffffffffffffffffn];
326
324
  }
327
325
  getLimit(resource, pointer) {
328
- const limit = this.limits.get(resource) ?? this.defaultLimit(resource);
326
+ const packed = resource === 7 && this.descriptorLimits ? Atomics.load(new BigUint64Array(this.descriptorLimits), 0) : undefined;
327
+ const limit = packed !== undefined
328
+ ? [packed & 0xffffffffn, packed >> 32n]
329
+ : this.limits.get(resource) ?? this.defaultLimit(resource);
329
330
  if (!limit)
330
331
  return -EINVAL;
331
332
  this.range(pointer, 16);
@@ -341,7 +342,18 @@ export class WaliSystemHost {
341
342
  const maximum = this.view().getBigUint64(pointer + 8, true);
342
343
  if (current > maximum)
343
344
  return -EINVAL;
344
- this.limits.set(resource, [current, maximum]);
345
+ if (resource === 7 && this.descriptorLimits) {
346
+ const limits = new BigUint64Array(this.descriptorLimits);
347
+ for (;;) {
348
+ const previous = Atomics.load(limits, 0);
349
+ if (maximum > (previous >> 32n))
350
+ return -1n;
351
+ if (Atomics.compareExchange(limits, 0, previous, (maximum << 32n) | current) === previous)
352
+ break;
353
+ }
354
+ }
355
+ else
356
+ this.limits.set(resource, [current, maximum]);
345
357
  return 0n;
346
358
  }
347
359
  processLimit(pid, resource, next, previous) {
@@ -385,8 +397,11 @@ export class WaliSystemHost {
385
397
  // headless stdio, even when its shared input buffer carries default sizes.
386
398
  if (operation !== 0x541b && !this.terminalAttached)
387
399
  return -25n;
400
+ const valid = (length) => Number.isSafeInteger(argument) && argument > 0
401
+ && argument + length <= this.memory().buffer.byteLength;
388
402
  if (operation === 0x5413) {
389
- this.range(argument, 8);
403
+ if (!valid(8))
404
+ return -14n;
390
405
  const size = this.terminal?.terminalSize?.() ?? { rows: 24, columns: 80 };
391
406
  this.view().setUint16(argument, size.rows, true);
392
407
  this.view().setUint16(argument + 2, size.columns, true);
@@ -394,37 +409,39 @@ export class WaliSystemHost {
394
409
  return 0n;
395
410
  }
396
411
  if (operation === 0x5401) {
397
- this.range(argument, 36);
412
+ if (!valid(36))
413
+ return -14n;
398
414
  this.bytes().set(this.termios, argument);
399
415
  return 0n;
400
416
  }
401
417
  if (operation === 0x5402 || operation === 0x5403 || operation === 0x5404) {
402
- this.range(argument, 36);
418
+ if (!valid(36))
419
+ return -14n;
403
420
  this.termios = this.bytes().slice(argument, argument + 36);
421
+ this.termios2.set(this.termios);
404
422
  return 0n;
405
423
  }
406
424
  if (operation === 0x802c542a) {
407
- this.range(argument, 44);
425
+ if (!valid(44))
426
+ return -14n;
408
427
  this.bytes().set(this.termios2, argument);
409
428
  return 0n;
410
429
  }
411
430
  if (operation === 0x402c542b || operation === 0x402c542c || operation === 0x402c542d) {
412
- this.range(argument, 44);
431
+ if (!valid(44))
432
+ return -14n;
413
433
  this.termios2 = this.bytes().slice(argument, argument + 44);
434
+ this.termios.set(this.termios2.subarray(0, 36));
414
435
  return 0n;
415
436
  }
416
437
  if (operation === 0x541b) {
417
- this.range(argument, 4);
438
+ if (!valid(4))
439
+ return -14n;
418
440
  this.view().setInt32(argument, this.terminal?.available?.() ?? 0, true);
419
441
  return 0n;
420
442
  }
421
443
  return -25n;
422
444
  }
423
- umask(mask) {
424
- const previous = this.fileCreationMask;
425
- this.fileCreationMask = mask & 0o777;
426
- return BigInt(previous);
427
- }
428
445
  futex(address, operation, value, timeoutPointer, address2 = 0, value3 = 0) {
429
446
  if (address % 4 !== 0)
430
447
  return -EINVAL;
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../src/system.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,13 @@
1
+ // Worker ownership/return rules adapted from Emscripten libpthread.js
2
+ // (Copyright 2015, MIT), 862dc0d48acc4134a0088d27ac8f5dd18baba1cd.
3
+ import { releaseWaliThreadSlot, reserveWaliThreadSlot, WALI_THREAD_RETIRED } from "./thread-lifecycle.js";
1
4
  import { startWaliWaitAgent } from "./wait-state.js";
2
5
  const scope = globalThis;
3
6
  let ports = [];
4
7
  let threads;
8
+ let slotStates;
9
+ let slotTids;
10
+ let waitAgents;
5
11
  const workers = [];
6
12
  /**
7
13
  * The slot's worker, started on its first thread when the pool starts them on
@@ -16,47 +22,69 @@ function ensureSlot(index) {
16
22
  const worker = new Worker(new URL("./thread-worker.js", import.meta.url), { type: "module", name: `wali-pthread-${index + 1}` });
17
23
  worker.onmessage = (event) => scope.postMessage({ kind: "thread", slotIndex: index, message: event.data });
18
24
  worker.onerror = (event) => scope.postMessage({ kind: "thread", slotIndex: index, message: { kind: "error", message: event.message } });
19
- worker.postMessage(thread.message, thread.transfer);
20
25
  workers[index] = worker;
26
+ worker.postMessage(thread.message, thread.transfer);
21
27
  }
22
28
  scope.onmessage = (event) => {
23
29
  if (event.data.kind === "start") {
24
30
  const { slotIndex, functionPointer, argumentPointer, tid, signalMask } = event.data;
25
- ensureSlot(slotIndex);
26
- ports[slotIndex].postMessage({ kind: "start", functionPointer, argumentPointer, signalMask: signalMask ?? 0n, tid });
31
+ try {
32
+ ensureSlot(slotIndex);
33
+ ports[slotIndex].postMessage({ kind: "start", functionPointer, argumentPointer, signalMask: signalMask ?? 0n, tid });
34
+ }
35
+ catch (error) {
36
+ retireSlot(slotIndex);
37
+ scope.postMessage({ kind: "thread", slotIndex, message: { kind: "error", tid,
38
+ message: error instanceof Error ? error.message : String(error) } });
39
+ }
27
40
  return;
28
41
  }
29
42
  try {
30
43
  const slots = new Int32Array(event.data.slotStates);
31
44
  const nextTid = new Int32Array(event.data.nextTid);
32
- const waitAgents = event.data.waitAgents;
45
+ slotStates = slots;
46
+ slotTids = new Int32Array(event.data.slotTids);
47
+ waitAgents = event.data.waitAgents;
33
48
  ports = event.data.ports;
34
49
  threads = event.data.threads?.length ? event.data.threads : undefined;
35
- ports.forEach((port) => {
50
+ ports.forEach((port, ownerIndex) => {
36
51
  port.onmessage = (message) => {
37
52
  if (message.data.kind === "released") {
38
- Atomics.store(slots, message.data.slotIndex, 0);
53
+ if (message.data.slotIndex === ownerIndex)
54
+ releaseWaliThreadSlot(slots, slotTids, ownerIndex, message.data.tid, message.data.reusable);
55
+ return;
56
+ }
57
+ if (message.data.kind === "retired") {
58
+ Atomics.store(slotTids, ownerIndex, 0);
59
+ Atomics.store(slots, ownerIndex, WALI_THREAD_RETIRED);
39
60
  return;
40
61
  }
41
62
  const response = new Int32Array(message.data.response);
42
- const slotIndex = reserveSlot(slots);
63
+ const slotIndex = reserveWaliThreadSlot(slots);
43
64
  if (slotIndex < 0) {
44
65
  respond(response, -11);
45
66
  return;
46
67
  }
47
68
  const tid = Atomics.add(nextTid, 0, 1);
48
- const waitAgent = waitAgents?.[slotIndex];
49
- if (waitAgent)
50
- startWaliWaitAgent(waitAgent, tid);
51
- ensureSlot(slotIndex);
52
- ports[slotIndex].postMessage({
53
- kind: "start",
54
- functionPointer: message.data.functionPointer,
55
- argumentPointer: message.data.argumentPointer,
56
- signalMask: message.data.signalMask ?? 0n,
57
- tid,
58
- });
59
- respond(response, tid);
69
+ Atomics.store(slotTids, slotIndex, tid);
70
+ try {
71
+ ensureSlot(slotIndex);
72
+ const waitAgent = waitAgents?.[slotIndex];
73
+ if (waitAgent)
74
+ startWaliWaitAgent(waitAgent, tid);
75
+ ports[slotIndex].postMessage({
76
+ kind: "start",
77
+ functionPointer: message.data.functionPointer,
78
+ argumentPointer: message.data.argumentPointer,
79
+ signalMask: message.data.signalMask ?? 0n,
80
+ tid,
81
+ });
82
+ respond(response, tid);
83
+ }
84
+ catch {
85
+ retireSlot(slotIndex);
86
+ respond(response, -11);
87
+ }
60
88
  };
61
89
  port.start();
62
90
  });
@@ -66,12 +94,18 @@ scope.onmessage = (event) => {
66
94
  scope.postMessage({ kind: "error", message: error instanceof Error ? error.stack ?? error.message : String(error) });
67
95
  }
68
96
  };
69
- function reserveSlot(slots) {
70
- for (let index = 0; index < slots.length; index += 1) {
71
- if (Atomics.compareExchange(slots, index, 0, 1) === 0)
72
- return index;
97
+ function retireSlot(index) {
98
+ const worker = workers[index];
99
+ if (worker) {
100
+ worker.onmessage = null;
101
+ worker.onerror = null;
102
+ worker.terminate();
73
103
  }
74
- return -1;
104
+ Atomics.store(slotTids, index, 0);
105
+ Atomics.store(slotStates, index, WALI_THREAD_RETIRED);
106
+ const agent = waitAgents?.[index];
107
+ if (agent)
108
+ Atomics.store(new Int32Array(agent.state), 1, 2);
75
109
  }
76
110
  function respond(response, result) {
77
111
  Atomics.store(response, 1, result);
@@ -1 +1 @@
1
- {"version":3,"file":"thread-coordinator-worker.js","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread-coordinator-worker.js","sourceRoot":"","sources":["../src/thread-coordinator-worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare const WALI_THREAD_IDLE = 0;
2
+ export declare const WALI_THREAD_RUNNING = 1;
3
+ export declare const WALI_THREAD_RETIRED = 2;
4
+ export declare function reserveWaliThreadSlot(states: Int32Array): number;
5
+ /** Detach the old tid before publishing availability; stale releases cannot free a new run. */
6
+ export declare function releaseWaliThreadSlot(states: Int32Array, tids: Int32Array, index: number, tid: number, reusable: boolean): void;
7
+ /** Linux clear_child_tid: failed userspace stores are ignored at exit. */
8
+ export declare function clearWaliChildTid(memory: WebAssembly.Memory, pointer: number): void;
9
+ //# sourceMappingURL=thread-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-lifecycle.d.ts","sourceRoot":"","sources":["../src/thread-lifecycle.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAClC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAKhE;AAED,+FAA+F;AAC/F,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EACxE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,IAAI,CAMrD;AAED,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAKnF"}
@@ -0,0 +1,30 @@
1
+ // Worker ownership/return rules adapted from The Emscripten Authors
2
+ // libpthread.js (Copyright 2015, MIT), 862dc0d48acc4134a0088d27ac8f5dd18baba1cd.
3
+ // Linux tids identify runs; failed workers are retired, never returned idle.
4
+ export const WALI_THREAD_IDLE = 0;
5
+ export const WALI_THREAD_RUNNING = 1;
6
+ export const WALI_THREAD_RETIRED = 2;
7
+ export function reserveWaliThreadSlot(states) {
8
+ for (let index = 0; index < states.length; index++) {
9
+ if (Atomics.compareExchange(states, index, WALI_THREAD_IDLE, WALI_THREAD_RUNNING) === WALI_THREAD_IDLE)
10
+ return index;
11
+ }
12
+ return -1;
13
+ }
14
+ /** Detach the old tid before publishing availability; stale releases cannot free a new run. */
15
+ export function releaseWaliThreadSlot(states, tids, index, tid, reusable) {
16
+ if (Atomics.load(states, index) !== WALI_THREAD_RUNNING || Atomics.load(tids, index) !== tid)
17
+ return;
18
+ Atomics.store(tids, index, 0);
19
+ // Process termination may retire the slot concurrently; never revive it.
20
+ Atomics.compareExchange(states, index, WALI_THREAD_RUNNING, reusable ? WALI_THREAD_IDLE : WALI_THREAD_RETIRED);
21
+ }
22
+ /** Linux clear_child_tid: failed userspace stores are ignored at exit. */
23
+ export function clearWaliChildTid(memory, pointer) {
24
+ if (!Number.isSafeInteger(pointer) || pointer <= 0 || pointer % 4 !== 0 || pointer + 4 > memory.buffer.byteLength)
25
+ return;
26
+ const words = new Int32Array(memory.buffer);
27
+ Atomics.store(words, pointer / 4, 0);
28
+ Atomics.notify(words, pointer / 4, 1);
29
+ }
30
+ //# sourceMappingURL=thread-lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-lifecycle.js","sourceRoot":"","sources":["../src/thread-lifecycle.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,iFAAiF;AACjF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,KAAK,gBAAgB;YAAE,OAAO,KAAK,CAAC;IACvH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,+FAA+F;AAC/F,MAAM,UAAU,qBAAqB,CAAC,MAAkB,EAAE,IAAgB,EACxE,KAAa,EAAE,GAAW,EAAE,QAAiB;IAC7C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,GAAG;QAAE,OAAO;IACrG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9B,yEAAyE;IACzE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,EAAE,mBAAmB,EACxD,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;AACvD,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,iBAAiB,CAAC,MAA0B,EAAE,OAAe;IAC3E,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU;QAAE,OAAO;IAC1H,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC"}