@elaraai/east-node-cli 1.0.83 → 1.0.85

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/dist/exec.js CHANGED
@@ -3,370 +3,74 @@
3
3
  * Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
4
4
  */
5
5
  /**
6
- * `east-node exec <unit.beast2>`: the runner protocol.
6
+ * `east-node exec <unit.beast2>`: the runner protocol, over this machine's
7
+ * files.
7
8
  *
8
9
  * A unit (`UnitType` in `@elaraai/east`) runs a program on its inputs, merges
9
10
  * the parts of one output that earlier units wrote, or takes a delivered
10
- * collection in, and names where its output and its result go. A program's
11
- * output is written by its kind:
12
- * - a value as one blob, or as a manifest directory when it is a collection;
13
- * - an array through the Writer;
14
- * - a set or a dict through the RunSorter, as sorted runs;
15
- * - a fold by folding every emitted value into an accumulator.
16
- *
17
- * A delivery taken in is read a segment at a time from its file, and written
18
- * through the Writer as a manifest directory (`intakeBeast2For`).
19
- *
20
- * Collections are written as manifest directories, which a store takes in by
21
- * linking their files. The result (`UnitResultType`) records the outcome — `ok`,
22
- * or the failure's message and source locations — with the process's peak
23
- * memory and where the time went. east-c and east-py implement the same
24
- * protocol, and the conformance corpus holds the three to the same output
25
- * bytes and outcomes.
11
+ * collection in, and names where its output and its result go. east's
12
+ * `executeUnit` does the work — the one TypeScript unit runner, which a browser
13
+ * runs over the files in memory — and this module is its file wrapper: it
14
+ * reads the unit file, resolves the paths the unit names against the unit
15
+ * file's directory, and hands `executeUnit` this machine's files
16
+ * (`nodeUnitIO`, which asks the host for a segment it finds absent through
17
+ * `<segment>.want`), the platform packages the unit lists, imported by name,
18
+ * and the process's memory. The CLI records the result where the unit says.
19
+ * east-c and east-py implement the same protocol, and the conformance corpus
20
+ * holds the three to the same output bytes and outcomes.
26
21
  */
27
- import { closeSync, fstatSync, mkdirSync, openSync, readdirSync, readFileSync, readSync, writeFileSync } from 'node:fs';
28
- import { dirname, isAbsolute, join, resolve } from 'node:path';
29
- import { Beast2ManifestWriter, Beast2RunSorter, EastError, EastIR, EastTypeValueType, FETCH_SEGMENTS_ENV, SortedMap, SortedSet, UnitType, compareFor, configureFramePool, decodeBeast2For, encodeBeast2For, intakeBeast2For, isTypeValueEqual, variant, } from '@elaraai/east';
30
- import { printTypeValue } from '@elaraai/east/internal';
31
- import { inputBytes, loadEastIR, loadInput, loadInputLazy, loadPlatforms, segmentDirFor } from './loader.js';
32
- import { mergeBlobs } from './merge.js';
33
- import { formatFileSize, lazyThreshold, loadMergeFunction, peakBytes, reportInput, reportInputLazy, reportInputReads } from './runner.js';
22
+ import { readFileSync } from 'node:fs';
23
+ import { dirname, isAbsolute, resolve } from 'node:path';
24
+ import { FETCH_SEGMENTS_ENV, UnitType, decodeBeast2For, executeUnit } from '@elaraai/east';
25
+ import { resolveUnitPaths } from '@elaraai/east/internal';
26
+ import { loadPlatform, nodeUnitIO, pagedCacheBytes, residentBytes } from './loader.js';
27
+ import { peakBytes, unitRunReport } from './runner.js';
34
28
  /**
35
- * Reads a unit file.
29
+ * Reads a unit file, naming every file the unit names by the path it is at: a
30
+ * relative one resolved against the unit file's directory, so a unit and the
31
+ * files it names move together.
36
32
  *
37
33
  * @param unitPath - the unit file
38
- * @returns the unit, and how to resolve the paths it names
34
+ * @returns the unit, its paths resolved
39
35
  * @throws {Error} When the file cannot be read or does not hold a unit.
40
36
  */
