@ai-ecoverse/slicc-kernel 1.162.0 → 1.163.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 +7 -2
- package/dist/kernel-worker.js +4 -2
- package/dist/kernel-worker.js.map +2 -2
- package/dist/node-driver-worker.js +117 -0
- package/dist/node-driver-worker.js.map +4 -4
- package/dist/node-process-worker.js +232 -88
- package/dist/node-process-worker.js.map +4 -4
- package/dist/node.js +62 -17
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +5 -2
- package/dist/process-worker.js.map +2 -2
- package/dist/types/node.d.ts +5 -2
- package/dist/types/process/js/js-context.d.ts +3 -0
- package/dist/types/process/js/js-sync.d.ts +2 -1
- package/package.json +2 -2
package/dist/node.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/node.ts
|
|
2
2
|
import { createHash } from "node:crypto";
|
|
3
|
-
import { lstatSync, mkdtempSync, readdirSync, rmSync } from "node:fs";
|
|
3
|
+
import { lstatSync, mkdirSync, mkdtempSync, readdirSync, rmSync } from "node:fs";
|
|
4
4
|
import { tmpdir } from "node:os";
|
|
5
5
|
import { isAbsolute, join } from "node:path";
|
|
6
6
|
import { MessageChannel as MessageChannel2, Worker } from "node:worker_threads";
|
|
@@ -2212,7 +2212,9 @@ var KernelSocket = class _KernelSocket {
|
|
|
2212
2212
|
throw new KernelError("ECONNRESET", "read ECONNRESET");
|
|
2213
2213
|
return bytes.length > 0 ? bytes : null;
|
|
2214
2214
|
},
|
|
2215
|
-
write: (bytes) => raw2.tx.write(bytes)
|
|
2215
|
+
write: (bytes) => raw2.tx.write(bytes).catch((err) => {
|
|
2216
|
+
throw this.refused ? new KernelError("ECONNRESET", "read ECONNRESET") : err;
|
|
2217
|
+
}),
|
|
2216
2218
|
closeWrite: () => raw2.tx.closeWrite(),
|
|
2217
2219
|
close: () => {
|
|
2218
2220
|
raw2.rx.closeRead();
|
|
@@ -3675,7 +3677,7 @@ function satisfies(version, range2) {
|
|
|
3675
3677
|
}
|
|
3676
3678
|
|
|
3677
3679
|
// src/version.ts
|
|
3678
|
-
var KERNEL_VERSION = true ? "1.
|
|
3680
|
+
var KERNEL_VERSION = true ? "1.163.0" : "0.0.0-dev";
|
|
3679
3681
|
var OS_RELEASE = "6.0.0-slicc";
|
|
3680
3682
|
function procVersion() {
|
|
3681
3683
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -35247,8 +35249,35 @@ function sparesOf(options) {
|
|
|
35247
35249
|
}
|
|
35248
35250
|
return n;
|
|
35249
35251
|
}
|
|
35250
|
-
|
|
35251
|
-
|
|
35252
|
+
var INTERNALS = "--expose-internals";
|
|
35253
|
+
var internalArgv;
|
|
35254
|
+
function narrowArgv(argv, message3) {
|
|
35255
|
+
const at = message3.indexOf(": ");
|
|
35256
|
+
if (at < 0) return null;
|
|
35257
|
+
const bad = new Set(message3.slice(at + 2).split(", "));
|
|
35258
|
+
const kept = argv.filter((arg) => !bad.has(arg));
|
|
35259
|
+
return kept.length < argv.length ? kept : null;
|
|
35260
|
+
}
|
|
35261
|
+
function internalsWorker(make, argv = process.execArgv) {
|
|
35262
|
+
internalArgv ??= [...argv, INTERNALS];
|
|
35263
|
+
for (let tries = 0; internalArgv !== null && tries < 2; tries++) {
|
|
35264
|
+
try {
|
|
35265
|
+
return make(internalArgv);
|
|
35266
|
+
} catch (err) {
|
|
35267
|
+
const { code, message: message3 } = err;
|
|
35268
|
+
if (code !== "ERR_WORKER_INVALID_EXEC_ARGV" || typeof message3 !== "string") throw err;
|
|
35269
|
+
internalArgv = narrowArgv(internalArgv, message3);
|
|
35270
|
+
}
|
|
35271
|
+
}
|
|
35272
|
+
internalArgv = null;
|
|
35273
|
+
return make();
|
|
35274
|
+
}
|
|
35275
|
+
function resetInternalArgv() {
|
|
35276
|
+
internalArgv = void 0;
|
|
35277
|
+
}
|
|
35278
|
+
function processWorker(file, workerData, internals = false) {
|
|
35279
|
+
const make = (execArgv) => new Worker(file, { env: workerEnv(), ...workerData ? { workerData } : {}, execArgv });
|
|
35280
|
+
return internals ? internalsWorker(make) : make();
|
|
35252
35281
|
}
|
|
35253
35282
|
function sourceModule(source) {
|
|
35254
35283
|
const url = `slicc-module:${createHash("sha256").update(source).digest("hex")}`;
|
|
@@ -35258,9 +35287,9 @@ function sourceModule(source) {
|
|
|
35258
35287
|
function warmPoolOf(options, file, workerData, live) {
|
|
35259
35288
|
const size = sparesOf(options);
|
|
35260
35289
|
if (size === 0) return void 0;
|
|
35261
|
-
return warmPool(() => processWorker(file, workerData), live, WARM_IDLE_MS, size);
|
|
35290
|
+
return warmPool(() => processWorker(file, workerData, true), live, WARM_IDLE_MS, size);
|
|
35262
35291
|
}
|
|
35263
|
-
function nodeWorker(file, live, closed, workerData, take) {
|
|
35292
|
+
function nodeWorker(file, live, closed, workerData, take, internals = false) {
|
|
35264
35293
|
const errors = /* @__PURE__ */ new Set();
|
|
35265
35294
|
const messages = /* @__PURE__ */ new Map();
|
|
35266
35295
|
const fail3 = (message3) => {
|
|
@@ -35269,7 +35298,7 @@ function nodeWorker(file, live, closed, workerData, take) {
|
|
|
35269
35298
|
} });
|
|
35270
35299
|
}
|
|
35271
35300
|
};
|
|
35272
|
-
const worker = closed ? void 0 : take?.() ?? processWorker(file, workerData);
|
|
35301
|
+
const worker = closed ? void 0 : take?.() ?? processWorker(file, workerData, internals);
|
|
35273
35302
|
let ending = false;
|
|
35274
35303
|
if (worker) {
|
|
35275
35304
|
const kill = () => {
|
|
@@ -35355,25 +35384,38 @@ function ownCacheDir(make = privateCacheDir) {
|
|
|
35355
35384
|
}
|
|
35356
35385
|
}
|
|
35357
35386
|
var swept = false;
|
|
35358
|
-
function privateCacheDir(base = tmpdir(), alive = pidAlive) {
|
|
35387
|
+
function privateCacheDir(base = tmpdir(), alive = pidAlive, uid = process.getuid?.()) {
|
|
35388
|
+
const parent = cacheParent(base, uid);
|
|
35359
35389
|
if (!swept) {
|
|
35360
35390
|
swept = true;
|
|
35361
|
-
sweepCacheDirs(
|
|
35391
|
+
sweepCacheDirs(parent, alive, uid);
|
|
35392
|
+
}
|
|
35393
|
+
return mkdtempSync(join(parent, `${process.pid}-`));
|
|
35394
|
+
}
|
|
35395
|
+
function cacheParent(base, uid) {
|
|
35396
|
+
const parent = join(base, uid === void 0 ? "slicc-kernel-cc" : `${CACHE_PREFIX}u${uid}`);
|
|
35397
|
+
try {
|
|
35398
|
+
mkdirSync(parent, { mode: 448 });
|
|
35399
|
+
} catch (err) {
|
|
35400
|
+
if (err.code !== "EEXIST") throw err;
|
|
35401
|
+
}
|
|
35402
|
+
const st = lstatSync(parent);
|
|
35403
|
+
if (!st.isDirectory() || uid !== void 0 && (st.uid !== uid || (st.mode & 63) !== 0)) {
|
|
35404
|
+
throw new Error(`slicc-kernel: ${parent} is not a private directory of this user`);
|
|
35362
35405
|
}
|
|
35363
|
-
return
|
|
35406
|
+
return parent;
|
|
35364
35407
|
}
|
|
35365
|
-
function sweepCacheDirs(
|
|
35408
|
+
function sweepCacheDirs(parent, alive = pidAlive, uid = process.getuid?.()) {
|
|
35366
35409
|
let names2;
|
|
35367
35410
|
try {
|
|
35368
|
-
names2 = readdirSync(
|
|
35411
|
+
names2 = readdirSync(parent);
|
|
35369
35412
|
} catch {
|
|
35370
35413
|
return;
|
|
35371
35414
|
}
|
|
35372
35415
|
for (const name2 of names2) {
|
|
35373
|
-
|
|
35374
|
-
const pid = Number(name2.slice(CACHE_PREFIX.length).split("-")[0]);
|
|
35416
|
+
const pid = Number(name2.split("-")[0]);
|
|
35375
35417
|
if (!Number.isInteger(pid) || pid <= 0 || alive(pid)) continue;
|
|
35376
|
-
removeOurs(join(
|
|
35418
|
+
removeOurs(join(parent, name2), uid);
|
|
35377
35419
|
}
|
|
35378
35420
|
}
|
|
35379
35421
|
function removeOurs(path, uid) {
|
|
@@ -35434,7 +35476,7 @@ async function createNodeKernel(options = {}) {
|
|
|
35434
35476
|
fs,
|
|
35435
35477
|
moduleUrl: sourceModule,
|
|
35436
35478
|
unlinkOwner: pidOwner(process),
|
|
35437
|
-
createWorker: () => nodeWorker(file, live, terminated, workerData, warm ? () => warm.take() : void 0),
|
|
35479
|
+
createWorker: () => nodeWorker(file, live, terminated, workerData, warm ? () => warm.take() : void 0, true),
|
|
35438
35480
|
createDriverWorker: () => nodeWorker(
|
|
35439
35481
|
options.driverWorker ?? new URL("./node-driver-worker.js", import.meta.url),
|
|
35440
35482
|
live,
|
|
@@ -35577,10 +35619,13 @@ export {
|
|
|
35577
35619
|
attachKernel,
|
|
35578
35620
|
createNodeKernel,
|
|
35579
35621
|
fetchTransport,
|
|
35622
|
+
internalsWorker,
|
|
35580
35623
|
memoryRoot,
|
|
35624
|
+
narrowArgv,
|
|
35581
35625
|
nodeTransport,
|
|
35582
35626
|
ownCacheDir,
|
|
35583
35627
|
privateCacheDir,
|
|
35628
|
+
resetInternalArgv,
|
|
35584
35629
|
serveHostfsPort,
|
|
35585
35630
|
sourceModule,
|
|
35586
35631
|
sparesOf,
|