@ai-ecoverse/slicc-kernel 1.166.3 → 1.166.5
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 +1 -1
- package/dist/kernel-worker.js +19 -6
- package/dist/kernel-worker.js.map +3 -3
- package/dist/node-driver-worker.js +12 -1
- package/dist/node-driver-worker.js.map +2 -2
- package/dist/node-process-worker.cjs +112 -53
- package/dist/node-process-worker.cjs.map +3 -3
- package/dist/node-process-worker.js +112 -53
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +19 -6
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +93 -45
- package/dist/process-worker.js.map +3 -3
- package/dist/types/process/js/js-sync.d.ts +3 -2
- package/dist/types/realm/sync-sab-bridge.d.ts +1 -1
- package/dist/types/realm/sync-sab-wire.d.ts +4 -0
- package/package.json +2 -2
|
@@ -1690,19 +1690,22 @@ var init_wasi_files = __esm({
|
|
|
1690
1690
|
});
|
|
1691
1691
|
|
|
1692
1692
|
// src/realm/sync-sab-wire.ts
|
|
1693
|
+
function copyWindow(out, window, chunk, at) {
|
|
1694
|
+
setBytes.call(out, bytesPart.call(window, 0, chunk), at);
|
|
1695
|
+
}
|
|
1693
1696
|
function loadBlocked(header) {
|
|
1694
|
-
return [
|
|
1697
|
+
return [sabLoad(header, SAB_I_BLOCKED), sabLoad(header, SAB_I_BLOCKED_HI)];
|
|
1695
1698
|
}
|
|
1696
1699
|
function storeBlocked(header, [low, high]) {
|
|
1697
|
-
|
|
1698
|
-
|
|
1700
|
+
sabStore(header, SAB_I_BLOCKED_HI, high);
|
|
1701
|
+
sabStore(header, SAB_I_BLOCKED, low);
|
|
1699
1702
|
}
|
|
1700
1703
|
function loadU53(header, lo, hi) {
|
|
1701
|
-
return (
|
|
1704
|
+
return (sabLoad(header, lo) >>> 0) + sabLoad(header, hi) * U32;
|
|
1702
1705
|
}
|
|
1703
1706
|
function publishMemory(sab, bytes) {
|
|
1704
1707
|
if (bytes > 0)
|
|
1705
|
-
|
|
1708
|
+
sabStore(new capturedInt32Array(sab, 0, SAB_HEADER_I32), SAB_I_MEMORY, capturedMath.ceil(bytes / 65536));
|
|
1706
1709
|
}
|
|
1707
1710
|
function decodeSabResult(status2, payload) {
|
|
1708
1711
|
switch (status2) {
|
|
@@ -1712,14 +1715,14 @@ function decodeSabResult(status2, payload) {
|
|
|
1712
1715
|
return { ok: true, kind: "void" };
|
|
1713
1716
|
case SAB_STATUS_JSON: {
|
|
1714
1717
|
try {
|
|
1715
|
-
return { ok: true, kind: "json", json: capturedJSON.parse(
|
|
1718
|
+
return { ok: true, kind: "json", json: capturedJSON.parse(decodeText.call(decoder, payload)) };
|
|
1716
1719
|
} catch {
|
|
1717
1720
|
return { ok: false, errno: "EIO", message: "sync-sab: malformed json payload" };
|
|
1718
1721
|
}
|
|
1719
1722
|
}
|
|
1720
1723
|
case SAB_STATUS_ERRNO: {
|
|
1721
1724
|
try {
|
|
1722
|
-
const parsed = capturedJSON.parse(
|
|
1725
|
+
const parsed = capturedJSON.parse(decodeText.call(decoder, payload));
|
|
1723
1726
|
const errno2 = typeof parsed.errno === "string" && /^E[A-Z]+$|^EAI_[A-Z]+$/.test(parsed.errno) ? parsed.errno : "EIO";
|
|
1724
1727
|
const message2 = capturedString(parsed.message ?? errno2);
|
|
1725
1728
|
return {
|
|
@@ -1746,11 +1749,20 @@ function sabViews(sab) {
|
|
|
1746
1749
|
window: new capturedUint8Array(sab, SAB_HEADER_BYTES)
|
|
1747
1750
|
};
|
|
1748
1751
|
}
|
|
1749
|
-
var SAB_HEADER_I32, SAB_CLOCK_OFFSET, SAB_CLOCK_I64, SAB_HEADER_BYTES, SAB_I_STATE, SAB_I_SEQ, SAB_I_STATUS, SAB_I_TOTAL, SAB_I_CHUNK, SAB_I_OFFSET, SAB_I_REQ, SAB_I_PUB, SAB_I_SIGNALS, SAB_I_TIMERS, SAB_I_MEMORY, SAB_I_TOTAL_HI, SAB_I_OFFSET_HI, SAB_I_KILLED, SAB_I_ASYNC, SAB_I_STOP, SAB_I_BLOCKED, SAB_I_BLOCKED_HI, anyBlocked, U32, SAB_STATE_IDLE, SAB_STATE_PENDING, SAB_STATE_READY, SAB_STATUS_BYTES, SAB_STATUS_JSON, SAB_STATUS_VOID, SAB_STATUS_ERRNO, SAB_DEFAULT_WINDOW_BYTES, SAB_MIN_BYTES, SYNC_SAB_REQ_MSG, SYNC_SAB_NEXT_MSG, encoder, decoder;
|
|
1752
|
+
var atomicLoad, atomicStore, atomicWaitAsync, setBytes, bytesPart, decodeText, sabLoad, sabStore, sabWaitAsync, SAB_HEADER_I32, SAB_CLOCK_OFFSET, SAB_CLOCK_I64, SAB_HEADER_BYTES, SAB_I_STATE, SAB_I_SEQ, SAB_I_STATUS, SAB_I_TOTAL, SAB_I_CHUNK, SAB_I_OFFSET, SAB_I_REQ, SAB_I_PUB, SAB_I_SIGNALS, SAB_I_TIMERS, SAB_I_MEMORY, SAB_I_TOTAL_HI, SAB_I_OFFSET_HI, SAB_I_KILLED, SAB_I_ASYNC, SAB_I_STOP, SAB_I_BLOCKED, SAB_I_BLOCKED_HI, anyBlocked, U32, SAB_STATE_IDLE, SAB_STATE_PENDING, SAB_STATE_READY, SAB_STATUS_BYTES, SAB_STATUS_JSON, SAB_STATUS_VOID, SAB_STATUS_ERRNO, SAB_DEFAULT_WINDOW_BYTES, SAB_MIN_BYTES, SYNC_SAB_REQ_MSG, SYNC_SAB_NEXT_MSG, encoder, decoder;
|
|
1750
1753
|
var init_sync_sab_wire = __esm({
|
|
1751
1754
|
"src/realm/sync-sab-wire.ts"() {
|
|
1752
1755
|
"use strict";
|
|
1753
1756
|
init_captured_globals();
|
|
1757
|
+
atomicLoad = capturedAtomics.load;
|
|
1758
|
+
atomicStore = capturedAtomics.store;
|
|
1759
|
+
atomicWaitAsync = capturedAtomics.waitAsync;
|
|
1760
|
+
setBytes = capturedUint8Array.prototype.set;
|
|
1761
|
+
bytesPart = capturedUint8Array.prototype.subarray;
|
|
1762
|
+
decodeText = capturedTextDecoder.prototype.decode;
|
|
1763
|
+
sabLoad = (a, i) => atomicLoad(a, i);
|
|
1764
|
+
sabStore = (a, i, v) => atomicStore(a, i, v);
|
|
1765
|
+
sabWaitAsync = atomicWaitAsync;
|
|
1754
1766
|
SAB_HEADER_I32 = 18;
|
|
1755
1767
|
SAB_CLOCK_OFFSET = SAB_HEADER_I32 * 4;
|
|
1756
1768
|
SAB_CLOCK_I64 = 3;
|
|
@@ -1993,9 +2005,9 @@ function useLocalClock(sab) {
|
|
|
1993
2005
|
if (!local) return;
|
|
1994
2006
|
localSab = sab;
|
|
1995
2007
|
localStart = epochMicros();
|
|
1996
|
-
const wait2 = (
|
|
1997
|
-
() => rawWait(
|
|
1998
|
-
timeout !== 0 && capturedAtomics.load(
|
|
2008
|
+
const wait2 = (typed3, index3, value2, timeout) => localWait(
|
|
2009
|
+
() => rawWait(typed3, index3, value2, timeout),
|
|
2010
|
+
timeout !== 0 && capturedAtomics.load(typed3, index3) === value2
|
|
1999
2011
|
);
|
|
2000
2012
|
capturedAtomics.wait = wait2;
|
|
2001
2013
|
}
|
|
@@ -2186,7 +2198,7 @@ function createSyncSabTransport(sab, port3, deps = {}) {
|
|
|
2186
2198
|
const now = deps.now ?? (() => capturedperformance.now());
|
|
2187
2199
|
let seq = 0;
|
|
2188
2200
|
let typical = 0;
|
|
2189
|
-
const ready = (id) =>
|
|
2201
|
+
const ready = (id) => sabLoad(header, SAB_I_STATE) === SAB_STATE_READY && sabLoad(header, SAB_I_SEQ) === id;
|
|
2190
2202
|
function spinUntil(id, until) {
|
|
2191
2203
|
for (let stride = 0; stride < SPIN_STRIDES; stride++) {
|
|
2192
2204
|
for (let i = 0; i < SPIN_STRIDE; i++) if (ready(id)) return true;
|
|
@@ -2204,7 +2216,7 @@ function createSyncSabTransport(sab, port3, deps = {}) {
|
|
|
2204
2216
|
return;
|
|
2205
2217
|
}
|
|
2206
2218
|
for (; ; ) {
|
|
2207
|
-
const published =
|
|
2219
|
+
const published = sabLoad(header, SAB_I_PUB);
|
|
2208
2220
|
if (ready(id)) {
|
|
2209
2221
|
settled2(start2);
|
|
2210
2222
|
return;
|
|
@@ -2215,7 +2227,7 @@ function createSyncSabTransport(sab, port3, deps = {}) {
|
|
|
2215
2227
|
}
|
|
2216
2228
|
}
|
|
2217
2229
|
return {
|
|
2218
|
-
call(asked, timeoutMs2, label, given = []) {
|
|
2230
|
+
call(asked, timeoutMs2, label, given = [], sink) {
|
|
2219
2231
|
if (deps.memory) publishMemory(sab, deps.memory());
|
|
2220
2232
|
const { req, transfer } = exactBody(asked, given);
|
|
2221
2233
|
const id = ++seq;
|
|
@@ -2223,10 +2235,10 @@ function createSyncSabTransport(sab, port3, deps = {}) {
|
|
|
2223
2235
|
let out = null;
|
|
2224
2236
|
let status2 = 0;
|
|
2225
2237
|
let offset = 0;
|
|
2226
|
-
|
|
2238
|
+
sabStore(header, SAB_I_REQ, id);
|
|
2227
2239
|
try {
|
|
2228
2240
|
for (; ; ) {
|
|
2229
|
-
|
|
2241
|
+
sabStore(header, SAB_I_STATE, SAB_STATE_PENDING);
|
|
2230
2242
|
const msg = offset === 0 ? { type: SYNC_SAB_REQ_MSG, id, req } : { type: SYNC_SAB_NEXT_MSG, id, offset };
|
|
2231
2243
|
try {
|
|
2232
2244
|
if (offset === 0 && transfer.length > 0) port3.postMessage(msg, transfer);
|
|
@@ -2236,28 +2248,34 @@ function createSyncSabTransport(sab, port3, deps = {}) {
|
|
|
2236
2248
|
}
|
|
2237
2249
|
awaitReady(id, now() + timeoutMs2, label);
|
|
2238
2250
|
const total = loadU53(header, SAB_I_TOTAL, SAB_I_TOTAL_HI);
|
|
2239
|
-
const chunk =
|
|
2251
|
+
const chunk = sabLoad(header, SAB_I_CHUNK);
|
|
2240
2252
|
const at = loadU53(header, SAB_I_OFFSET, SAB_I_OFFSET_HI);
|
|
2241
2253
|
if (at !== offset || chunk < 0 || total < 0 || offset + chunk > total) {
|
|
2242
2254
|
throw syncError("EIO", label);
|
|
2243
2255
|
}
|
|
2244
2256
|
if (out === null) {
|
|
2245
|
-
status2 =
|
|
2246
|
-
out =
|
|
2257
|
+
status2 = sabLoad(header, SAB_I_STATUS);
|
|
2258
|
+
out = landing(status2, total, sink);
|
|
2247
2259
|
}
|
|
2248
|
-
out
|
|
2260
|
+
copyWindow(out, window, chunk, offset);
|
|
2249
2261
|
offset += chunk;
|
|
2250
2262
|
if (offset >= total) break;
|
|
2251
2263
|
if (chunk === 0) throw syncError("EIO", label);
|
|
2252
2264
|
}
|
|
2253
2265
|
} finally {
|
|
2254
|
-
|
|
2255
|
-
|
|
2266
|
+
sabStore(header, SAB_I_REQ, 0);
|
|
2267
|
+
sabStore(header, SAB_I_STATE, SAB_STATE_IDLE);
|
|
2256
2268
|
}
|
|
2257
2269
|
return decodeSabResult(status2, out);
|
|
2258
2270
|
}
|
|
2259
2271
|
};
|
|
2260
2272
|
}
|
|
2273
|
+
function landing(status2, total, sink) {
|
|
2274
|
+
if (!sink || status2 !== SAB_STATUS_BYTES || total > lengthOf.call(sink)) {
|
|
2275
|
+
return new capturedUint8Array(total);
|
|
2276
|
+
}
|
|
2277
|
+
return new capturedUint8Array(bufferOf.call(sink), offsetOf.call(sink), total);
|
|
2278
|
+
}
|
|
2261
2279
|
function errnoError(code2, path, direct) {
|
|
2262
2280
|
const err = syncError(code2, `sync-sab bridge, '${path}'`);
|
|
2263
2281
|
return direct ? capturedObject.assign(err, { direct }) : err;
|
|
@@ -2449,7 +2467,7 @@ function createSyncFsSabBridge(transport, opts = {}) {
|
|
|
2449
2467
|
)
|
|
2450
2468
|
};
|
|
2451
2469
|
}
|
|
2452
|
-
var UNCOUNTED_OPS, calls, looks, SPIN_MS, SPIN_STRIDE, SPIN_STRIDES, SPIN_CORES, spinning, SPIN_CAP_MS;
|
|
2470
|
+
var UNCOUNTED_OPS, calls, looks, SPIN_MS, SPIN_STRIDE, SPIN_STRIDES, SPIN_CORES, spinning, SPIN_CAP_MS, typed, getter, bufferOf, offsetOf, lengthOf;
|
|
2453
2471
|
var init_sync_sab_bridge = __esm({
|
|
2454
2472
|
"src/realm/sync-sab-bridge.ts"() {
|
|
2455
2473
|
"use strict";
|
|
@@ -2467,6 +2485,11 @@ var init_sync_sab_bridge = __esm({
|
|
|
2467
2485
|
SPIN_CORES = 4;
|
|
2468
2486
|
spinning = (capturedGlobalThis.navigator?.hardwareConcurrency ?? 0) >= SPIN_CORES;
|
|
2469
2487
|
SPIN_CAP_MS = 1;
|
|
2488
|
+
typed = capturedObject.getPrototypeOf(capturedUint8Array.prototype);
|
|
2489
|
+
getter = (name2) => capturedObject.getOwnPropertyDescriptor(typed, name2)?.get;
|
|
2490
|
+
bufferOf = getter("buffer");
|
|
2491
|
+
offsetOf = getter("byteOffset");
|
|
2492
|
+
lengthOf = getter("length");
|
|
2470
2493
|
}
|
|
2471
2494
|
});
|
|
2472
2495
|
|
|
@@ -2481,8 +2504,8 @@ function createAsyncSabTransport(sab, port3, waitAsync = defaultWaitAsync) {
|
|
|
2481
2504
|
let tail = capturedPromise.resolve();
|
|
2482
2505
|
async function ready(id) {
|
|
2483
2506
|
for (; ; ) {
|
|
2484
|
-
const published =
|
|
2485
|
-
if (
|
|
2507
|
+
const published = sabLoad(header, SAB_I_PUB);
|
|
2508
|
+
if (sabLoad(header, SAB_I_STATE) === SAB_STATE_READY && sabLoad(header, SAB_I_SEQ) === id) {
|
|
2486
2509
|
return;
|
|
2487
2510
|
}
|
|
2488
2511
|
await changed(header, SAB_I_PUB, published, waitAsync);
|
|
@@ -2494,31 +2517,31 @@ function createAsyncSabTransport(sab, port3, waitAsync = defaultWaitAsync) {
|
|
|
2494
2517
|
let out = null;
|
|
2495
2518
|
let status2 = 0;
|
|
2496
2519
|
let offset = 0;
|
|
2497
|
-
|
|
2520
|
+
sabStore(header, SAB_I_REQ, id);
|
|
2498
2521
|
try {
|
|
2499
2522
|
for (; ; ) {
|
|
2500
|
-
|
|
2523
|
+
sabStore(header, SAB_I_STATE, SAB_STATE_PENDING);
|
|
2501
2524
|
if (offset === 0) port3.postMessage({ type: SYNC_SAB_REQ_MSG, id, req }, transfer);
|
|
2502
2525
|
else port3.postMessage({ type: SYNC_SAB_NEXT_MSG, id, offset });
|
|
2503
2526
|
await ready(id);
|
|
2504
2527
|
const total = loadU53(header, SAB_I_TOTAL, SAB_I_TOTAL_HI);
|
|
2505
|
-
const chunk =
|
|
2528
|
+
const chunk = sabLoad(header, SAB_I_CHUNK);
|
|
2506
2529
|
const at = loadU53(header, SAB_I_OFFSET, SAB_I_OFFSET_HI);
|
|
2507
2530
|
if (at !== offset || chunk < 0 || total < 0 || offset + chunk > total) {
|
|
2508
2531
|
return { ok: false, errno: "EIO", message: "sync-sab: torn reply" };
|
|
2509
2532
|
}
|
|
2510
2533
|
if (out === null) {
|
|
2511
|
-
status2 =
|
|
2534
|
+
status2 = sabLoad(header, SAB_I_STATUS);
|
|
2512
2535
|
out = new capturedUint8Array(total);
|
|
2513
2536
|
}
|
|
2514
|
-
out
|
|
2537
|
+
copyWindow(out, window, chunk, offset);
|
|
2515
2538
|
offset += chunk;
|
|
2516
2539
|
if (offset >= total) break;
|
|
2517
2540
|
if (chunk === 0) return { ok: false, errno: "EIO", message: "sync-sab: empty chunk" };
|
|
2518
2541
|
}
|
|
2519
2542
|
} finally {
|
|
2520
|
-
|
|
2521
|
-
|
|
2543
|
+
sabStore(header, SAB_I_REQ, 0);
|
|
2544
|
+
sabStore(header, SAB_I_STATE, SAB_STATE_IDLE);
|
|
2522
2545
|
}
|
|
2523
2546
|
return decodeSabResult(status2, out);
|
|
2524
2547
|
}
|
|
@@ -2537,7 +2560,7 @@ var init_async_sab = __esm({
|
|
|
2537
2560
|
init_captured_globals();
|
|
2538
2561
|
init_sync_sab_bridge();
|
|
2539
2562
|
init_sync_sab_wire();
|
|
2540
|
-
defaultWaitAsync = (a, i, v) =>
|
|
2563
|
+
defaultWaitAsync = (a, i, v) => sabWaitAsync(a, i, v);
|
|
2541
2564
|
}
|
|
2542
2565
|
});
|
|
2543
2566
|
|
|
@@ -7466,7 +7489,7 @@ var init_version = __esm({
|
|
|
7466
7489
|
"src/version.ts"() {
|
|
7467
7490
|
"use strict";
|
|
7468
7491
|
init_captured_globals();
|
|
7469
|
-
KERNEL_VERSION = true ? "1.166.
|
|
7492
|
+
KERNEL_VERSION = true ? "1.166.5" : "0.0.0-dev";
|
|
7470
7493
|
OS_RELEASE = "6.0.0-slicc";
|
|
7471
7494
|
}
|
|
7472
7495
|
});
|
|
@@ -10234,7 +10257,7 @@ function errnoOf(err) {
|
|
|
10234
10257
|
const errno2 = err?.errno;
|
|
10235
10258
|
return typeof errno2 === "number" ? errno2 : wasiErrno("EIO");
|
|
10236
10259
|
}
|
|
10237
|
-
function
|
|
10260
|
+
function sizeOf2(Fs, stream) {
|
|
10238
10261
|
const st = Fs.fstat?.(stream.fd);
|
|
10239
10262
|
return st?.size ?? 0;
|
|
10240
10263
|
}
|
|
@@ -10265,7 +10288,7 @@ function refused2(kind, flags) {
|
|
|
10265
10288
|
return kind === "write" && access === O_RDONLY || kind === "read" && access === O_WRONLY4;
|
|
10266
10289
|
}
|
|
10267
10290
|
function baseOf2(Fs, stream) {
|
|
10268
|
-
return (whence) => whence === SEEK_CUR3 ? stream.position : whence === SEEK_END3 ?
|
|
10291
|
+
return (whence) => whence === SEEK_CUR3 ? stream.position : whence === SEEK_END3 ? sizeOf2(Fs, stream) : 0;
|
|
10269
10292
|
}
|
|
10270
10293
|
function recordLock(fcntl, deps) {
|
|
10271
10294
|
return (fd, cmd, varargs) => {
|
|
@@ -10688,7 +10711,7 @@ function syncFsync(imports, fs, glue) {
|
|
|
10688
10711
|
};
|
|
10689
10712
|
}
|
|
10690
10713
|
}
|
|
10691
|
-
function
|
|
10714
|
+
function offsetOf2(rest2) {
|
|
10692
10715
|
const at = rest2.length >= 3 ? capturedNumber(rest2[1]) * 2 ** 32 + (capturedNumber(rest2[0]) >>> 0) : capturedNumber(capturedBigInt.asIntN(64, capturedBigInt(rest2[0])));
|
|
10693
10716
|
return at >= 0 && capturedNumber.isSafeInteger(at) ? at : void 0;
|
|
10694
10717
|
}
|
|
@@ -10710,7 +10733,7 @@ function positioned(original, write2, deps) {
|
|
|
10710
10733
|
if (kfd === void 0 || !memory || !(write2 ? deps.sys.pwrite : deps.sys.pread)) {
|
|
10711
10734
|
return original(fd, iov, iovcnt, ...rest2);
|
|
10712
10735
|
}
|
|
10713
|
-
const at =
|
|
10736
|
+
const at = offsetOf2(rest2);
|
|
10714
10737
|
if (at === void 0) return wasiErrno("EINVAL");
|
|
10715
10738
|
const view = new capturedDataView(memory.buffer);
|
|
10716
10739
|
let done = 0;
|
|
@@ -12560,13 +12583,17 @@ var init_js_run = __esm({
|
|
|
12560
12583
|
});
|
|
12561
12584
|
|
|
12562
12585
|
// src/process/js/js-sync.ts
|
|
12586
|
+
function viewOf(into, at, length) {
|
|
12587
|
+
return new capturedUint8Array(bufferOf2.call(into), offsetOf3.call(into) + at, length);
|
|
12588
|
+
}
|
|
12563
12589
|
function laneOf(lane, silence = SYNC_FS_REQUEST_TIMEOUT_MS, open = createSyncSabTransport) {
|
|
12564
12590
|
if (!lane) return noLane;
|
|
12565
12591
|
const transport = open(lane.sab, lane.port);
|
|
12566
|
-
return (req) => {
|
|
12567
|
-
if (!READ_ONLY.has(req.op))
|
|
12592
|
+
return (req, sink) => {
|
|
12593
|
+
if (!READ_ONLY.has(req.op))
|
|
12594
|
+
return transport.call(req, capturedNumber.POSITIVE_INFINITY, req.op, void 0, sink);
|
|
12568
12595
|
try {
|
|
12569
|
-
return transport.call(req, silence, req.op);
|
|
12596
|
+
return transport.call(req, silence, req.op, void 0, sink);
|
|
12570
12597
|
} catch (err) {
|
|
12571
12598
|
const errno2 = err?.code;
|
|
12572
12599
|
return {
|
|
@@ -12732,10 +12759,17 @@ function syncFile(kernel, fd, path, append, forget) {
|
|
|
12732
12759
|
live();
|
|
12733
12760
|
const max = capturedMath.min(length - got, MAX_PREAD);
|
|
12734
12761
|
if (max <= 0) break;
|
|
12735
|
-
const
|
|
12762
|
+
const req = { op: "fd-pread", fd, offset: position + got, max };
|
|
12763
|
+
if (target) {
|
|
12764
|
+
const at = target.at + got;
|
|
12765
|
+
const n = kernel.bytesInto(req, viewOf(target.into, at, max));
|
|
12766
|
+
if (n === 0) break;
|
|
12767
|
+
got += n;
|
|
12768
|
+
continue;
|
|
12769
|
+
}
|
|
12770
|
+
const chunk = kernel.bytes(req);
|
|
12736
12771
|
if (chunk.length === 0) break;
|
|
12737
|
-
|
|
12738
|
-
else parts.push(chunk);
|
|
12772
|
+
parts.push(chunk);
|
|
12739
12773
|
got += chunk.length;
|
|
12740
12774
|
} while (got < length);
|
|
12741
12775
|
return target ? got : joined(parts, got);
|
|
@@ -12864,7 +12898,7 @@ function syncPathOps(kernel, resolve2, statOf, open, clean) {
|
|
|
12864
12898
|
}
|
|
12865
12899
|
};
|
|
12866
12900
|
}
|
|
12867
|
-
var encoder4, noLane, READ_ONLY, JsSyncKernel;
|
|
12901
|
+
var encoder4, typed2, getter2, bufferOf2, offsetOf3, setInto, noLane, READ_ONLY, JsSyncKernel;
|
|
12868
12902
|
var init_js_sync = __esm({
|
|
12869
12903
|
"src/process/js/js-sync.ts"() {
|
|
12870
12904
|
"use strict";
|
|
@@ -12879,6 +12913,11 @@ var init_js_sync = __esm({
|
|
|
12879
12913
|
init_js_proc();
|
|
12880
12914
|
init_js_rights();
|
|
12881
12915
|
encoder4 = new capturedTextEncoder();
|
|
12916
|
+
typed2 = capturedObject.getPrototypeOf(capturedUint8Array.prototype);
|
|
12917
|
+
getter2 = (name2) => capturedObject.getOwnPropertyDescriptor(typed2, name2)?.get;
|
|
12918
|
+
bufferOf2 = getter2("buffer");
|
|
12919
|
+
offsetOf3 = getter2("byteOffset");
|
|
12920
|
+
setInto = capturedUint8Array.prototype.set;
|
|
12882
12921
|
noLane = () => ({ ok: false, errno: "ENOSYS", message: "no sync lane" });
|
|
12883
12922
|
READ_ONLY = new capturedSet([...SYNC_FS_READ_ONLY, "fd-path-flush"]);
|
|
12884
12923
|
JsSyncKernel = class {
|
|
@@ -12891,9 +12930,9 @@ var init_js_sync = __esm({
|
|
|
12891
12930
|
this.kernel = kernel;
|
|
12892
12931
|
this.unwind = unwind;
|
|
12893
12932
|
}
|
|
12894
|
-
raw(req) {
|
|
12933
|
+
raw(req, sink) {
|
|
12895
12934
|
this.unwind();
|
|
12896
|
-
const result = this.lane(req);
|
|
12935
|
+
const result = this.lane(req, sink);
|
|
12897
12936
|
this.kernel.deliver();
|
|
12898
12937
|
this.unwind();
|
|
12899
12938
|
return result;
|
|
@@ -12911,6 +12950,15 @@ var init_js_sync = __esm({
|
|
|
12911
12950
|
const result = this.call(req);
|
|
12912
12951
|
return result.ok && result.kind === "bytes" ? result.bytes : new capturedUint8Array(0);
|
|
12913
12952
|
}
|
|
12953
|
+
bytesInto(req, sink) {
|
|
12954
|
+
const result = this.raw(req, sink);
|
|
12955
|
+
if (!result.ok) throw callError(result, req.op);
|
|
12956
|
+
if (result.kind !== "bytes") return 0;
|
|
12957
|
+
const { bytes } = result;
|
|
12958
|
+
if (bufferOf2.call(bytes) !== bufferOf2.call(sink) || offsetOf3.call(bytes) !== offsetOf3.call(sink))
|
|
12959
|
+
setInto.call(sink, bytes);
|
|
12960
|
+
return bytes.length;
|
|
12961
|
+
}
|
|
12914
12962
|
blocking(req) {
|
|
12915
12963
|
for (; ; ) {
|
|
12916
12964
|
const result = this.raw(req);
|
|
@@ -19098,7 +19146,7 @@ function fillMemory(memory, copy2) {
|
|
|
19098
19146
|
if (pages2 > 0) memory.grow(pages2);
|
|
19099
19147
|
new capturedUint8Array(memory.buffer).set(copy2);
|
|
19100
19148
|
}
|
|
19101
|
-
function
|
|
19149
|
+
function sizeOf3(main) {
|
|
19102
19150
|
return () => main.memory?.buffer.byteLength ?? 0;
|
|
19103
19151
|
}
|
|
19104
19152
|
function memoryOf(instance, imported2) {
|
|
@@ -19327,7 +19375,7 @@ async function runWasiProcess(init, port3) {
|
|
|
19327
19375
|
call: kernelCall,
|
|
19328
19376
|
say,
|
|
19329
19377
|
gate
|
|
19330
|
-
} = kernelOf(init, port3, signals,
|
|
19378
|
+
} = kernelOf(init, port3, signals, sizeOf3(main));
|
|
19331
19379
|
const id = identify(transport, init);
|
|
19332
19380
|
const stats = init.env.SLICC_WASI_STATS === "1" ? new WasiStats() : void 0;
|
|
19333
19381
|
const call3 = stats ? timedCalls(stats, kernelCall) : kernelCall;
|
|
@@ -19389,7 +19437,7 @@ async function runWasiProcess(init, port3) {
|
|
|
19389
19437
|
});
|
|
19390
19438
|
restoreExportedMemory(instance, memory, init);
|
|
19391
19439
|
main.memory = memoryOf(instance, memory);
|
|
19392
|
-
publishMemory(init.sab,
|
|
19440
|
+
publishMemory(init.sab, sizeOf3(main)());
|
|
19393
19441
|
port3.postMessage({ type: WASM_PROCESS_READY });
|
|
19394
19442
|
signals.bind(instance.exports);
|
|
19395
19443
|
if (importsSigactionHook(module2)) signals.useHook();
|
|
@@ -19814,6 +19862,17 @@ function programScript(name2, hash) {
|
|
|
19814
19862
|
}
|
|
19815
19863
|
var SOURCE_NAMES = 4096;
|
|
19816
19864
|
var sourceNames = new capturedSet();
|
|
19865
|
+
var setDelete = capturedSet.prototype.delete;
|
|
19866
|
+
var setValues = capturedSet.prototype.values;
|
|
19867
|
+
var sizeOf = capturedObject.getOwnPropertyDescriptor(capturedSet.prototype, "size")?.get;
|
|
19868
|
+
var nextOf = capturedObject.getPrototypeOf(new capturedSet().values()).next;
|
|
19869
|
+
function noteName(name2) {
|
|
19870
|
+
if (apply(setDelete, sourceNames, [name2]) !== true && apply(sizeOf, sourceNames, []) >= SOURCE_NAMES) {
|
|
19871
|
+
const oldest = apply(nextOf, apply(setValues, sourceNames, []), []);
|
|
19872
|
+
apply(setDelete, sourceNames, [oldest.value]);
|
|
19873
|
+
}
|
|
19874
|
+
apply(setAdd, sourceNames, [name2]);
|
|
19875
|
+
}
|
|
19817
19876
|
function programName(name2) {
|
|
19818
19877
|
return apply(startsWith, name2, ["data:"]) === true || apply(setHas, programNames, [name2]) === true || apply(setHas, sourceNames, [name2]) === true;
|
|
19819
19878
|
}
|
|
@@ -19825,7 +19884,7 @@ function noteSourceUrls(trace) {
|
|
|
19825
19884
|
if (typeof origin !== "string" || evalAt(origin)) continue;
|
|
19826
19885
|
const name2 = apply(nameOf, site, []);
|
|
19827
19886
|
if (typeof name2 !== "string" || apply(setHas, ownNames, [name2]) === true) continue;
|
|
19828
|
-
|
|
19887
|
+
noteName(name2);
|
|
19829
19888
|
}
|
|
19830
19889
|
}
|
|
19831
19890
|
function rootOrigin(origin) {
|
|
@@ -20093,8 +20152,8 @@ function refuseModules() {
|
|
|
20093
20152
|
const known = sources.get(url);
|
|
20094
20153
|
if (known !== void 0) return { format: "module", source: known, shortCircuit: true };
|
|
20095
20154
|
const payload = url.startsWith(BASE64_MODULE) ? url.slice(BASE64_MODULE.length) : "";
|
|
20096
|
-
const
|
|
20097
|
-
if (
|
|
20155
|
+
const typed3 = capturedObject.keys(context.importAttributes ?? {}).length > 0;
|
|
20156
|
+
if (typed3 || payload.length % 4 !== 0 || !PLAIN_BASE64.test(payload))
|
|
20098
20157
|
return next2(url, context);
|
|
20099
20158
|
const source = toText(fromBase64(payload, "base64"), "utf8");
|
|
20100
20159
|
return { format: "module", source, shortCircuit: true };
|