xbintsc 0.3.12 → 0.3.13

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 CHANGED
@@ -274,14 +274,32 @@ the authoring helpers.
274
274
  ## Tests
275
275
 
276
276
  ```bash
277
- npm run typecheck # tsc --noEmit
278
- npm test # unit + end-to-end (runs real binaries when clang is present)
279
- npm run test:e2e # only the compile-and-run tests
277
+ npm run typecheck # tsc --noEmit
278
+ npm test # unit + end-to-end (runs real binaries when clang is present)
279
+ npm run test:e2e # only the compile-and-run tests
280
+ npm run coverage # V8 coverage of the TypeScript compiler (src/)
281
+ npm run coverage:runtime # LLVM coverage of the C runtime (runtime/) via clang
280
282
  ```
281
283
 
282
284
  Tests are organised by module under `tests/` (`lexer`, `parser`, `binder`,
283
285
  `codegen`, `driver`, `extensions`, `cli`, `e2e`).
284
286
 
287
+ V8 can only see the compiler's own sources, so `npm run coverage:runtime`
288
+ covers the C runtime with clang's source instrumentation instead: it exports
289
+ `CCC_OVERRIDE_OPTIONS` (every compile/link the driver performs gets
290
+ `-fprofile-instr-generate -fcoverage-mapping`), runs the suite, and reports
291
+ the collected profiles against `runtime/` with `llvm-cov`. Pass
292
+ `-- --report-only` to only re-report profiles from an earlier instrumented run,
293
+ or `-- --threshold 60` to fail below a coverage bar. CI runs the report with
294
+ `--threshold 70`, so a runtime-coverage regression fails the job. The instrumented objects
295
+ live in `xbintsc_CACHE_DIR`, a separate cache from `.xbintsc`, because the
296
+ object cache key does not include compiler flags: sharing one cache would
297
+ silently reuse un-instrumented objects. It also sets `xbintsc_PREFER_PREBUILT=0`
298
+ so the runtime is compiled from source rather than linked from an
299
+ un-instrumented `runtime/lib` archive. Requires `llvm-profdata`/`llvm-cov`
300
+ matching the resolved clang (the bundled toolchains provide them); the script
301
+ skips with a warning when they are missing.
302
+
285
303
  ## Requirements
286
304
 
287
305
  See [Requirements](./doc/requirements.md) for the full, per-platform list. If you
package/README.zh-CN.md CHANGED
@@ -261,14 +261,29 @@ xbintsc run examples/extensions/cpp/demo.ts \
261
261
  ## 测试
262
262
 
263
263
  ```bash
264
- npm run typecheck # tsc --noEmit
265
- npm test # 单元 + 端到端(存在 clang 时运行真实二进制)
266
- npm run test:e2e # 仅编译并运行的测试
264
+ npm run typecheck # tsc --noEmit
265
+ npm test # 单元 + 端到端(存在 clang 时运行真实二进制)
266
+ npm run test:e2e # 仅编译并运行的测试
267
+ npm run coverage # TypeScript 编译器(src/)的 V8 覆盖率
268
+ npm run coverage:runtime # C runtime(runtime/)的 LLVM 覆盖率
267
269
  ```
268
270
 
269
271
  测试在 `tests/` 下按模块组织(`lexer`、`parser`、`binder`、`codegen`、`driver`、
270
272
  `extensions`、`cli`、`e2e`)。
271
273
 
274
+ V8 只能看到编译器自身的源码,因此 `npm run coverage:runtime` 改用 clang 的
275
+ 源码插桩来覆盖 C runtime:脚本导出 `CCC_OVERRIDE_OPTIONS`(驱动执行的每次编译/链接
276
+ 都会带上 `-fprofile-instr-generate -fcoverage-mapping`),运行测试后用
277
+ `llvm-cov` 把采集到的 profile 映射回 `runtime/`。加 `-- --report-only`
278
+ 可只对上一次插桩运行留下的 profile 重新出报告,加 `-- --threshold 60`
279
+ 可在低于覆盖率门槛时失败;CI 固定以 `--threshold 70` 运行,runtime 覆盖率回退会直接
280
+ 让 job 失败。插桩产物存放在 `xbintsc_CACHE_DIR` 指向的独立缓存,
281
+ 因为对象缓存的 key 不包含编译参数:与普通缓存共用会静默复用未插桩的对象。
282
+ 脚本还会设置 `xbintsc_PREFER_PREBUILT=0`,强制从源码编译 runtime,而不是链接
283
+ 未插桩的 `runtime/lib` 预编译归档。
284
+ 需要与解析到的 clang 版本匹配的 `llvm-profdata`/`llvm-cov`(自带工具链中已包含);
285
+ 缺失时脚本会打印警告并跳过。
286
+
272
287
  ## 运行要求
273
288
 
274
289
  完整的分平台要求见 [使用前置要求](./doc/zh-CN/requirements.md)。若只使用预编译的
