@ai-ecoverse/slicc-kernel 1.124.11 → 1.124.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/kernel-worker.js +5 -1
- package/dist/kernel-worker.js.map +2 -2
- package/dist/node-process-worker.js +19 -6
- package/dist/node-process-worker.js.map +2 -2
- package/dist/node.js +5 -1
- package/dist/node.js.map +2 -2
- package/dist/process-worker.js +19 -6
- package/dist/process-worker.js.map +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -999,7 +999,7 @@ The kernel is ported from SLICC's `packages/webapp/src/kernel/` with the browser
|
|
|
999
999
|
|
|
1000
1000
|
- `src/kernel/`: the kernel side, per process (`host.ts` starts the worker and answers its syscalls in `process.ts`) and shared tables (descriptors, pipes, children, jobs, signals, terminals and pseudo-terminals, `select`), and process credentials (`cred.ts`).
|
|
1001
1001
|
- `src/process/`: the runtime inside each process worker. It evaluates the Emscripten glue, mounts the live VFS, routes descriptors through the kernel and implements `fork` by copying the whole linear memory into a new worker (Asyncify). `fork` is the only call allowed to suspend through Asyncify: an `fsync` that Emscripten made asynchronous is answered synchronously by the file's own stream instead. `src/process/wasi/` runs WASI and WASIX programs.
|
|
1002
|
-
- `src/realm/`: the synchronous bridge (`SharedArrayBuffer` + `Atomics.wait`) and the live Emscripten filesystem on top of it.
|
|
1002
|
+
- `src/realm/`: the synchronous bridge (`SharedArrayBuffer` + `Atomics.wait`) and the live Emscripten filesystem on top of it. When a program's file call gets no answer, the bridge treats it like an NFS mount (#990). A read-only call (`read`, `pread`, `stat`, `lstat`, `readdir`, `readlink`, `exists`, `access`, `statfs`) fails with `EIO` once nothing has come back for 25 s; the clock starts again with every chunk of a long answer, so a slow transfer that keeps answering never fails (the host keeps a long answer for 30 s after each chunk it hands over, not after the first), and a late answer is dropped, which is harmless because the call changed nothing. A call that changes the file system (writes, `rename`, `unlink`, `mkdir`, creates, `chmod`, holds…) waits for its answer like a hard mount, however long the backend is gone, so it never returns an error for an effect that lands later. Only a signal that ends the process (`SIGKILL`) or the kernel shutting down ends that wait. JavaScript programs' synchronous `ctx.sync.fs` calls go through their own lane, which waits without a deadline for every call, reads included, so a stalled read hangs there instead of failing with `EIO` (#1033).
|
|
1003
1003
|
- `src/fs/`: the OPFS filesystem and the virtual command directories.
|
|
1004
1004
|
- `src/launcher.ts`, `src/commands.ts`, `src/serve.ts`, `src/index.ts`, `src/users.ts`: command resolution, the kernel worker protocol, the page API and the user database; `src/node.ts`, `src/node-process-worker.ts` and `src/node/` the headless Node entry. An embedder that uses `Launcher` directly, without `createKernel`, calls `await launcher.prepare()` first: it creates `/tmp` and `/home` and writes the CA certificate.
|
|
1005
1005
|
- `src/kernel/net/`: the proxy, HTTP/1.1, TLS termination and the local CA, and the bridge to the page's transport; `src/transport.ts` and `src/local-proxy-transport.ts` are the page side.
|
package/dist/kernel-worker.js
CHANGED
|
@@ -6625,7 +6625,7 @@ function satisfies(version, range2) {
|
|
|
6625
6625
|
}
|
|
6626
6626
|
|
|
6627
6627
|
// src/version.ts
|
|
6628
|
-
var KERNEL_VERSION = true ? "1.124.
|
|
6628
|
+
var KERNEL_VERSION = true ? "1.124.12" : "0.0.0-dev";
|
|
6629
6629
|
var OS_RELEASE = "6.0.0-slicc";
|
|
6630
6630
|
function procVersion() {
|
|
6631
6631
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -12394,6 +12394,10 @@ function attachSyncSabResponder(port, sab, token, opts) {
|
|
|
12394
12394
|
Atomics.add(header3, SAB_I_PUB, 1);
|
|
12395
12395
|
Atomics.notify(header3, SAB_I_PUB);
|
|
12396
12396
|
if (offset + chunk2 >= entry.payload.byteLength) drop(id2);
|
|
12397
|
+
else if (entry.timer) {
|
|
12398
|
+
clearTimeout(entry.timer);
|
|
12399
|
+
entry.timer = setTimeout(() => drop(id2), PENDING_TTL_MS);
|
|
12400
|
+
}
|
|
12397
12401
|
}
|
|
12398
12402
|
function settle3(id2, result) {
|
|
12399
12403
|
if (disposed) return;
|