@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
|
@@ -1478,6 +1478,57 @@ var init_cred = __esm({
|
|
|
1478
1478
|
}
|
|
1479
1479
|
});
|
|
1480
1480
|
|
|
1481
|
+
// src/process/wasi/slicc-sem.ts
|
|
1482
|
+
function remainingMs(deadline, now) {
|
|
1483
|
+
if (deadline <= now) return 0;
|
|
1484
|
+
return Number((deadline - now + NS_PER_MS - 1n) / NS_PER_MS);
|
|
1485
|
+
}
|
|
1486
|
+
function semImports(host) {
|
|
1487
|
+
const { mem } = host;
|
|
1488
|
+
const call2 = (req) => host.o.kernel.call(req);
|
|
1489
|
+
const name2 = (ptr, len) => mem.string(ptr, len);
|
|
1490
|
+
return {
|
|
1491
|
+
sem_open: (np, nl, oflag, mode, value2, out) => {
|
|
1492
|
+
const handle = call2({
|
|
1493
|
+
op: "sem-open",
|
|
1494
|
+
name: name2(np, nl),
|
|
1495
|
+
create: (oflag & SEM_CREAT) !== 0,
|
|
1496
|
+
exclusive: (oflag & SEM_EXCL) !== 0,
|
|
1497
|
+
mode,
|
|
1498
|
+
value: value2
|
|
1499
|
+
});
|
|
1500
|
+
mem.view().setUint32(out, handle, true);
|
|
1501
|
+
},
|
|
1502
|
+
sem_close: (handle) => void call2({ op: "sem-close", handle }),
|
|
1503
|
+
sem_unlink: (np, nl) => void call2({ op: "sem-unlink", name: name2(np, nl) }),
|
|
1504
|
+
sem_post: (handle) => void call2({ op: "sem-post", handle }),
|
|
1505
|
+
sem_wait: (handle, how, clock, deadline) => {
|
|
1506
|
+
const kind = HOW[how];
|
|
1507
|
+
if (!kind) throw new WasiError("EINVAL");
|
|
1508
|
+
let timeoutMs2 = -1;
|
|
1509
|
+
if (kind === "timed") {
|
|
1510
|
+
if (deadline < 0n) throw new WasiError("EINVAL");
|
|
1511
|
+
if (clock !== CLOCK.REALTIME && clock !== CLOCK.MONOTONIC) throw new WasiError("EINVAL");
|
|
1512
|
+
timeoutMs2 = remainingMs(deadline, host.now(clock));
|
|
1513
|
+
}
|
|
1514
|
+
call2({ op: "sem-wait", handle, how: kind, timeoutMs: timeoutMs2 });
|
|
1515
|
+
},
|
|
1516
|
+
sem_getvalue: (handle, out) => void mem.view().setInt32(out, call2({ op: "sem-getvalue", handle }), true)
|
|
1517
|
+
};
|
|
1518
|
+
}
|
|
1519
|
+
var SEM_CREAT, SEM_EXCL, HOW, NS_PER_MS;
|
|
1520
|
+
var init_slicc_sem = __esm({
|
|
1521
|
+
"src/process/wasi/slicc-sem.ts"() {
|
|
1522
|
+
"use strict";
|
|
1523
|
+
init_wasi_abi();
|
|
1524
|
+
init_wasi_files();
|
|
1525
|
+
SEM_CREAT = 1;
|
|
1526
|
+
SEM_EXCL = 2;
|
|
1527
|
+
HOW = ["block", "try", "timed"];
|
|
1528
|
+
NS_PER_MS = 1000000n;
|
|
1529
|
+
}
|
|
1530
|
+
});
|
|
1531
|
+
|
|
1481
1532
|
// src/kernel/pipe.ts
|
|
1482
1533
|
var PIPE_CAPACITY;
|
|
1483
1534
|
var init_pipe = __esm({
|
|
@@ -3056,7 +3107,7 @@ function filestatOf(path, s) {
|
|
|
3056
3107
|
size: BigInt(s.size),
|
|
3057
3108
|
ino: s.ino !== void 0 ? BigInt(s.ino) : pathInode(path),
|
|
3058
3109
|
...s.nlink !== void 0 ? { nlink: BigInt(s.nlink) } : {},
|
|
3059
|
-
mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) *
|
|
3110
|
+
mtimeNs: BigInt(Math.round(s.mtimeMs ?? 0)) * NS_PER_MS2
|
|
3060
3111
|
};
|
|
3061
3112
|
}
|
|
3062
3113
|
function kernelFiletype(kind) {
|
|
@@ -3106,7 +3157,7 @@ function wrap(table) {
|
|
|
3106
3157
|
}
|
|
3107
3158
|
return out;
|
|
3108
3159
|
}
|
|
3109
|
-
var WasiExit, IDS,
|
|
3160
|
+
var WasiExit, IDS, NS_PER_MS2, AT_SYMLINK_NOFOLLOW, AT_EACCESS, ROOT_IDS, GONE, S_IFIFO, DEFAULT_UMASK, MONOTONIC_BASE, MAX_READ, SIGPIPE_EXIT, SIG_IGN, SEALED_MODE, WasiHost;
|
|
3110
3161
|
var init_wasi_host = __esm({
|
|
3111
3162
|
"src/process/wasi/wasi-host.ts"() {
|
|
3112
3163
|
"use strict";
|
|
@@ -3114,6 +3165,7 @@ var init_wasi_host = __esm({
|
|
|
3114
3165
|
init_physical_path();
|
|
3115
3166
|
init_cpu_clock();
|
|
3116
3167
|
init_cred();
|
|
3168
|
+
init_slicc_sem();
|
|
3117
3169
|
init_wasi_abi();
|
|
3118
3170
|
init_wasi_fds();
|
|
3119
3171
|
init_wasi_files();
|
|
@@ -3129,14 +3181,14 @@ var init_wasi_host = __esm({
|
|
|
3129
3181
|
}
|
|
3130
3182
|
};
|
|
3131
3183
|
IDS = ["ruid", "euid", "suid", "rgid", "egid", "sgid"];
|
|
3132
|
-
|
|
3184
|
+
NS_PER_MS2 = 1000000n;
|
|
3133
3185
|
AT_SYMLINK_NOFOLLOW = 1;
|
|
3134
3186
|
AT_EACCESS = 2;
|
|
3135
3187
|
ROOT_IDS = Object.freeze({ uid: 0, gid: 0 });
|
|
3136
3188
|
GONE = /* @__PURE__ */ new Set(["ENOENT", "ENOTDIR"]);
|
|
3137
3189
|
S_IFIFO = 4096;
|
|
3138
3190
|
DEFAULT_UMASK = 18;
|
|
3139
|
-
MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) *
|
|
3191
|
+
MONOTONIC_BASE = BigInt(Math.round(performance.timeOrigin)) * NS_PER_MS2;
|
|
3140
3192
|
MAX_READ = 1024 * 1024;
|
|
3141
3193
|
SIGPIPE_EXIT = 141;
|
|
3142
3194
|
SIG_IGN = 1;
|
|
@@ -3334,6 +3386,7 @@ var init_wasi_host = __esm({
|
|
|
3334
3386
|
});
|
|
3335
3387
|
void this.o.kernel.call({ op: "proc-setcred", change });
|
|
3336
3388
|
},
|
|
3389
|
+
...semImports(this),
|
|
3337
3390
|
groups_get: (buf, cap, count) => {
|
|
3338
3391
|
const { groups } = this.o.kernel.call({ op: "proc-cred" });
|
|
3339
3392
|
if (cap !== 0 && cap < groups.length) throw new WasiError("EINVAL");
|
|
@@ -3424,7 +3477,7 @@ var init_wasi_host = __esm({
|
|
|
3424
3477
|
return this.cache;
|
|
3425
3478
|
}
|
|
3426
3479
|
now(id) {
|
|
3427
|
-
if (id === CLOCK.REALTIME) return BigInt(Date.now()) *
|
|
3480
|
+
if (id === CLOCK.REALTIME) return BigInt(Date.now()) * NS_PER_MS2;
|
|
3428
3481
|
if (id === CLOCK.MONOTONIC) {
|
|
3429
3482
|
return MONOTONIC_BASE + BigInt(Math.round(performance.now() * 1e6));
|
|
3430
3483
|
}
|
|
@@ -3933,7 +3986,7 @@ var init_wasi_host = __esm({
|
|
|
3933
3986
|
current ??= statOf(path);
|
|
3934
3987
|
return current[field2] ?? current.mtimeMs ?? now;
|
|
3935
3988
|
};
|
|
3936
|
-
const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 /
|
|
3989
|
+
const pick = (set, setNow, value2, field2) => flags & setNow ? now : flags & set ? Number(value2 / NS_PER_MS2) : kept(field2);
|
|
3937
3990
|
(follow2 ? this.o.fs.utimes : this.o.fs.lutimes).call(
|
|
3938
3991
|
this.o.fs,
|
|
3939
3992
|
path,
|
|
@@ -4591,7 +4644,7 @@ var KERNEL_VERSION, OS_RELEASE;
|
|
|
4591
4644
|
var init_version = __esm({
|
|
4592
4645
|
"src/version.ts"() {
|
|
4593
4646
|
"use strict";
|
|
4594
|
-
KERNEL_VERSION = true ? "1.
|
|
4647
|
+
KERNEL_VERSION = true ? "1.99.0" : "0.0.0-dev";
|
|
4595
4648
|
OS_RELEASE = "6.0.0-slicc";
|
|
4596
4649
|
}
|
|
4597
4650
|
});
|
|
@@ -13414,7 +13467,7 @@ var init_wasix_fork = __esm({
|
|
|
13414
13467
|
function timeoutMs(ns) {
|
|
13415
13468
|
const value2 = BigInt.asUintN(64, ns);
|
|
13416
13469
|
if (value2 === FOREVER) return -1;
|
|
13417
|
-
const ms = (value2 +
|
|
13470
|
+
const ms = (value2 + NS_PER_MS3 - 1n) / NS_PER_MS3;
|
|
13418
13471
|
return ms > BigInt(MAX_TIMEOUT_MS) ? -1 : Number(ms);
|
|
13419
13472
|
}
|
|
13420
13473
|
function wasixEpollImports(host) {
|
|
@@ -13475,7 +13528,7 @@ function wasixEpollImports(host) {
|
|
|
13475
13528
|
}
|
|
13476
13529
|
};
|
|
13477
13530
|
}
|
|
13478
|
-
var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS,
|
|
13531
|
+
var EVENT_SIZE, DATA_OFFSET, DATA_SIZE, MAX_EVENTS, FOREVER, MAX_TIMEOUT_MS, NS_PER_MS3, EVENTFD_SEMAPHORE, EVENTFD_NONBLOCK, EVENTFD_MAX, OPS;
|
|
13479
13532
|
var init_wasix_epoll = __esm({
|
|
13480
13533
|
"src/process/wasi/wasix-epoll.ts"() {
|
|
13481
13534
|
"use strict";
|
|
@@ -13487,7 +13540,7 @@ var init_wasix_epoll = __esm({
|
|
|
13487
13540
|
MAX_EVENTS = 4096;
|
|
13488
13541
|
FOREVER = 0xffffffffffffffffn;
|
|
13489
13542
|
MAX_TIMEOUT_MS = 2147483647;
|
|
13490
|
-
|
|
13543
|
+
NS_PER_MS3 = 1000000n;
|
|
13491
13544
|
EVENTFD_SEMAPHORE = 1;
|
|
13492
13545
|
EVENTFD_NONBLOCK = 4;
|
|
13493
13546
|
EVENTFD_MAX = 0xfffffffffffffffen;
|