@@ -63,11 +63,28 @@ export declare class GeneratorContext {
63
63
  * the namespace dispatch tables.
64
64
  */
65
65
  private resolveImports;
66
+ /**
67
+ * Diagnose an import of a module the registry cannot provide.
68
+ *
69
+ * A *hinted* module belongs to an extension the caller knows about but did
70
+ * not enable, so point at the flag that enables it. Anything else is a bare
71
+ * specifier xbintsc cannot link - almost always a third-party package from
72
+ * `node_modules` - and must be reported at the import site rather than
73
+ * degrading into a downstream "cannot be used as a value" error.
74
+ */
75
+ private reportMissingModule;
76
+ /**
77
+ * True when a binding is read as a runtime value. Type positions are not
78
+ * bound (the binder skips them), so a symbol with no references is erased.
79
+ */
80
+ private usedAsValue;
66
81
  /**
67
82
  * Bind a default/namespace import to either the module's runtime namespace
68
83
  * dispatcher (when it has one) or its named exports (when it does not).
69
84
  */
70
85
  private bindModuleAlias;
86
+ /** Every binding an import declaration introduces (including type-only ones). */
87
+ private importBindingSymbols;
71
88
  /** Record every symbol introduced by an import of a missing known module. */
72
89
  private markMissingModuleSymbols;
73
90
  /** Namespace name an imported alias refers to, if any. */
@@ -66,8 +66,6 @@ export class GeneratorContext {
66
66
  * the namespace dispatch tables.
67
67
  */
68
68
  resolveImports() {
69
- if (Object.keys(this.modules).length === 0 && Object.keys(this.moduleHints).length === 0)
70
- return;
71
69
  for (const statement of this.sourceFile.statements) {
72
70
  if (statement.kind !== SyntaxKind.ImportDeclaration)
73
71
  continue;
@@ -77,13 +75,10 @@ export class GeneratorContext {
77
75
  // not an error for them.
78
76
  if (!clause || clause.isTypeOnly)
79
77
  continue;
80
- const module = this.modules[declaration.moduleSpecifier.value];
78
+ const specifier = declaration.moduleSpecifier.value;
79
+ const module = this.modules[specifier];
81
80
  if (!module) {
82
- const provider = this.moduleHints[declaration.moduleSpecifier.value];
83
- if (provider) {
84
- this.diagnostics.error(DiagnosticCode.ModuleNotFound, `module '${declaration.moduleSpecifier.value}' is provided by the '${provider}' extension; pass --ext ${provider}`, declaration.moduleSpecifier, this.sourceFile.fileName);
85
- this.markMissingModuleSymbols(declaration);
86
- }
81
+ this.reportMissingModule(declaration, specifier);
87
82
  continue;
88
83
  }
89
84
  if (clause.name) {
@@ -97,13 +92,15 @@ export class GeneratorContext {
97
92
  }
98
93
  const bindings = clause.namedBindings;
99
94
  if (bindings && bindings.kind === SyntaxKind.NamedImports) {
100
- for (const specifier of bindings.elements) {
101
- if (specifier.isTypeOnly)
95
+ for (const specifierNode of bindings.elements) {
96
+ if (specifierNode.isTypeOnly)
102
97
  continue;
103
- const importedName = specifier.propertyName?.text ?? specifier.name.text;
98
+ const importedName = specifierNode.propertyName?.text ?? specifierNode.name.text;
104
99
  const exported = module.exports?.[importedName];
105
- const symbol = this.binding.symbolOfDeclaration.get(specifier.name);
106
- if (symbol && exported) {
100
+ const symbol = this.binding.symbolOfDeclaration.get(specifierNode.name);
101
+ if (!symbol)
102
+ continue;
103
+ if (exported) {
107
104
  this.importExports.set(symbol.id, exported);
108
105
  // A named constructor (`import { Buffer } from "buffer"`) also
109
106
  // inherits its module's static dispatcher, so `Buffer.from(...)`
@@ -112,6 +109,10 @@ export class GeneratorContext {
112
109
  this.importNamespaces.set(symbol.id, module.namespace);
113
110
  }
114
111
  }
112
+ else if (this.usedAsValue(symbol)) {
113
+ this.diagnostics.error(DiagnosticCode.ModuleNotFound, `Module '"${specifier}"' has no exported member '${importedName}'`, specifierNode.name, this.sourceFile.fileName);
114
+ this.missingModuleSymbols.add(symbol.id);
115
+ }
115
116
  }
116
117
  }
117
118
  else if (bindings && bindings.kind === SyntaxKind.NamespaceImport) {
@@ -121,6 +122,43 @@ export class GeneratorContext {
121
122
  }
122
123
  }
123
124
  }
125
+ /**
126
+ * Diagnose an import of a module the registry cannot provide.
127
+ *
128
+ * A *hinted* module belongs to an extension the caller knows about but did
129
+ * not enable, so point at the flag that enables it. Anything else is a bare
130
+ * specifier xbintsc cannot link - almost always a third-party package from
131
+ * `node_modules` - and must be reported at the import site rather than
132
+ * degrading into a downstream "cannot be used as a value" error.
133
+ */
134
+ reportMissingModule(declaration, specifier) {
135
+ const provider = this.moduleHints[specifier];
136
+ if (provider) {
137
+ this.diagnostics.error(DiagnosticCode.ModuleNotFound, `module '${specifier}' is provided by the '${provider}' extension; pass --ext ${provider}`, declaration.moduleSpecifier, this.sourceFile.fileName);
138
+ this.markMissingModuleSymbols(declaration);
139
+ return;
140
+ }
141
+ // A path that is not a bare specifier is a bundling concern; the driver
142
+ // already reports unresolved relative imports, so stay out of the way.
143
+ if (!isBareSpecifier(specifier))
144
+ return;
145
+ // Only report when a binding is actually read: a type-only use is erased
146
+ // by the binder and must keep compiling.
147
+ const symbols = this.importBindingSymbols(declaration);
148
+ if (!symbols.some((symbol) => this.usedAsValue(symbol)))
149
+ return;
150
+ this.diagnostics.error(DiagnosticCode.ModuleNotFound, `module '${specifier}' is not supported: xbintsc can only import built-in platform modules and ` +
151
+ "relative '.ts' files; third-party npm packages (node_modules) are not implemented yet", declaration.moduleSpecifier, this.sourceFile.fileName);
152
+ for (const symbol of symbols)
153
+ this.missingModuleSymbols.add(symbol.id);
154
+ }
155
+ /**
156
+ * True when a binding is read as a runtime value. Type positions are not
157
+ * bound (the binder skips them), so a symbol with no references is erased.
158
+ */
159
+ usedAsValue(symbol) {
160
+ return symbol.references.length > 0;
161
+ }
124
162
  /**
125
163
  * Bind a default/namespace import to either the module's runtime namespace
126
164
  * dispatcher (when it has one) or its named exports (when it does not).
@@ -133,11 +171,11 @@ export class GeneratorContext {
133
171
  this.importModuleExports.set(symbol.id, module.exports);
134
172
  }
135
173
  }
136
- /** Record every symbol introduced by an import of a missing known module. */
137
- markMissingModuleSymbols(declaration) {
174
+ /** Every binding an import declaration introduces (including type-only ones). */
175
+ importBindingSymbols(declaration) {
138
176
  const clause = declaration.importClause;
139
177
  if (!clause)
140
- return;
178
+ return [];
141
179
  const names = [];
142
180
  if (clause.name)
143
181
  names.push(clause.name);
@@ -149,11 +187,18 @@ export class GeneratorContext {
149
187
  else if (bindings && bindings.kind === SyntaxKind.NamespaceImport) {
150
188
  names.push(bindings.name);
151
189
  }
190
+ const symbols = [];
152
191
  for (const name of names) {
153
192
  const symbol = this.binding.symbolOfDeclaration.get(name);
154
193
  if (symbol)
155
- this.missingModuleSymbols.add(symbol.id);
194
+ symbols.push(symbol);
156
195
  }
196
+ return symbols;
197
+ }
198
+ /** Record every symbol introduced by an import of a missing known module. */
199
+ markMissingModuleSymbols(declaration) {
200
+ for (const symbol of this.importBindingSymbols(declaration))
201
+ this.missingModuleSymbols.add(symbol.id);
157
202
  }
158
203
  /** Namespace name an imported alias refers to, if any. */
159
204
  namespaceOfSymbol(symbol) {
@@ -336,4 +381,11 @@ export class GeneratorContext {
336
381
  this.diagnostics.error(DiagnosticCode.UnsupportedFeature, `xbintsc does not yet support this ${what} (${label})`, node, this.sourceFile.fileName);
337
382
  }
338
383
  }
384
+ /** A bare module specifier (`fs`, `node:fs`, `@scope/pkg`), not a file path. */
385
+ function isBareSpecifier(specifier) {
386
+ return (!specifier.startsWith(".") &&
387
+ !specifier.startsWith("/") &&
388
+ !specifier.startsWith("\\") &&
389
+ !/^[A-Za-z]:[\\/]/.test(specifier));
390
+ }
339
391
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/codegen/generator/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../../src/codegen/generator/context.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,13 @@ export declare function compileString(source: string, fileName?: string, extensi
45
45
  * that imports from other TypeScript sources resolve exactly like `build`.
46
46
  */
47
47
  export declare function compileEntry(entryPath: string, extensions?: ExtensionRegistry): CompileStringResult;
48
+ /**
49
+ * Whether a build may link a prebuilt `runtime/lib` archive. The explicit option
50
+ * wins; otherwise `xbintsc_PREFER_PREBUILT` decides (`0`/`false` disables) and
51
+ * the default is to use an archive when one exists. Instrumented builds set it
52
+ * to `0` so the C runtime is compiled (and therefore instrumented) from source.
53
+ */
54
+ export declare function resolvePreferPrebuilt(explicit: boolean | undefined): boolean;
48
55
  export declare function build(entryPath: string, options?: BuildOptions): BuildResult;
49
56
  /** Core runtime translation units (each compiled and cached independently). */
50
57
  export declare const RUNTIME_SOURCES: readonly ["xt_alloc.c", "xt_values.c", "xt_bigint.c", "xt_containers.c", "xt_stdlib.c", "xt_stdlib2.c", "xt_promise.c", "xt_loop.c", "xt_generator.c", "xt_symbol.c", "xt_builtins.c", "xt_io.c"];
@@ -62,6 +62,30 @@ export function compileEntry(entryPath, extensions) {
62
62
  });
63
63
  return { ir, diagnostics: diagnostics.diagnostics };
64
64
  }
65
+ /**
66
+ * Where the incremental cache lives when the caller does not name a directory:
67
+ * `xbintsc_CACHE_DIR` when set, otherwise `<cwd>/.xbintsc`. The override keeps
68
+ * an instrumented build (see `scripts/coverage-runtime.ts`) from reusing the
69
+ * un-instrumented objects in a normal cache, which would silently yield no
70
+ * profile data.
71
+ */
72
+ function defaultCacheDir() {
73
+ return process.env.xbintsc_CACHE_DIR || join(process.cwd(), ".xbintsc");
74
+ }
75
+ /**
76
+ * Whether a build may link a prebuilt `runtime/lib` archive. The explicit option
77
+ * wins; otherwise `xbintsc_PREFER_PREBUILT` decides (`0`/`false` disables) and
78
+ * the default is to use an archive when one exists. Instrumented builds set it
79
+ * to `0` so the C runtime is compiled (and therefore instrumented) from source.
80
+ */
81
+ export function resolvePreferPrebuilt(explicit) {
82
+ if (explicit !== undefined)
83
+ return explicit;
84
+ const raw = process.env.xbintsc_PREFER_PREBUILT;
85
+ if (raw === undefined || raw === "")
86
+ return true;
87
+ return raw !== "0" && raw.toLowerCase() !== "false";
88
+ }
65
89
  function executableName(entry, outDir, explicit) {
66
90
  if (explicit)
67
91
  return resolve(explicit);
@@ -73,7 +97,7 @@ export function build(entryPath, options = {}) {
73
97
  const runner = options.runner ?? realRunner;
74
98
  const registry = options.extensions ?? createDefaultRegistry();
75
99
  const outDir = resolve(options.outDir ?? join(process.cwd(), "build"));
76
- const cacheDir = resolve(options.cacheDir ?? join(process.cwd(), ".xbintsc"));
100
+ const cacheDir = resolve(options.cacheDir ?? defaultCacheDir());
77
101
  const emit = options.emit ?? "exe";
78
102
  const optimize = options.optimize ?? "2";
79
103
  const absoluteEntry = resolve(entryPath);
@@ -148,7 +172,7 @@ export function build(entryPath, options = {}) {
148
172
  cache.save();
149
173
  return { outputPath, irPath, cached: false, diagnostics: [], ir };
150
174
  }
151
- const { runtimeObjects, extensionObjects, nativeObjects } = ensureRuntimeObjects(runner, clang, runtimeDir, cacheDir, registry, options.preferPrebuilt ?? true, toolchain.env);
175
+ const { runtimeObjects, extensionObjects, nativeObjects } = ensureRuntimeObjects(runner, clang, runtimeDir, cacheDir, registry, resolvePreferPrebuilt(options.preferPrebuilt), toolchain.env);
152
176
  link(runner, {
153
177
  clang,
154
178
  objectPaths: [objectPath, ...runtimeObjects, ...extensionObjects, ...nativeObjects],
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/driver/compiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../../src/driver/compiler.ts"],"names":[],"mappings":"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"}
@@ -136,6 +136,15 @@ describe("cli", () => {
136
136
  expect(run(["emit", entry, "--ext", "node"], io)).toBe(0);
137
137
  expect(err.join("")).toBe("");
138
138
  });
139
+ it("explains an unsupported third-party import precisely", () => {
140
+ const entry = writeProgram('import { z } from "zod";\nz.string();');
141
+ const { io, err } = capture();
142
+ expect(run(["emit", entry], io)).toBe(1);
143
+ const output = err.join("");
144
+ expect(output).toContain("module 'zod' is not supported");
145
+ expect(output).toContain("node_modules");
146
+ expect(output).not.toContain("cannot be used as a value");
147
+ });
139
148
  it("registers a native extension from a manifest", () => {
140
149
  const entry = writeProgram("console.log(1);");
141
150
  const directory = temporaryDirectory();
@@ -1 +1 @@
1
- {"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../../tests/cli/main.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.test.js","sourceRoot":"","sources":["../../../tests/cli/main.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,GAAG,EAAc,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,WAAW,GAAa,EAAE,CAAC;AAEjC,SAAS,kBAAkB;IACzB,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAC9D,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,qFAAqF;AACrF,SAAS,oBAAoB,CAAI,EAA4B;IAC3D,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACvB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxB,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,OAAO;IACd,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,OAAO,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAClG,CAAC;AAED,SAAS,YAAY,CAAC,MAAM,GAAG,qBAAqB;IAClD,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAC5C,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,CAAC,WAAW,CAAC,GAAG,EAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC5B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACzC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG;YACZ,CAAC,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC;YAC5B,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC;YAC/B,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;YAC3B,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC;YACtC,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YACtB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YACrB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC;YACtB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC;YAC5B,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC;YACrB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC;SACrC,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,KAAK,GAAG,YAAY,CAAC,6DAA6D,CAAC,CAAC;QAC1F,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CACtB,uEAAuE,CACxE,CAAC;QACF,8DAA8D;QAC9D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,6DAA6D,CAAC,CAAC;QAC1F,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,KAAK,GAAG,YAAY,CAAC,uCAAuC,CAAC,CAAC;QACpE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5B,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;QACtD,aAAa,CACX,QAAQ,EACR,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CACtG,CAAC;QACF,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,KAAK,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC;QAC9C,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,EAAE,EAAE,WAAW,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CACrE,0CAA0C,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YACtC,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjF,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE9C,MAAM,MAAM,GAAG,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;QACxC,oBAAoB,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;QAC7B,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAAE;YACjC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzF,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACpE,MAAM,KAAK,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;QAClD,oBAAoB,CAAC,CAAC,SAAS,EAAE,EAAE;YACjC,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;YACzB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC,CAAC,CAAC"}
@@ -2,7 +2,7 @@ import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "no
2
2
  import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { afterEach, describe, expect, it } from "vitest";
5
- import { build, compileEntry, compileString } from "../../src/driver/compiler.js";
5
+ import { build, compileEntry, compileString, resolvePreferPrebuilt } from "../../src/driver/compiler.js";
6
6
  import { createDefaultRegistry } from "../../src/extensions/registry.js";
7
7
  import { nodeExtension } from "../../src/extensions/node/index.js";
8
8
  import { DiagnosticCode } from "../../src/diagnostics/diagnostic.js";
@@ -40,6 +40,26 @@ describe("compileString", () => {
40
40
  const { diagnostics } = compileString('import { createServer } from "node:http";\ncreateServer(() => {});', "server.ts", registry);
41
41
  expect(diagnostics.filter((d) => d.category === "error")).toHaveLength(0);
42
42
  });
43
+ it("explains an unsupported third-party import without a value error", () => {
44
+ const { diagnostics } = compileString('import { z } from "zod";\nz.string();', "third-party.ts");
45
+ const errors = diagnostics.filter((d) => d.category === "error");
46
+ expect(errors).toHaveLength(1);
47
+ expect(errors[0].code).toBe(DiagnosticCode.ModuleNotFound);
48
+ expect(errors[0].message).toContain("module 'zod' is not supported");
49
+ expect(errors[0].message).toContain("node_modules");
50
+ expect(errors.map((d) => d.message).join("\n")).not.toContain("cannot be used as a value");
51
+ });
52
+ it("keeps a type-only third-party import compiling", () => {
53
+ const { diagnostics } = compileString('import { ZodString } from "zod";\nlet value: ZodString;\nconsole.log(1);', "third-party-types.ts");
54
+ expect(diagnostics.filter((d) => d.category === "error")).toHaveLength(0);
55
+ });
56
+ it("names a missing export of a registered module", () => {
57
+ const registry = createDefaultRegistry().register(nodeExtension);
58
+ const { diagnostics } = compileString('import { nope } from "node:fs";\nconsole.log(nope);', "missing-export.ts", registry);
59
+ const errors = diagnostics.filter((d) => d.category === "error");
60
+ expect(errors).toHaveLength(1);
61
+ expect(errors[0].message).toBe(`Module '"node:fs"' has no exported member 'nope'`);
62
+ });
43
63
  });
44
64
  describe("compileEntry", () => {
45
65
  it("bundles relative modules, resolving `.js` specifiers to `.ts` sources", () => {
@@ -69,6 +89,50 @@ describe("build", () => {
69
89
  const forced = build(entry, { emit: "ir", outDir, cacheDir: join(directory, ".cache"), force: true });
70
90
  expect(forced.cached).toBe(false);
71
91
  });
92
+ it("honours xbintsc_CACHE_DIR when no cacheDir is given", () => {
93
+ const directory = temporaryDirectory();
94
+ const entry = join(directory, "main.ts");
95
+ writeFileSync(entry, "console.log(1);");
96
+ const envCache = join(directory, "env-cache");
97
+ const previous = process.env.xbintsc_CACHE_DIR;
98
+ process.env.xbintsc_CACHE_DIR = envCache;
99
+ try {
100
+ build(entry, { emit: "ir", outDir: join(directory, "out") });
101
+ expect(existsSync(join(envCache, "build-cache.json"))).toBe(true);
102
+ }
103
+ finally {
104
+ if (previous === undefined)
105
+ delete process.env.xbintsc_CACHE_DIR;
106
+ else
107
+ process.env.xbintsc_CACHE_DIR = previous;
108
+ }
109
+ });
110
+ it("resolves the prebuilt-archive preference from the option then the environment", () => {
111
+ const previous = process.env.xbintsc_PREFER_PREBUILT;
112
+ try {
113
+ delete process.env.xbintsc_PREFER_PREBUILT;
114
+ expect(resolvePreferPrebuilt(undefined)).toBe(true);
115
+ expect(resolvePreferPrebuilt(false)).toBe(false);
116
+ expect(resolvePreferPrebuilt(true)).toBe(true);
117
+ process.env.xbintsc_PREFER_PREBUILT = "0";
118
+ expect(resolvePreferPrebuilt(undefined)).toBe(false);
119
+ process.env.xbintsc_PREFER_PREBUILT = "FALSE";
120
+ expect(resolvePreferPrebuilt(undefined)).toBe(false);
121
+ process.env.xbintsc_PREFER_PREBUILT = "1";
122
+ expect(resolvePreferPrebuilt(undefined)).toBe(true);
123
+ process.env.xbintsc_PREFER_PREBUILT = "";
124
+ expect(resolvePreferPrebuilt(undefined)).toBe(true);
125
+ // An explicit option still wins over the environment.
126
+ process.env.xbintsc_PREFER_PREBUILT = "0";
127
+ expect(resolvePreferPrebuilt(true)).toBe(true);
128
+ }
129
+ finally {
130
+ if (previous === undefined)
131
+ delete process.env.xbintsc_PREFER_PREBUILT;
132
+ else
133
+ process.env.xbintsc_PREFER_PREBUILT = previous;
134
+ }
135
+ });
72
136
  it("returns diagnostics for invalid programs", () => {
73
137
  const directory = temporaryDirectory();
74
138
  const entry = join(directory, "bad.ts");
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.test.js","sourceRoot":"","sources":["../../../tests/driver/compiler.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compiler.test.js","sourceRoot":"","sources":["../../../tests/driver/compiler.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xbintsc",
3
- "version": "0.3.12",
3
+ "version": "0.3.13",
4
4
  "description": "xbintsc - a TypeScript binary compiler (TypeScript -> LLVM IR -> native binary)",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -42,7 +42,8 @@
42
42
  "test": "vitest run",
43
43
  "test:watch": "vitest",
44
44
  "test:e2e": "vitest run tests/e2e",
45
- "coverage": "vitest run --coverage"
45
+ "coverage": "vitest run --coverage",
46
+ "coverage:runtime": "tsx scripts/coverage-runtime.ts"
46
47
  },
47
48
  "devDependencies": {
48
49
  "@eslint/js": "^9.39.5",
@@ -0,0 +1,338 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Runtime (C) coverage for xbintsc.
4
+ *
5
+ * Vitest's V8 provider only sees the compiler's TypeScript sources
6
+ * (the `src/` tree, see vitest.config.ts). The C runtime under `runtime/` is
7
+ * invisible to it, so this script drives the *other* coverage system: clang's
8
+ * source-based instrumentation.
9
+ *
10
+ * The lever is `CCC_OVERRIDE_OPTIONS`. Exporting
11
+ * `+-fprofile-instr-generate +-fcoverage-mapping` makes clang append those
12
+ * flags to every compile and link it performs. The driver forwards the ambient
13
+ * environment to clang, so no xbintsc option or source change is needed to
14
+ * instrument the runtime. Instrumented programs then write `.profraw` files
15
+ * named by `LLVM_PROFILE_FILE`, which `llvm-profdata` and `llvm-cov` turn
16
+ * into a per-source report.
17
+ *
18
+ * Two things make this work against the test suite:
19
+ *
20
+ * - The e2e harness gives every suite its own temporary cache, so the
21
+ * instrumented runtime objects are always compiled fresh (no stale,
22
+ * un-instrumented object can be reused).
23
+ * - `llvm-cov report` needs a binary that *contains* the coverage mapping,
24
+ * but the harness deletes each compiled program when its suite ends. A
25
+ * single reference binary, built from the same runtime sources with the
26
+ * same clang and flags, carries the mapping for every runtime file, so the
27
+ * merged profile can be reported against it.
28
+ *
29
+ * Usage:
30
+ * npm run coverage:runtime instrument, run the tests, report
31
+ * npm run coverage:runtime -- --report-only report profiles from an earlier run
32
+ * npm run coverage:runtime -- tests/e2e forward args to `vitest run`
33
+ *
34
+ * Options:
35
+ * --report-only Skip the test run; merge whatever profiles already exist.
36
+ * --prof-dir <dir> Where compiled programs write .profraw (default build/runtime-prof).
37
+ * --out-dir <dir> Where the report is written (default coverage/runtime).
38
+ * --threshold <pct> Fail when total runtime line coverage is below <pct>.
39
+ * --html Also write an HTML report under <out-dir>/html.
40
+ * --keep-raw Keep the .profraw files after merging.
41
+ * --strict Fail (instead of skipping) when the LLVM tools are missing.
42
+ * -h, --help Show this help.
43
+ */
44
+
45
+ import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from "node:fs";
46
+ import { spawnSync, type SpawnSyncOptions } from "node:child_process";
47
+ import { dirname, join, relative, resolve } from "node:path";
48
+ import { fileURLToPath } from "node:url";
49
+ import { build } from "../src/driver/compiler.js";
50
+ import { createDefaultRegistry } from "../src/extensions/registry.js";
51
+ import { nodeExtension } from "../src/extensions/node/index.js";
52
+ import { findRuntimeDir } from "../src/driver/paths.js";
53
+ import { resolveToolchain } from "../src/driver/toolchain-provider.js";
54
+
55
+ const root = resolve(dirname(fileURLToPath(import.meta.url)), "..");
56
+
57
+ /** Flags clang appends to every compile/link in an instrumented build. */
58
+ const INSTRUMENT = "+-fprofile-instr-generate +-fcoverage-mapping";
59
+
60
+ interface Options {
61
+ reportOnly: boolean;
62
+ profDir: string;
63
+ outDir: string;
64
+ threshold?: number;
65
+ html: boolean;
66
+ keepRaw: boolean;
67
+ strict: boolean;
68
+ testArgs: string[];
69
+ }
70
+
71
+ interface CommandResult {
72
+ status: number;
73
+ stdout: string;
74
+ stderr: string;
75
+ }
76
+
77
+ function fail(message: string): never {
78
+ console.error(`coverage-runtime: ${message}`);
79
+ process.exit(1);
80
+ }
81
+
82
+ function skip(message: string, strict: boolean): never {
83
+ if (strict) fail(message);
84
+ console.warn(`coverage-runtime: skipping - ${message}`);
85
+ process.exit(0);
86
+ }
87
+
88
+ function usage(): void {
89
+ process.stdout.write(
90
+ [
91
+ "Usage: npm run coverage:runtime [-- options] [-- vitest args]",
92
+ "",
93
+ " --report-only merge profiles from an earlier instrumented run",
94
+ " --prof-dir <dir> .profraw output directory (default build/runtime-prof)",
95
+ " --out-dir <dir> report directory (default coverage/runtime)",
96
+ " --threshold <pct> fail below this total line coverage",
97
+ " --html also write an HTML report",
98
+ " --keep-raw keep .profraw files after merging",
99
+ " --strict fail when the LLVM tools are missing",
100
+ "",
101
+ ].join("\n"),
102
+ );
103
+ }
104
+
105
+ function parseArgs(argv: readonly string[]): Options {
106
+ const options: Options = {
107
+ reportOnly: false,
108
+ profDir: join(root, "build", "runtime-prof"),
109
+ outDir: join(root, "coverage", "runtime"),
110
+ html: false,
111
+ keepRaw: false,
112
+ strict: false,
113
+ testArgs: [],
114
+ };
115
+ for (let index = 0; index < argv.length; index += 1) {
116
+ const arg = argv[index]!;
117
+ if (arg === "--report-only") options.reportOnly = true;
118
+ else if (arg === "--html") options.html = true;
119
+ else if (arg === "--keep-raw") options.keepRaw = true;
120
+ else if (arg === "--strict") options.strict = true;
121
+ else if (arg === "--prof-dir") options.profDir = resolve(requireValue(argv, (index += 1), arg));
122
+ else if (arg === "--out-dir") options.outDir = resolve(requireValue(argv, (index += 1), arg));
123
+ else if (arg === "--threshold") {
124
+ const value = requireValue(argv, (index += 1), arg);
125
+ const parsed = Number(value);
126
+ if (!Number.isFinite(parsed)) fail(`--threshold expects a number, got '${value}'`);
127
+ options.threshold = parsed;
128
+ } else if (arg === "-h" || arg === "--help") {
129
+ usage();
130
+ process.exit(0);
131
+ } else if (arg.startsWith("--")) {
132
+ fail(`unknown option '${arg}' (see --help)`);
133
+ } else {
134
+ options.testArgs.push(arg);
135
+ }
136
+ }
137
+ return options;
138
+ }
139
+
140
+ function requireValue(argv: readonly string[], index: number, flag: string): string {
141
+ const value = argv[index];
142
+ if (value === undefined) fail(`${flag} needs a value`);
143
+ return value;
144
+ }
145
+
146
+ function run(command: string, args: readonly string[], options: SpawnSyncOptions = {}): CommandResult {
147
+ const result = spawnSync(command, [...args], { encoding: "utf8", maxBuffer: 512 * 1024 * 1024, ...options });
148
+ return {
149
+ status: result.status ?? (result.error ? 1 : 0),
150
+ stdout: result.stdout ?? "",
151
+ stderr: result.stderr ?? (result.error ? String(result.error.message) : ""),
152
+ };
153
+ }
154
+
155
+ /** True when `command` resolves and answers `--version` successfully. */
156
+ function runs(command: string): boolean {
157
+ const result = spawnSync(command, ["--version"], { encoding: "utf8" });
158
+ return !result.error && result.status === 0;
159
+ }
160
+
161
+ /**
162
+ * Locate the LLVM tool `name` (`llvm-profdata`/`llvm-cov`) that matches the
163
+ * clang the driver resolved. The bundled toolchains ship the tools next to
164
+ * clang and cover the versioned system installs, so search there first: mixing
165
+ * versions makes `llvm-profdata` reject the profile format.
166
+ */
167
+ function findTool(clang: string, name: string): string | undefined {
168
+ const exe = process.platform === "win32" ? ".exe" : "";
169
+ const candidates: string[] = [];
170
+ const directory = dirname(clang);
171
+ if (directory !== "." && directory !== "") candidates.push(join(directory, name + exe));
172
+ const version = run(clang, ["--version"]);
173
+ const major = /version (\d+)/.exec(`${version.stdout}${version.stderr}`)?.[1];
174
+ if (major) candidates.push(`${name}-${major}`, `${name}-${major}${exe}`);
175
+ candidates.push(name + exe, name);
176
+ for (const version of ["18", "19", "20", "21", "22", "23"]) {
177
+ candidates.push(`${name}-${version}`, `${name}-${version}${exe}`);
178
+ }
179
+ for (const candidate of candidates) {
180
+ if (runs(candidate)) return candidate;
181
+ }
182
+ if (process.platform === "darwin") {
183
+ // The Command Line Tools expose the tools through `xcrun` rather than PATH.
184
+ const found = spawnSync("xcrun", ["--find", name], { encoding: "utf8" });
185
+ const path = (found.stdout ?? "").trim();
186
+ if (!found.error && found.status === 0 && path.length > 0 && runs(path)) return path;
187
+ }
188
+ return undefined;
189
+ }
190
+
191
+ function collectProfiles(directory: string): string[] {
192
+ if (!existsSync(directory)) return [];
193
+ return readdirSync(directory)
194
+ .filter((name) => name.endsWith(".profraw"))
195
+ .sort()
196
+ .map((name) => join(directory, name));
197
+ }
198
+
199
+ /** Merge profiles, chunking the input so a huge list cannot overflow argv. */
200
+ function mergeProfiles(tool: string, inputs: readonly string[], output: string, scratch: string): void {
201
+ const chunkSize = 128;
202
+ if (inputs.length <= chunkSize) {
203
+ const result = run(tool, ["merge", "-sparse", ...inputs, "-o", output]);
204
+ if (result.status !== 0) fail(`llvm-profdata merge failed:\n${result.stderr}`);
205
+ return;
206
+ }
207
+ const parts: string[] = [];
208
+ for (let index = 0; index < inputs.length; index += chunkSize) {
209
+ const part = join(scratch, `part-${parts.length}.profdata`);
210
+ const result = run(tool, ["merge", "-sparse", ...inputs.slice(index, index + chunkSize), "-o", part]);
211
+ if (result.status !== 0) fail(`llvm-profdata merge failed:\n${result.stderr}`);
212
+ parts.push(part);
213
+ }
214
+ const result = run(tool, ["merge", "-sparse", ...parts, "-o", output]);
215
+ if (result.status !== 0) fail(`llvm-profdata merge failed:\n${result.stderr}`);
216
+ for (const part of parts) rmSync(part, { force: true });
217
+ }
218
+
219
+ /**
220
+ * Build the binary whose embedded coverage mapping the merged profile is
221
+ * reported against. It must be instrumented with the same clang and flags as
222
+ * the test-produced binaries, and it carries the Node extension so that
223
+ * extension's C sources are covered too.
224
+ */
225
+ function buildReference(directory: string): string {
226
+ mkdirSync(directory, { recursive: true });
227
+ const entry = join(directory, "reference.ts");
228
+ writeFileSync(entry, "console.log(1);\n");
229
+ const registry = createDefaultRegistry().register(nodeExtension);
230
+ const result = build(entry, {
231
+ emit: "exe",
232
+ outDir: directory,
233
+ cacheDir: join(directory, "cache"),
234
+ extensions: registry,
235
+ preferPrebuilt: false,
236
+ force: true,
237
+ });
238
+ const errors = result.diagnostics.filter((diagnostic) => diagnostic.category === "error");
239
+ if (errors.length > 0) fail(`reference build failed:\n${errors.map((e) => e.message).join("\n")}`);
240
+ return result.outputPath;
241
+ }
242
+
243
+ function runTests(options: Options): void {
244
+ const vitest = join(root, "node_modules", "vitest", "vitest.mjs");
245
+ if (!existsSync(vitest)) fail("vitest is not installed; run 'npm install' first");
246
+ rmSync(options.profDir, { recursive: true, force: true });
247
+ mkdirSync(options.profDir, { recursive: true });
248
+ console.log("coverage-runtime: running the test suite with instrumented clang");
249
+ const result = spawnSync(process.execPath, [vitest, "run", ...options.testArgs], {
250
+ stdio: "inherit",
251
+ cwd: root,
252
+ env: {
253
+ ...process.env,
254
+ LLVM_PROFILE_FILE: join(options.profDir, "%p-%m.profraw"),
255
+ xbintsc_CACHE_DIR: join(root, "build", "runtime-cov-cache"),
256
+ // A prebuilt runtime/lib archive is not instrumented, so force the driver
257
+ // to compile (and thus instrument) the C sources instead.
258
+ xbintsc_PREFER_PREBUILT: "0",
259
+ },
260
+ });
261
+ if (result.status !== 0) fail(`tests failed (exit ${result.status ?? "unknown"})`);
262
+ }
263
+
264
+ function main(): void {
265
+ const options = parseArgs(process.argv.slice(2));
266
+
267
+ // Set once, before anything shells out to clang, so both the test run and the
268
+ // reference build are instrumented even in --report-only mode.
269
+ const existing = process.env.CCC_OVERRIDE_OPTIONS;
270
+ process.env.CCC_OVERRIDE_OPTIONS = existing ? `${existing} ${INSTRUMENT}` : INSTRUMENT;
271
+
272
+ let clang: string;
273
+ try {
274
+ clang = resolveToolchain().clang;
275
+ } catch (error) {
276
+ skip(`no clang-compatible compiler available (${String(error)})`, options.strict);
277
+ }
278
+ const profdataTool = findTool(clang, "llvm-profdata");
279
+ const covTool = findTool(clang, "llvm-cov");
280
+ if (!profdataTool || !covTool) {
281
+ const missing = [
282
+ profdataTool ? undefined : "llvm-profdata",
283
+ covTool ? undefined : "llvm-cov",
284
+ ].filter(Boolean).join(", ");
285
+ skip(`${missing} not found for ${clang}; install LLVM or use the bundled toolchain`, options.strict);
286
+ }
287
+
288
+ if (!options.reportOnly) runTests(options);
289
+
290
+ const profiles = collectProfiles(options.profDir);
291
+ if (profiles.length === 0) {
292
+ skip(`no .profraw files in ${relative(root, options.profDir)} (did the tests run?)`, options.strict);
293
+ }
294
+ console.log(`coverage-runtime: merging ${profiles.length} profile(s)`);
295
+
296
+ mkdirSync(options.outDir, { recursive: true });
297
+ const referenceDir = join(root, "build", "runtime-coverage");
298
+ const reference = buildReference(referenceDir);
299
+ const profdata = join(options.outDir, "runtime.profdata");
300
+ mergeProfiles(profdataTool!, profiles, profdata, options.outDir);
301
+
302
+ const runtimeDir = findRuntimeDir();
303
+ const report = run(covTool!, ["report", reference, `--instr-profile=${profdata}`, runtimeDir]);
304
+ if (report.status !== 0) fail(`llvm-cov report failed:\n${report.stderr}`);
305
+ writeFileSync(join(options.outDir, "report.txt"), report.stdout);
306
+ process.stdout.write(report.stdout);
307
+
308
+ const summary = run(covTool!, ["export", reference, `--instr-profile=${profdata}`, "--summary-only"]);
309
+ if (summary.status !== 0) fail(`llvm-cov export failed:\n${summary.stderr}`);
310
+ const parsed = JSON.parse(summary.stdout) as {
311
+ data?: { totals?: { lines?: { percent?: number } } }[];
312
+ };
313
+ const percent = parsed.data?.[0]?.totals?.lines?.percent ?? 0;
314
+ console.log(`coverage-runtime: runtime line coverage ${percent.toFixed(2)}%`);
315
+ console.log(`coverage-runtime: report -> ${relative(root, join(options.outDir, "report.txt"))}`);
316
+
317
+ if (options.html) {
318
+ const htmlDir = join(options.outDir, "html");
319
+ rmSync(htmlDir, { recursive: true, force: true });
320
+ const shown = run(covTool!, [
321
+ "show",
322
+ reference,
323
+ `--instr-profile=${profdata}`,
324
+ "--format=html",
325
+ `--output-dir=${htmlDir}`,
326
+ runtimeDir,
327
+ ]);
328
+ if (shown.status !== 0) fail(`llvm-cov show failed:\n${shown.stderr}`);
329
+ console.log(`coverage-runtime: HTML report -> ${relative(root, htmlDir)}`);
330
+ }
331
+
332
+ if (!options.keepRaw) rmSync(options.profDir, { recursive: true, force: true });
333
+ if (options.threshold !== undefined && percent < options.threshold) {
334
+ fail(`runtime line coverage ${percent.toFixed(2)}% is below the ${options.threshold}% threshold`);
335
+ }
336
+ }
337
+
338
+ main();
@@ -78,7 +78,6 @@ export class GeneratorContext {
78
78
  * the namespace dispatch tables.
79
79
  */
80
80
  private resolveImports(): void {
81
- if (Object.keys(this.modules).length === 0 && Object.keys(this.moduleHints).length === 0) return;
82
81
  for (const statement of this.sourceFile.statements) {
83
82
  if (statement.kind !== SyntaxKind.ImportDeclaration) continue;
84
83
  const declaration = statement as ImportDeclaration;
@@ -86,18 +85,10 @@ export class GeneratorContext {
86
85
  // Type-only imports are erased at runtime, so a missing host module is
87
86
  // not an error for them.
88
87
  if (!clause || clause.isTypeOnly) continue;
89
- const module = this.modules[declaration.moduleSpecifier.value];
88
+ const specifier = declaration.moduleSpecifier.value;
89
+ const module = this.modules[specifier];
90
90
  if (!module) {
91
- const provider = this.moduleHints[declaration.moduleSpecifier.value];
92
- if (provider) {
93
- this.diagnostics.error(
94
- DiagnosticCode.ModuleNotFound,
95
- `module '${declaration.moduleSpecifier.value}' is provided by the '${provider}' extension; pass --ext ${provider}`,
96
- declaration.moduleSpecifier,
97
- this.sourceFile.fileName,
98
- );
99
- this.markMissingModuleSymbols(declaration);
100
- }
91
+ this.reportMissingModule(declaration, specifier);
101
92
  continue;
102
93
  }
103
94
  if (clause.name) {
@@ -110,12 +101,13 @@ export class GeneratorContext {
110
101
  }
111
102
  const bindings = clause.namedBindings;
112
103
  if (bindings && bindings.kind === SyntaxKind.NamedImports) {
113
- for (const specifier of bindings.elements) {
114
- if (specifier.isTypeOnly) continue;
115
- const importedName = specifier.propertyName?.text ?? specifier.name.text;
104
+ for (const specifierNode of bindings.elements) {
105
+ if (specifierNode.isTypeOnly) continue;
106
+ const importedName = specifierNode.propertyName?.text ?? specifierNode.name.text;
116
107
  const exported = module.exports?.[importedName];
117
- const symbol = this.binding.symbolOfDeclaration.get(specifier.name);
118
- if (symbol && exported) {
108
+ const symbol = this.binding.symbolOfDeclaration.get(specifierNode.name);
109
+ if (!symbol) continue;
110
+ if (exported) {
119
111
  this.importExports.set(symbol.id, exported);
120
112
  // A named constructor (`import { Buffer } from "buffer"`) also
121
113
  // inherits its module's static dispatcher, so `Buffer.from(...)`
@@ -123,6 +115,14 @@ export class GeneratorContext {
123
115
  if (exported.isConstructor && module.namespace) {
124
116
  this.importNamespaces.set(symbol.id, module.namespace);
125
117
  }
118
+ } else if (this.usedAsValue(symbol)) {
119
+ this.diagnostics.error(
120
+ DiagnosticCode.ModuleNotFound,
121
+ `Module '"${specifier}"' has no exported member '${importedName}'`,
122
+ specifierNode.name,
123
+ this.sourceFile.fileName,
124
+ );
125
+ this.missingModuleSymbols.add(symbol.id);
126
126
  }
127
127
  }
128
128
  } else if (bindings && bindings.kind === SyntaxKind.NamespaceImport) {
@@ -132,6 +132,52 @@ export class GeneratorContext {
132
132
  }
133
133
  }
134
134
 
135
+ /**
136
+ * Diagnose an import of a module the registry cannot provide.
137
+ *
138
+ * A *hinted* module belongs to an extension the caller knows about but did
139
+ * not enable, so point at the flag that enables it. Anything else is a bare
140
+ * specifier xbintsc cannot link - almost always a third-party package from
141
+ * `node_modules` - and must be reported at the import site rather than
142
+ * degrading into a downstream "cannot be used as a value" error.
143
+ */
144
+ private reportMissingModule(declaration: ImportDeclaration, specifier: string): void {
145
+ const provider = this.moduleHints[specifier];
146
+ if (provider) {
147
+ this.diagnostics.error(
148
+ DiagnosticCode.ModuleNotFound,
149
+ `module '${specifier}' is provided by the '${provider}' extension; pass --ext ${provider}`,
150
+ declaration.moduleSpecifier,
151
+ this.sourceFile.fileName,
152
+ );
153
+ this.markMissingModuleSymbols(declaration);
154
+ return;
155
+ }
156
+ // A path that is not a bare specifier is a bundling concern; the driver
157
+ // already reports unresolved relative imports, so stay out of the way.
158
+ if (!isBareSpecifier(specifier)) return;
159
+ // Only report when a binding is actually read: a type-only use is erased
160
+ // by the binder and must keep compiling.
161
+ const symbols = this.importBindingSymbols(declaration);
162
+ if (!symbols.some((symbol) => this.usedAsValue(symbol))) return;
163
+ this.diagnostics.error(
164
+ DiagnosticCode.ModuleNotFound,
165
+ `module '${specifier}' is not supported: xbintsc can only import built-in platform modules and ` +
166
+ "relative '.ts' files; third-party npm packages (node_modules) are not implemented yet",
167
+ declaration.moduleSpecifier,
168
+ this.sourceFile.fileName,
169
+ );
170
+ for (const symbol of symbols) this.missingModuleSymbols.add(symbol.id);
171
+ }
172
+
173
+ /**
174
+ * True when a binding is read as a runtime value. Type positions are not
175
+ * bound (the binder skips them), so a symbol with no references is erased.
176
+ */
177
+ private usedAsValue(symbol: SymbolInfo): boolean {
178
+ return symbol.references.length > 0;
179
+ }
180
+
135
181
  /**
136
182
  * Bind a default/namespace import to either the module's runtime namespace
137
183
  * dispatcher (when it has one) or its named exports (when it does not).
@@ -144,10 +190,10 @@ export class GeneratorContext {
144
190
  }
145
191
  }
146
192
 
147
- /** Record every symbol introduced by an import of a missing known module. */
148
- private markMissingModuleSymbols(declaration: ImportDeclaration): void {
193
+ /** Every binding an import declaration introduces (including type-only ones). */
194
+ private importBindingSymbols(declaration: ImportDeclaration): SymbolInfo[] {
149
195
  const clause = declaration.importClause;
150
- if (!clause) return;
196
+ if (!clause) return [];
151
197
  const names: Identifier[] = [];
152
198
  if (clause.name) names.push(clause.name);
153
199
  const bindings = clause.namedBindings;
@@ -156,10 +202,17 @@ export class GeneratorContext {
156
202
  } else if (bindings && bindings.kind === SyntaxKind.NamespaceImport) {
157
203
  names.push(bindings.name);
158
204
  }
205
+ const symbols: SymbolInfo[] = [];
159
206
  for (const name of names) {
160
207
  const symbol = this.binding.symbolOfDeclaration.get(name);
161
- if (symbol) this.missingModuleSymbols.add(symbol.id);
208
+ if (symbol) symbols.push(symbol);
162
209
  }
210
+ return symbols;
211
+ }
212
+
213
+ /** Record every symbol introduced by an import of a missing known module. */
214
+ private markMissingModuleSymbols(declaration: ImportDeclaration): void {
215
+ for (const symbol of this.importBindingSymbols(declaration)) this.missingModuleSymbols.add(symbol.id);
163
216
  }
164
217
 
165
218
  /** Namespace name an imported alias refers to, if any. */
@@ -362,3 +415,13 @@ export class GeneratorContext {
362
415
  );
363
416
  }
364
417
  }
418
+
419
+ /** A bare module specifier (`fs`, `node:fs`, `@scope/pkg`), not a file path. */
420
+ function isBareSpecifier(specifier: string): boolean {
421
+ return (
422
+ !specifier.startsWith(".") &&
423
+ !specifier.startsWith("/") &&
424
+ !specifier.startsWith("\\") &&
425
+ !/^[A-Za-z]:[\\/]/.test(specifier)
426
+ );
427
+ }
@@ -107,6 +107,30 @@ export function compileEntry(entryPath: string, extensions?: ExtensionRegistry):
107
107
  return { ir, diagnostics: diagnostics.diagnostics };
108
108
  }
109
109
 
110
+ /**
111
+ * Where the incremental cache lives when the caller does not name a directory:
112
+ * `xbintsc_CACHE_DIR` when set, otherwise `<cwd>/.xbintsc`. The override keeps
113
+ * an instrumented build (see `scripts/coverage-runtime.ts`) from reusing the
114
+ * un-instrumented objects in a normal cache, which would silently yield no
115
+ * profile data.
116
+ */
117
+ function defaultCacheDir(): string {
118
+ return process.env.xbintsc_CACHE_DIR || join(process.cwd(), ".xbintsc");
119
+ }
120
+
121
+ /**
122
+ * Whether a build may link a prebuilt `runtime/lib` archive. The explicit option
123
+ * wins; otherwise `xbintsc_PREFER_PREBUILT` decides (`0`/`false` disables) and
124
+ * the default is to use an archive when one exists. Instrumented builds set it
125
+ * to `0` so the C runtime is compiled (and therefore instrumented) from source.
126
+ */
127
+ export function resolvePreferPrebuilt(explicit: boolean | undefined): boolean {
128
+ if (explicit !== undefined) return explicit;
129
+ const raw = process.env.xbintsc_PREFER_PREBUILT;
130
+ if (raw === undefined || raw === "") return true;
131
+ return raw !== "0" && raw.toLowerCase() !== "false";
132
+ }
133
+
110
134
  function executableName(entry: string, outDir: string, explicit: string | undefined): string {
111
135
  if (explicit) return resolve(explicit);
112
136
  const base = basename(entry, extname(entry));
@@ -118,7 +142,7 @@ export function build(entryPath: string, options: BuildOptions = {}): BuildResul
118
142
  const runner = options.runner ?? realRunner;
119
143
  const registry = options.extensions ?? createDefaultRegistry();
120
144
  const outDir = resolve(options.outDir ?? join(process.cwd(), "build"));
121
- const cacheDir = resolve(options.cacheDir ?? join(process.cwd(), ".xbintsc"));
145
+ const cacheDir = resolve(options.cacheDir ?? defaultCacheDir());
122
146
  const emit: EmitKind = options.emit ?? "exe";
123
147
  const optimize = options.optimize ?? "2";
124
148
 
@@ -218,7 +242,7 @@ export function build(entryPath: string, options: BuildOptions = {}): BuildResul
218
242
  runtimeDir,
219
243
  cacheDir,
220
244
  registry,
221
- options.preferPrebuilt ?? true,
245
+ resolvePreferPrebuilt(options.preferPrebuilt),
222
246
  toolchain.env,
223
247
  );
224
248