@ai-ecoverse/slicc-kernel 1.142.2 → 1.143.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 +4 -1
- package/dist/kernel-worker.js +1 -1
- package/dist/node-driver-worker.js.map +2 -2
- package/dist/node-process-worker.js +36 -8
- package/dist/node-process-worker.js.map +3 -3
- package/dist/node.js +69 -5
- package/dist/node.js.map +3 -3
- package/dist/process-worker.js +9 -2
- package/dist/process-worker.js.map +2 -2
- package/dist/types/node.d.ts +8 -1
- package/dist/types/process/js/js-context.d.ts +7 -0
- package/package.json +3 -3
package/dist/node.js
CHANGED
|
@@ -7979,7 +7979,7 @@ function satisfies(version, range2) {
|
|
|
7979
7979
|
}
|
|
7980
7980
|
|
|
7981
7981
|
// src/version.ts
|
|
7982
|
-
var KERNEL_VERSION = true ? "1.
|
|
7982
|
+
var KERNEL_VERSION = true ? "1.143.0" : "0.0.0-dev";
|
|
7983
7983
|
var OS_RELEASE = "6.0.0-slicc";
|
|
7984
7984
|
function procVersion() {
|
|
7985
7985
|
return `Linux version ${OS_RELEASE} (slicc-kernel ${KERNEL_VERSION}) #1 SMP PREEMPT_DYNAMIC
|
|
@@ -32110,7 +32110,66 @@ function nodeTransport(options = {}) {
|
|
|
32110
32110
|
}
|
|
32111
32111
|
var TERMINATED = "the kernel is terminated";
|
|
32112
32112
|
var EXIT_GRACE_MS = 50;
|
|
32113
|
-
|
|
32113
|
+
var WARM_IDLE_MS = 3e4;
|
|
32114
|
+
function warmPool(make, live, idleMs = WARM_IDLE_MS) {
|
|
32115
|
+
let spare;
|
|
32116
|
+
let idle2;
|
|
32117
|
+
let closed = false;
|
|
32118
|
+
const drop = (worker) => {
|
|
32119
|
+
if (spare !== worker) return;
|
|
32120
|
+
spare = void 0;
|
|
32121
|
+
clearTimeout(idle2);
|
|
32122
|
+
live.delete(kill);
|
|
32123
|
+
};
|
|
32124
|
+
const kill = () => {
|
|
32125
|
+
const worker = spare;
|
|
32126
|
+
if (!worker) return;
|
|
32127
|
+
drop(worker);
|
|
32128
|
+
void worker.terminate();
|
|
32129
|
+
};
|
|
32130
|
+
const fill2 = () => {
|
|
32131
|
+
if (closed || spare) return;
|
|
32132
|
+
let worker;
|
|
32133
|
+
try {
|
|
32134
|
+
worker = make();
|
|
32135
|
+
} catch {
|
|
32136
|
+
closed = true;
|
|
32137
|
+
return;
|
|
32138
|
+
}
|
|
32139
|
+
worker.unref();
|
|
32140
|
+
worker.once("error", () => drop(worker));
|
|
32141
|
+
worker.once("exit", () => drop(worker));
|
|
32142
|
+
spare = worker;
|
|
32143
|
+
live.add(kill);
|
|
32144
|
+
idle2 = setTimeout(kill, idleMs);
|
|
32145
|
+
idle2.unref?.();
|
|
32146
|
+
};
|
|
32147
|
+
return {
|
|
32148
|
+
take() {
|
|
32149
|
+
const worker = spare;
|
|
32150
|
+
if (worker) {
|
|
32151
|
+
drop(worker);
|
|
32152
|
+
worker.removeAllListeners("error");
|
|
32153
|
+
worker.removeAllListeners("exit");
|
|
32154
|
+
worker.ref();
|
|
32155
|
+
}
|
|
32156
|
+
setImmediate(fill2);
|
|
32157
|
+
return worker ?? make();
|
|
32158
|
+
},
|
|
32159
|
+
close() {
|
|
32160
|
+
closed = true;
|
|
32161
|
+
kill();
|
|
32162
|
+
}
|
|
32163
|
+
};
|
|
32164
|
+
}
|
|
32165
|
+
function processWorker(file, workerData) {
|
|
32166
|
+
return new Worker(file, { env: workerEnv(), ...workerData ? { workerData } : {} });
|
|
32167
|
+
}
|
|
32168
|
+
function warmPoolOf(options, file, workerData, live) {
|
|
32169
|
+
if (options.warmWorker === false) return void 0;
|
|
32170
|
+
return warmPool(() => processWorker(file, workerData), live);
|
|
32171
|
+
}
|
|
32172
|
+
function nodeWorker(file, live, closed, workerData, take) {
|
|
32114
32173
|
const errors = /* @__PURE__ */ new Set();
|
|
32115
32174
|
const messages = /* @__PURE__ */ new Map();
|
|
32116
32175
|
const fail3 = (message3) => {
|
|
@@ -32119,7 +32178,7 @@ function nodeWorker(file, live, closed, workerData) {
|
|
|
32119
32178
|
} });
|
|
32120
32179
|
}
|
|
32121
32180
|
};
|
|
32122
|
-
const worker = closed ? void 0 :
|
|
32181
|
+
const worker = closed ? void 0 : take?.() ?? processWorker(file, workerData);
|
|
32123
32182
|
let ending = false;
|
|
32124
32183
|
if (worker) {
|
|
32125
32184
|
const kill = () => {
|
|
@@ -32192,11 +32251,13 @@ async function createNodeKernel(options = {}) {
|
|
|
32192
32251
|
let terminated = false;
|
|
32193
32252
|
const file = options.worker ?? new URL("./node-process-worker.js", import.meta.url);
|
|
32194
32253
|
const compileCache = cacheDirOf(options.compileCache);
|
|
32254
|
+
const workerData = compileCache ? { compileCache } : void 0;
|
|
32255
|
+
const warm = warmPoolOf(options, file, workerData, live);
|
|
32195
32256
|
const transport = options.network?.transport;
|
|
32196
32257
|
const launcher = new Launcher({
|
|
32197
32258
|
fs,
|
|
32198
32259
|
unlinkOwner: pidOwner(process),
|
|
32199
|
-
createWorker: () => nodeWorker(file, live, terminated,
|
|
32260
|
+
createWorker: () => nodeWorker(file, live, terminated, workerData, warm ? () => warm.take() : void 0),
|
|
32200
32261
|
createDriverWorker: () => nodeWorker(
|
|
32201
32262
|
options.driverWorker ?? new URL("./node-driver-worker.js", import.meta.url),
|
|
32202
32263
|
live,
|
|
@@ -32329,6 +32390,7 @@ async function createNodeKernel(options = {}) {
|
|
|
32329
32390
|
},
|
|
32330
32391
|
terminate() {
|
|
32331
32392
|
terminated = true;
|
|
32393
|
+
warm?.close();
|
|
32332
32394
|
for (const client of [...clients]) client.detach();
|
|
32333
32395
|
for (const reject of [...pending]) reject(new Error(TERMINATED));
|
|
32334
32396
|
for (const kill of [...live]) kill();
|
|
@@ -32340,11 +32402,13 @@ async function createNodeKernel(options = {}) {
|
|
|
32340
32402
|
export {
|
|
32341
32403
|
KernelCallError,
|
|
32342
32404
|
KernelGoneError,
|
|
32405
|
+
WARM_IDLE_MS,
|
|
32343
32406
|
attachKernel,
|
|
32344
32407
|
createNodeKernel,
|
|
32345
32408
|
fetchTransport,
|
|
32346
32409
|
memoryRoot,
|
|
32347
32410
|
nodeTransport,
|
|
32348
|
-
serveHostfsPort
|
|
32411
|
+
serveHostfsPort,
|
|
32412
|
+
warmPool
|
|
32349
32413
|
};
|
|
32350
32414
|
//# sourceMappingURL=node.js.map
|