@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.
- package/README.md +41 -0
- package/dist/kernel-worker.js +240 -15
- package/dist/kernel-worker.js.map +4 -4
- package/dist/node-process-worker.js +63 -10
- package/dist/node-process-worker.js.map +4 -4
- package/dist/node.js +240 -15
- package/dist/node.js.map +4 -4
- package/dist/process-worker.js +63 -10
- package/dist/process-worker.js.map +4 -4
- package/package.json +2 -2
package/dist/process-worker.js
CHANGED
|
@@ -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.
|
|
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)) *
|
|
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,
|
|
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
|
-
|
|
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)) *
|
|
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()) *
|
|
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 /
|
|
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 +
|
|
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,
|
|
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
|
-
|
|
10491
|
+
NS_PER_MS3 = 1000000n;
|
|
10439
10492
|
EVENTFD_SEMAPHORE = 1;
|
|
10440
10493
|
EVENTFD_NONBLOCK = 4;
|
|
10441
10494
|
EVENTFD_MAX = 0xfffffffffffffffen;
|