41
37
  export function readUnit(unitPath) {
42
38
  const unit = decodeBeast2For(UnitType)(readFileSync(unitPath));
43
39
  const base = dirname(resolve(unitPath));
44
- return { unit, at: (path) => (isAbsolute(path) ? path : resolve(base, path)) };
40
+ return resolveUnitPaths(unit, (path) => (isAbsolute(path) ? path : resolve(base, path)));
45
41
  }
46
42
  /**
47
- * Executes a unit: does its work, writes its output, and reports how it went.
43
+ * Executes a unit over this machine's files: does its work, writes its output,
44
+ * and reports how it went.
48
45
  *
49
- * @param read - the unit, and how to resolve the paths it names
46
+ * @param unit - the unit, its paths resolved ({@link readUnit})
50
47
  * @param verbose - print, on stderr, the account of each input `run -v`
51
- * prints — its file and what it weighs, whether it opened lazily, and what
52
- * reading it came to — which is what reaches a task's log
48
+ * prints — its file and what it weighs, whether it opened lazily or was
49
+ * decoded whole, and what reading it came to — which is what reaches a
50
+ * task's log
53
51
  * @returns the result — a failure is its outcome, never a throw
54
52
  *
55
53
  * @remarks
56
54
  * The unit's thread grant caps the frame pool for the rest of the process: a
57
55
  * grant of one frames every output inline. A unit whose host places its
58
- * segments as they are read (`fetch`) has the process's manifest openers ask
59
- * for a segment they find absent.
56
+ * segments as they are read (`fetch`) turns on {@link FETCH_SEGMENTS_ENV} for
57
+ * the process, and has a segment of a staged manifest that is absent asked for
58
+ * as it is first read. A lazy input's pager keeps the segments keyed and index
59
+ * reads decode, up to `EAST_PAGED_CACHE_BYTES` of decoded weight
60
+ * ({@link pagedCacheBytes}).
60
61
  */
