@ai-ecoverse/slicc-kernel 1.98.4 → 1.99.0

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.
@@ -2454,7 +2454,7 @@ var KERNEL_VERSION, OS_RELEASE;
2454
2454
  var init_version = __esm({
2455
2455
  "src/version.ts"() {
2456
2456
  "use strict";
2457
- KERNEL_VERSION = true ? "1.98.4" : "0.0.0-dev";
2457
+ KERNEL_VERSION = true ? "1.99.0" : "0.0.0-dev";
2458
2458
  OS_RELEASE = "6.0.0-slicc";
2459
2459
  }
2460
2460
  });
@@ -6644,6 +6644,57 @@ var init_wasi_files = __esm({
6644
6644
  }
6645
6645
  });
6646
6646
 
6647
+ // src/process/wasi/slicc-sem.ts
6648
+ function remainingMs(deadline, now) {
6649
+ if (deadline <= now) return 0;
6650
+ return Number((deadline - now + NS_PER_MS - 1n) / NS_PER_MS);
6651
+ }
6652
+ function semImports(host) {
6653
+ const { mem } = host;
6654
+ const call2 = (req) => host.o.kernel.call(req);
6655
+ const name2 = (ptr, len) => mem.string(ptr, len);
6656
+ return {
6657
+ sem_open: (np, nl, oflag, mode, value2, out) => {
6658
+ const handle = call2({
6659
+ op: "sem-open",
6660
+ name: name2(np, nl),
6661
+ create: (oflag & SEM_CREAT) !== 0,
6662
+ exclusive: (oflag & SEM_EXCL) !== 0,
6663
+ mode,
6664
+ value: value2
6665
+ });
6666
+ mem.view().setUint32(out, handle, true);
6667
+ },
6668
+ sem_close: (handle) => void call2({ op: "sem-close", handle }),
6669
+ sem_unlink: (np, nl) => void call2({ op: "sem-unlink", name: name2(np, nl) }),
6670
+ sem_post: (handle) => void call2({ op: "sem-post", handle }),
6671
+ sem_wait: (handle, how, clock, deadline) => {
6672
+ const kind = HOW[how];
6673
+ if (!kind) throw new WasiError("EINVAL");
6674
+ let timeoutMs2 = -1;
6675
+ if (kind === "timed") {
6676
+ if (deadline < 0n) throw new WasiError("EINVAL");
6677
+ if (clock !== CLOCK.REALTIME && clock !== CLOCK.MONOTONIC) throw new WasiError("EINVAL");
6678
+ timeoutMs2 = remainingMs(deadline, host.now(clock));
6679
+ }
6680
+ call2({ op: "sem-wait", handle, how: kind, timeoutMs: timeoutMs2 });
6681
+ },
6682
+ sem_getvalue: (handle, out) => void mem.view().setInt32(out, call2({ op: "sem-getvalue", handle }), true)
6683
+ };
6684
+ }
6685
+ var SEM_CREAT, SEM_EXCL, HOW, NS_PER_MS;
6686
+ var init_slicc_sem = __esm({
6687
+ "src/process/wasi/slicc-sem.ts"() {
6688
+ "use strict";
6689
+ init_wasi_abi();
6690
+ init_wasi_files();
6691
+ SEM_CREAT = 1;
6692
+ SEM_EXCL = 2;
6693
+ HOW = ["block", "try", "timed"];
6694
+ NS_PER_MS = 1000000n;
6695
+ }
6696
+ });
6697
+
6647
6698
  // src/kernel/pipe.ts
6648
6699
  var PIPE_CAPACITY;
