@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/README.md
CHANGED
|
@@ -219,12 +219,15 @@ Options:
|
|
|
219
219
|
Indexed `.beast2` collection inputs (Array/Set/Dict) open **lazily**, whatever
|
|
220
220
|
they weigh: size, iteration and keyed reads are served from the blob's segment
|
|
221
221
|
index with O(segment) decoded memory, and any other operation transparently
|
|
222
|
-
decodes the whole value once.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
222
|
+
decodes the whole value once. A loop holds only the segment it walks. Keyed
|
|
223
|
+
reads keep the segments they decode, up to 256 MiB of decoded weight per input
|
|
224
|
+
(`EAST_PAGED_CACHE_BYTES`; `1` keeps one segment), and reads in key order keep
|
|
225
|
+
about two. `--decode whole` decodes every input before the program runs
|
|
226
|
+
instead, which suits a program that reads at random across more than that, or
|
|
227
|
+
loops over an input more than once: lazily, a read beyond the segments the
|
|
228
|
+
pager keeps decodes its segment again. `exec` reads the same choice from its
|
|
229
|
+
unit's `decode`, and east-c and east-py take it alike. Semantics are identical
|
|
230
|
+
either way: it is a memory and time choice, not a behavior toggle.
|
|
228
231
|
|
|
229
232
|
```bash
|
|
230
233
|
east-node run ./lookup.beast2 -p @elaraai/east-node-std -i table.beast2 --decode whole
|
package/dist/cli.js
CHANGED
|
@@ -9,7 +9,7 @@ import { createRequire } from 'module';
|
|
|
9
9
|
import { EastError } from '@elaraai/east/internal';
|
|
10
10
|
import { loadPlatforms, loadPlatformWithMetadata } from './loader.js';
|
|
11
11
|
import { printResult, runProgram, UsageError } from './runner.js';
|
|
12
|
-
import {
|
|
12
|
+
import { execUnit, readUnit } from './exec.js';
|
|
13
13
|
import { encodeRebuilt, isDirectory, transpile, transpileDir } from './transpile.js';
|
|
14
14
|
import { exportFunctionsFromModule } from './export-functions.js';
|
|
15
15
|
import { serve as serveLsp } from './lsp.js';
|
|
@@ -154,9 +154,9 @@ async function cmdExec(unitPath, options) {
|
|
|
154
154
|
startLifeline(options);
|
|
155
155
|
let result;
|
|
156
156
|
try {
|
|
157
|
-
const
|
|
158
|
-
result = await
|
|
159
|
-
writeFileSync(
|
|
157
|
+
const unit = readUnit(unitPath);
|
|
158
|
+
result = await execUnit(unit, options.verbose ?? false);
|
|
159
|
+
writeFileSync(unit.result, encodeBeast2For(UnitResultType)(result));
|
|
160
160
|
}
|
|
161
161
|
catch (err) {
|
|
162
162
|
return fail(`Error: exec ${unitPath}: ${err.message ?? String(err)}`, 2);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/exec.d.ts
CHANGED
|
@@ -3,28 +3,21 @@
|
|
|
3
3
|
* Dual-licensed under AGPL-3.0 and commercial license. See LICENSE for details.
|
|
4
4
|
*/
|
|
5
5
|
import { type Unit, type UnitResult } from '@elaraai/east';
|
|
6
|
-
/** Resolves a path a unit names. */
|
|
7
|
-
type Resolve = (path: string) => string;
|
|
8
|
-
/** A unit read from its file, and how to find what it names. */
|
|
9
|
-
export interface ReadUnit {
|
|
10
|
-
/** The unit, as its file holds it. */
|
|
11
|
-
unit: Unit;
|
|
12
|
-
/** Resolves a path the unit names: a relative one against the unit file's
|
|
13
|
-
* directory, so a unit and the files it names move together. */
|
|
14
|
-
at: Resolve;
|
|
15
|
-
}
|
|
16
6
|
/**
|
|
17
|
-
* Reads a unit file
|
|
7
|
+
* Reads a unit file, naming every file the unit names by the path it is at: a
|
|
8
|
+
* relative one resolved against the unit file's directory, so a unit and the
|
|
9
|
+
* files it names move together.
|
|
18
10
|
*
|
|
19
11
|
* @param unitPath - the unit file
|
|
20
|
-
* @returns the unit,
|
|
12
|
+
* @returns the unit, its paths resolved
|
|
21
13
|
* @throws {Error} When the file cannot be read or does not hold a unit.
|
|
22
14
|
*/
|
|
23
|
-
export declare function readUnit(unitPath: string):
|
|
15
|
+
export declare function readUnit(unitPath: string): Unit;
|
|
24
16
|
/**
|
|
25
|
-
* Executes a unit: does its work, writes its output,
|
|
17
|
+
* Executes a unit over this machine's files: does its work, writes its output,
|
|
18
|
+
* and reports how it went.
|
|
26
19
|
*
|
|
27
|
-
* @param
|
|
20
|
+
* @param unit - the unit, its paths resolved ({@link readUnit})
|
|
28
21
|
* @param verbose - print, on stderr, the account of each input `run -v`
|
|
29
22
|
* prints — its file and what it weighs, whether it opened lazily or was
|
|
30
23
|
* decoded whole, and what reading it came to — which is what reaches a
|
|
@@ -34,9 +27,11 @@ export declare function readUnit(unitPath: string): ReadUnit;
|
|
|
34
27
|
* @remarks
|
|
35
28
|
* The unit's thread grant caps the frame pool for the rest of the process: a
|
|
36
29
|
* grant of one frames every output inline. A unit whose host places its
|
|
37
|
-
* segments as they are read (`fetch`)
|
|
38
|
-
*
|
|
30
|
+
* segments as they are read (`fetch`) turns on {@link FETCH_SEGMENTS_ENV} for
|
|
31
|
+
* the process, and has a segment of a staged manifest that is absent asked for
|
|
32
|
+
* as it is first read. A lazy input's pager keeps the segments keyed and index
|
|
33
|
+
* reads decode, up to `EAST_PAGED_CACHE_BYTES` of decoded weight
|
|
34
|
+
* ({@link pagedCacheBytes}).
|
|
39
35
|
*/
|
|
40
|
-
export declare function
|
|
41
|
-
export {};
|
|
36
|
+
export declare function execUnit(unit: Unit, verbose?: boolean): Promise<UnitResult>;
|
|
42
37
|
//# sourceMappingURL=exec.d.ts.map
|
package/dist/exec.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../src/exec.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,EAA8D,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAKvH;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI/C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,UAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAW/E"}
|
package/dist/exec.js
CHANGED
|
@@ -3,50 +3,47 @@
|
|
|
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.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
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 {
|
|
28
|
-
import { dirname, isAbsolute,
|
|
29
|
-
import {
|
|
30
|
-
import {
|
|
31
|
-
import {
|
|
32
|
-
import {
|
|
33
|
-
import { formatFileSize, loadMergeFunction, openInputs, peakBytes, reportInput, 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,
|
|
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
|
|
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,
|
|
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
|
|
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
48
|
* prints — its file and what it weighs, whether it opened lazily or was
|
|
52
49
|
* decoded whole, and what reading it came to — which is what reaches a
|
|
@@ -56,311 +53,24 @@ export function readUnit(unitPath) {
|
|
|
56
53
|
* @remarks
|
|
57
54
|
* The unit's thread grant caps the frame pool for the rest of the process: a
|
|
58
55
|
* grant of one frames every output inline. A unit whose host places its
|
|
59
|
-
* segments as they are read (`fetch`)
|
|
60
|
-
*
|
|
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}).
|
|
61
61
|
*/
|
|
62
|
-
export async function
|
|
63
|
-
configureFramePool({ workers: Number(unit.threads) });
|
|
62
|
+
export async function execUnit(unit, verbose = false) {
|
|
64
63
|
if (unit.fetch)
|
|
65
64
|
process.env[FETCH_SEGMENTS_ENV] = '1';
|
|
66
65
|
else
|
|
67
66
|
delete process.env[FETCH_SEGMENTS_ENV];
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
try {
|
|
77
|
-
const platformFns = await loadPlatforms(unit.platforms);
|
|
78
|
-
if (unit.work.type === 'run') {
|
|
79
|
-
await runWork(unit.work.value, platformFns, at, lap, verbose);
|
|
80
|
-
}
|
|
81
|
-
else if (unit.work.type === 'merge') {
|
|
82
|
-
mergeWork(unit.work.value, platformFns, at, lap);
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
intakeWork(unit.work.value, at, lap);
|
|
86
|
-
}
|
|
87
|
-
outcome = variant('ok', null);
|
|
88
|
-
}
|
|
89
|
-
catch (err) {
|
|
90
|
-
outcome = err instanceof EastError
|
|
91
|
-
? variant('failed', { message: err.eastMessage, locations: err.location })
|
|
92
|
-
: variant('failed', { message: err?.message ?? String(err), locations: [] });
|
|
93
|
-
}
|
|
94
|
-
return { outcome, peakBytes: peakBytes(), timings };
|
|
95
|
-
}
|
|
96
|
-
/** Runs a program on its inputs and writes what it produces; `verbose` gives
|
|
97
|
-
* the account of each input `run -v` gives. */
|
|
98
|
-
async function runWork(work, platformFns, at, lap, verbose) {
|
|
99
|
-
const program = loadEastIR(at(work.program));
|
|
100
|
-
const signature = program.ir.value.type.value;
|
|
101
|
-
// Every kind but a value is emitted, through the trailing parameter.
|
|
102
|
-
const emitted = work.output.type !== 'value';
|
|
103
|
-
if (emitted && signature.inputs.length === 0) {
|
|
104
|
-
throw new Error(`exec: a ${work.output.type} output is emitted: the program's trailing parameter must be emit, a function`);
|
|
105
|
-
}
|
|
106
|
-
const params = emitted ? signature.inputs.slice(0, -1) : signature.inputs;
|
|
107
|
-
if (work.inputs.length !== params.length) {
|
|
108
|
-
const printed = `(${signature.inputs.map((type) => printTypeValue(type)).join(', ')}) -> ${printTypeValue(signature.output)}`;
|
|
109
|
-
throw new Error(`Function expects ${params.length} inputs, got ${work.inputs.length}\nSignature: ${printed}`);
|
|
110
|
-
}
|
|
111
|
-
// Inputs are frozen: each collection opened lazily, or every input decoded
|
|
112
|
-
// whole, as the unit's `decode` says.
|
|
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 inputs = openInputs(paths, params, work.decode, verbose);
|
|
119
|
-
lap('load');
|
|
120
|
-
const compiled = program.compile(platformFns);
|
|
121
|
-
const output = openOutput(work.output, emitted ? signature.inputs.at(-1) : signature.output, platformFns, at);
|
|
122
|
-
lap('compile');
|
|
123
|
-
try {
|
|
124
|
-
const result = await compiled(...inputs, ...(output.emit !== undefined ? [output.emit] : []));
|
|
125
|
-
lap('execute');
|
|
126
|
-
output.finish(result);
|
|
127
|
-
lap('output');
|
|
128
|
-
}
|
|
129
|
-
finally {
|
|
130
|
-
// What reading each lazy input came to, the output's writing included
|
|
131
|
-
// — or up to the failure.
|
|
132
|
-
if (verbose)
|
|
133
|
-
inputs.forEach((input, i) => reportInputReads(i, paths[i], input));
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Opens a running program's output.
|
|
138
|
-
*
|
|
139
|
-
* @param output - the output
|
|
140
|
-
* @param type - the program's result type, for a value; its emit parameter's
|
|
141
|
-
* type otherwise
|
|
142
|
-
* @param platformFns - the platforms a fold's functions compile with
|
|
143
|
-
* @param at - resolves the paths the output names
|
|
144
|
-
* @returns the sink
|
|
145
|
-
* @throws {Error} When the emit parameter does not fit the kind, a fold's
|
|
146
|
-
* function does not fit the emitted type, or an output directory holds
|
|
147
|
-
* anything already.
|
|
148
|
-
*/
|
|
149
|
-
function openOutput(output, type, platformFns, at) {
|
|
150
|
-
if (output.type === 'value') {
|
|
151
|
-
const path = at(output.value);
|
|
152
|
-
return { finish: (result) => writeValue(path, type, result) };
|
|
153
|
-
}
|
|
154
|
-
const arity = output.type === 'dict' ? 2 : 1;
|
|
155
|
-
const emitInputs = type.type === 'Function' ? type.value.inputs : null;
|
|
156
|
-
if (emitInputs === null || emitInputs.length !== arity) {
|
|
157
|
-
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)}`);
|
|
158
|
-
}
|
|
159
|
-
const element = emitInputs[0];
|
|
160
|
-
switch (output.type) {
|
|
161
|
-
case 'array': {
|
|
162
|
-
const writer = new Beast2ManifestWriter(variant('Array', element), manifestDirectory(join(outputDirectory(at(output.value)), '0.beast2')), { parallel: true });
|
|
163
|
-
return {
|
|
164
|
-
emit: (value) => { writer.add(value); return null; },
|
|
165
|
-
finish: () => writer.finish(),
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
case 'set': {
|
|
169
|
-
const dir = outputDirectory(at(output.value));
|
|
170
|
-
const sorter = new Beast2RunSorter(variant('Set', element), (run) => manifestDirectory(join(dir, `${run}.beast2`)), { union: true, parallel: true });
|
|
171
|
-
return {
|
|
172
|
-
emit: (value) => { sorter.add(value); return null; },
|
|
173
|
-
finish: () => sorter.finish(),
|
|
174
|
-
};
|
|
175
|
-
}
|
|
176
|
-
case 'dict': {
|
|
177
|
-
const value = emitInputs[1];
|
|
178
|
-
const merge = output.value.merge.type === 'some'
|
|
179
|
-
? loadMergeFunction(at(output.value.merge.value), element, value, platformFns, 'the emit parameter')
|
|
180
|
-
: undefined;
|
|
181
|
-
const dir = outputDirectory(at(output.value.dir));
|
|
182
|
-
const sorter = new Beast2RunSorter(variant('Dict', { key: element, value }), (run) => manifestDirectory(join(dir, `${run}.beast2`)), { ...(merge !== undefined && { merge }), parallel: true });
|
|
183
|
-
return {
|
|
184
|
-
emit: (key, entry) => { sorter.add([key, entry]); return null; },
|
|
185
|
-
finish: () => sorter.finish(),
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
case 'fold': {
|
|
189
|
-
const { combine } = loadCombineFunction(at(output.value.combine), element, platformFns);
|
|
190
|
-
const path = at(output.value.path);
|
|
191
|
-
let acc = loadInput(at(output.value.zero), element);
|
|
192
|
-
return {
|
|
193
|
-
emit: (value) => { acc = combine(acc, value); return null; },
|
|
194
|
-
finish: () => writeValue(path, element, acc),
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
/** Assembles the parts of one output into one. */
|
|
200
|
-
function mergeWork(work, platformFns, at, lap) {
|
|
201
|
-
const output = work.output;
|
|
202
|
-
const parts = work.parts.map((part) => at(part));
|
|
203
|
-
switch (output.type) {
|
|
204
|
-
case 'set':
|
|
205
|
-
case 'dict': {
|
|
206
|
-
const dir = outputDirectory(at(output.type === 'set' ? output.value : output.value.dir));
|
|
207
|
-
lap('load');
|
|
208
|
-
mergeBlobs(parts, manifestDirectory(join(dir, '0.beast2')), {
|
|
209
|
-
union: output.type === 'set',
|
|
210
|
-
...(output.type === 'dict' && output.value.merge.type === 'some' && { mergePath: at(output.value.merge.value) }),
|
|
211
|
-
...(work.range.type === 'some' && { rangePath: at(work.range.value) }),
|
|
212
|
-
platformFns,
|
|
213
|
-
});
|
|
214
|
-
lap('execute');
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
case 'fold': {
|
|
218
|
-
const { combine, type } = loadCombineFunction(at(output.value.combine), null, platformFns);
|
|
219
|
-
let acc = loadInput(at(output.value.zero), type);
|
|
220
|
-
lap('compile');
|
|
221
|
-
for (const part of parts)
|
|
222
|
-
acc = combine(acc, loadInput(part, type));
|
|
223
|
-
lap('execute');
|
|
224
|
-
writeValue(at(output.value.path), type, acc);
|
|
225
|
-
lap('output');
|
|
226
|
-
return;
|
|
227
|
-
}
|
|
228
|
-
case 'array':
|
|
229
|
-
throw new Error("exec: an array's parts are concatenated, never merged: a merge unit takes set, dict or fold parts");
|
|
230
|
-
case 'value':
|
|
231
|
-
throw new Error('exec: a value has no parts: a merge unit takes set, dict or fold parts');
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
/**
|
|
235
|
-
* Takes a delivered collection in: the file read a segment at a time, through
|
|
236
|
-
* positioned reads, and written through the Writer as the manifest directory
|
|
237
|
-
* the unit names.
|
|
238
|
-
*
|
|
239
|
-
* @throws {Error} When the type file does not hold a type, the delivery cannot
|
|
240
|
-
* be read, or the intake refuses it — every refusal in the words each runner
|
|
241
|
-
* uses.
|
|
242
|
-
*/
|
|
243
|
-
function intakeWork(work, at, lap) {
|
|
244
|
-
let type;
|
|
245
|
-
try {
|
|
246
|
-
type = decodeBeast2For(EastTypeValueType)(readFileSync(at(work.type)));
|
|
247
|
-
}
|
|
248
|
-
catch {
|
|
249
|
-
throw new Error('exec: intake: its type file does not hold a type');
|
|
250
|
-
}
|
|
251
|
-
const intake = intakeBeast2For(type);
|
|
252
|
-
const fd = openSync(at(work.input), 'r');
|
|
253
|
-
try {
|
|
254
|
-
const delivery = {
|
|
255
|
-
size: fstatSync(fd).size,
|
|
256
|
-
read: (offset, length) => {
|
|
257
|
-
const out = new Uint8Array(length);
|
|
258
|
-
let done = 0;
|
|
259
|
-
while (done < length) {
|
|
260
|
-
const got = readSync(fd, out, done, length - done, offset + done);
|
|
261
|
-
if (got === 0)
|
|
262
|
-
break;
|
|
263
|
-
done += got;
|
|
264
|
-
}
|
|
265
|
-
return done === length ? out : out.subarray(0, done);
|
|
266
|
-
},
|
|
267
|
-
};
|
|
268
|
-
lap('load');
|
|
269
|
-
const segments = work.segments.type === 'some'
|
|
270
|
-
? { segments: { from: Number(work.segments.value.from), to: Number(work.segments.value.to) } }
|
|
271
|
-
: {};
|
|
272
|
-
intake(delivery, manifestDirectory(at(work.output)), { ...segments, parallel: true });
|
|
273
|
-
lap('execute');
|
|
274
|
-
}
|
|
275
|
-
finally {
|
|
276
|
-
closeSync(fd);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Loads a fold's `combine`: an IR file holding a `(T, T) -> T` East function,
|
|
281
|
-
* compiled with the unit's platforms.
|
|
282
|
-
*
|
|
283
|
-
* @param path - the IR file
|
|
284
|
-
* @param type - the emitted type, or `null` to take `T` from the function —
|
|
285
|
-
* a merge of fold partials has no program to say what was emitted
|
|
286
|
-
* @param platformFns - the unit's platforms
|
|
287
|
-
* @returns the compiled function, and `T`
|
|
288
|
-
* @throws {Error} When the IR is not a function of that shape.
|
|
289
|
-
*/
|
|
290
|
-
function loadCombineFunction(path, type, platformFns) {
|
|
291
|
-
const bundle = loadEastIR(path);
|
|
292
|
-
const fnType = bundle.ir.value.type;
|
|
293
|
-
const shape = fnType.type === 'Function' ? fnType.value : null;
|
|
294
|
-
const t = type ?? shape?.output;
|
|
295
|
-
if (shape === null || t === undefined || shape.inputs.length !== 2 ||
|
|
296
|
-
!isTypeValueEqual(shape.inputs[0], t) ||
|
|
297
|
-
!isTypeValueEqual(shape.inputs[1], t) ||
|
|
298
|
-
!isTypeValueEqual(shape.output, t)) {
|
|
299
|
-
const expected = t !== undefined ? ` (T = ${printTypeValue(t)})` : '';
|
|
300
|
-
throw new Error(`exec: combine: expected a function (T, T) -> T${expected}, got ${printTypeValue(fnType)}`);
|
|
301
|
-
}
|
|
302
|
-
return { combine: bundle.compile(platformFns), type: t };
|
|
303
|
-
}
|
|
304
|
-
/**
|
|
305
|
-
* Writes a value output: a collection as a manifest directory at `path`,
|
|
306
|
-
* anything else as one blob there.
|
|
307
|
-
*
|
|
308
|
-
* @param path - the output file
|
|
309
|
-
* @param type - the value's type
|
|
310
|
-
* @param value - the value
|
|
311
|
-
*/
|
|
312
|
-
function writeValue(path, type, value) {
|
|
313
|
-
if (type.type !== 'Array' && type.type !== 'Set' && type.type !== 'Dict') {
|
|
314
|
-
writeFileSync(path, encodeBeast2For(type)(value));
|
|
315
|
-
return;
|
|
316
|
-
}
|
|
317
|
-
// A collection goes in canonical order: a Set or Dict an East program
|
|
318
|
-
// built is sorted already, and a plain one is sorted first.
|
|
319
|
-
const key = (type.type === 'Dict' ? type.value.key : type.value);
|
|
320
|
-
const cmp = compareFor(key);
|
|
321
|
-
const elements = type.type === 'Array' ? value
|
|
322
|
-
: type.type === 'Set' ? (value instanceof SortedSet ? value : [...value].sort(cmp))
|
|
323
|
-
: value instanceof SortedMap ? value.entries() : [...value.entries()].sort((a, b) => cmp(a[0], b[0]));
|
|
324
|
-
const writer = new Beast2ManifestWriter(type, manifestDirectory(path), { parallel: true });
|
|
325
|
-
for (const element of elements)
|
|
326
|
-
writer.add(element);
|
|
327
|
-
writer.finish();
|
|
328
|
-
}
|
|
329
|
-
/**
|
|
330
|
-
* The sink a manifest directory is written through: the manifest at `path`,
|
|
331
|
-
* written last, and every object it names in `<path>.segments/` under its
|
|
332
|
-
* SHA-256 — the layout a store takes in by linking, and every runner's opener
|
|
333
|
-
* reads.
|
|
334
|
-
*
|
|
335
|
-
* @param path - the manifest's file
|
|
336
|
-
* @returns the sink
|
|
337
|
-
*/
|
|
338
|
-
function manifestDirectory(path) {
|
|
339
|
-
const segments = segmentDirFor(path);
|
|
340
|
-
let made = false;
|
|
341
|
-
return {
|
|
342
|
-
object: (hash, bytes) => {
|
|
343
|
-
if (!made) {
|
|
344
|
-
mkdirSync(segments, { recursive: true });
|
|
345
|
-
made = true;
|
|
346
|
-
}
|
|
347
|
-
writeFileSync(join(segments, `${hash}.beast2`), bytes);
|
|
348
|
-
},
|
|
349
|
-
manifest: (bytes) => writeFileSync(path, bytes),
|
|
350
|
-
};
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Creates an output directory of runs, which must hold nothing yet: every
|
|
354
|
-
* manifest in it is one of the unit's runs.
|
|
355
|
-
*
|
|
356
|
-
* @param dir - the directory
|
|
357
|
-
* @returns the directory
|
|
358
|
-
* @throws {Error} When it holds anything already.
|
|
359
|
-
*/
|
|
360
|
-
function outputDirectory(dir) {
|
|
361
|
-
mkdirSync(dir, { recursive: true });
|
|
362
|
-
if (readdirSync(dir).length > 0)
|
|
363
|
-
throw new Error(`exec: the output directory ${dir} is not empty`);
|
|
364
|
-
return dir;
|
|
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 }),
|
|
74
|
+
});
|
|
365
75
|
}
|
|
366
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"}
|