61
- export async function executeUnit({ unit, at }, verbose = false) {
62
- configureFramePool({ workers: Number(unit.threads) });
62
+ export async function execUnit(unit, verbose = false) {
63
63
  if (unit.fetch)
64
64
  process.env[FETCH_SEGMENTS_ENV] = '1';
65
65
  else
66
66
  delete process.env[FETCH_SEGMENTS_ENV];
67
- const timings = { load: 0, compile: 0, execute: 0, output: 0 };
68
- let mark = performance.now();
69
- const lap = (phase) => {
70
- const now = performance.now();
71
- timings[phase] += now - mark;
72
- mark = now;
73
- };
74
- let outcome;
75
- try {
76
- const platformFns = await loadPlatforms(unit.platforms);
77
- if (unit.work.type === 'run') {
78
- await runWork(unit.work.value, platformFns, at, lap, verbose);
79
- }
80
- else if (unit.work.type === 'merge') {
81
- mergeWork(unit.work.value, platformFns, at, lap);
82
- }
83
- else {
84
- intakeWork(unit.work.value, at, lap);
85
- }
86
- outcome = variant('ok', null);
87
- }
88
- catch (err) {
89
- outcome = err instanceof EastError
90
- ? variant('failed', { message: err.eastMessage, locations: err.location })
91
- : variant('failed', { message: err?.message ?? String(err), locations: [] });
92
- }
93
- return { outcome, peakBytes: peakBytes(), timings };
94
- }
95
- /** Runs a program on its inputs and writes what it produces; `verbose` gives
96
- * the account of each input `run -v` gives. */
97
- async function runWork(work, platformFns, at, lap, verbose) {
98
- const program = loadEastIR(at(work.program));
99
- const signature = program.ir.value.type.value;
100
- // Every kind but a value is emitted, through the trailing parameter.
101
- const emitted = work.output.type !== 'value';
102
- if (emitted && signature.inputs.length === 0) {
103
- throw new Error(`exec: a ${work.output.type} output is emitted: the program's trailing parameter must be emit, a function`);
104
- }
105
- const params = emitted ? signature.inputs.slice(0, -1) : signature.inputs;
106
- if (work.inputs.length !== params.length) {
107
- const printed = `(${signature.inputs.map((type) => printTypeValue(type)).join(', ')}) -> ${printTypeValue(signature.output)}`;
108
- throw new Error(`Function expects ${params.length} inputs, got ${work.inputs.length}\nSignature: ${printed}`);
109
- }
110
- // Inputs are frozen. One at or above the lazy threshold opens as a paged
111
- // value, weighed by the value it holds: a manifest is a small file naming
112
- // large ones.
113
- const paths = work.inputs.map((input) => at(input));
114
- if (verbose) {
115
- console.error(`Running: ${at(work.program)} (${formatFileSize(at(work.program))})`);
116
- paths.forEach((path, i) => reportInput(i, path, params[i]));
117
- }
118
- const threshold = lazyThreshold();
119
- const inputs = paths.map((path, i) => {
120
- const lazy = threshold > 0 && inputBytes(path) >= threshold ? loadInputLazy(path) : undefined;
121
- if (lazy !== undefined && verbose)
122
- reportInputLazy(i);
123
- return lazy !== undefined ? lazy : loadInput(path, params[i]);
67
+ const cacheBytes = pagedCacheBytes();
68
+ return executeUnit(unit, nodeUnitIO, {
69
+ platforms: loadPlatform,
70
+ resident: residentBytes,
71
+ peakBytes,
72
+ ...(cacheBytes !== undefined && { cacheBytes }),
73
+ ...(verbose && { report: unitRunReport }),
124
74
  });
125
- lap('load');
126
- const compiled = program.compile(platformFns);
127
- const output = openOutput(work.output, emitted ? signature.inputs.at(-1) : signature.output, platformFns, at);
128
- lap('compile');
129
- try {
130
- const result = await compiled(...inputs, ...(output.emit !== undefined ? [output.emit] : []));
131
- lap('execute');
132
- output.finish(result);
133
- lap('output');
134
- }
135
- finally {
136
- // What reading each lazy input came to, the output's writing included
137
- // — or up to the failure.
138
- if (verbose)
139
- inputs.forEach((input, i) => reportInputReads(i, paths[i], input));
140
- }
141
- }
142
- /**
143
- * Opens a running program's output.
144
- *
145
- * @param output - the output
146
- * @param type - the program's result type, for a value; its emit parameter's
147
- * type otherwise
148
- * @param platformFns - the platforms a fold's functions compile with
149
- * @param at - resolves the paths the output names
150
- * @returns the sink
151
- * @throws {Error} When the emit parameter does not fit the kind, a fold's
152
- * function does not fit the emitted type, or an output directory holds
153
- * anything already.
154
- */
155
- function openOutput(output, type, platformFns, at) {
156
- if (output.type === 'value') {
157
- const path = at(output.value);
158
- return { finish: (result) => writeValue(path, type, result) };
159
- }
160
- const arity = output.type === 'dict' ? 2 : 1;
161
- const emitInputs = type.type === 'Function' ? type.value.inputs : null;
162
- if (emitInputs === null || emitInputs.length !== arity) {
163
- throw new Error(`exec: a ${output.type} output is emitted: the program's trailing parameter must be emit, a function of ${arity} argument${arity === 1 ? '' : 's'}, got ${printTypeValue(type)}`);
164
- }
165
- const element = emitInputs[0];
166
- switch (output.type) {
167
- case 'array': {
168
- const writer = new Beast2ManifestWriter(variant('Array', element), manifestDirectory(join(outputDirectory(at(output.value)), '0.beast2')), { parallel: true });
169
- return {
170
- emit: (value) => { writer.add(value); return null; },
171
- finish: () => writer.finish(),
172
- };
173
- }
174
- case 'set': {
175
- const dir = outputDirectory(at(output.value));
176
- const sorter = new Beast2RunSorter(variant('Set', element), (run) => manifestDirectory(join(dir, `${run}.beast2`)), { union: true, parallel: true });
177
- return {
178
- emit: (value) => { sorter.add(value); return null; },
179
- finish: () => sorter.finish(),
180
- };
181
- }
182
- case 'dict': {
183
- const value = emitInputs[1];
184
- const merge = output.value.merge.type === 'some'
185
- ? loadMergeFunction(at(output.value.merge.value), element, value, platformFns, 'the emit parameter')
186
- : undefined;
187
- const dir = outputDirectory(at(output.value.dir));
188
- const sorter = new Beast2RunSorter(variant('Dict', { key: element, value }), (run) => manifestDirectory(join(dir, `${run}.beast2`)), { ...(merge !== undefined && { merge }), parallel: true });
189
- return {
190
- emit: (key, entry) => { sorter.add([key, entry]); return null; },
191
- finish: () => sorter.finish(),
192
- };
193
- }
194
- case 'fold': {
195
- const { combine } = loadCombineFunction(at(output.value.combine), element, platformFns);
196
- const path = at(output.value.path);
197
- let acc = loadInput(at(output.value.zero), element);
198
- return {
199
- emit: (value) => { acc = combine(acc, value); return null; },
200
- finish: () => writeValue(path, element, acc),
201
- };
202
- }
203
- }
204
- }
205
- /** Assembles the parts of one output into one. */
206
- function mergeWork(work, platformFns, at, lap) {
207
- const output = work.output;
208
- const parts = work.parts.map((part) => at(part));
209
- switch (output.type) {
210
- case 'set':
211
- case 'dict': {
212
- const dir = outputDirectory(at(output.type === 'set' ? output.value : output.value.dir));
213
- lap('load');
214
- mergeBlobs(parts, manifestDirectory(join(dir, '0.beast2')), {
215
- union: output.type === 'set',
216
- ...(output.type === 'dict' && output.value.merge.type === 'some' && { mergePath: at(output.value.merge.value) }),
217
- ...(work.range.type === 'some' && { rangePath: at(work.range.value) }),
218
- platformFns,
219
- });
220
- lap('execute');
221
- return;
222
- }
223
- case 'fold': {
224
- const { combine, type } = loadCombineFunction(at(output.value.combine), null, platformFns);
225
- let acc = loadInput(at(output.value.zero), type);
226
- lap('compile');
227
- for (const part of parts)
228
- acc = combine(acc, loadInput(part, type));
229
- lap('execute');
230
- writeValue(at(output.value.path), type, acc);
231
- lap('output');
232
- return;
233
- }
234
- case 'array':
235
- throw new Error("exec: an array's parts are concatenated, never merged: a merge unit takes set, dict or fold parts");
236
- case 'value':
237
- throw new Error('exec: a value has no parts: a merge unit takes set, dict or fold parts');
238
- }
239
- }
240
- /**
241
- * Takes a delivered collection in: the file read a segment at a time, through
242
- * positioned reads, and written through the Writer as the manifest directory
243
- * the unit names.
244
- *
245
- * @throws {Error} When the type file does not hold a type, the delivery cannot
246
- * be read, or the intake refuses it — every refusal in the words each runner
247
- * uses.
248
- */
249
- function intakeWork(work, at, lap) {
250
- let type;
251
- try {
252
- type = decodeBeast2For(EastTypeValueType)(readFileSync(at(work.type)));
253
- }
254
- catch {
255
- throw new Error('exec: intake: its type file does not hold a type');
256
- }
257
- const intake = intakeBeast2For(type);
258
- const fd = openSync(at(work.input), 'r');
259
- try {
260
- const delivery = {
261
- size: fstatSync(fd).size,
262
- read: (offset, length) => {
263
- const out = new Uint8Array(length);
264
- let done = 0;
265
- while (done < length) {
266
- const got = readSync(fd, out, done, length - done, offset + done);
267
- if (got === 0)
268
- break;
269
- done += got;
270
- }
271
- return done === length ? out : out.subarray(0, done);
272
- },
273
- };
274
- lap('load');
275
- const segments = work.segments.type === 'some'
276
- ? { segments: { from: Number(work.segments.value.from), to: Number(work.segments.value.to) } }
277
- : {};
278
- intake(delivery, manifestDirectory(at(work.output)), { ...segments, parallel: true });
279
- lap('execute');
280
- }
281
- finally {
282
- closeSync(fd);
283
- }
284
- }
285
- /**
286
- * Loads a fold's `combine`: an IR file holding a `(T, T) -> T` East function,
287
- * compiled with the unit's platforms.
288
- *
289
- * @param path - the IR file
290
- * @param type - the emitted type, or `null` to take `T` from the function —
291
- * a merge of fold partials has no program to say what was emitted
292
- * @param platformFns - the unit's platforms
293
- * @returns the compiled function, and `T`
294
- * @throws {Error} When the IR is not a function of that shape.
295
- */
296
- function loadCombineFunction(path, type, platformFns) {
297
- const bundle = loadEastIR(path);
298
- const fnType = bundle.ir.value.type;
299
- const shape = fnType.type === 'Function' ? fnType.value : null;
300
- const t = type ?? shape?.output;
301
- if (shape === null || t === undefined || shape.inputs.length !== 2 ||
302
- !isTypeValueEqual(shape.inputs[0], t) ||
303
- !isTypeValueEqual(shape.inputs[1], t) ||
304
- !isTypeValueEqual(shape.output, t)) {
305
- const expected = t !== undefined ? ` (T = ${printTypeValue(t)})` : '';
306
- throw new Error(`exec: combine: expected a function (T, T) -> T${expected}, got ${printTypeValue(fnType)}`);
307
- }
308
- return { combine: bundle.compile(platformFns), type: t };
309
- }
310
- /**
311
- * Writes a value output: a collection as a manifest directory at `path`,
312
- * anything else as one blob there.
313
- *
314
- * @param path - the output file
315
- * @param type - the value's type
316
- * @param value - the value
317
- */
318
- function writeValue(path, type, value) {
319
- if (type.type !== 'Array' && type.type !== 'Set' && type.type !== 'Dict') {
320
- writeFileSync(path, encodeBeast2For(type)(value));
321
- return;
322
- }
323
- // A collection goes in canonical order: a Set or Dict an East program
324
- // built is sorted already, and a plain one is sorted first.
325
- const key = (type.type === 'Dict' ? type.value.key : type.value);
326
- const cmp = compareFor(key);
327
- const elements = type.type === 'Array' ? value
328
- : type.type === 'Set' ? (value instanceof SortedSet ? value : [...value].sort(cmp))
329
- : value instanceof SortedMap ? value.entries() : [...value.entries()].sort((a, b) => cmp(a[0], b[0]));
330
- const writer = new Beast2ManifestWriter(type, manifestDirectory(path), { parallel: true });
331
- for (const element of elements)
332
- writer.add(element);
333
- writer.finish();
334
- }
335
- /**
336
- * The sink a manifest directory is written through: the manifest at `path`,
337
- * written last, and every object it names in `<path>.segments/` under its
338
- * SHA-256 — the layout a store takes in by linking, and every runner's opener
339
- * reads.
340
- *
341
- * @param path - the manifest's file
342
- * @returns the sink
343
- */
344
- function manifestDirectory(path) {
345
- const segments = segmentDirFor(path);
346
- let made = false;
347
- return {
348
- object: (hash, bytes) => {
349
- if (!made) {
350
- mkdirSync(segments, { recursive: true });
351
- made = true;
352
- }
353
- writeFileSync(join(segments, `${hash}.beast2`), bytes);
354
- },
355
- manifest: (bytes) => writeFileSync(path, bytes),
356
- };
357
- }
358
- /**
359
- * Creates an output directory of runs, which must hold nothing yet: every
360
- * manifest in it is one of the unit's runs.
361
- *
362
- * @param dir - the directory
363
- * @returns the directory
364
- * @throws {Error} When it holds anything already.
365
- */
366
- function outputDirectory(dir) {
367
- mkdirSync(dir, { recursive: true });
368
- if (readdirSync(dir).length > 0)
369
- throw new Error(`exec: the output directory ${dir} is not empty`);
370
- return dir;
371
75
  }
372
76
  //# sourceMappingURL=exec.js.map
package/dist/exec.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAA8B,MAAM,eAAe,CAAC;AACvH,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACvF,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACrC,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,OAAO,gBAAgB,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAU,EAAE,OAAO,GAAG,KAAK;IACtD,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,GAAG,CAAC;;QACjD,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,OAAO,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE;QACjC,SAAS,EAAE,YAAY;QACvB,QAAQ,EAAE,aAAa;QACvB,SAAS;QACT,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;KAC5C,CAAC,CAAC;AACP,CAAC"}