scriptc 0.1.6 → 0.2.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 +6 -21
- package/bin/scriptc.exe +2 -0
- package/package.json +26 -6
- package/scripts/install-native.mjs +113 -0
- package/scripts/prepare-native.mjs +18 -0
- package/dist/bootstrap.d.ts +0 -2
- package/dist/bootstrap.js +0 -182
- package/dist/bootstrap.js.map +0 -1
- package/dist/legacy-c-warning.d.ts +0 -7
- package/dist/legacy-c-warning.js +0 -11
- package/dist/legacy-c-warning.js.map +0 -1
- package/dist/legacy-c-warning.test.d.ts +0 -1
- package/dist/legacy-c-warning.test.js +0 -19
- package/dist/legacy-c-warning.test.js.map +0 -1
- package/dist/main.d.ts +0 -1
- package/dist/main.js +0 -391
- package/dist/main.js.map +0 -1
- package/dist/output-options.d.ts +0 -27
- package/dist/output-options.js +0 -73
- package/dist/output-options.js.map +0 -1
- package/dist/paths.d.ts +0 -19
- package/dist/paths.js +0 -77
- package/dist/paths.js.map +0 -1
- package/dist/usage.d.ts +0 -78
- package/dist/usage.js +0 -97
- package/dist/usage.js.map +0 -1
- package/dist/wasi-runner.d.ts +0 -2
- package/dist/wasi-runner.js +0 -28
- package/dist/wasi-runner.js.map +0 -1
- package/scripts/runtime-pack-host.d.mts +0 -5
- package/scripts/runtime-pack-host.mjs +0 -12
- package/scripts/warm-cache.mjs +0 -30
package/dist/main.js
DELETED
|
@@ -1,391 +0,0 @@
|
|
|
1
|
-
import { spawn } from "node:child_process";
|
|
2
|
-
import { existsSync, readFileSync, rmSync, statSync } from "node:fs";
|
|
3
|
-
import { dirname, join, resolve } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
import { parseArgs } from "node:util";
|
|
6
|
-
import { analyze, compile, compileExternalC, compileLibrary, isExactExternalTypeSpecifier, renderDiagnostics, renderCoverage, resolveProvenanceSources, setProvenanceSources, sourceTargetPlatform, warmNativeCaches } from "@scriptc/compiler";
|
|
7
|
-
import { LEGACY_C_EXECUTABLE_WARNING, shouldWarnLegacyCExecutable } from "./legacy-c-warning.js";
|
|
8
|
-
import { resolveOutputOptions } from "./output-options.js";
|
|
9
|
-
import { selectOutputPaths } from "./paths.js";
|
|
10
|
-
import { CLI_OPTIONS, USAGE } from "./usage.js";
|
|
11
|
-
/** The version of the installed package. Read from the manifest rather than
|
|
12
|
-
* baked in by the build, so a stamped release and a source checkout answer
|
|
13
|
-
* the same way. */
|
|
14
|
-
function version() {
|
|
15
|
-
const here = dirname(fileURLToPath(import.meta.url));
|
|
16
|
-
// dist/main.js at install time, src/main.ts under tsx: the manifest is
|
|
17
|
-
// one level up from either.
|
|
18
|
-
const manifest = JSON.parse(readFileSync(join(here, "..", "package.json"), "utf8"));
|
|
19
|
-
return manifest.version ?? "unknown";
|
|
20
|
-
}
|
|
21
|
-
/* The exit discipline: NEVER process.exit() after writing output. stdout/
|
|
22
|
-
* stderr to a PIPE are async streams — process.exit() drops whatever libuv
|
|
23
|
-
* hasn't flushed yet, which truncates large diagnostic renders at the pipe
|
|
24
|
-
* buffer (observed: 64KB cut mid-code-frame). Every path sets
|
|
25
|
-
* process.exitCode and returns instead; Node exits naturally once the
|
|
26
|
-
* streams drain. */
|
|
27
|
-
class CliExit extends Error {
|
|
28
|
-
code;
|
|
29
|
-
constructor(code) {
|
|
30
|
-
super(`exit ${code}`);
|
|
31
|
-
this.code = code;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
function fail(msg) {
|
|
35
|
-
process.stderr.write(msg + "\n");
|
|
36
|
-
throw new CliExit(1);
|
|
37
|
-
}
|
|
38
|
-
/** parseArgs, with its throw turned into the CLI's own one-line error.
|
|
39
|
-
* Unparseable arguments are a USER error — an unknown flag or a missing
|
|
40
|
-
* value used to reach the top level as an uncaught ERR_PARSE_ARGS_* and
|
|
41
|
-
* print a Node stack trace over the user's terminal. */
|
|
42
|
-
function parseCli() {
|
|
43
|
-
try {
|
|
44
|
-
return parseArgs({ options: CLI_OPTIONS, allowPositionals: true, allowNegative: true });
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
// parseArgs appends a paragraph about `--` and positionals to the
|
|
48
|
-
// unknown-option message; the first sentence is the part that names
|
|
49
|
-
// what was wrong, and USAGE below already covers what was meant.
|
|
50
|
-
const raw = err instanceof Error ? err.message : String(err);
|
|
51
|
-
const msg = raw.split("\n")[0].split(". ")[0];
|
|
52
|
-
fail(`scriptc: ${msg}\n\n${USAGE}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async function main() {
|
|
56
|
-
const { values, positionals } = parseCli();
|
|
57
|
-
const externalTypeArgs = values["external-types"] ?? [];
|
|
58
|
-
if (values.version) {
|
|
59
|
-
process.stdout.write(`${version()}\n`);
|
|
60
|
-
return 0;
|
|
61
|
-
}
|
|
62
|
-
if (values.help || positionals.length === 0) {
|
|
63
|
-
process.stdout.write(USAGE);
|
|
64
|
-
return values.help ? 0 : 1;
|
|
65
|
-
}
|
|
66
|
-
const [command, inputArg] = positionals;
|
|
67
|
-
if (command === "cache") {
|
|
68
|
-
if (inputArg !== "warm")
|
|
69
|
-
fail(`unknown cache command "${inputArg ?? ""}" (supported: warm)\n\n${USAGE}`);
|
|
70
|
-
if (values.lib || values.dynamic || values.backend !== undefined || values.emit !== undefined || values.print !== undefined || values["from-c"] || values.ffi !== undefined || values.profile !== undefined || values.strip || values["windows-subsystem"] !== undefined || (values["npm-static"] ?? []).length > 0 || values["provenance-sources"] || externalTypeArgs.length > 0 || values.out !== undefined || values["emit-ir"] || !values["keep-c"]) {
|
|
71
|
-
fail(`scriptc cache warm takes only native optimization/sanitizer options and profile names\n\n${USAGE}`);
|
|
72
|
-
}
|
|
73
|
-
const optimization = values.optimization;
|
|
74
|
-
if (optimization !== undefined && optimization !== "release" && optimization !== "dev") {
|
|
75
|
-
fail(`unknown optimization "${optimization}" (supported: release, dev)\n\n${USAGE}`);
|
|
76
|
-
}
|
|
77
|
-
const profileArgs = positionals.slice(2);
|
|
78
|
-
const knownProfiles = new Set(["runtime", "tls", "dynamic"]);
|
|
79
|
-
for (const profile of profileArgs) {
|
|
80
|
-
if (!knownProfiles.has(profile)) {
|
|
81
|
-
fail(`unknown cache warm profile "${profile}" (supported: runtime, tls, dynamic)`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
let result;
|
|
85
|
-
try {
|
|
86
|
-
result = await warmNativeCaches({
|
|
87
|
-
...(optimization === undefined ? {} : { optimization }),
|
|
88
|
-
sanitize: values.sanitize,
|
|
89
|
-
...(profileArgs.length === 0
|
|
90
|
-
? {}
|
|
91
|
-
: { profiles: profileArgs }),
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
fail(`scriptc: ${error instanceof Error ? error.message : String(error)}`);
|
|
96
|
-
}
|
|
97
|
-
process.stdout.write(`${result.cacheRoot}\n`);
|
|
98
|
-
for (const profile of result.profiles) {
|
|
99
|
-
process.stdout.write(`${profile.profile}\t${Math.round(profile.elapsedMs)}ms\n`);
|
|
100
|
-
}
|
|
101
|
-
return 0;
|
|
102
|
-
}
|
|
103
|
-
if (command !== "build" && command !== "run" && command !== "coverage") {
|
|
104
|
-
fail(`unknown command "${command}"\n\n${USAGE}`);
|
|
105
|
-
}
|
|
106
|
-
if (values.lib) {
|
|
107
|
-
// LIBRARY mode: the profile names the entry module and pins the
|
|
108
|
-
// emission; the executable lane's mode flags have no meaning here
|
|
109
|
-
// (library artifacts are static-tier only, and there is no fallback
|
|
110
|
-
// concept — bare npm specifiers are static-or-refuse: the npm-static
|
|
111
|
-
// eligibility bar runs automatically, eligible packages compile into
|
|
112
|
-
// the graph, ineligible ones refuse with SC4013).
|
|
113
|
-
if (command !== "build")
|
|
114
|
-
fail(`--lib is a build mode (scriptc build --lib --profile <p.json>)\n\n${USAGE}`);
|
|
115
|
-
const profileArg = values.profile;
|
|
116
|
-
if (!profileArg)
|
|
117
|
-
fail(`scriptc build --lib needs --profile <profile.json>\n\n${USAGE}`);
|
|
118
|
-
if (inputArg) {
|
|
119
|
-
fail("scriptc build --lib takes no input positional: the profile names the entry module");
|
|
120
|
-
}
|
|
121
|
-
if (values.dynamic || values.backend !== undefined || values.emit !== undefined || values.print !== undefined || values.optimization !== undefined || values.strip || values.ffi !== undefined || values["windows-subsystem"] !== undefined || (values["npm-static"] ?? []).length > 0 || externalTypeArgs.length > 0) {
|
|
122
|
-
fail("scriptc build --lib takes no --dynamic/--backend/--emit/--print/--optimization/--strip/--windows-subsystem/--npm-static/--ffi/--external-types: the profile pins the emission and optimization, npm imports are judged automatically, outbound FFI belongs to executable builds, and external type mappings belong to coverage");
|
|
123
|
-
}
|
|
124
|
-
const profilePath = resolve(profileArg);
|
|
125
|
-
const libOutDir = values.out ? dirname(resolve(values.out)) : join(dirname(profilePath), ".scriptc");
|
|
126
|
-
const result = await compileLibrary({
|
|
127
|
-
profilePath,
|
|
128
|
-
outDir: libOutDir,
|
|
129
|
-
...(values.out ? { outPath: resolve(values.out) } : {}),
|
|
130
|
-
emitIr: values["emit-ir"],
|
|
131
|
-
sanitize: values.sanitize,
|
|
132
|
-
});
|
|
133
|
-
if (!result.ok) {
|
|
134
|
-
const color = process.stderr.isTTY ?? false;
|
|
135
|
-
process.stderr.write(renderDiagnostics(result.diagnostics, result.sourceTexts, { color }) + "\n");
|
|
136
|
-
const n = result.diagnostics.length;
|
|
137
|
-
process.stderr.write(`\n${n} error${n === 1 ? "" : "s"}.\n`);
|
|
138
|
-
return 1;
|
|
139
|
-
}
|
|
140
|
-
if (!values["keep-c"])
|
|
141
|
-
rmSync(result.cPath, { force: true });
|
|
142
|
-
process.stdout.write(`${result.archivePath}\n`);
|
|
143
|
-
// The contract sidecar rides the same invocation when the profile
|
|
144
|
-
// declares one — name it so the embedder's tooling knows where to look.
|
|
145
|
-
if (result.sidecarPath !== undefined)
|
|
146
|
-
process.stdout.write(`${result.sidecarPath}\n`);
|
|
147
|
-
return 0;
|
|
148
|
-
}
|
|
149
|
-
if (values["emit-ir"] && (command === "build" || command === "run")) {
|
|
150
|
-
process.stderr.write("scriptc: warning: --emit-ir is deprecated; use --emit=ir for IR as the primary output\n");
|
|
151
|
-
}
|
|
152
|
-
if (!inputArg)
|
|
153
|
-
fail(`missing input file\n\n${USAGE}`);
|
|
154
|
-
const input = resolve(inputArg);
|
|
155
|
-
if (command === "coverage" && values.emit !== undefined) {
|
|
156
|
-
fail(`--emit is a build/run option\n\n${USAGE}`);
|
|
157
|
-
}
|
|
158
|
-
if (command === "coverage" && values.strip) {
|
|
159
|
-
fail(`--strip is a build/run option\n\n${USAGE}`);
|
|
160
|
-
}
|
|
161
|
-
if (values.print !== undefined && values.print !== "native-link-info") {
|
|
162
|
-
fail(`unknown print kind "${values.print}" (supported: native-link-info)\n\n${USAGE}`);
|
|
163
|
-
}
|
|
164
|
-
const printNativeLinkInfo = values.print === "native-link-info";
|
|
165
|
-
if (printNativeLinkInfo && command !== "build") {
|
|
166
|
-
fail(`--print=native-link-info is a build option\n\n${USAGE}`);
|
|
167
|
-
}
|
|
168
|
-
if (printNativeLinkInfo && values.emit !== undefined && values.emit !== "obj") {
|
|
169
|
-
fail(`--print=native-link-info requires --emit=obj\n\n${USAGE}`);
|
|
170
|
-
}
|
|
171
|
-
if (externalTypeArgs.length > 0 && command !== "coverage") {
|
|
172
|
-
fail(`--external-types is a coverage-only option\n\n${USAGE}`);
|
|
173
|
-
}
|
|
174
|
-
const externalTypes = Object.create(null);
|
|
175
|
-
for (const mapping of externalTypeArgs) {
|
|
176
|
-
const equals = mapping.indexOf("=");
|
|
177
|
-
if (equals <= 0 || equals === mapping.length - 1) {
|
|
178
|
-
fail(`invalid --external-types mapping ${JSON.stringify(mapping)} (expected <specifier=file.d.ts>)`);
|
|
179
|
-
}
|
|
180
|
-
const specifier = mapping.slice(0, equals).trim();
|
|
181
|
-
const declarationArg = mapping.slice(equals + 1).trim();
|
|
182
|
-
if (!isExactExternalTypeSpecifier(specifier)) {
|
|
183
|
-
fail(`invalid --external-types specifier ${JSON.stringify(specifier)} (expected an exact bare package specifier)`);
|
|
184
|
-
}
|
|
185
|
-
if (!/\.d\.(?:ts|mts|cts)$/.test(declarationArg)) {
|
|
186
|
-
fail(`invalid --external-types declaration ${JSON.stringify(declarationArg)} (expected a .d.ts, .d.mts, or .d.cts file)`);
|
|
187
|
-
}
|
|
188
|
-
if (externalTypes[specifier] !== undefined) {
|
|
189
|
-
fail(`duplicate --external-types mapping for ${JSON.stringify(specifier)}`);
|
|
190
|
-
}
|
|
191
|
-
const declarationPath = resolve(declarationArg);
|
|
192
|
-
try {
|
|
193
|
-
if (!statSync(declarationPath).isFile())
|
|
194
|
-
throw new Error("not a file");
|
|
195
|
-
}
|
|
196
|
-
catch {
|
|
197
|
-
fail(`--external-types declaration does not name a readable file: ${declarationPath}`);
|
|
198
|
-
}
|
|
199
|
-
externalTypes[specifier] = declarationPath;
|
|
200
|
-
}
|
|
201
|
-
const ffiProfilePath = values.ffi !== undefined ? resolve(values.ffi) : undefined;
|
|
202
|
-
if (values.backend !== undefined && values.backend !== "c" && values.backend !== "llvm") {
|
|
203
|
-
fail(`unknown backend "${values.backend}" (supported: c, llvm)\n\n${USAGE}`);
|
|
204
|
-
}
|
|
205
|
-
const optimization = values.optimization;
|
|
206
|
-
if (optimization !== undefined && optimization !== "release" && optimization !== "dev") {
|
|
207
|
-
fail(`unknown optimization "${optimization}" (supported: release, dev)\n\n${USAGE}`);
|
|
208
|
-
}
|
|
209
|
-
const windowsSubsystem = values["windows-subsystem"];
|
|
210
|
-
if (windowsSubsystem !== undefined && windowsSubsystem !== "console" && windowsSubsystem !== "gui") {
|
|
211
|
-
fail(`unknown Windows subsystem "${windowsSubsystem}" (supported: console, gui)\n\n${USAGE}`);
|
|
212
|
-
}
|
|
213
|
-
if (windowsSubsystem !== undefined && command === "coverage") {
|
|
214
|
-
fail(`--windows-subsystem is only supported for executable builds\n\n${USAGE}`);
|
|
215
|
-
}
|
|
216
|
-
const output = command === "coverage"
|
|
217
|
-
? null
|
|
218
|
-
: resolveOutputOptions(command, {
|
|
219
|
-
...(values.emit === undefined && !printNativeLinkInfo
|
|
220
|
-
? {}
|
|
221
|
-
: { emit: values.emit ?? "obj" }),
|
|
222
|
-
emitIr: values["emit-ir"],
|
|
223
|
-
...(values.backend === undefined ? {} : { backend: values.backend }),
|
|
224
|
-
fromC: values["from-c"],
|
|
225
|
-
keepC: values["keep-c"],
|
|
226
|
-
sanitize: values.sanitize,
|
|
227
|
-
...(values.optimization === undefined ? {} : { optimization: values.optimization }),
|
|
228
|
-
strip: values.strip,
|
|
229
|
-
...(windowsSubsystem === undefined ? {} : { windowsSubsystem }),
|
|
230
|
-
...(values.ffi === undefined ? {} : { ffi: values.ffi }),
|
|
231
|
-
});
|
|
232
|
-
if (output !== null && !output.ok)
|
|
233
|
-
fail(`${output.message}\n\n${USAGE}`);
|
|
234
|
-
const backend = output?.ok ? output.backend : undefined;
|
|
235
|
-
// --npm-static: repeatable and comma-splittable; the literal "auto"
|
|
236
|
-
// switches to eligibility-based detection (mixing "auto" with names
|
|
237
|
-
// is rejected — the shapes answer different questions).
|
|
238
|
-
const npmStaticRaw = (values["npm-static"] ?? []).flatMap((v) => v.split(",")).map((v) => v.trim()).filter((v) => v !== "");
|
|
239
|
-
let npmStatic;
|
|
240
|
-
if (npmStaticRaw.includes("auto")) {
|
|
241
|
-
if (npmStaticRaw.length > 1)
|
|
242
|
-
fail(`--npm-static auto cannot be combined with package names\n\n${USAGE}`);
|
|
243
|
-
npmStatic = "auto";
|
|
244
|
-
}
|
|
245
|
-
else if (npmStaticRaw.length > 0) {
|
|
246
|
-
npmStatic = npmStaticRaw;
|
|
247
|
-
}
|
|
248
|
-
// --provenance-sources resolves BEFORE the program loads (tsgo needs the
|
|
249
|
-
// source "paths" at creation): attestations and source trees fetch (or
|
|
250
|
-
// ride the content-addressed cache / the offline manifest), the registry
|
|
251
|
-
// installs, and every fallback prints as a note — never a failure.
|
|
252
|
-
const provenance = values["provenance-sources"] ? await resolveProvenanceSources(input) : null;
|
|
253
|
-
if (provenance !== null) {
|
|
254
|
-
setProvenanceSources(provenance);
|
|
255
|
-
for (const pkg of provenance.packages) {
|
|
256
|
-
process.stderr.write(`provenance: ${pkg.name}@${pkg.version} ← ${pkg.repo.replace(/^git\+/, "")} @ ${pkg.commit.slice(0, 12)} (source compiles statically)\n`);
|
|
257
|
-
}
|
|
258
|
-
for (const note of provenance.notes)
|
|
259
|
-
process.stderr.write(`provenance: ${note}\n`);
|
|
260
|
-
}
|
|
261
|
-
if (command === "coverage") {
|
|
262
|
-
const { coverage, sourceTexts } = analyze(input, {
|
|
263
|
-
dynamic: values.dynamic,
|
|
264
|
-
...(npmStatic !== undefined ? { npmStatic } : {}),
|
|
265
|
-
...(ffiProfilePath !== undefined ? { ffiProfilePath } : {}),
|
|
266
|
-
...(Object.keys(externalTypes).length > 0 ? { externalTypes } : {}),
|
|
267
|
-
});
|
|
268
|
-
const color = process.stdout.isTTY ?? false;
|
|
269
|
-
process.stdout.write(renderCoverage(coverage, { color, sourceTexts }) + "\n");
|
|
270
|
-
return coverage.preflightFailed ? 1 : 0;
|
|
271
|
-
}
|
|
272
|
-
if (output === null || !output.ok)
|
|
273
|
-
throw new Error("internal output-option state");
|
|
274
|
-
if (windowsSubsystem !== undefined && sourceTargetPlatform() !== "win32") {
|
|
275
|
-
fail(`--windows-subsystem requires a Windows executable target\n\n${USAGE}`);
|
|
276
|
-
}
|
|
277
|
-
const { outDir, outPath } = selectOutputPaths(input, output.cliOutputKind, values.out);
|
|
278
|
-
// SCRIPTC_CC remains a migration escape hatch for explicit C, sanitizer,
|
|
279
|
-
// and comparison builds. The normal LLVM executable route is controlled by
|
|
280
|
-
// SCRIPTC_LINKER, which receives objects and archives only.
|
|
281
|
-
if (shouldWarnLegacyCExecutable({
|
|
282
|
-
executable: output.outputKind === "exe",
|
|
283
|
-
fromC: values["from-c"],
|
|
284
|
-
backend: values.backend,
|
|
285
|
-
sanitize: values.sanitize,
|
|
286
|
-
})) {
|
|
287
|
-
process.stderr.write(LEGACY_C_EXECUTABLE_WARNING);
|
|
288
|
-
}
|
|
289
|
-
let nativeLinkInfo;
|
|
290
|
-
const build = async () => {
|
|
291
|
-
if (values["from-c"]) {
|
|
292
|
-
if (ffiProfilePath !== undefined) {
|
|
293
|
-
fail("--ffi is a TypeScript/JavaScript compiler feature and cannot be combined with --from-c");
|
|
294
|
-
}
|
|
295
|
-
await compileExternalC({
|
|
296
|
-
cPath: input,
|
|
297
|
-
outPath,
|
|
298
|
-
sanitize: values.sanitize,
|
|
299
|
-
dynamic: values.dynamic,
|
|
300
|
-
...(optimization !== undefined ? { optimization } : {}),
|
|
301
|
-
...(values.strip ? { strip: true } : {}),
|
|
302
|
-
...(windowsSubsystem !== undefined ? { windowsSubsystem } : {}),
|
|
303
|
-
});
|
|
304
|
-
return outPath;
|
|
305
|
-
}
|
|
306
|
-
const result = await compile(input, {
|
|
307
|
-
outPath,
|
|
308
|
-
outDir,
|
|
309
|
-
outputKind: output.outputKind,
|
|
310
|
-
emitIr: output.emitIr,
|
|
311
|
-
sanitize: values.sanitize,
|
|
312
|
-
dynamic: values.dynamic,
|
|
313
|
-
...(backend !== undefined ? { backend } : {}),
|
|
314
|
-
...(optimization !== undefined ? { optimization } : {}),
|
|
315
|
-
...(values.strip ? { strip: true } : {}),
|
|
316
|
-
...(windowsSubsystem !== undefined ? { windowsSubsystem } : {}),
|
|
317
|
-
...(npmStatic !== undefined ? { npmStatic } : {}),
|
|
318
|
-
...(ffiProfilePath !== undefined ? { ffiProfilePath } : {}),
|
|
319
|
-
...(printNativeLinkInfo ? { nativeLinkInfo: true } : {}),
|
|
320
|
-
});
|
|
321
|
-
if (!result.ok) {
|
|
322
|
-
const color = process.stderr.isTTY ?? false;
|
|
323
|
-
process.stderr.write(renderDiagnostics(result.diagnostics, result.sourceTexts, { color }) + "\n");
|
|
324
|
-
const n = result.diagnostics.length;
|
|
325
|
-
process.stderr.write(`\n${n} error${n === 1 ? "" : "s"}.\n`);
|
|
326
|
-
throw new CliExit(1);
|
|
327
|
-
}
|
|
328
|
-
// The lane-change note: the ONLY case where silence would be dishonest
|
|
329
|
-
// is the default lane quietly building through C — one stderr line
|
|
330
|
-
// names the refusal. A successful LLVM build is the documented default
|
|
331
|
-
// (and the kept .ll next to the binary is the durable record), and an
|
|
332
|
-
// explicit --backend was the user's own choice — neither gets a line.
|
|
333
|
-
if (result.artifact.kind === "exe") {
|
|
334
|
-
if (result.artifact.llvmRefusal !== undefined) {
|
|
335
|
-
process.stderr.write(`scriptc: backend c (llvm refused: ${result.artifact.llvmRefusal})\n`);
|
|
336
|
-
}
|
|
337
|
-
if (!values["keep-c"])
|
|
338
|
-
rmSync(result.artifact.translationUnitPath, { force: true });
|
|
339
|
-
}
|
|
340
|
-
else if (result.artifact.kind === "obj") {
|
|
341
|
-
nativeLinkInfo = result.artifact.nativeLinkInfo;
|
|
342
|
-
}
|
|
343
|
-
return result.artifact.path;
|
|
344
|
-
};
|
|
345
|
-
const binary = await build();
|
|
346
|
-
if (command === "run") {
|
|
347
|
-
return new Promise((resolveExit) => {
|
|
348
|
-
let child;
|
|
349
|
-
if (sourceTargetPlatform() === "wasi") {
|
|
350
|
-
const builtRunner = fileURLToPath(new URL("./wasi-runner.js", import.meta.url));
|
|
351
|
-
const runner = existsSync(builtRunner)
|
|
352
|
-
? builtRunner
|
|
353
|
-
: fileURLToPath(new URL("./wasi-runner.ts", import.meta.url));
|
|
354
|
-
child = spawn(process.execPath, [...process.execArgv, "--no-warnings", runner, binary], { stdio: "inherit" });
|
|
355
|
-
}
|
|
356
|
-
else {
|
|
357
|
-
child = spawn(binary, [], { stdio: "inherit" });
|
|
358
|
-
}
|
|
359
|
-
child.on("exit", (code, signal) => {
|
|
360
|
-
if (signal) {
|
|
361
|
-
process.stderr.write(`scriptc: program killed by ${signal}\n`);
|
|
362
|
-
resolveExit(1);
|
|
363
|
-
}
|
|
364
|
-
else {
|
|
365
|
-
resolveExit(code ?? 0);
|
|
366
|
-
}
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
}
|
|
370
|
-
if (printNativeLinkInfo) {
|
|
371
|
-
if (nativeLinkInfo === undefined)
|
|
372
|
-
throw new Error("internal native-link-info state");
|
|
373
|
-
// Keep stdout pure JSON for tooling; the ordinary artifact path is in
|
|
374
|
-
// program.object inside the document.
|
|
375
|
-
process.stdout.write(`${JSON.stringify(nativeLinkInfo, null, 2)}\n`);
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
process.stdout.write(`${binary}\n`);
|
|
379
|
-
}
|
|
380
|
-
return 0;
|
|
381
|
-
}
|
|
382
|
-
try {
|
|
383
|
-
process.exitCode = await main();
|
|
384
|
-
}
|
|
385
|
-
catch (err) {
|
|
386
|
-
if (err instanceof CliExit)
|
|
387
|
-
process.exitCode = err.code;
|
|
388
|
-
else
|
|
389
|
-
throw err;
|
|
390
|
-
}
|
|
391
|
-
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|
package/dist/output-options.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { CompileOutputKind } from "@scriptc/compiler";
|
|
2
|
-
import type { CliOutputKind } from "./paths.js";
|
|
3
|
-
export interface OutputOptionValues {
|
|
4
|
-
emit?: string;
|
|
5
|
-
emitIr: boolean;
|
|
6
|
-
backend?: string;
|
|
7
|
-
fromC: boolean;
|
|
8
|
-
keepC: boolean;
|
|
9
|
-
sanitize: boolean;
|
|
10
|
-
optimization?: string;
|
|
11
|
-
strip?: boolean;
|
|
12
|
-
windowsSubsystem?: string;
|
|
13
|
-
ffi?: string;
|
|
14
|
-
}
|
|
15
|
-
export type OutputOptionResolution = {
|
|
16
|
-
ok: true;
|
|
17
|
-
outputKind: CompileOutputKind;
|
|
18
|
-
cliOutputKind: CliOutputKind;
|
|
19
|
-
backend?: "c" | "llvm";
|
|
20
|
-
emitIr: boolean;
|
|
21
|
-
deprecateEmitIr: boolean;
|
|
22
|
-
} | {
|
|
23
|
-
ok: false;
|
|
24
|
-
message: string;
|
|
25
|
-
};
|
|
26
|
-
/** Pure compatibility/validation matrix for build/run output selection. */
|
|
27
|
-
export declare function resolveOutputOptions(command: "build" | "run", values: OutputOptionValues): OutputOptionResolution;
|
package/dist/output-options.js
DELETED
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
const SOURCE_KINDS = new Set(["ir", "c", "llvm"]);
|
|
2
|
-
const NATIVE_ARTIFACT_KINDS = new Set(["asm", "obj"]);
|
|
3
|
-
/** Pure compatibility/validation matrix for build/run output selection. */
|
|
4
|
-
export function resolveOutputOptions(command, values) {
|
|
5
|
-
if (values.backend !== undefined && values.backend !== "c" && values.backend !== "llvm") {
|
|
6
|
-
return { ok: false, message: `unknown backend "${values.backend}" (supported: c, llvm)` };
|
|
7
|
-
}
|
|
8
|
-
const backend = values.backend;
|
|
9
|
-
const rawEmit = values.emit;
|
|
10
|
-
if (rawEmit !== undefined && rawEmit !== "ir" && rawEmit !== "c" && rawEmit !== "llvm" &&
|
|
11
|
-
rawEmit !== "asm" && rawEmit !== "obj" && rawEmit !== "exe") {
|
|
12
|
-
return {
|
|
13
|
-
ok: false,
|
|
14
|
-
message: `unknown emit kind "${rawEmit}" (supported: ir, c, llvm, asm, obj, exe)`,
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
const emit = (rawEmit ?? "exe");
|
|
18
|
-
if (command === "run" && emit !== "exe") {
|
|
19
|
-
return { ok: false, message: `scriptc run requires --emit=exe` };
|
|
20
|
-
}
|
|
21
|
-
if (values.emitIr && rawEmit !== undefined && emit !== "ir" && emit !== "exe") {
|
|
22
|
-
return { ok: false, message: `--emit-ir cannot be combined with --emit=${emit}; use --emit=ir` };
|
|
23
|
-
}
|
|
24
|
-
if (values.emitIr && emit === "ir") {
|
|
25
|
-
return { ok: false, message: `--emit-ir and --emit=ir select the same output; use --emit=ir` };
|
|
26
|
-
}
|
|
27
|
-
if (values.fromC && emit !== "exe") {
|
|
28
|
-
return { ok: false, message: `--from-c only supports --emit=exe` };
|
|
29
|
-
}
|
|
30
|
-
if (values.windowsSubsystem !== undefined && emit !== "exe") {
|
|
31
|
-
return { ok: false, message: `--windows-subsystem is only supported with --emit=exe` };
|
|
32
|
-
}
|
|
33
|
-
if (values.strip && emit !== "exe") {
|
|
34
|
-
return { ok: false, message: `--strip is only supported with --emit=exe` };
|
|
35
|
-
}
|
|
36
|
-
if (emit === "ir" && backend !== undefined) {
|
|
37
|
-
return { ok: false, message: `--emit=ir cannot be combined with --backend; IR is emitted before backend selection` };
|
|
38
|
-
}
|
|
39
|
-
if (emit === "c" && backend === "llvm") {
|
|
40
|
-
return { ok: false, message: `--emit=c cannot be combined with --backend=llvm` };
|
|
41
|
-
}
|
|
42
|
-
if ((emit === "llvm" || NATIVE_ARTIFACT_KINDS.has(emit)) && backend === "c") {
|
|
43
|
-
return { ok: false, message: `--emit=${emit} cannot be combined with --backend=c` };
|
|
44
|
-
}
|
|
45
|
-
if (SOURCE_KINDS.has(emit)) {
|
|
46
|
-
if (!values.keepC) {
|
|
47
|
-
return { ok: false, message: `--no-keep-c is only meaningful with --emit=exe` };
|
|
48
|
-
}
|
|
49
|
-
if (values.sanitize) {
|
|
50
|
-
return { ok: false, message: `--sanitize is only meaningful with --emit=exe` };
|
|
51
|
-
}
|
|
52
|
-
if (values.optimization !== undefined) {
|
|
53
|
-
return { ok: false, message: `--optimization is only meaningful with --emit=exe` };
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
if (NATIVE_ARTIFACT_KINDS.has(emit) && !values.keepC) {
|
|
57
|
-
return { ok: false, message: `--no-keep-c is only meaningful with --emit=exe` };
|
|
58
|
-
}
|
|
59
|
-
const outputKind = emit;
|
|
60
|
-
return {
|
|
61
|
-
ok: true,
|
|
62
|
-
outputKind,
|
|
63
|
-
cliOutputKind: emit,
|
|
64
|
-
...(emit === "c"
|
|
65
|
-
? { backend: "c" }
|
|
66
|
-
: emit === "llvm" || NATIVE_ARTIFACT_KINDS.has(emit)
|
|
67
|
-
? { backend: "llvm" }
|
|
68
|
-
: backend === undefined ? {} : { backend }),
|
|
69
|
-
emitIr: values.emitIr && emit === "exe",
|
|
70
|
-
deprecateEmitIr: values.emitIr,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=output-options.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"output-options.js","sourceRoot":"","sources":["../src/output-options.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export type CliOutputKind = "ir" | "c" | "llvm" | "asm" | "obj" | "exe";
|
|
2
|
-
export declare function defaultOutputName(stem: string, kind: CliOutputKind, platform?: string): string;
|
|
3
|
-
export interface OutputPaths {
|
|
4
|
-
outDir: string;
|
|
5
|
-
outPath: string;
|
|
6
|
-
}
|
|
7
|
-
/** One authority for explicit and default primary artifact paths. */
|
|
8
|
-
export declare function selectOutputPaths(input: string, kind: CliOutputKind, explicitOut?: string, platform?: string): OutputPaths;
|
|
9
|
-
/** Default executable filename for the build target. Explicit --out paths
|
|
10
|
-
* stay exact; only scriptc's generated default needs the Windows PE suffix. */
|
|
11
|
-
export declare function defaultExecutableName(stem: string, platform?: string): string;
|
|
12
|
-
/** Host paths exposed by `scriptc run` to a WASI Preview 1 module. Guest
|
|
13
|
-
* `/tmp` maps to the host's real platform temp directory instead of assuming
|
|
14
|
-
* the POSIX spelling exists (notably false on Windows). */
|
|
15
|
-
export declare function wasiPreopens(cwd?: string, hostTmp?: string): Record<string, string>;
|
|
16
|
-
/** Environment inherited by a WASI module. Host-absolute directory values
|
|
17
|
-
* must not claim paths outside the guest namespace: `/` is the module's
|
|
18
|
-
* capability root/home/cwd and `/tmp` is its writable temporary directory. */
|
|
19
|
-
export declare function wasiEnvironment(env?: NodeJS.ProcessEnv, cwd?: string, hostTmp?: string): Record<string, string>;
|
package/dist/paths.js
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
import { tmpdir } from "node:os";
|
|
2
|
-
import { basename, dirname, join, resolve } from "node:path";
|
|
3
|
-
import { buildTargetPlatform, sourceTargetPlatform, wasiGuestPath } from "@scriptc/compiler";
|
|
4
|
-
const POSIX_SUFFIXES = {
|
|
5
|
-
ir: ".ir.json",
|
|
6
|
-
c: ".c",
|
|
7
|
-
llvm: ".ll",
|
|
8
|
-
asm: ".s",
|
|
9
|
-
obj: ".o",
|
|
10
|
-
exe: "",
|
|
11
|
-
};
|
|
12
|
-
const WINDOWS_SUFFIXES = {
|
|
13
|
-
...POSIX_SUFFIXES,
|
|
14
|
-
asm: ".asm",
|
|
15
|
-
obj: ".obj",
|
|
16
|
-
exe: ".exe",
|
|
17
|
-
};
|
|
18
|
-
export function defaultOutputName(stem, kind, platform) {
|
|
19
|
-
const selectedPlatform = platform ?? (kind === "exe" ? sourceTargetPlatform() : process.platform);
|
|
20
|
-
if (kind === "exe" && selectedPlatform === "wasi")
|
|
21
|
-
return `${stem}.wasm`;
|
|
22
|
-
return `${stem}${(selectedPlatform === "win32" ? WINDOWS_SUFFIXES : POSIX_SUFFIXES)[kind]}`;
|
|
23
|
-
}
|
|
24
|
-
/** One authority for explicit and default primary artifact paths. */
|
|
25
|
-
export function selectOutputPaths(input, kind, explicitOut, platform) {
|
|
26
|
-
const absoluteInput = resolve(input);
|
|
27
|
-
const outDir = explicitOut === undefined
|
|
28
|
-
? join(dirname(absoluteInput), ".scriptc")
|
|
29
|
-
: dirname(resolve(explicitOut));
|
|
30
|
-
const stem = basename(absoluteInput).replace(/\.(ts|mts|cts|js|mjs|cjs|c|ll)$/, "");
|
|
31
|
-
return {
|
|
32
|
-
outDir,
|
|
33
|
-
outPath: explicitOut === undefined
|
|
34
|
-
? join(outDir, defaultOutputName(stem, kind, platform))
|
|
35
|
-
: resolve(explicitOut),
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
/** Default executable filename for the build target. Explicit --out paths
|
|
39
|
-
* stay exact; only scriptc's generated default needs the Windows PE suffix. */
|
|
40
|
-
export function defaultExecutableName(stem, platform = buildTargetPlatform()) {
|
|
41
|
-
return defaultOutputName(stem, "exe", platform);
|
|
42
|
-
}
|
|
43
|
-
/** Host paths exposed by `scriptc run` to a WASI Preview 1 module. Guest
|
|
44
|
-
* `/tmp` maps to the host's real platform temp directory instead of assuming
|
|
45
|
-
* the POSIX spelling exists (notably false on Windows). */
|
|
46
|
-
export function wasiPreopens(cwd = process.cwd(), hostTmp = tmpdir()) {
|
|
47
|
-
return { "/": cwd, "/tmp": hostTmp };
|
|
48
|
-
}
|
|
49
|
-
/** Environment inherited by a WASI module. Host-absolute directory values
|
|
50
|
-
* must not claim paths outside the guest namespace: `/` is the module's
|
|
51
|
-
* capability root/home/cwd and `/tmp` is its writable temporary directory. */
|
|
52
|
-
export function wasiEnvironment(env = process.env, cwd = process.cwd(), hostTmp = tmpdir()) {
|
|
53
|
-
const guest = Object.fromEntries(Object.entries(env).filter((entry) => entry[1] !== undefined));
|
|
54
|
-
guest["PWD"] = "/";
|
|
55
|
-
guest["HOME"] = "/";
|
|
56
|
-
guest["TMPDIR"] = "/tmp";
|
|
57
|
-
if (guest["USERPROFILE"] !== undefined)
|
|
58
|
-
guest["USERPROFILE"] = "/";
|
|
59
|
-
if (guest["TMP"] !== undefined)
|
|
60
|
-
guest["TMP"] = "/tmp";
|
|
61
|
-
if (guest["TEMP"] !== undefined)
|
|
62
|
-
guest["TEMP"] = "/tmp";
|
|
63
|
-
// These optional shell/package-manager paths retain their meaning only
|
|
64
|
-
// when they fall under a capability the runner actually exposes.
|
|
65
|
-
for (const key of ["OLDPWD", "INIT_CWD"]) {
|
|
66
|
-
const value = guest[key];
|
|
67
|
-
if (value === undefined)
|
|
68
|
-
continue;
|
|
69
|
-
const mapped = wasiGuestPath(value, cwd, hostTmp);
|
|
70
|
-
if (mapped === null)
|
|
71
|
-
delete guest[key];
|
|
72
|
-
else
|
|
73
|
-
guest[key] = mapped;
|
|
74
|
-
}
|
|
75
|
-
return guest;
|
|
76
|
-
}
|
|
77
|
-
//# sourceMappingURL=paths.js.map
|
package/dist/paths.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|