@ai-ecoverse/slicc-kernel 1.108.1 → 1.108.3

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/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.1" : "0.0.0-dev";
6438
+ var KERNEL_VERSION = true ? "1.108.3" : "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
@@ -21665,6 +21665,16 @@ var SUDO_SOURCE = [
21665
21665
  ].join("\n");
21666
21666
 
21667
21667
  // src/launcher.ts
21668
+ var MODULE_URLS = 16;
21669
+ function dataModuleUrl(source) {
21670
+ const bytes = new TextEncoder().encode(source);
21671
+ let binary = "";
21672
+ for (let at = 0; at < bytes.length; at += 32768) {
21673
+ binary += String.fromCharCode(...bytes.subarray(at, at + 32768));
21674
+ }
21675
+ return { url: `data:text/javascript;base64,${btoa(binary)}`, revoke: () => {
21676
+ } };
21677
+ }
21668
21678
  function linksOf2(req) {
21669
21679
  return req.links === void 0 ? {} : { links: req.links };
21670
21680
  }
@@ -21835,6 +21845,9 @@ var Launcher = class {
21835
21845
  unlinkOwnerOption;
21836
21846
  base;
21837
21847
  createWorker;
21848
+ moduleUrl;
21849
+ moduleUrls = /* @__PURE__ */ new Map();
21850
+ urlsInUse = /* @__PURE__ */ new Map();
21838
21851
  modulesDir;
21839
21852
  appended;
21840
21853
  reportedRoots = /* @__PURE__ */ new Set();
@@ -21954,6 +21967,7 @@ var Launcher = class {
21954
21967
  this.mounted = this.mounts.wrap(options.fs);
21955
21968
  this.base = this.rooted(this.mounted);
21956
21969
  this.createWorker = options.createWorker;
21970
+ this.moduleUrl = options.moduleUrl;
21957
21971
  this.createDriverWorker = options.createDriverWorker;
21958
21972
  this.media = options.media ?? memoryMedia();
21959
21973
  this.onMountPending = options.onMountPending;
@@ -22610,6 +22624,43 @@ var Launcher = class {
22610
22624
  return { value: new TextDecoder().decode(bytes), key: read };
22611
22625
  });
22612
22626
  }
22627
+ urlFor(source) {
22628
+ const known = this.moduleUrls.get(source);
22629
+ if (known) {
22630
+ this.moduleUrls.delete(source);
22631
+ this.moduleUrls.set(source, known);
22632
+ known.users++;
22633
+ return known.made.url;
22634
+ }
22635
+ const held = {
22636
+ made: (this.moduleUrl ?? dataModuleUrl)(source),
22637
+ users: 1,
22638
+ evicted: false
22639
+ };
22640
+ this.moduleUrls.set(source, held);
22641
+ this.urlsInUse.set(held.made.url, held);
22642
+ for (const [old, entry] of this.moduleUrls) {
22643
+ if (this.moduleUrls.size <= MODULE_URLS) break;
22644
+ this.moduleUrls.delete(old);
22645
+ entry.evicted = true;
22646
+ this.releaseUrl(entry);
22647
+ }
22648
+ return held.made.url;
22649
+ }
22650
+ heldUrl(program) {
22651
+ const held = program.abi === "js" && program.url ? this.urlsInUse.get(program.url) : void 0;
22652
+ if (!held) return () => {
22653
+ };
22654
+ return () => {
22655
+ held.users--;
22656
+ this.releaseUrl(held);
22657
+ };
22658
+ }
22659
+ releaseUrl(held) {
22660
+ if (!held.evicted || held.users > 0) return;
22661
+ if (this.urlsInUse.get(held.made.url) === held) this.urlsInUse.delete(held.made.url);
22662
+ held.made.revoke();
22663
+ }
22613
22664
  async names(path, module) {
22614
22665
  if (WebAssembly.Module.customSections(module, "name").length > 0) return void 0;
22615
22666
  const beside = `${path}.names`;
@@ -22628,7 +22679,8 @@ var Launcher = class {
22628
22679
  }
22629
22680
  const { asked } = target;
22630
22681
  if (target.abi === "js") {
22631
- return { abi: "js", glue: await this.text(target.wasm, caller, asked), path: target.wasm };
22682
+ const url = this.urlFor(await this.text(target.wasm, caller, asked));
22683
+ return { abi: "js", glue: "", url, path: target.wasm };
22632
22684
  }
22633
22685
  if (target.abi !== "wasi") {
22634
22686
  const [glue, { module: module2 }] = await Promise.all([
@@ -22670,7 +22722,15 @@ var Launcher = class {
22670
22722
  await req.fds.closeAll();
22671
22723
  throw err;
22672
22724
  }
22673
- return this.start({ ...req, cwd, program, argv0: target.argv0, args, env });
22725
+ const done4 = this.heldUrl(program);
22726
+ try {
22727
+ const handle = this.start({ ...req, cwd, program, argv0: target.argv0, args, env });
22728
+ void handle.exited.finally(done4);
22729
+ return handle;
22730
+ } catch (err) {
22731
+ done4();
22732
+ throw err;
22733
+ }
22674
22734
  }
22675
22735
  groupSession(pgid) {
22676
22736
  return this.jobs.sessionOf(pgid);