xbintsc 0.5.52 → 0.6.8

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.
Files changed (156) hide show
  1. package/README.md +8 -2
  2. package/README.zh-CN.md +9 -3
  3. package/dist/scripts/fetch-tarball.d.ts +28 -0
  4. package/dist/scripts/fetch-tarball.js +57 -0
  5. package/dist/scripts/fetch-tarball.js.map +1 -0
  6. package/dist/scripts/gui-build-options.d.ts +77 -0
  7. package/dist/scripts/gui-build-options.js +134 -0
  8. package/dist/scripts/gui-build-options.js.map +1 -0
  9. package/dist/src/cli/help.d.ts +1 -1
  10. package/dist/src/cli/hints.d.ts +6 -2
  11. package/dist/src/cli/hints.js +16 -2
  12. package/dist/src/cli/hints.js.map +1 -1
  13. package/dist/src/cli/main.js +9 -0
  14. package/dist/src/cli/main.js.map +1 -1
  15. package/dist/src/driver/app-artifacts.d.ts +2 -0
  16. package/dist/src/driver/app-artifacts.js +3 -3
  17. package/dist/src/driver/app-artifacts.js.map +1 -1
  18. package/dist/src/driver/compiler.js +147 -52
  19. package/dist/src/driver/compiler.js.map +1 -1
  20. package/dist/src/driver/icon.d.ts +1 -1
  21. package/dist/src/driver/icon.js +3 -3
  22. package/dist/src/driver/icon.js.map +1 -1
  23. package/dist/src/driver/macos-sdk.d.ts +32 -0
  24. package/dist/src/driver/macos-sdk.js +50 -0
  25. package/dist/src/driver/macos-sdk.js.map +1 -0
  26. package/dist/src/driver/options.d.ts +6 -0
  27. package/dist/src/driver/platform-support.d.ts +45 -0
  28. package/dist/src/driver/platform-support.js +66 -0
  29. package/dist/src/driver/platform-support.js.map +1 -0
  30. package/dist/src/driver/prebuilt.d.ts +26 -0
  31. package/dist/src/driver/prebuilt.js +58 -0
  32. package/dist/src/driver/prebuilt.js.map +1 -0
  33. package/dist/src/driver/runtime-objects.d.ts +11 -0
  34. package/dist/src/driver/runtime-objects.js +14 -5
  35. package/dist/src/driver/runtime-objects.js.map +1 -1
  36. package/dist/src/driver/toolchain-provider.d.ts +8 -0
  37. package/dist/src/driver/toolchain-provider.js +8 -0
  38. package/dist/src/driver/toolchain-provider.js.map +1 -1
  39. package/dist/src/driver/toolchain.d.ts +20 -1
  40. package/dist/src/driver/toolchain.js +19 -0
  41. package/dist/src/driver/toolchain.js.map +1 -1
  42. package/dist/src/driver/version.d.ts +1 -1
  43. package/dist/src/driver/version.js +1 -1
  44. package/dist/src/driver/version.js.map +1 -1
  45. package/dist/src/driver/win-entry.d.ts +1 -1
  46. package/dist/src/driver/win-entry.js +4 -4
  47. package/dist/src/driver/win-entry.js.map +1 -1
  48. package/dist/src/extensions/gui/html.d.ts +10 -7
  49. package/dist/src/extensions/gui/html.js +53 -29
  50. package/dist/src/extensions/gui/html.js.map +1 -1
  51. package/dist/src/extensions/node/child_process/index.d.ts +4 -3
  52. package/dist/src/extensions/node/child_process/index.js +4 -3
  53. package/dist/src/extensions/node/child_process/index.js.map +1 -1
  54. package/dist/tests/cli/hints.test.js +9 -1
  55. package/dist/tests/cli/hints.test.js.map +1 -1
  56. package/dist/tests/cli/main.test.js +9 -0
  57. package/dist/tests/cli/main.test.js.map +1 -1
  58. package/dist/tests/driver/compiler.test.js +107 -0
  59. package/dist/tests/driver/compiler.test.js.map +1 -1
  60. package/dist/tests/driver/cxx-compile-flags.test.d.ts +1 -0
  61. package/dist/tests/driver/cxx-compile-flags.test.js +24 -0
  62. package/dist/tests/driver/cxx-compile-flags.test.js.map +1 -0
  63. package/dist/tests/driver/macos-sdk.test.d.ts +1 -0
  64. package/dist/tests/driver/macos-sdk.test.js +83 -0
  65. package/dist/tests/driver/macos-sdk.test.js.map +1 -0
  66. package/dist/tests/driver/platform-support.test.d.ts +1 -0
  67. package/dist/tests/driver/platform-support.test.js +41 -0
  68. package/dist/tests/driver/platform-support.test.js.map +1 -0
  69. package/dist/tests/driver/prebuilt.test.d.ts +1 -0
  70. package/dist/tests/driver/prebuilt.test.js +44 -0
  71. package/dist/tests/driver/prebuilt.test.js.map +1 -0
  72. package/dist/tests/driver/toolchain-provider.test.js +24 -0
  73. package/dist/tests/driver/toolchain-provider.test.js.map +1 -1
  74. package/dist/tests/driver/toolchain.test.js +23 -0
  75. package/dist/tests/driver/toolchain.test.js.map +1 -1
  76. package/dist/tests/e2e/async-await.test.js +4 -2
  77. package/dist/tests/e2e/async-await.test.js.map +1 -1
  78. package/dist/tests/e2e/compile-node.test.js +21 -0
  79. package/dist/tests/e2e/compile-node.test.js.map +1 -1
  80. package/dist/tests/e2e/fetch.test.js +34 -6
  81. package/dist/tests/e2e/fetch.test.js.map +1 -1
  82. package/dist/tests/e2e/gui-example-pelican3d.test.d.ts +10 -0
  83. package/dist/tests/e2e/gui-example-pelican3d.test.js +94 -0
  84. package/dist/tests/e2e/gui-example-pelican3d.test.js.map +1 -0
  85. package/dist/tests/e2e/gui-script.test.js +48 -0
  86. package/dist/tests/e2e/gui-script.test.js.map +1 -1
  87. package/dist/tests/e2e/unhandled-rejection.test.d.ts +14 -0
  88. package/dist/tests/e2e/unhandled-rejection.test.js +107 -0
  89. package/dist/tests/e2e/unhandled-rejection.test.js.map +1 -0
  90. package/dist/tests/extensions/gui.test.js +44 -0
  91. package/dist/tests/extensions/gui.test.js.map +1 -1
  92. package/dist/tests/scripts/fetch-tarball.test.d.ts +1 -0
  93. package/dist/tests/scripts/fetch-tarball.test.js +70 -0
  94. package/dist/tests/scripts/fetch-tarball.test.js.map +1 -0
  95. package/doc/ai/cli.md +6 -0
  96. package/doc/ai/language-support.md +1 -0
  97. package/doc/ai/troubleshooting.md +32 -2
  98. package/doc/ai/zh-CN/cli.md +5 -0
  99. package/doc/ai/zh-CN/language-support.md +1 -0
  100. package/doc/ai/zh-CN/troubleshooting.md +27 -2
  101. package/doc/gui/build.md +7 -3
  102. package/doc/gui/dom.md +3 -1
  103. package/doc/gui/webgl.md +4 -0
  104. package/doc/gui-scripts.md +33 -17
  105. package/doc/gui.md +17 -1
  106. package/doc/implemented/async.md +1 -0
  107. package/doc/implemented/modules.md +9 -6
  108. package/doc/implemented/node/child-process.md +12 -4
  109. package/doc/implemented/runtime-core.md +1 -1
  110. package/doc/npm-package.md +23 -2
  111. package/doc/post/make-js-great-again.md +30 -0
  112. package/doc/requirements.md +31 -0
  113. package/doc/unimplemented/deviations.md +1 -0
  114. package/doc/zh-CN/gui/build.md +4 -2
  115. package/doc/zh-CN/gui/dom.md +3 -1
  116. package/doc/zh-CN/gui/webgl.md +1 -0
  117. package/doc/zh-CN/gui-scripts.md +23 -11
  118. package/doc/zh-CN/gui.md +11 -1
  119. package/doc/zh-CN/implemented/async.md +1 -0
  120. package/doc/zh-CN/implemented/modules.md +8 -4
  121. package/doc/zh-CN/implemented/node/child-process.md +10 -3
  122. package/doc/zh-CN/implemented/runtime-core.md +1 -1
  123. package/doc/zh-CN/npm-package.md +18 -1
  124. package/doc/zh-CN/post/make-js-great-again.md +32 -0
  125. package/doc/zh-CN/requirements.md +25 -0
  126. package/doc/zh-CN/unimplemented/deviations.md +1 -0
  127. package/package.json +7 -7
  128. package/runtime/ext_node/child_process/child_process.c +149 -7
  129. package/runtime/rt.h +4 -0
  130. package/runtime/xt_async.c +4 -0
  131. package/runtime/xt_generator.c +2 -0
  132. package/runtime/xt_loop.c +8 -4
  133. package/runtime/xt_promise.c +103 -0
  134. package/scripts/build-gui.ts +17 -5
  135. package/scripts/build-media.ts +89 -10
  136. package/scripts/build-runtime.ts +7 -2
  137. package/scripts/fetch-tarball.ts +71 -0
  138. package/scripts/gui-build-cache.ts +28 -0
  139. package/scripts/gui-build-options.ts +26 -2
  140. package/scripts/package-release.ts +8 -0
  141. package/src/cli/hints.ts +19 -2
  142. package/src/cli/main.ts +11 -0
  143. package/src/driver/app-artifacts.ts +5 -3
  144. package/src/driver/compiler.ts +167 -56
  145. package/src/driver/icon.ts +3 -2
  146. package/src/driver/macos-sdk.ts +52 -0
  147. package/src/driver/options.ts +6 -0
  148. package/src/driver/platform-support.ts +69 -0
  149. package/src/driver/prebuilt.ts +61 -0
  150. package/src/driver/runtime-objects.ts +26 -5
  151. package/src/driver/toolchain-provider.ts +11 -0
  152. package/src/driver/toolchain.ts +26 -1
  153. package/src/driver/version.ts +1 -1
  154. package/src/driver/win-entry.ts +4 -3
  155. package/src/extensions/gui/html.ts +61 -31
  156. package/src/extensions/node/child_process/index.ts +4 -3
