@ai-ecoverse/slicc-kernel 1.108.2 → 1.108.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.
- package/README.md +6 -6
- package/dist/kernel-worker.js +11598 -11515
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-process-worker.js +60 -26
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +77 -5
- package/dist/node.js.map +2 -2
- package/dist/process-worker.js +60 -26
- package/dist/process-worker.js.map +3 -3
- package/dist/types/kernel/process.d.ts +3 -0
- package/dist/types/kernel/protocol.d.ts +1 -0
- package/dist/types/launcher.d.ts +14 -0
- package/dist/types/process/wasi/wasi-fds.d.ts +1 -0
- package/dist/types/process/wasi/wasi-files.d.ts +2 -0
- package/dist/types/process/wasi/wasi-host.d.ts +1 -0
- package/dist/types/serve.d.ts +2 -1
- package/package.json +1 -1
package/dist/node.js
CHANGED
|
@@ -6435,7 +6435,7 @@ function satisfies(version, range2) {
|
|
|
6435
6435
|
}
|
|
6436
6436
|
|
|
6437
6437
|
// src/version.ts
|
|
6438
|
-
var KERNEL_VERSION = true ? "1.108.
|
|
6438
|
+
var KERNEL_VERSION = true ? "1.108.4" : "0.0.0-dev";
|
|
6439
6439
|
var OS_RELEASE = "6.0.0-slicc";
|
|
6440
6440
|
function procVersion() {
|
|
6441
6441
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -12338,7 +12338,9 @@ function normalize(path) {
|
|
|
12338
12338
|
var RING2 = 8;
|
|
12339
12339
|
var RING_SIZE2 = 64;
|
|
12340
12340
|
var SLOT2 = 3;
|
|
12341
|
-
var
|
|
12341
|
+
var FD_RING = RING2 + RING_SIZE2 * SLOT2;
|
|
12342
|
+
var FD_RING_SIZE = 64;
|
|
12343
|
+
var SHARED_IDS_BYTES = (FD_RING + FD_RING_SIZE * 2) * 4;
|
|
12342
12344
|
|
|
12343
12345
|
// src/process/wasi/wasi-procfs.ts
|
|
12344
12346
|
var DIR_MODE = 16749;
|
|
@@ -16778,6 +16780,16 @@ var WasmProcess = class {
|
|
|
16778
16780
|
sendDeath(target, sig) {
|
|
16779
16781
|
void Promise.resolve(this.options.kill?.(target, sig)).catch(() => void 0);
|
|
16780
16782
|
}
|
|
16783
|
+
selfKill(req) {
|
|
16784
|
+
if (req.dry) return Promise.resolve(this.spares(req.sig));
|
|
16785
|
+
return this.killSelf(req.sig, req.target, req.probe);
|
|
16786
|
+
}
|
|
16787
|
+
spares(sig) {
|
|
16788
|
+
const { caught, ignored } = this.signalMasks();
|
|
16789
|
+
const bit = isSignal(sig) ? sigbit(sig) : 0;
|
|
16790
|
+
const answer = (ignored & bit) !== 0 ? "ignore" : (caught & bit) !== 0 ? "spare" : "terminate";
|
|
16791
|
+
return { ok: true, kind: "json", json: answer };
|
|
16792
|
+
}
|
|
16781
16793
|
async killSelf(sig, target, probe2) {
|
|
16782
16794
|
if (!this.options.exitSignal) throw new KernelError("ENOSYS");
|
|
16783
16795
|
if (!isSignal(sig) || defaultAction(sig) !== "terminate") throw new KernelError("EINVAL");
|
|
@@ -17679,7 +17691,7 @@ var WasmProcess = class {
|
|
|
17679
17691
|
this.options.exitNow(req.status & 255);
|
|
17680
17692
|
return DYING;
|
|
17681
17693
|
case "proc-kill-self":
|
|
17682
|
-
return this.
|
|
17694
|
+
return this.selfKill(req);
|
|
17683
17695
|
case "proc-identity":
|
|
17684
17696
|
return { ok: true, kind: "json", json: await this.options.identity?.() ?? null };
|
|
17685
17697
|
case "proc-exec": {
|
|
@@ -21665,6 +21677,16 @@ var SUDO_SOURCE = [
|
|
|
21665
21677
|
].join("\n");
|
|
21666
21678
|
|
|
21667
21679
|
// src/launcher.ts
|
|
21680
|
+
var MODULE_URLS = 16;
|
|
21681
|
+
function dataModuleUrl(source) {
|
|
21682
|
+
const bytes = new TextEncoder().encode(source);
|
|
21683
|
+
let binary = "";
|
|
21684
|
+
for (let at = 0; at < bytes.length; at += 32768) {
|
|
21685
|
+
binary += String.fromCharCode(...bytes.subarray(at, at + 32768));
|
|
21686
|
+
}
|
|
21687
|
+
return { url: `data:text/javascript;base64,${btoa(binary)}`, revoke: () => {
|
|
21688
|
+
} };
|
|
21689
|
+
}
|
|
21668
21690
|
function linksOf2(req) {
|
|
21669
21691
|
return req.links === void 0 ? {} : { links: req.links };
|
|
21670
21692
|
}
|
|
@@ -21835,6 +21857,9 @@ var Launcher = class {
|
|
|
21835
21857
|
unlinkOwnerOption;
|
|
21836
21858
|
base;
|
|
21837
21859
|
createWorker;
|
|
21860
|
+
moduleUrl;
|
|
21861
|
+
moduleUrls = /* @__PURE__ */ new Map();
|
|
21862
|
+
urlsInUse = /* @__PURE__ */ new Map();
|
|
21838
21863
|
modulesDir;
|
|
21839
21864
|
appended;
|
|
21840
21865
|
reportedRoots = /* @__PURE__ */ new Set();
|
|
@@ -21954,6 +21979,7 @@ var Launcher = class {
|
|
|
21954
21979
|
this.mounted = this.mounts.wrap(options.fs);
|
|
21955
21980
|
this.base = this.rooted(this.mounted);
|
|
21956
21981
|
this.createWorker = options.createWorker;
|
|
21982
|
+
this.moduleUrl = options.moduleUrl;
|
|
21957
21983
|
this.createDriverWorker = options.createDriverWorker;
|
|
21958
21984
|
this.media = options.media ?? memoryMedia();
|
|
21959
21985
|
this.onMountPending = options.onMountPending;
|
|
@@ -22610,6 +22636,43 @@ var Launcher = class {
|
|
|
22610
22636
|
return { value: new TextDecoder().decode(bytes), key: read };
|
|
22611
22637
|
});
|
|
22612
22638
|
}
|
|
22639
|
+
urlFor(source) {
|
|
22640
|
+
const known = this.moduleUrls.get(source);
|
|
22641
|
+
if (known) {
|
|
22642
|
+
this.moduleUrls.delete(source);
|
|
22643
|
+
this.moduleUrls.set(source, known);
|
|
22644
|
+
known.users++;
|
|
22645
|
+
return known.made.url;
|
|
22646
|
+
}
|
|
22647
|
+
const held = {
|
|
22648
|
+
made: (this.moduleUrl ?? dataModuleUrl)(source),
|
|
22649
|
+
users: 1,
|
|
22650
|
+
evicted: false
|
|
22651
|
+
};
|
|
22652
|
+
this.moduleUrls.set(source, held);
|
|
22653
|
+
this.urlsInUse.set(held.made.url, held);
|
|
22654
|
+
for (const [old, entry] of this.moduleUrls) {
|
|
22655
|
+
if (this.moduleUrls.size <= MODULE_URLS) break;
|
|
22656
|
+
this.moduleUrls.delete(old);
|
|
22657
|
+
entry.evicted = true;
|
|
22658
|
+
this.releaseUrl(entry);
|
|
22659
|
+
}
|
|
22660
|
+
return held.made.url;
|
|
22661
|
+
}
|
|
22662
|
+
heldUrl(program) {
|
|
22663
|
+
const held = program.abi === "js" && program.url ? this.urlsInUse.get(program.url) : void 0;
|
|
22664
|
+
if (!held) return () => {
|
|
22665
|
+
};
|
|
22666
|
+
return () => {
|
|
22667
|
+
held.users--;
|
|
22668
|
+
this.releaseUrl(held);
|
|
22669
|
+
};
|
|
22670
|
+
}
|
|
22671
|
+
releaseUrl(held) {
|
|
22672
|
+
if (!held.evicted || held.users > 0) return;
|
|
22673
|
+
if (this.urlsInUse.get(held.made.url) === held) this.urlsInUse.delete(held.made.url);
|
|
22674
|
+
held.made.revoke();
|
|
22675
|
+
}
|
|
22613
22676
|
async names(path, module) {
|
|
22614
22677
|
if (WebAssembly.Module.customSections(module, "name").length > 0) return void 0;
|
|
22615
22678
|
const beside = `${path}.names`;
|
|
@@ -22628,7 +22691,8 @@ var Launcher = class {
|
|
|
22628
22691
|
}
|
|
22629
22692
|
const { asked } = target;
|
|
22630
22693
|
if (target.abi === "js") {
|
|
22631
|
-
|
|
22694
|
+
const url = this.urlFor(await this.text(target.wasm, caller, asked));
|
|
22695
|
+
return { abi: "js", glue: "", url, path: target.wasm };
|
|
22632
22696
|
}
|
|
22633
22697
|
if (target.abi !== "wasi") {
|
|
22634
22698
|
const [glue, { module: module2 }] = await Promise.all([
|
|
@@ -22670,7 +22734,15 @@ var Launcher = class {
|
|
|
22670
22734
|
await req.fds.closeAll();
|
|
22671
22735
|
throw err;
|
|
22672
22736
|
}
|
|
22673
|
-
|
|
22737
|
+
const done4 = this.heldUrl(program);
|
|
22738
|
+
try {
|
|
22739
|
+
const handle = this.start({ ...req, cwd, program, argv0: target.argv0, args, env });
|
|
22740
|
+
void handle.exited.finally(done4);
|
|
22741
|
+
return handle;
|
|
22742
|
+
} catch (err) {
|
|
22743
|
+
done4();
|
|
22744
|
+
throw err;
|
|
22745
|
+
}
|
|
22674
22746
|
}
|
|
22675
22747
|
groupSession(pgid) {
|
|
22676
22748
|
return this.jobs.sessionOf(pgid);
|