@ai-ecoverse/slicc-kernel 1.102.4 → 1.102.6
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 +10 -2
- package/dist/kernel-worker.js +68 -8
- package/dist/kernel-worker.js.map +2 -2
- package/dist/node-process-worker.js +1 -1
- package/dist/node.js +68 -8
- package/dist/node.js.map +2 -2
- package/dist/process-worker.js +1 -1
- package/package.json +1 -1
|
@@ -4774,7 +4774,7 @@ var KERNEL_VERSION, OS_RELEASE;
|
|
|
4774
4774
|
var init_version = __esm({
|
|
4775
4775
|
"src/version.ts"() {
|
|
4776
4776
|
"use strict";
|
|
4777
|
-
KERNEL_VERSION = true ? "1.102.
|
|
4777
|
+
KERNEL_VERSION = true ? "1.102.6" : "0.0.0-dev";
|
|
4778
4778
|
OS_RELEASE = "6.0.0-slicc";
|
|
4779
4779
|
}
|
|
4780
4780
|
});
|
package/dist/node.js
CHANGED
|
@@ -1550,6 +1550,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1550
1550
|
backlog = 0;
|
|
1551
1551
|
boundAt;
|
|
1552
1552
|
changes = new Changes();
|
|
1553
|
+
room = new Changes();
|
|
1553
1554
|
options = /* @__PURE__ */ new Map();
|
|
1554
1555
|
constructor(net, domain) {
|
|
1555
1556
|
this.net = net;
|
|
@@ -1634,7 +1635,10 @@ var KernelSocket = class _KernelSocket {
|
|
|
1634
1635
|
for (; ; ) {
|
|
1635
1636
|
if (this.state !== "listening") throw new KernelError("EINVAL");
|
|
1636
1637
|
const next2 = this.queue.shift();
|
|
1637
|
-
if (next2)
|
|
1638
|
+
if (next2) {
|
|
1639
|
+
this.room.wake();
|
|
1640
|
+
return next2;
|
|
1641
|
+
}
|
|
1638
1642
|
if (nonblock) throw new KernelError("EAGAIN");
|
|
1639
1643
|
await this.changes.wait(signal);
|
|
1640
1644
|
}
|
|
@@ -1645,7 +1649,13 @@ var KernelSocket = class _KernelSocket {
|
|
|
1645
1649
|
this.changes.wake();
|
|
1646
1650
|
return true;
|
|
1647
1651
|
}
|
|
1648
|
-
|
|
1652
|
+
get full() {
|
|
1653
|
+
return this.state === "listening" && this.queue.length >= this.backlog;
|
|
1654
|
+
}
|
|
1655
|
+
waitRoom(signal) {
|
|
1656
|
+
return this.room.wait(signal);
|
|
1657
|
+
}
|
|
1658
|
+
connect(addr, viaUplink = true, cred, stamp, waits = true) {
|
|
1649
1659
|
if (this.state === "connected") throw new KernelError("EISCONN");
|
|
1650
1660
|
if (this.state === "connecting") throw new KernelError("EALREADY");
|
|
1651
1661
|
if (this.state !== "open") throw new KernelError("EINVAL");
|
|
@@ -1660,6 +1670,11 @@ var KernelSocket = class _KernelSocket {
|
|
|
1660
1670
|
this.boundAt = this.local;
|
|
1661
1671
|
} else this.local = { family: "unix", path: "" };
|
|
1662
1672
|
}
|
|
1673
|
+
if (waits && target.full) return this.queued(addr, target, cred, stamp);
|
|
1674
|
+
this.join(addr, target, cred, stamp);
|
|
1675
|
+
return void 0;
|
|
1676
|
+
}
|
|
1677
|
+
join(addr, target, cred, stamp) {
|
|
1663
1678
|
const server = new _KernelSocket(this.net, this.domain);
|
|
1664
1679
|
server.local = addr.family === "inet" ? { ...addr, host: canonicalHost(addr.host) } : addr;
|
|
1665
1680
|
server.peer = this.local;
|
|
@@ -1673,7 +1688,34 @@ var KernelSocket = class _KernelSocket {
|
|
|
1673
1688
|
server.close();
|
|
1674
1689
|
throw new KernelError("ECONNREFUSED");
|
|
1675
1690
|
}
|
|
1676
|
-
|
|
1691
|
+
}
|
|
1692
|
+
async queued(addr, target, cred, stamp) {
|
|
1693
|
+
this.state = "connecting";
|
|
1694
|
+
const abort = new AbortController();
|
|
1695
|
+
this.dialing = abort;
|
|
1696
|
+
const timer = setTimeout(
|
|
1697
|
+
() => abort.abort(new KernelError("ETIMEDOUT")),
|
|
1698
|
+
this.net.backlogWaitMs
|
|
1699
|
+
);
|
|
1700
|
+
try {
|
|
1701
|
+
while (target.full) await target.waitRoom(abort.signal);
|
|
1702
|
+
if (abort.signal.aborted) throw abort.signal.reason;
|
|
1703
|
+
this.state = "open";
|
|
1704
|
+
this.join(addr, target, cred, stamp);
|
|
1705
|
+
this.dialing = void 0;
|
|
1706
|
+
} catch (e) {
|
|
1707
|
+
const reason = abort.signal.aborted ? abort.signal.reason : e;
|
|
1708
|
+
const error = reason instanceof KernelError ? reason : new KernelError("ECONNREFUSED");
|
|
1709
|
+
if (this.dialing === abort) {
|
|
1710
|
+
this.dialing = void 0;
|
|
1711
|
+
this.failed = error.code;
|
|
1712
|
+
if (this.state === "connecting") this.state = "open";
|
|
1713
|
+
this.changes.wake();
|
|
1714
|
+
}
|
|
1715
|
+
throw error;
|
|
1716
|
+
} finally {
|
|
1717
|
+
clearTimeout(timer);
|
|
1718
|
+
}
|
|
1677
1719
|
}
|
|
1678
1720
|
dial(addr, route) {
|
|
1679
1721
|
this.state = "connecting";
|
|
@@ -1774,6 +1816,7 @@ var KernelSocket = class _KernelSocket {
|
|
|
1774
1816
|
this.dialing = void 0;
|
|
1775
1817
|
if (was === "listening") {
|
|
1776
1818
|
for (const pending of this.queue.splice(0)) pending.close();
|
|
1819
|
+
this.room.wake();
|
|
1777
1820
|
}
|
|
1778
1821
|
if (this.link) {
|
|
1779
1822
|
if (!this.readShut) this.link.rx.closeRead();
|
|
@@ -1871,9 +1914,10 @@ var LoopbackNet = class {
|
|
|
1871
1914
|
socket.listen(backlog);
|
|
1872
1915
|
return socket;
|
|
1873
1916
|
}
|
|
1917
|
+
backlogWaitMs = DIAL_TIMEOUT_MS;
|
|
1874
1918
|
connect(addr) {
|
|
1875
1919
|
const socket = this.socket(addr.family);
|
|
1876
|
-
void socket.connect(addr, false);
|
|
1920
|
+
void socket.connect(addr, false, void 0, void 0, false);
|
|
1877
1921
|
return socket;
|
|
1878
1922
|
}
|
|
1879
1923
|
bind(socket, addr, kernel = false) {
|
|
@@ -11133,7 +11177,7 @@ var PATH_OPS = new Set(SYNC_FS_OPS);
|
|
|
11133
11177
|
var EARLY_WHOLE_FILE = 64 * 1024;
|
|
11134
11178
|
|
|
11135
11179
|
// src/version.ts
|
|
11136
|
-
var KERNEL_VERSION = true ? "1.102.
|
|
11180
|
+
var KERNEL_VERSION = true ? "1.102.6" : "0.0.0-dev";
|
|
11137
11181
|
var OS_RELEASE = "6.0.0-slicc";
|
|
11138
11182
|
function procVersion() {
|
|
11139
11183
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -12388,7 +12432,8 @@ var KernelLoopback = class {
|
|
|
12388
12432
|
{ family: "inet", host: "127.0.0.1", port },
|
|
12389
12433
|
false,
|
|
12390
12434
|
this.cred(),
|
|
12391
|
-
this.stamp ? await this.stamp() : void 0
|
|
12435
|
+
this.stamp ? await this.stamp() : void 0,
|
|
12436
|
+
false
|
|
12392
12437
|
);
|
|
12393
12438
|
} catch (err) {
|
|
12394
12439
|
socket.close();
|
|
@@ -15608,8 +15653,15 @@ var WasmProcess = class {
|
|
|
15608
15653
|
const bit = sigbit(sig);
|
|
15609
15654
|
if (this.ignores(bit)) return "ignore";
|
|
15610
15655
|
if (((this.options.blockedBits?.() ?? 0) & bit) !== 0) {
|
|
15611
|
-
this.options.
|
|
15612
|
-
|
|
15656
|
+
const tid = this.options.unblockedThread?.(sig);
|
|
15657
|
+
if (tid === void 0) {
|
|
15658
|
+
this.options.onPending?.(sig);
|
|
15659
|
+
return "deliver";
|
|
15660
|
+
}
|
|
15661
|
+
if (this.caught & bit) {
|
|
15662
|
+
this.options.threadKill?.(tid, sig);
|
|
15663
|
+
return "deliver";
|
|
15664
|
+
}
|
|
15613
15665
|
}
|
|
15614
15666
|
if (!(this.caught & bit)) {
|
|
15615
15667
|
const action = defaultAction(sig);
|
|
@@ -16852,6 +16904,12 @@ function killThread(thread, caught, sig) {
|
|
|
16852
16904
|
blocked2.abort();
|
|
16853
16905
|
return true;
|
|
16854
16906
|
}
|
|
16907
|
+
function unblockedThread(threads, sig) {
|
|
16908
|
+
for (const [tid, thread] of threads) {
|
|
16909
|
+
if ((Atomics.load(thread.header, SAB_I_BLOCKED) & sigbit(sig)) === 0) return tid;
|
|
16910
|
+
}
|
|
16911
|
+
return void 0;
|
|
16912
|
+
}
|
|
16855
16913
|
function unblocked(header4) {
|
|
16856
16914
|
return Atomics.load(header4, SAB_I_SIGNALS) & ~Atomics.load(header4, SAB_I_BLOCKED);
|
|
16857
16915
|
}
|
|
@@ -17002,6 +17060,7 @@ function processOptions(opts, header4, hooks, created3) {
|
|
|
17002
17060
|
hasPending: () => unblocked(header4) !== 0 || Atomics.load(header4, SAB_I_TIMERS) !== 0,
|
|
17003
17061
|
raise: hooks.raise,
|
|
17004
17062
|
threadKill: hooks.threadKill,
|
|
17063
|
+
unblockedThread: hooks.unblockedThread,
|
|
17005
17064
|
...hooks.exitNow ? { exitNow: hooks.exitNow } : {},
|
|
17006
17065
|
...hooks.exitSignal ? { exitSignal: hooks.exitSignal } : {},
|
|
17007
17066
|
...opts.program.abi === "wasi" || opts.program.abi === "js" ? { pendingBits: () => Atomics.load(header4, SAB_I_SIGNALS) } : {},
|
|
@@ -17042,6 +17101,7 @@ function spawnWasmProcess(opts) {
|
|
|
17042
17101
|
{
|
|
17043
17102
|
raise: (sig) => signal(sig),
|
|
17044
17103
|
threadKill: (tid, sig) => killThread(threadSignals.get(tid), process2.signalMasks().caught, sig),
|
|
17104
|
+
unblockedThread: (sig) => unblockedThread(threadSignals, sig),
|
|
17045
17105
|
...opts.program.abi === "js" ? {
|
|
17046
17106
|
exitNow: (code) => exitNow(code),
|
|
17047
17107
|
exitSignal: (sig) => queueMicrotask(() => finish(128 + sig, sig))
|