@@ -1 +1 @@
1
- {"version":3,"file":"app-artifacts.js","sourceRoot":"","sources":["../../../src/driver/app-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAyBnF;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC5D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC/E,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;IACrG,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC;QACxD,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC;YACrF,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChE,IAAI,gBAAgB,EAAE,CAAC;oBACrB,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;qBAAM,IAAI,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3G,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"app-artifacts.js","sourceRoot":"","sources":["../../../src/driver/app-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,SAAS,EAAiB,MAAM,WAAW,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AA2BnF;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA2B;IAC5D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACxF,MAAM,gBAAgB,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC;IACrG,MAAM,WAAW,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACvE,MAAM,WAAW,GAAG,gBAAgB;QAClC,CAAC,CAAC,wBAAwB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC;QACjE,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,0EAA0E;IAC1E,oEAAoE;IACpE,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,IAAI,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;YAC9F,IAAI,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACzC,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChE,IAAI,gBAAgB,EAAE,CAAC;oBACrB,WAAW,CAAC,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;qBAAM,IAAI,OAAO,EAAE,CAAC;oBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBACvF,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3G,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AACnD,CAAC"}
@@ -17,7 +17,7 @@ import { DiagnosticBag, DiagnosticCode } from "../diagnostics/diagnostic.js";
17
17
  import { generate } from "../codegen/llvm.js";
18
18
  import { createDefaultRegistry } from "../extensions/registry.js";
19
19
  import { BuildCache } from "./cache.js";
20
- import { findRuntimeDir } from "./paths.js";
20
+ import { findRuntimeDir, platformSlug } from "./paths.js";
21
21
  import { resolveToolchain } from "./toolchain-provider.js";
22
22
  import { readIcon, IconError } from "./icon.js";
23
23
  import { bundlePathFor, packageMacApp } from "./mac-bundle.js";
@@ -28,6 +28,8 @@ import { ensureAppArtifacts } from "./app-artifacts.js";
28
28
  import { buildCacheKey } from "./build-key.js";
29
29
  import { collectUsage } from "./usage.js";
30
30
  import { resolveLinkFeatures } from "./link-features.js";
31
+ import { isPrebuiltArchivePath, firstFailureLine, looksLikePrebuiltLinkFailure } from "./prebuilt.js";
32
+ import { runtimeLibDirs as defaultRuntimeLibDirs } from "./runtime-lib.js";
31
33
  export { COMPILER_VERSION } from "./version.js";
32
34
  export { compileString, compileEntry, parseEntry } from "./frontend.js";
33
35
  export { RUNTIME_SOURCES } from "./runtime-objects.js";
@@ -62,6 +64,27 @@ function executableName(entry, outDir, explicit) {
62
64
  const suffix = process.platform === "win32" ? ".exe" : "";
63
65
  return resolve(outDir, base + suffix);
64
66
  }
67
+ /**
68
+ * Explain a retry that still fails while prebuilt `gui`/`media` archives are in
69
+ * the link. Unlike `core`/`ext_node`, those bundle SDL3/FFmpeg/glslang and
70
+ * their sources are not part of the npm package, so the source fallback cannot
71
+ * replace them; only a release/toolchain match can.
72
+ */
73
+ function prebuiltFallbackError(error, runtimeObjects, dirs) {
74
+ if (!(error instanceof ToolchainError) || !looksLikePrebuiltLinkFailure(error.stderr))
75
+ return error;
76
+ const runtimeDirs = dirs ?? defaultRuntimeLibDirs();
77
+ const fixed = [...runtimeObjects.featureObjects, ...runtimeObjects.nativeObjects].filter((object) => isPrebuiltArchivePath(object, runtimeDirs));
78
+ if (fixed.length === 0)
79
+ return error;
80
+ const archives = [...new Set(fixed.map((object) => basename(object)))].join(", ");
81
+ return new ToolchainError(error.command, error.status, `${error.stderr}\n` +
82
+ `The remaining prebuilt archives (${archives}) come from the @xbintsc/${platformSlug()} ` +
83
+ "package. Unlike the C runtime, they bundle SDL3/FFmpeg, whose sources are not shipped " +
84
+ "in the npm package, so they cannot be rebuilt here.\n" +
85
+ "Build with the Xcode Command Line Tools / Visual Studio C++ toolset the release was built " +
86
+ "with, or use a release archive built for this machine.");
87
+ }
65
88
  export function build(entryPath, options = {}) {
66
89
  const runner = options.runner ?? realRunner;
67
90
  const registry = options.extensions ?? createDefaultRegistry();
@@ -223,6 +246,7 @@ export function build(entryPath, options = {}) {
223
246
  objectPath,
224
247
  optimize,
225
248
  env: toolchain.env,
249
+ sdkRoot: toolchain.sdkRoot,
226
250
  debug: options.debug === true,
227
251
  lto,
228
252
  ...(pgo ? { pgo, pgoDir } : {}),
@@ -233,21 +257,31 @@ export function build(entryPath, options = {}) {
233
257
  cache.save();
234
258
  return { outputPath, irPath, cached: false, diagnostics: [], ir, timings };
235
259
  }
236
- const runtimeStarted = Date.now();
237
- const { runtimeObjects, extensionObjects, featureObjects, nativeObjects } = ensureRuntimeObjects({
238
- runner,
239
- clang,
240
- runtimeDir,
241
- cacheDir,
242
- registry,
243
- preferPrebuilt: resolvePreferPrebuilt(options.preferPrebuilt) && !lto && pgo === undefined,
244
- env: toolchain.env,
245
- lto,
246
- pgo,
247
- pgoDir,
248
- features: linkFeatures,
249
- });
250
- timings.push({ phase: "runtime", ms: Date.now() - runtimeStarted });
260
+ /* The runtime is assembled before the app artifacts so a failed prebuilt
261
+ * link can be retried with the same artifact inputs. */
262
+ const runtimeLibDirs = options.runtimeLibDirs;
263
+ const preferPrebuilt = resolvePreferPrebuilt(options.preferPrebuilt) && !lto && pgo === undefined;
264
+ const assembleRuntime = (usePrebuilt) => {
265
+ const started = Date.now();
266
+ const assembled = ensureRuntimeObjects({
267
+ runner,
268
+ clang,
269
+ runtimeDir,
270
+ cacheDir,
271
+ registry,
272
+ preferPrebuilt: usePrebuilt,
273
+ env: toolchain.env,
274
+ sdkRoot: toolchain.sdkRoot,
275
+ lto,
276
+ pgo,
277
+ pgoDir,
278
+ features: linkFeatures,
279
+ ...(runtimeLibDirs !== undefined ? { runtimeLibDirs } : {}),
280
+ });
281
+ timings.push({ phase: "runtime", ms: Date.now() - started });
282
+ return assembled;
283
+ };
284
+ let assembled = assembleRuntime(preferPrebuilt);
251
285
  const artifacts = ensureAppArtifacts({
252
286
  runner,
253
287
  clang,
@@ -256,48 +290,109 @@ export function build(entryPath, options = {}) {
256
290
  app,
257
291
  icon,
258
292
  env: toolchain.env,
293
+ sdkRoot: toolchain.sdkRoot,
259
294
  verbose: options.verbose,
260
295
  });
261
296
  if (artifacts.iconError !== undefined) {
262
297
  diagnostics.error(DiagnosticCode.ToolchainError, artifacts.iconError);
263
298
  return { outputPath, irPath, cached: false, diagnostics: diagnostics.diagnostics, ir };
264
299
  }
265
- const linkStarted = Date.now();
266
- link(runner, {
267
- clang,
268
- objectPaths: [
269
- objectPath,
270
- /* Feature archives come after their bridges (which reference the
271
- * implementation) and before the extensions' own archives (`gui.a`
272
- * provides symbols the bridges call back into). `Set` keeps that order
273
- * and drops an archive two features or an extension share. */
274
- ...new Set([
275
- ...runtimeObjects,
276
- ...extensionObjects,
277
- ...featureObjects,
278
- ...nativeObjects,
279
- ...(artifacts.entryObject !== undefined ? [artifacts.entryObject] : []),
280
- ...artifacts.iconObjects,
281
- ]),
282
- ],
283
- outputPath,
284
- linkerFlags: [
285
- ...toolchain.linkerArgs,
286
- ...(process.platform === "win32" ? ["-lws2_32"] : ["-lm", "-pthread"]),
287
- ...registry.linkerFlags(),
288
- ...linkFeatures.flatMap((feature) => feature.linkerFlags),
289
- /* A GUI program is a Windows-subsystem executable: no console window is
290
- * created when it is launched. Console output (stdout/stderr) is lost in
291
- * that subsystem, so a program that wants to report things opts back in
292
- * with `app.console: true`. */
293
- ...artifacts.linkerFlags,
294
- ],
295
- optimize,
296
- env: toolchain.env,
297
- lto,
298
- ...(pgo ? { pgo, pgoDir } : {}),
299
- });
300
- timings.push({ phase: "link", ms: Date.now() - linkStarted });
300
+ const linkAssembled = (runtimeObjects) => {
301
+ const started = Date.now();
302
+ const result = link(runner, {
303
+ clang,
304
+ objectPaths: [
305
+ objectPath,
306
+ /* Feature archives come after their bridges (which reference the
307
+ * implementation) and before the extensions' own archives (`gui.a`
308
+ * provides symbols the bridges call back into). `Set` keeps that order
309
+ * and drops an archive two features or an extension share. */
310
+ ...new Set([
311
+ ...runtimeObjects.runtimeObjects,
312
+ ...runtimeObjects.extensionObjects,
313
+ ...runtimeObjects.featureObjects,
314
+ ...runtimeObjects.nativeObjects,
315
+ ...(artifacts.entryObject !== undefined ? [artifacts.entryObject] : []),
316
+ ...artifacts.iconObjects,
317
+ ]),
318
+ ],
319
+ outputPath,
320
+ linkerFlags: [
321
+ ...toolchain.linkerArgs,
322
+ ...(process.platform === "win32" ? ["-lws2_32"] : ["-lm", "-pthread"]),
323
+ ...registry.linkerFlags(),
324
+ ...linkFeatures.flatMap((feature) => feature.linkerFlags),
325
+ /* A GUI program is a Windows-subsystem executable: no console window is
326
+ * created when it is launched. Console output (stdout/stderr) is lost in
327
+ * that subsystem, so a program that wants to report things opts back in
328
+ * with `app.console: true`. */
329
+ ...artifacts.linkerFlags,
330
+ ],
331
+ optimize,
332
+ env: toolchain.env,
333
+ sdkRoot: toolchain.sdkRoot,
334
+ lto,
335
+ ...(pgo ? { pgo, pgoDir } : {}),
336
+ });
337
+ timings.push({ phase: "link", ms: Date.now() - started });
338
+ return result.stderr;
339
+ };
340
+ /**
341
+ * Retry once with the C runtime compiled from the sources shipped in the
342
+ * package. The failed attempt is not cached: a later toolchain upgrade can
343
+ * use the archive again.
344
+ */
345
+ const retryFromSource = (stderr) => {
346
+ const reason = firstFailureLine(stderr);
347
+ process.stderr.write("xbintsc: the prebuilt runtime archive does not match this toolchain" +
348
+ (reason ? ` (${reason})` : "") +
349
+ "; compiling the C runtime from source\n");
350
+ assembled = assembleRuntime(false);
351
+ try {
352
+ linkAssembled(assembled);
353
+ }
354
+ catch (retryError) {
355
+ throw prebuiltFallbackError(retryError, assembled, runtimeLibDirs);
356
+ }
357
+ };
358
+ const prebuiltInUse = () => preferPrebuilt && assembled.prebuiltArchives.length > 0;
359
+ /** Whether the linker talked about an archive the source fallback can replace. */
360
+ const mentionsRebuildableArchive = (stderr) => assembled.prebuiltArchives.some((archive) => stderr.includes(basename(archive)));
361
+ /* One attempt, captured instead of thrown so the retry below is not itself
362
+ * caught by this decision block. `failed` is explicit because a thrown
363
+ * `undefined` must not look like a successful link. */
364
+ let failed = false;
365
+ let firstError;
366
+ let firstStderr = "";
367
+ try {
368
+ firstStderr = linkAssembled(assembled);
369
+ }
370
+ catch (error) {
371
+ failed = true;
372
+ firstError = error;
373
+ }
374
+ if (failed) {
375
+ const error = firstError;
376
+ /* The release runner's Xcode/SDK or Visual Studio toolset can be newer
377
+ * than this machine's, and then the prebuilt archive cannot be linked
378
+ * (`LNK2038`, `LNK2019`, `Undefined symbols`, ...). The C runtime sources
379
+ * ship with the package, so retry once with them instead of failing on a
380
+ * linker message the user cannot act on. */
381
+ if (!prebuiltInUse() || !(error instanceof ToolchainError) || !looksLikePrebuiltLinkFailure(error.stderr)) {
382
+ throw error;
383
+ }
384
+ retryFromSource(error.stderr);
385
+ }
386
+ else if (prebuiltInUse() &&
387
+ mentionsRebuildableArchive(firstStderr) &&
388
+ looksLikePrebuiltLinkFailure(firstStderr)) {
389
+ /* A successful link can still warn that the archive was built for a newer
390
+ * macOS than the one being targeted: the binary would then claim the local
391
+ * deployment target while calling newer SDK symbols at run time, so rebuild
392
+ * it from source just like an outright failure. Only `core`/`ext_node` can
393
+ * be replaced this way; a warning about `gui.a`/`media.a` is left alone. */
394
+ retryFromSource(firstStderr);
395
+ }
301
396
  const bundlePath = bundle !== undefined
302
397
  ? packageMacApp({
303
398
  executablePath: outputPath,
@@ -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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"}
@@ -52,7 +52,7 @@ export declare function iconSource(icon: IconInfo): string;
52
52
  * Compile the icon into an object exposing {@link ICON_SYMBOLS}. Cached by the
53
53
  * icon contents, so an unchanged icon is never recompiled.
54
54
  */
55
- export declare function ensureIconObject(runner: Runner, clang: string, cacheDir: string, icon: IconInfo, env?: Record<string, string>): string;
55
+ export declare function ensureIconObject(runner: Runner, clang: string, cacheDir: string, icon: IconInfo, env?: Record<string, string>, sdkRoot?: string): string;
56
56
  /**
57
57
  * Wrap a PNG in a minimal ICO container. Vista+ accepts a PNG payload directly,
58
58
  * so the PE resource path needs no BMP encoder.
@@ -15,7 +15,7 @@
15
15
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
16
16
  import { join, resolve } from "node:path";
17
17
  import { hashParts } from "./cache.js";
18
- import { compileC } from "./toolchain.js";
18
+ import { compileC, sysrootFlags } from "./toolchain.js";
19
19
  export class IconError extends Error {
20
20
  constructor(message) {
21
21
  super(message);
@@ -110,14 +110,14 @@ export function iconSource(icon) {
110
110
  * Compile the icon into an object exposing {@link ICON_SYMBOLS}. Cached by the
111
111
  * icon contents, so an unchanged icon is never recompiled.
112
112
  */
113
- export function ensureIconObject(runner, clang, cacheDir, icon, env) {
113
+ export function ensureIconObject(runner, clang, cacheDir, icon, env, sdkRoot) {
114
114
  const key = hashParts(["icon", process.platform, Buffer.from(icon.bytes).toString("base64")]);
115
115
  const sourcePath = join(cacheDir, `icon-${key}.c`);
116
116
  const objectPath = join(cacheDir, `icon-${key}.o`);
117
117
  if (!existsSync(objectPath)) {
118
118
  mkdirSync(cacheDir, { recursive: true });
119
119
  writeFileSync(sourcePath, iconSource(icon));
120
- compileC(runner, clang, sourcePath, objectPath, cacheDir, env);
120
+ compileC(runner, clang, sourcePath, objectPath, cacheDir, env, sysrootFlags(sdkRoot));
121
121
  }
122
122
  return objectPath;
123
123
  }
@@ -1 +1 @@
1
- {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/driver/icon.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"icon.js","sourceRoot":"","sources":["../../../src/driver/icon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * macOS SDK discovery.
3
+ *
4
+ * macOS has no `/usr/include`: every C standard header (`stdio.h`,
5
+ * `setjmp.h`, …) ships inside the SDK, and the linker's `libm`/`libSystem`
6
+ * stubs live there too. clang only searches the SDK when it has a sysroot,
7
+ * which comes from the `/usr/bin/clang` shim, an explicit `-isysroot`, or the
8
+ * `SDKROOT` environment variable.
9
+ *
10
+ * xbintsc invokes clang by absolute path (CI pins it to the oldest installed
11
+ * Xcode so released archives stay linkable by newer ones), which bypasses the
12
+ * shim. Without a sysroot that driver sees neither the SDK nor `/usr/include`,
13
+ * and the first runtime include fails with `'setjmp.h' file not found` — the
14
+ * header is irrelevant, any system header would do. The same gap makes the
15
+ * link fail later with `ld: library 'm' not found`.
16
+ *
17
+ * The SDK is therefore resolved once, with `xcrun`, and handed to clang as
18
+ * `-isysroot` on the command line rather than as `SDKROOT` in the environment:
19
+ * a self-hosted xbintsc binary runs the same driver, and its compiled
20
+ * `spawnSync` ignores `options.env`, so the variable would be lost exactly
21
+ * where the compiler rebuilds itself. An explicit `SDKROOT` in the environment
22
+ * always wins, so a developer can select an older SDK deliberately.
23
+ */
24
+ import type { Runner } from "./toolchain.js";
25
+ /**
26
+ * The macOS SDK `xcrun` reports, or `undefined` when the host is not macOS,
27
+ * the environment already names one, or no usable SDK can be resolved.
28
+ *
29
+ * A missing SDK is not an error here: the build still runs, and clang reports
30
+ * the real problem (or the driver never needed the SDK in the first place).
31
+ */
32
+ export declare function macosSdkRoot(runner: Runner, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform): string | undefined;
@@ -0,0 +1,50 @@
1
+ /**
2
+ * macOS SDK discovery.
3
+ *
4
+ * macOS has no `/usr/include`: every C standard header (`stdio.h`,
5
+ * `setjmp.h`, …) ships inside the SDK, and the linker's `libm`/`libSystem`
6
+ * stubs live there too. clang only searches the SDK when it has a sysroot,
7
+ * which comes from the `/usr/bin/clang` shim, an explicit `-isysroot`, or the
8
+ * `SDKROOT` environment variable.
9
+ *
10
+ * xbintsc invokes clang by absolute path (CI pins it to the oldest installed
11
+ * Xcode so released archives stay linkable by newer ones), which bypasses the
12
+ * shim. Without a sysroot that driver sees neither the SDK nor `/usr/include`,
13
+ * and the first runtime include fails with `'setjmp.h' file not found` — the
14
+ * header is irrelevant, any system header would do. The same gap makes the
15
+ * link fail later with `ld: library 'm' not found`.
16
+ *
17
+ * The SDK is therefore resolved once, with `xcrun`, and handed to clang as
18
+ * `-isysroot` on the command line rather than as `SDKROOT` in the environment:
19
+ * a self-hosted xbintsc binary runs the same driver, and its compiled
20
+ * `spawnSync` ignores `options.env`, so the variable would be lost exactly
21
+ * where the compiler rebuilds itself. An explicit `SDKROOT` in the environment
22
+ * always wins, so a developer can select an older SDK deliberately.
23
+ */
24
+ import { existsSync } from "node:fs";
25
+ /**
26
+ * The macOS SDK `xcrun` reports, or `undefined` when the host is not macOS,
27
+ * the environment already names one, or no usable SDK can be resolved.
28
+ *
29
+ * A missing SDK is not an error here: the build still runs, and clang reports
30
+ * the real problem (or the driver never needed the SDK in the first place).
31
+ */
32
+ export function macosSdkRoot(runner, env = process.env, platform = process.platform) {
33
+ if (platform !== "darwin")
34
+ return undefined;
35
+ if (env.SDKROOT)
36
+ return undefined;
37
+ let result;
38
+ try {
39
+ result = runner.run("xcrun", ["--show-sdk-path"]);
40
+ }
41
+ catch {
42
+ /* A host without xcrun keeps the previous behaviour: let clang decide. */
43
+ return undefined;
44
+ }
45
+ if (result.status !== 0)
46
+ return undefined;
47
+ const sdk = result.stdout.trim();
48
+ return sdk.length > 0 && existsSync(sdk) ? sdk : undefined;
49
+ }
50
+ //# sourceMappingURL=macos-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"macos-sdk.js","sourceRoot":"","sources":["../../../src/driver/macos-sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,MAAyB,OAAO,CAAC,GAAG,EACpC,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,MAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;QAC1E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC"}
@@ -25,6 +25,12 @@ export interface BuildOptions {
25
25
  readonly clang?: string;
26
26
  /** Prefer a prebuilt `runtime/lib/<os>-<arch>/*.a` archive when present (default true). */
27
27
  readonly preferPrebuilt?: boolean;
28
+ /**
29
+ * Folders searched for the prebuilt `core`/`ext_<name>` archives, replacing
30
+ * the default (`runtime/lib/<os>-<arch>` plus the installed platform
31
+ * package). Mostly useful for tests and embedding tools.
32
+ */
33
+ readonly runtimeLibDirs?: readonly string[];
28
34
  readonly write?: boolean;
29
35
  /** Application icon embedded into the binary (shorthand for `app.icon`). */
30
36
  readonly icon?: string;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Oldest platform versions xbintsc supports, and the baseline every released
3
+ * artifact is built against.
4
+ *
5
+ * The prebuilt runtime archives (`core`, `ext_node`, `gui`, `media`) and the
6
+ * self-hosted compiler are built by CI with the **oldest toolchain each host
7
+ * still offers**, targeting the floors below. A newer Xcode/Visual Studio on a
8
+ * user's machine can link those older objects, but the reverse is what fails
9
+ * (`LNK2038`, `LNK2019`, `Undefined symbols`, `was built for newer macOS
10
+ * version`), which is why the direction matters.
11
+ *
12
+ * These values are the single source of truth for the archive build scripts,
13
+ * `xbintsc doctor` and `doc/requirements.md`.
14
+ */
15
+ /** Deployment target for every macOS artifact (also the Apple Silicon floor). */
16
+ export declare const MACOS_MINIMUM_VERSION = "11.0";
17
+ /**
18
+ * Oldest Windows version the prebuilt objects and the compiler target.
19
+ *
20
+ * Windows 10 was the floor while the release jobs ran on `windows-2022`
21
+ * (VS 2022 / MSVC v143). Those images cannot assemble a release: their bundled
22
+ * `tar` has no built-in zstd, so `tar --zstd` hands compression to an external
23
+ * program the step waits on forever. The release jobs therefore run on
24
+ * `windows-2025`, whose toolset targets Windows 11, and the supported floor
25
+ * moved with them.
26
+ */
27
+ export declare const WINDOWS_MINIMUM_VERSION = "11";
28
+ /**
29
+ * glibc the release archives are built and tested against: the GitHub
30
+ * `ubuntu-24.04` image. Older distributions may link the npm package's
31
+ * archives, but only this floor is supported.
32
+ */
33
+ export declare const LINUX_MINIMUM_GLIBC = "2.39";
34
+ /** Human-readable support floor for the host running the compiler. */
35
+ export declare function supportFloor(platform?: NodeJS.Platform): string;
36
+ /**
37
+ * Make a macOS archive build target {@link MACOS_MINIMUM_VERSION}.
38
+ *
39
+ * Clang's Darwin driver reads `MACOSX_DEPLOYMENT_TARGET`, and CMake reads it as
40
+ * the default for `CMAKE_OSX_DEPLOYMENT_TARGET`; setting both keeps the direct
41
+ * engine compiles, the vendored CMake builds and FFmpeg's configure on the same
42
+ * floor. An explicit value in the environment still wins, so a developer can
43
+ * target an even older macOS deliberately. No-op on the other hosts.
44
+ */
45
+ export declare function applyMacosDeploymentTarget(platform?: NodeJS.Platform): void;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Oldest platform versions xbintsc supports, and the baseline every released
3
+ * artifact is built against.
4
+ *
5
+ * The prebuilt runtime archives (`core`, `ext_node`, `gui`, `media`) and the
6
+ * self-hosted compiler are built by CI with the **oldest toolchain each host
7
+ * still offers**, targeting the floors below. A newer Xcode/Visual Studio on a
8
+ * user's machine can link those older objects, but the reverse is what fails
9
+ * (`LNK2038`, `LNK2019`, `Undefined symbols`, `was built for newer macOS
10
+ * version`), which is why the direction matters.
11
+ *
12
+ * These values are the single source of truth for the archive build scripts,
13
+ * `xbintsc doctor` and `doc/requirements.md`.
14
+ */
15
+ /** Deployment target for every macOS artifact (also the Apple Silicon floor). */
16
+ export const MACOS_MINIMUM_VERSION = "11.0";
17
+ /**
18
+ * Oldest Windows version the prebuilt objects and the compiler target.
19
+ *
20
+ * Windows 10 was the floor while the release jobs ran on `windows-2022`
21
+ * (VS 2022 / MSVC v143). Those images cannot assemble a release: their bundled
22
+ * `tar` has no built-in zstd, so `tar --zstd` hands compression to an external
23
+ * program the step waits on forever. The release jobs therefore run on
24
+ * `windows-2025`, whose toolset targets Windows 11, and the supported floor
25
+ * moved with them.
26
+ */
27
+ export const WINDOWS_MINIMUM_VERSION = "11";
28
+ /**
29
+ * glibc the release archives are built and tested against: the GitHub
30
+ * `ubuntu-24.04` image. Older distributions may link the npm package's
31
+ * archives, but only this floor is supported.
32
+ */
33
+ export const LINUX_MINIMUM_GLIBC = "2.39";
34
+ /** Human-readable support floor for the host running the compiler. */
35
+ export function supportFloor(platform = process.platform) {
36
+ switch (platform) {
37
+ case "darwin":
38
+ return `macOS ${MACOS_MINIMUM_VERSION}+`;
39
+ case "win32":
40
+ return `Windows ${WINDOWS_MINIMUM_VERSION}+`;
41
+ case "linux":
42
+ return `glibc ${LINUX_MINIMUM_GLIBC}+`;
43
+ default:
44
+ return `${platform} (unverified)`;
45
+ }
46
+ }
47
+ /**
48
+ * Make a macOS archive build target {@link MACOS_MINIMUM_VERSION}.
49
+ *
50
+ * Clang's Darwin driver reads `MACOSX_DEPLOYMENT_TARGET`, and CMake reads it as
51
+ * the default for `CMAKE_OSX_DEPLOYMENT_TARGET`; setting both keeps the direct
52
+ * engine compiles, the vendored CMake builds and FFmpeg's configure on the same
53
+ * floor. An explicit value in the environment still wins, so a developer can
54
+ * target an even older macOS deliberately. No-op on the other hosts.
55
+ */
56
+ export function applyMacosDeploymentTarget(platform = process.platform) {
57
+ if (platform !== "darwin")
58
+ return;
59
+ if (!process.env.MACOSX_DEPLOYMENT_TARGET) {
60
+ process.env.MACOSX_DEPLOYMENT_TARGET = MACOS_MINIMUM_VERSION;
61
+ }
62
+ if (!process.env.CMAKE_OSX_DEPLOYMENT_TARGET) {
63
+ process.env.CMAKE_OSX_DEPLOYMENT_TARGET = MACOS_MINIMUM_VERSION;
64
+ }
65
+ }
66
+ //# sourceMappingURL=platform-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-support.js","sourceRoot":"","sources":["../../../src/driver/platform-support.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,WAA4B,OAAO,CAAC,QAAQ;IACvE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,SAAS,qBAAqB,GAAG,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,WAAW,uBAAuB,GAAG,CAAC;QAC/C,KAAK,OAAO;YACV,OAAO,SAAS,mBAAmB,GAAG,CAAC;QACzC;YACE,OAAO,GAAG,QAAQ,eAAe,CAAC;IACtC,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAA4B,OAAO,CAAC,QAAQ;IACrF,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAClC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,qBAAqB,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,qBAAqB,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Detecting a prebuilt runtime archive that this machine's toolchain cannot
3
+ * link.
4
+ *
5
+ * The optional `@xbintsc/<os>-<arch>` package carries archives compiled on the
6
+ * release runner (`core.a`, `ext_node.a`, `gui.a`, `media.a`). Its Xcode
7
+ * Command Line Tools or Visual Studio C++ toolset can be **newer** than the
8
+ * one on the machine that runs the build: a linker can then reject the archive
9
+ * with unresolved symbols (`LNK2038`/`LNK2019`, `Undefined symbols`,
10
+ * `undefined reference`) or `was built for newer macOS version`.
11
+ *
12
+ * The driver answers that with one automatic retry that compiles the runtime
13
+ * from the sources shipped in the npm package. Its decision is based on the
14
+ * linker's own output rather than a version comparison, because an archive does
15
+ * not record the toolset that produced it portably: Mach-O objects carry
16
+ * `LC_BUILD_VERSION`, COFF objects do not carry an MSVC toolset version.
17
+ *
18
+ * `gui.a`/`media.a` are exempt: they bundle SDL3/FFmpeg/glslang, whose sources
19
+ * are not part of the npm package, so they cannot be rebuilt from it.
20
+ */
21
+ /** True when `candidate` is a static archive that sits in one of `dirs`. */
22
+ export declare function isPrebuiltArchivePath(candidate: string, dirs: readonly string[]): boolean;
23
+ /** Whether a failed link's stderr looks like a toolchain/archive mismatch. */
24
+ export declare function looksLikePrebuiltLinkFailure(stderr: string): boolean;
25
+ /** First non-empty line of a command's stderr, for a one-line build notice. */
26
+ export declare function firstFailureLine(stderr: string): string;