6649
6700
  var init_pipe = __esm({
@@ -8099,7 +8150,7 @@ function filestatOf(path, s) {
8099
8150
  size: BigInt(s.size),
8100
8151
  ino: s.ino !== void 0 ? BigInt(s.ino) : pathInode(path),
8101
8152
  ...s.nlink !== void 0 ? { nlink: BigInt(s.nlink) } : {},
8102
- mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS
8153
+ mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS2
8103
8154
  };
8104
8155
  }
8105
8156
  function kernelFiletype(kind) {
@@ -8149,7 +8200,7 @@ function wrap(table) {
8149
8200
  }
8150
8201
  return out;
8151
8202
  }
8152
- var WasiExit, IDS, NS_PER_MS, AT_SYMLINK_NOFOLLOW2, AT_EACCESS2, ROOT_IDS, GONE, S_IFIFO, DEFAULT_UMASK, MONOTONIC_BASE, MAX_READ, SIGPIPE_EXIT, SIG_IGN, SEALED_MODE, WasiHost;
8203
+ var WasiExit, IDS, NS_PER_MS2, AT_SYMLINK_NOFOLLOW2, AT_EACCESS2, ROOT_IDS, GONE, S_IFIFO, DEFAULT_UMASK, MONOTONIC_BASE, MAX_READ, SIGPIPE_EXIT, SIG_IGN, SEALED_MODE, WasiHost;
8153
8204
  var init_wasi_host = __esm({
8154
8205
  "src/process/wasi/wasi-host.ts"() {
8155
8206
  "use strict";
@@ -8157,6 +8208,7 @@ var init_wasi_host = __esm({
8157
8208
  init_physical_path();
8158
8209
  init_cpu_clock();
8159
8210
  init_cred();
8211
+ init_slicc_sem();
8160
8212
  init_wasi_abi();
8161
8213
  init_wasi_fds();
8162
8214
  init_wasi_files();
@@ -8172,14 +8224,14 @@ var init_wasi_host = __esm({
8172
8224
  }
8173
8225
  };
8174
8226
  IDS = ["ruid", "euid", "suid", "rgid", "egid", "sgid"];
8175
- NS_PER_MS = 1000000n;
8227
+ NS_PER_MS2 = 1000000n;
8176
8228
  AT_SYMLINK_NOFOLLOW2 = 1;
8177
8229
  AT_EACCESS2 = 2;
8178
8230
  ROOT_IDS = Object.freeze({ uid: 0, gid: 0 });
8179
8231
  GONE = /* @__PURE__ */ new Set(["ENOENT", "ENOTDIR"]);
8180
8232
  S_IFIFO = 4096;
8181
8233
  DEFAULT_UMASK = 18;
8182
- MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS;
8234
+ MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS2;
8183
8235
  MAX_READ = 1024 * 1024;
8184
8236
  SIGPIPE_EXIT = 141;
8185
8237
  SIG_IGN = 1;
@@ -8377,6 +8429,7 @@ var init_wasi_host = __esm({
8377
8429
  });
8378
8430
  void this.o.kernel.call({ op: "proc-setcred", change });
8379
8431
  },
8432
+ ...semImports(this),
8380
8433
  groups_get: (buf, cap, count) => {
8381
8434
  const { groups } = this.o.kernel.call({ op: "proc-cred" });
8382
8435
  if (cap !== 0 && cap < groups.length) throw new WasiError("EINVAL");
@@ -8467,7 +8520,7 @@ var init_wasi_host = __esm({
8467
8520
  return this.cache;
8468
8521
  }
8469
8522
  now(id) {
8470
- if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS;
8523
+ if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS2;
8471
8524
  if (id === CLOCK.MONOTONIC) {
8472
8525
  return MONOTONIC_BASE + BigInt(Math.round(performance.now() * 1e6));
8473
8526
  }
@@ -8976,7 +9029,7 @@ var init_wasi_host = __esm({
8976
9029
  current ??= statOf(path);
8977
9030
  return current[field2] ?? current.mtimeMs ?? now;
8978
9031
  };
8979
- const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 / NS_PER_MS) : kept(field2);
9032
+ const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 / NS_PER_MS2) : kept(field2);
8980
9033
  (follow2 ? this.o.fs.utimes : this.o.fs.lutimes).call(
8981
9034
  this.o.fs,
8982
9035
  path,
@@ -10362,7 +10415,7 @@ var init_wasix_fork = __esm({
10362
10415
  function timeoutMs(ns) {
10363
10416
  const value2 = BigInt.asUintN(64, ns);
10364
10417
  if (value2 === FOREVER) return -1;
10365
- const ms = (value2 + NS_PER_MS2 - 1n) / NS_PER_MS2;
10418
+ const ms = (value2 + NS_PER_MS3 - 1n) / NS_PER_MS3;
10366
10419
  return ms > BigInt(MAX_TIMEOUT_MS) ? -1 : Number(ms);
10367
10420
  }
10368
10421
  function wasixEpollImports(host) {
@@ -10423,7 +10476,7 @@ function wasixEpollImports(host) {
10423
10476
  }
10424
10477
  };
10425
10478
  }
10426
- var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS, NS_PER_MS2, EVENTFD_SEMAPHORE, EVENTFD_NONBLOCK, EVENTFD_MAX, OPS;
10479
+ var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS, NS_PER_MS3, EVENTFD_SEMAPHORE, EVENTFD_NONBLOCK, EVENTFD_MAX, OPS;
10427
10480
  var init_wasix_epoll = __esm({
10428
10481
  "src/process/wasi/wasix-epoll.ts"() {
10429
10482
  "use strict";
@@ -10435,7 +10488,7 @@ var init_wasix_epoll = __esm({
10435
10488
  MAX_EVENTS = 4096;
10436
10489
  FOREVER = 0xffffffffffffffffn;
10437
10490
  MAX_TIMEOUT_MS = 2147483647;
10438
- NS_PER_MS2 = 1000000n;
10491
+ NS_PER_MS3 = 1000000n;
10439
10492
  EVENTFD_SEMAPHORE = 1;
10440
10493
  EVENTFD_NONBLOCK = 4;
10441
10494
  EVENTFD_MAX = 0xfffffffffffffffen;