@elaraai/east-node-cli 1.0.84 → 1.0.86
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 +9 -6
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/exec.d.ts +14 -19
- package/dist/exec.d.ts.map +1 -1
- package/dist/exec.js +40 -330
- package/dist/exec.js.map +1 -1
- package/dist/exec.spec.js +263 -6
- package/dist/exec.spec.js.map +1 -1
- package/dist/loader.d.ts +81 -38
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +180 -305
- package/dist/loader.js.map +1 -1
- package/dist/loader.spec.js +42 -2
- package/dist/loader.spec.js.map +1 -1
- package/dist/merge.d.ts +5 -1
- package/dist/merge.d.ts.map +1 -1
- package/dist/merge.js +24 -241
- package/dist/merge.js.map +1 -1
- package/dist/runner.d.ts +36 -28
- package/dist/runner.d.ts.map +1 -1
- package/dist/runner.js +59 -57
- package/dist/runner.js.map +1 -1
- package/dist/runner.spec.js +29 -4
- package/dist/runner.spec.js.map +1 -1
- package/package.json +3 -3
package/dist/exec.spec.js
CHANGED
|
@@ -7,18 +7,57 @@
|
|
|
7
7
|
* through this runner, writes the corpus's bytes and comes to its outcome, as
|
|
8
8
|
* east-c's and east-py's runners must. The corpus is `east`'s
|
|
9
9
|
* (`test/runner_corpus.spec.ts`): read from `EAST_RUNNER_CORPUS` when that
|
|
10
|
-
* names one, and written afresh for this run otherwise.
|
|
10
|
+
* names one, and written afresh for this run otherwise. `exec` is the file
|
|
11
|
+
* wrapper of east's `executeUnit`, so every case also runs over the in-memory
|
|
12
|
+
* UnitIO a browser gives it, which must write the very files `exec` writes.
|
|
11
13
|
*/
|
|
12
|
-
import { describe, it, before, after } from 'node:test';
|
|
14
|
+
import { describe, it, before, after, beforeEach } from 'node:test';
|
|
13
15
|
import assert from 'node:assert/strict';
|
|
14
|
-
import { spawnSync } from 'node:child_process';
|
|
15
|
-
import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { spawn, spawnSync } from 'node:child_process';
|
|
17
|
+
import { copyFileSync, cpSync, existsSync, mkdirSync, mkdtempSync, readdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from 'node:fs';
|
|
16
18
|
import { tmpdir } from 'node:os';
|
|
17
19
|
import { dirname, join } from 'node:path';
|
|
18
20
|
import { fileURLToPath } from 'node:url';
|
|
19
|
-
import { ArrayType, Beast2ManifestWriter, BooleanType, DictType, East, IntegerType, NullType, StringType, UnitOutcomeType, UnitResultType, UnitType, decodeBeast2, decodeBeast2For, encodeBeast2For, encodeEastIR, equalFor, variant, } from '@elaraai/east';
|
|
20
|
-
import {
|
|
21
|
+
import { ArrayType, Beast2ManifestWriter, BooleanType, DictType, East, FETCH_SEGMENTS_ENV, InMemoryUnitIO, IntegerType, NullType, StringType, UnitOutcomeType, UnitResultType, UnitType, decodeBeast2, decodeBeast2For, decodeCollectionManifest, encodeBeast2For, encodeBeast2SegmentsFor, encodeEastIR, equalFor, executeUnit, printFor, variant, } from '@elaraai/east';
|
|
22
|
+
import { execUnit, readUnit } from './exec.js';
|
|
23
|
+
import { inputBytes, loadPlatform } from './loader.js';
|
|
21
24
|
const bin = fileURLToPath(new URL('../bin/east-node.mjs', import.meta.url));
|
|
25
|
+
/** An outcome as a message shows it. */
|
|
26
|
+
const printOutcome = printFor(UnitOutcomeType);
|
|
27
|
+
/** Every file under `root`, by its path relative to `root`, forward-slashed —
|
|
28
|
+
* the paths a unit names them by. */
|
|
29
|
+
function filesUnder(root) {
|
|
30
|
+
const files = [];
|
|
31
|
+
const walk = (rel) => {
|
|
32
|
+
for (const name of readdirSync(join(root, rel))) {
|
|
33
|
+
const path = rel === '' ? name : `${rel}/${name}`;
|
|
34
|
+
if (statSync(join(root, path)).isDirectory())
|
|
35
|
+
walk(path);
|
|
36
|
+
else
|
|
37
|
+
files.push([path, new Uint8Array(readFileSync(join(root, path)))]);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
walk('');
|
|
41
|
+
return files;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Asserts an in-memory UnitIO holds the tree at `root`, and nothing else: each
|
|
45
|
+
* directory's entries, and every file's bytes.
|
|
46
|
+
*/
|
|
47
|
+
function assertHoldsTree(io, root, label) {
|
|
48
|
+
const walk = (rel) => {
|
|
49
|
+
const names = readdirSync(join(root, rel)).sort();
|
|
50
|
+
assert.deepEqual(io.list(rel), names, `${label}: the entries of ${rel || '.'}`);
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
const path = rel === '' ? name : `${rel}/${name}`;
|
|
53
|
+
if (statSync(join(root, path)).isDirectory())
|
|
54
|
+
walk(path);
|
|
55
|
+
else
|
|
56
|
+
assert.deepEqual(io.read(path), new Uint8Array(readFileSync(join(root, path))), `${label}: ${path}`);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
walk('');
|
|
60
|
+
}
|
|
22
61
|
describe('exec: the runner protocol corpus', () => {
|
|
23
62
|
let corpus;
|
|
24
63
|
let generated;
|
|
@@ -70,6 +109,41 @@ describe('exec: the runner protocol corpus', () => {
|
|
|
70
109
|
assert.ok(!existsSync(join(dir, path)), `${name}: ${path} is not written`);
|
|
71
110
|
}
|
|
72
111
|
});
|
|
112
|
+
it('writes, over the in-memory UnitIO, the very files its file wrapper writes on disk, and comes to the same outcome', async () => {
|
|
113
|
+
const names = decodeBeast2For(ArrayType(StringType))(readFileSync(join(corpus, 'index.beast2')));
|
|
114
|
+
const equalOutcome = equalFor(UnitOutcomeType);
|
|
115
|
+
// The file wrapper turns the fetch variable on or off for its process,
|
|
116
|
+
// as its unit says: this one's is put back after.
|
|
117
|
+
const fetching = process.env[FETCH_SEGMENTS_ENV];
|
|
118
|
+
try {
|
|
119
|
+
for (const name of names) {
|
|
120
|
+
const expected = decodeBeast2(readFileSync(join(corpus, name, 'case.beast2'))).value;
|
|
121
|
+
// On disk: a copy of the case, executed by `exec`'s file
|
|
122
|
+
// wrapper in this process — all of `exec` but the result file
|
|
123
|
+
// it records and the exit status, which the case above holds.
|
|
124
|
+
const dir = join(scratch, 'in-memory', name);
|
|
125
|
+
cpSync(join(corpus, name), dir, { recursive: true });
|
|
126
|
+
const onDisk = await execUnit(readUnit(join(dir, 'unit.beast2')));
|
|
127
|
+
// In memory: the case's files as the corpus holds them, the
|
|
128
|
+
// platforms resolved as the file wrapper resolves them.
|
|
129
|
+
const io = new InMemoryUnitIO(filesUnder(join(corpus, name)));
|
|
130
|
+
const unit = decodeBeast2For(UnitType)(io.read('unit.beast2'));
|
|
131
|
+
const inMemory = await executeUnit(unit, io, { platforms: loadPlatform });
|
|
132
|
+
assert.ok(equalOutcome(inMemory.outcome, onDisk.outcome), `${name}: in memory ${printOutcome(inMemory.outcome)}, on disk ${printOutcome(onDisk.outcome)}`);
|
|
133
|
+
assert.ok(equalOutcome(inMemory.outcome, expected.outcome), `${name}: ${printOutcome(inMemory.outcome)}`);
|
|
134
|
+
assert.ok(onDisk.peakBytes > 0n, `${name}: the process's peak is measured`);
|
|
135
|
+
assert.equal(inMemory.peakBytes, 0n, `${name}: a host that measures no memory reports no peak`);
|
|
136
|
+
// Every directory and file, byte for byte.
|
|
137
|
+
assertHoldsTree(io, dir, name);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
if (fetching === undefined)
|
|
142
|
+
delete process.env[FETCH_SEGMENTS_ENV];
|
|
143
|
+
else
|
|
144
|
+
process.env[FETCH_SEGMENTS_ENV] = fetching;
|
|
145
|
+
}
|
|
146
|
+
});
|
|
73
147
|
});
|
|
74
148
|
describe('exec -v: the account of each input', () => {
|
|
75
149
|
// The protocol e3 runs a task through, and the only form whose stderr
|
|
@@ -134,6 +208,189 @@ describe('exec -v: the account of each input', () => {
|
|
|
134
208
|
assert.ok(!whole.includes('opened lazily'), `a whole unit opened its input lazily:\n${whole}`);
|
|
135
209
|
assert.match(whole, /input 0: decoded whole — \+[\d.]+ (B|KB|MB) resident/);
|
|
136
210
|
});
|
|
211
|
+
it('keeps what its keyed reads decode within EAST_PAGED_CACHE_BYTES of decoded weight, as east-c\'s and east-py\'s runners do', () => {
|
|
212
|
+
// Keyed reads that cycle over five segments. In the one-segment mode
|
|
213
|
+
// every read decodes its segment again; at the default budget the
|
|
214
|
+
// segments stay, but for the three the first pass, reading in key
|
|
215
|
+
// order, dropped behind it, which the second pass decodes again.
|
|
216
|
+
const DT = DictType(IntegerType, StringType);
|
|
217
|
+
const entries = Array.from({ length: 500 }, (_, i) => [BigInt(i), `row-${i}`]);
|
|
218
|
+
writeFileSync(join(dir, 'cycle.beast2'), encodeBeast2SegmentsFor(DT)(Array.from({ length: 5 }, (_, i) => new Map(entries.slice(i * 100, (i + 1) * 100)))));
|
|
219
|
+
const program = East.function([DT], IntegerType, ($, table) => {
|
|
220
|
+
const hits = $.let(0n);
|
|
221
|
+
$.for(East.Array.range(0n, 50n), ($, i) => {
|
|
222
|
+
$.if(table.has(i.remainder(5n).multiply(100n)), ($) => {
|
|
223
|
+
$.assign(hits, hits.add(1n));
|
|
224
|
+
});
|
|
225
|
+
});
|
|
226
|
+
return hits;
|
|
227
|
+
});
|
|
228
|
+
writeFileSync(join(dir, 'cycle-program.beast2'), encodeEastIR(program.toIR()));
|
|
229
|
+
writeFileSync(join(dir, 'cycle-unit.beast2'), encodeBeast2For(UnitType)({
|
|
230
|
+
work: variant('run', { program: 'cycle-program.beast2', inputs: ['cycle.beast2'], output: variant('value', 'cycle-out.beast2'), decode: variant('lazy', null) }),
|
|
231
|
+
platforms: [],
|
|
232
|
+
threads: 1n,
|
|
233
|
+
fetch: false,
|
|
234
|
+
result: 'cycle-result.beast2',
|
|
235
|
+
}));
|
|
236
|
+
const { EAST_PAGED_CACHE_BYTES: _budget, ...env } = process.env;
|
|
237
|
+
const decodes = (budget) => {
|
|
238
|
+
const run = spawnSync(process.execPath, [bin, 'exec', join(dir, 'cycle-unit.beast2'), '-v'], {
|
|
239
|
+
env: budget === undefined ? env : { ...env, EAST_PAGED_CACHE_BYTES: budget },
|
|
240
|
+
encoding: 'utf8',
|
|
241
|
+
});
|
|
242
|
+
assert.equal(run.status, 0, run.stderr);
|
|
243
|
+
assert.equal(decodeBeast2For(IntegerType)(readFileSync(join(dir, 'cycle-out.beast2'))), 50n);
|
|
244
|
+
const account = /input 0: (\d+) segment decodes of its 5 segments, 5 fences probed/.exec(run.stderr);
|
|
245
|
+
assert.ok(account !== null, `the reads' account:\n${run.stderr}`);
|
|
246
|
+
return Number(account[1]);
|
|
247
|
+
};
|
|
248
|
+
assert.equal(decodes('1'), 50, 'one segment kept: every read decodes its segment');
|
|
249
|
+
assert.equal(decodes(), 8, 'the default budget: each segment decoded once, and the three dropped behind again');
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
describe('exec: a unit whose host places segments as they are read', () => {
|
|
253
|
+
// A host whose store is elsewhere stages a manifest without its segments
|
|
254
|
+
// and places each as the runner asks for it: `<segment>.want`, answered
|
|
255
|
+
// with the file or with `<segment>.error`. Only a unit that says `fetch`
|
|
256
|
+
// asks.
|
|
257
|
+
const DT = DictType(IntegerType, StringType);
|
|
258
|
+
let dir;
|
|
259
|
+
let input;
|
|
260
|
+
let segmentDir;
|
|
261
|
+
let store;
|
|
262
|
+
let segments;
|
|
263
|
+
before(() => {
|
|
264
|
+
dir = mkdtempSync(join(tmpdir(), 'east-node-exec-fetch-'));
|
|
265
|
+
input = join(dir, 'table.beast2');
|
|
266
|
+
segmentDir = `${input}.segments`;
|
|
267
|
+
store = join(dir, 'store');
|
|
268
|
+
mkdirSync(segmentDir);
|
|
269
|
+
mkdirSync(store);
|
|
270
|
+
// Staged as e3 stages it, and every segment moved to the host's store.
|
|
271
|
+
const writer = new Beast2ManifestWriter(DT, {
|
|
272
|
+
object: (hash, bytes) => writeFileSync(join(store, `${hash}.beast2`), bytes),
|
|
273
|
+
manifest: (bytes) => writeFileSync(input, bytes),
|
|
274
|
+
});
|
|
275
|
+
for (let i = 0; i < 20_000; i++)
|
|
276
|
+
writer.add([BigInt(i), `row-${i}`]);
|
|
277
|
+
writer.finish();
|
|
278
|
+
segments = decodeCollectionManifest(new Uint8Array(readFileSync(input))).entries.map((entry) => `${entry.hash}.beast2`);
|
|
279
|
+
assert.ok(segments.length > 4, `several segments, got ${segments.length}`);
|
|
280
|
+
writeFileSync(join(dir, 'program.beast2'), encodeEastIR(East.function([DT], StringType, ($, table) => table.get(9999n)).toIR()));
|
|
281
|
+
});
|
|
282
|
+
after(() => {
|
|
283
|
+
rmSync(dir, { recursive: true, force: true });
|
|
284
|
+
});
|
|
285
|
+
beforeEach(() => {
|
|
286
|
+
// Each run starts with no segment placed, and nothing asked for.
|
|
287
|
+
for (const name of readdirSync(segmentDir))
|
|
288
|
+
rmSync(join(segmentDir, name));
|
|
289
|
+
rmSync(join(dir, 'out.beast2'), { force: true });
|
|
290
|
+
rmSync(join(dir, 'result.beast2'), { force: true });
|
|
291
|
+
});
|
|
292
|
+
/** Writes the unit: the program on the table, fetching or not, lazily or
|
|
293
|
+
* whole. */
|
|
294
|
+
function writeUnit(fetch, decode) {
|
|
295
|
+
const unitPath = join(dir, 'unit.beast2');
|
|
296
|
+
writeFileSync(unitPath, encodeBeast2For(UnitType)({
|
|
297
|
+
work: variant('run', {
|
|
298
|
+
program: 'program.beast2',
|
|
299
|
+
inputs: ['table.beast2'],
|
|
300
|
+
output: variant('value', 'out.beast2'),
|
|
301
|
+
decode: decode === 'lazy' ? variant('lazy', null) : variant('whole', null),
|
|
302
|
+
}),
|
|
303
|
+
platforms: [],
|
|
304
|
+
threads: 1n,
|
|
305
|
+
fetch,
|
|
306
|
+
result: 'result.beast2',
|
|
307
|
+
}));
|
|
308
|
+
return unitPath;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* Executes a unit while this process is its host, placing each segment it
|
|
312
|
+
* asks for from the store — or, given a refusal, answering each ask with
|
|
313
|
+
* it — within a bounded wait.
|
|
314
|
+
*
|
|
315
|
+
* @returns the exit status, stderr, and the segments asked for, in order
|
|
316
|
+
*/
|
|
317
|
+
async function execHosted(unitPath, refusal) {
|
|
318
|
+
const child = spawn(process.execPath, [bin, 'exec', unitPath], { stdio: ['ignore', 'ignore', 'pipe'] });
|
|
319
|
+
let stderr = '';
|
|
320
|
+
child.stderr.setEncoding('utf8');
|
|
321
|
+
child.stderr.on('data', (chunk) => { stderr += chunk; });
|
|
322
|
+
const closed = new Promise((resolve) => child.on('close', (code) => resolve(code)));
|
|
323
|
+
const asked = [];
|
|
324
|
+
const host = setInterval(() => {
|
|
325
|
+
for (const name of readdirSync(segmentDir)) {
|
|
326
|
+
if (!name.endsWith('.want'))
|
|
327
|
+
continue;
|
|
328
|
+
const segment = name.slice(0, -'.want'.length);
|
|
329
|
+
if (asked.includes(segment))
|
|
330
|
+
continue;
|
|
331
|
+
asked.push(segment);
|
|
332
|
+
const file = join(segmentDir, segment);
|
|
333
|
+
// Whole, or not at all: the runner reads either file the moment
|
|
334
|
+
// it is there, so each is written under a name of its own and
|
|
335
|
+
// renamed into place, as e3's host writes them.
|
|
336
|
+
if (refusal !== undefined) {
|
|
337
|
+
writeFileSync(`${file}.error.partial`, refusal);
|
|
338
|
+
renameSync(`${file}.error.partial`, `${file}.error`);
|
|
339
|
+
}
|
|
340
|
+
else {
|
|
341
|
+
copyFileSync(join(store, segment), `${file}.placing`);
|
|
342
|
+
renameSync(`${file}.placing`, file);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}, 2);
|
|
346
|
+
let timer;
|
|
347
|
+
try {
|
|
348
|
+
const status = await Promise.race([closed, new Promise((resolve) => { timer = setTimeout(() => resolve('late'), 60_000); })]);
|
|
349
|
+
assert.notEqual(status, 'late', `the runner did not finish within 60 s:\n${stderr}`);
|
|
350
|
+
return { status: status, stderr, asked };
|
|
351
|
+
}
|
|
352
|
+
finally {
|
|
353
|
+
clearInterval(host);
|
|
354
|
+
clearTimeout(timer);
|
|
355
|
+
if (child.exitCode === null && child.signalCode === null)
|
|
356
|
+
child.kill('SIGKILL');
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
/** The unit's recorded outcome. */
|
|
360
|
+
const outcome = () => decodeBeast2For(UnitResultType)(readFileSync(join(dir, 'result.beast2'))).outcome;
|
|
361
|
+
it('asks for the one segment a lazy read reads, and for every segment a whole decode reads', async () => {
|
|
362
|
+
const lazy = await execHosted(writeUnit(true, 'lazy'));
|
|
363
|
+
assert.equal(lazy.status, 0, lazy.stderr);
|
|
364
|
+
assert.equal(decodeBeast2For(StringType)(readFileSync(join(dir, 'out.beast2'))), 'row-9999');
|
|
365
|
+
assert.equal(lazy.asked.length, 1, `one segment asked for, of ${segments.length}: ${lazy.asked.join(', ')}`);
|
|
366
|
+
assert.ok(segments.includes(lazy.asked[0]), 'a segment the manifest names');
|
|
367
|
+
for (const name of readdirSync(segmentDir))
|
|
368
|
+
rmSync(join(segmentDir, name));
|
|
369
|
+
const whole = await execHosted(writeUnit(true, 'whole'));
|
|
370
|
+
assert.equal(whole.status, 0, whole.stderr);
|
|
371
|
+
assert.equal(decodeBeast2For(StringType)(readFileSync(join(dir, 'out.beast2'))), 'row-9999');
|
|
372
|
+
assert.deepEqual(whole.asked, segments, 'every segment, in the manifest\'s order');
|
|
373
|
+
});
|
|
374
|
+
it('fails in the host\'s words when the host cannot place a segment', async () => {
|
|
375
|
+
const refused = await execHosted(writeUnit(true, 'lazy'), 'the store is throttling');
|
|
376
|
+
assert.equal(refused.status, 1, refused.stderr);
|
|
377
|
+
const failed = outcome();
|
|
378
|
+
if (failed.type !== 'failed')
|
|
379
|
+
assert.fail(`the outcome is ${failed.type}`);
|
|
380
|
+
// The segment as every runner names it: `<input>.segments/<hash>.beast2`.
|
|
381
|
+
assert.equal(failed.value.message, `beast2 v5: manifest segment ${input}.segments/${refused.asked[0]} cannot be placed: the store is throttling`);
|
|
382
|
+
assert.ok(!existsSync(join(dir, 'out.beast2')), 'nothing is written');
|
|
383
|
+
});
|
|
384
|
+
it('asks for nothing for a unit that does not say fetch, and fails on the absent segment at once', async () => {
|
|
385
|
+
const unasked = await execHosted(writeUnit(false, 'lazy'));
|
|
386
|
+
assert.equal(unasked.status, 1, unasked.stderr);
|
|
387
|
+
assert.deepEqual(unasked.asked, []);
|
|
388
|
+
assert.deepEqual(readdirSync(segmentDir), [], 'no segment asked for');
|
|
389
|
+
const failed = outcome();
|
|
390
|
+
if (failed.type !== 'failed')
|
|
391
|
+
assert.fail(`the outcome is ${failed.type}`);
|
|
392
|
+
assert.match(failed.value.message, /^ENOENT: no such file or directory, open '.*\.beast2'$/);
|
|
393
|
+
});
|
|
137
394
|
});
|
|
138
395
|
describe('exec: a unit given no platform', () => {
|
|
139
396
|
// A unit whose platforms are empty loads none, so a program calling one
|
package/dist/exec.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.spec.js","sourceRoot":"","sources":["../src/exec.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"exec.spec.js","sourceRoot":"","sources":["../src/exec.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/loader.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Copyright (c) 2025 Elara AI Pty Ltd
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { type AsyncEastIR, type EastIR, type EastTypeValue, type UnitIO } from '@elaraai/east';
|
|
6
6
|
import type { PlatformFunction, IR, ValueTypeOf } from '@elaraai/east/internal';
|
|
7
7
|
/**
|
|
8
8
|
* Metadata about a loaded platform package.
|
|
@@ -40,6 +40,64 @@ export declare function loadPlatformWithMetadata(packageName: string): Promise<P
|
|
|
40
40
|
* @returns Combined array of all platform functions
|
|
41
41
|
*/
|
|
42
42
|
export declare function loadPlatforms(packageNames: string[]): Promise<PlatformFunction[]>;
|
|
43
|
+
/**
|
|
44
|
+
* A staged manifest's segment file, present: asked of the host when it is
|
|
45
|
+
* absent and the host places segments as they are read (`fetch`), by creating
|
|
46
|
+
* `<file>.want` and waiting for the host to place the file or to write
|
|
47
|
+
* `<file>.error`, why it cannot — each whole, renamed into place, since this
|
|
48
|
+
* reads either the moment it is there. Without `fetch`, an absent file is
|
|
49
|
+
* returned as it is, for its read to fail as ever.
|
|
50
|
+
*
|
|
51
|
+
* @param file - the segment's file, `<input>.segments/<hash>.beast2`
|
|
52
|
+
* @param fetch - whether the unit's host places segments as they are read
|
|
53
|
+
* @returns the file
|
|
54
|
+
* @throws {Error} When the host writes why it cannot place the segment.
|
|
55
|
+
*/
|
|
56
|
+
export declare function segmentFile(file: string, fetch: boolean): string;
|
|
57
|
+
/**
|
|
58
|
+
* Whether this process's units' hosts place segments as they are read:
|
|
59
|
+
* {@link FETCH_SEGMENTS_ENV} is `1`, which `exec` sets from its unit's
|
|
60
|
+
* `fetch`, and which a host never sets for a runner.
|
|
61
|
+
*
|
|
62
|
+
* @returns whether an absent segment of a staged manifest is asked for
|
|
63
|
+
*/
|
|
64
|
+
export declare function fetchingSegments(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* The process's resident memory now, in bytes: the gauge a lazily opened
|
|
67
|
+
* input weighs a read of it whole by, and the verbose account weighs an input
|
|
68
|
+
* decoded whole by.
|
|
69
|
+
*
|
|
70
|
+
* @returns the resident set size
|
|
71
|
+
*/
|
|
72
|
+
export declare function residentBytes(): number;
|
|
73
|
+
/** The variable east-c's pager reads its cache's budget from as it opens an
|
|
74
|
+
* input, which this runner reads for its own. */
|
|
75
|
+
export declare const PAGED_CACHE_BYTES_ENV = "EAST_PAGED_CACHE_BYTES";
|
|
76
|
+
/**
|
|
77
|
+
* The decoded weight, in bytes, a lazily opened input's pager keeps of the
|
|
78
|
+
* segments its keyed and index reads decode (`v5/SPEC.md`, "The pager's
|
|
79
|
+
* cache"): {@link PAGED_CACHE_BYTES_ENV}, read as east-c's pager reads it, so a
|
|
80
|
+
* test runs all three runners in one mode — `1` keeps one segment.
|
|
81
|
+
*
|
|
82
|
+
* @returns the budget, or `undefined` — the pager's default, 256 MiB — when
|
|
83
|
+
* the variable is unset or not a whole number in decimal digits, which
|
|
84
|
+
* east-c ignores too
|
|
85
|
+
*/
|
|
86
|
+
export declare function pagedCacheBytes(): number | undefined;
|
|
87
|
+
/**
|
|
88
|
+
* The {@link UnitIO} over this machine's files, by the paths it is given — a
|
|
89
|
+
* relative one taken against the working directory, as every `fs` call takes
|
|
90
|
+
* it. `exec` hands it a unit whose paths it resolved against the unit file's
|
|
91
|
+
* directory first.
|
|
92
|
+
*
|
|
93
|
+
* @remarks
|
|
94
|
+
* A file's size and each ranged read open the file and close it after, so a
|
|
95
|
+
* lazily opened input holds no descriptor for its life, and a body that
|
|
96
|
+
* iterates every segment of a large manifest runs out of none. A missing file
|
|
97
|
+
* fails as opening it fails, and a directory is no file. A segment asked for
|
|
98
|
+
* is asked of the host through `<file>.want` ({@link segmentFile}).
|
|
99
|
+
*/
|
|
100
|
+
export declare const nodeUnitIO: UnitIO;
|
|
43
101
|
/**
|
|
44
102
|
* Loads an IR file and returns the parsed IR.
|
|
45
103
|
*
|
|
@@ -60,19 +118,19 @@ export declare function loadIR(filePath: string): ValueTypeOf<IR>;
|
|
|
60
118
|
* map). Prefer this over {@link loadIR} when the caller will compile + run
|
|
61
119
|
* the IR, so that error locations resolve end-to-end.
|
|
62
120
|
*
|
|
63
|
-
* Supports `.beast2` / `.beast` (source map read from the blob), `.json`
|
|
64
|
-
* (source map
|
|
65
|
-
*
|
|
121
|
+
* Supports `.beast2` / `.beast` (source map read from the blob), `.json` and
|
|
122
|
+
* `.east` (no source map available — field stays null): east's
|
|
123
|
+
* `loadUnitProgram` over this machine's files.
|
|
66
124
|
*/
|
|
67
125
|
export declare function loadEastIR(filePath: string): EastIR<any, any> | AsyncEastIR<any, any>;
|
|
68
126
|
/**
|
|
69
|
-
* Loads input data from a file.
|
|
70
|
-
*
|
|
71
|
-
* The type of the input must be provided to decode correctly.
|
|
127
|
+
* Loads input data from a file, decoded whole.
|
|
72
128
|
*
|
|
73
129
|
* Task inputs decode **frozen**: deeply immutable from construction, with
|
|
74
130
|
* mutating builtins throwing the uniform runtime error naming the copy-first
|
|
75
|
-
* remedy. Frozen collections compare by value under East `Is`.
|
|
131
|
+
* remedy. Frozen collections compare by value under East `Is`. A manifest is
|
|
132
|
+
* the collection it names, its segments spliced from the files beside it, each
|
|
133
|
+
* asked of the host when it places segments as they are read.
|
|
76
134
|
*
|
|
77
135
|
* @param filePath - Path to the input file
|
|
78
136
|
* @param type - The expected East type of the input
|
|
@@ -91,18 +149,18 @@ export declare function loadInput(filePath: string, type: EastTypeValue): unknow
|
|
|
91
149
|
export declare function lazyInputBytesRead(value: unknown): number | undefined;
|
|
92
150
|
/**
|
|
93
151
|
* Opens an input file as a lazy pager-backed collection value, when it can
|
|
94
|
-
* be: a beast2 v5 collection blob carrying a segment index
|
|
95
|
-
* and keyed reads are then served from the
|
|
96
|
-
* memory; any other operation hydrates
|
|
97
|
-
* exact semantics, and what that added to
|
|
98
|
-
* kept for the runner's verbose account.
|
|
99
|
-
*
|
|
100
|
-
* The file is never buffered whole: the value pages segment frames from
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
152
|
+
* be: a beast2 v5 collection blob carrying a segment index, or a manifest over
|
|
153
|
+
* its segment files. Size, iteration and keyed reads are then served from the
|
|
154
|
+
* index with O(segment) decoded memory; any other operation hydrates
|
|
155
|
+
* transparently to the eager value's exact semantics, and what that added to
|
|
156
|
+
* the process's resident memory is kept for the runner's verbose account.
|
|
157
|
+
*
|
|
158
|
+
* The file is never buffered whole: the value pages segment frames from it
|
|
159
|
+
* through positioned reads (a Set or Dict input's first keyed read probes
|
|
160
|
+
* every segment's fence once), so its residency is the page cache and the
|
|
161
|
+
* process heap holds one decoded segment at a time — the difference between an
|
|
162
|
+
* out-of-memory kill and graceful eviction for an input near the runner's
|
|
163
|
+
* memory limit.
|
|
106
164
|
*
|
|
107
165
|
* Returns `undefined` when the file cannot be served lazily (a non-beast2
|
|
108
166
|
* format, a v4 or index-less blob, a non-collection root, cross-segment
|
|
@@ -114,29 +172,14 @@ export declare function lazyInputBytesRead(value: unknown): number | undefined;
|
|
|
114
172
|
* mutated (no write through a freshly decoded element to drop) and frozen
|
|
115
173
|
* collections compare by value. Only `Ref` (an identity cell even when
|
|
116
174
|
* frozen) and function shapes fall back to the eager (frozen) decode.
|
|
117
|
-
*
|
|
175
|
+
*
|
|
176
|
+
* Its pager keeps the segments keyed and index reads decode, up to
|
|
177
|
+
* {@link pagedCacheBytes} of decoded weight.
|
|
118
178
|
*
|
|
119
179
|
* @param filePath - Path to the input file
|
|
120
180
|
* @returns The lazy collection value, or `undefined` to fall back
|
|
121
181
|
*/
|
|
122
182
|
export declare function loadInputLazy(filePath: string): unknown | undefined;
|
|
123
|
-
/** The directory a manifest-rooted input's segment files sit in, beside the
|
|
124
|
-
* file itself: `<input>.segments/<hash>.beast2`. The convention is shared
|
|
125
|
-
* with e3-core's staging and with the other runtimes. */
|
|
126
|
-
export declare function segmentDirFor(filePath: string): string;
|
|
127
|
-
/**
|
|
128
|
-
* A staged manifest's segment file, present: asked of the host when it is
|
|
129
|
-
* absent and the host places segments as they are read ({@link
|
|
130
|
-
* FETCH_SEGMENTS_ENV} is `1`), by creating `<file>.want` and waiting for the
|
|
131
|
-
* host to place the file, whole, or to write `<file>.error`, why it cannot.
|
|
132
|
-
* Without the variable, an absent file is returned as it is, for its read to
|
|
133
|
-
* fail as ever.
|
|
134
|
-
*
|
|
135
|
-
* @param file - the segment's file, `<input>.segments/<hash>.beast2`
|
|
136
|
-
* @returns the file
|
|
137
|
-
* @throws {Error} When the host writes why it cannot place the segment.
|
|
138
|
-
*/
|
|
139
|
-
export declare function segmentFile(file: string): string;
|
|
140
183
|
/**
|
|
141
184
|
* The bytes an input stands for: the collection a manifest-rooted file names
|
|
142
185
|
* — the manifest and every segment file — or any other file's own size.
|
package/dist/loader.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAMH,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,aAAa,EAClB,KAAK,MAAM,EACd,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAmBhF;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC7B,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,GAAG,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AA4ED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA0CnF;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAsB7F;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CASvF;AAgCD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAchE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED;kDACkD;AAClD,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAGpD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,UAAU,EAAE,MAqCxB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAgCxD;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAErF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAExE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAErE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAOnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|