@scriptc/compiler 0.0.36 → 0.1.1

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 (113) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +7 -5
  2. package/ambient/scriptc-overrides.d.ts +0 -7
  3. package/ambient/scriptc.d.ts +1 -1
  4. package/dist/backend/c/exprs.js +69 -45
  5. package/dist/backend/c/exprs.js.map +1 -1
  6. package/dist/backend/c/may-throw.js +3 -0
  7. package/dist/backend/c/may-throw.js.map +1 -1
  8. package/dist/backend/c/stmts.js +18 -0
  9. package/dist/backend/c/stmts.js.map +1 -1
  10. package/dist/backend/c/walkers.js +5 -7
  11. package/dist/backend/c/walkers.js.map +1 -1
  12. package/dist/backend/external-c.d.ts +33 -0
  13. package/dist/backend/external-c.js +51 -0
  14. package/dist/backend/external-c.js.map +1 -0
  15. package/dist/backend/link-plan.d.ts +37 -0
  16. package/dist/backend/link-plan.js +26 -0
  17. package/dist/backend/link-plan.js.map +1 -0
  18. package/dist/backend/linker.d.ts +22 -0
  19. package/dist/backend/linker.js +236 -0
  20. package/dist/backend/linker.js.map +1 -0
  21. package/dist/backend/llvm/dyn.js +7 -0
  22. package/dist/backend/llvm/dyn.js.map +1 -1
  23. package/dist/backend/llvm/emitter.js +34 -7
  24. package/dist/backend/llvm/emitter.js.map +1 -1
  25. package/dist/backend/llvm/expr-containers.js +68 -54
  26. package/dist/backend/llvm/expr-containers.js.map +1 -1
  27. package/dist/backend/llvm/expr-context.d.ts +1 -1
  28. package/dist/backend/llvm/expr-dispatch.js +2 -0
  29. package/dist/backend/llvm/expr-dispatch.js.map +1 -1
  30. package/dist/backend/llvm/expr-primitives.d.ts +1 -1
  31. package/dist/backend/llvm/expr-primitives.js +20 -0
  32. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  33. package/dist/backend/llvm/expr-stream-bridges.js +25 -1
  34. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  35. package/dist/backend/llvm/walkers.js +31 -4
  36. package/dist/backend/llvm/walkers.js.map +1 -1
  37. package/dist/backend/native-codegen.d.ts +8 -1
  38. package/dist/backend/native-codegen.js +39 -25
  39. package/dist/backend/native-codegen.js.map +1 -1
  40. package/dist/backend/native-codegen.test.js +42 -4
  41. package/dist/backend/native-codegen.test.js.map +1 -1
  42. package/dist/backend/native-link-info.d.ts +1 -1
  43. package/dist/backend/native-link-info.js +42 -18
  44. package/dist/backend/native-link-info.js.map +1 -1
  45. package/dist/backend/native-toolchain.test.js +5 -1
  46. package/dist/backend/native-toolchain.test.js.map +1 -1
  47. package/dist/backend/runtime-pack-targets.test.d.ts +1 -0
  48. package/dist/backend/runtime-pack-targets.test.js +54 -0
  49. package/dist/backend/runtime-pack-targets.test.js.map +1 -0
  50. package/dist/backend/runtime-pack.d.ts +5 -30
  51. package/dist/backend/runtime-pack.js +46 -141
  52. package/dist/backend/runtime-pack.js.map +1 -1
  53. package/dist/backend/runtime-pack.test.js +49 -14
  54. package/dist/backend/runtime-pack.test.js.map +1 -1
  55. package/dist/backend/targets.d.ts +63 -17
  56. package/dist/backend/targets.js +251 -35
  57. package/dist/backend/targets.js.map +1 -1
  58. package/dist/backend/targets.test.js +27 -5
  59. package/dist/backend/targets.test.js.map +1 -1
  60. package/dist/coverage/surface-manifest.js +10 -1
  61. package/dist/coverage/surface-manifest.js.map +1 -1
  62. package/dist/frontend/lowering/array-values.d.ts +8 -0
  63. package/dist/frontend/lowering/array-values.js +60 -0
  64. package/dist/frontend/lowering/array-values.js.map +1 -0
  65. package/dist/frontend/lowering/lower-array-sort.d.ts +22 -0
  66. package/dist/frontend/lowering/lower-array-sort.js +619 -0
  67. package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
  68. package/dist/frontend/lowering/lower-builtins.js +164 -4
  69. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  70. package/dist/frontend/lowering/lower-calls.d.ts +3 -4
  71. package/dist/frontend/lowering/lower-calls.js +260 -27
  72. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  73. package/dist/frontend/lowering/lower-containers.js +728 -655
  74. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  75. package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
  76. package/dist/frontend/lowering/lower-exprs.js +769 -101
  77. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  78. package/dist/frontend/lowering/lower-inspect.js +47 -33
  79. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  80. package/dist/frontend/lowering/lower-island.d.ts +5 -4
  81. package/dist/frontend/lowering/lower-island.js +10 -5
  82. package/dist/frontend/lowering/lower-island.js.map +1 -1
  83. package/dist/frontend/lowering/lower-server.js +10 -0
  84. package/dist/frontend/lowering/lower-server.js.map +1 -1
  85. package/dist/frontend/lowering/lower-stmts.js +302 -71
  86. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  87. package/dist/frontend/lowering/lowerer.d.ts +74 -2
  88. package/dist/frontend/lowering/lowerer.js +1087 -10
  89. package/dist/frontend/lowering/lowerer.js.map +1 -1
  90. package/dist/frontend/lowering/surfaces.d.ts +10 -2
  91. package/dist/frontend/lowering/surfaces.js +15 -3
  92. package/dist/frontend/lowering/surfaces.js.map +1 -1
  93. package/dist/index.d.ts +3 -3
  94. package/dist/index.js +45 -23
  95. package/dist/index.js.map +1 -1
  96. package/dist/ir/ir.d.ts +65 -11
  97. package/dist/ir/ir.js +25 -25
  98. package/dist/ir/ir.js.map +1 -1
  99. package/dist/ir/serialize.d.ts +1 -1
  100. package/dist/ir/serialize.js +1 -1
  101. package/dist/ir/validate.js +84 -37
  102. package/dist/ir/validate.js.map +1 -1
  103. package/dist/library/fence-eval.js +3 -1
  104. package/dist/library/fence-eval.js.map +1 -1
  105. package/dist/library/int-infer.js +12 -1
  106. package/dist/library/int-infer.js.map +1 -1
  107. package/dist/library/int-infer.test.js +4 -4
  108. package/dist/library/library-cache.test.js +5 -5
  109. package/dist/startup-cache.d.ts +9 -1
  110. package/dist/startup-cache.js +16 -1
  111. package/dist/startup-cache.js.map +1 -1
  112. package/package.json +17 -4
  113. package/surface-manifest.json +5 -5
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,54 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { dirname, join } from "node:path";
5
+ import { afterEach, expect, test } from "vitest";
6
+ import { loadRuntimePack } from "./runtime-pack.js";
7
+ import { LINUX_ARM64_GNU_TARGET, LINUX_ARM64_MUSL_TARGET, LINUX_X64_GNU_TARGET, LINUX_X64_MUSL_TARGET, MACOS_X64_TARGET, WASM32_WASI_TARGET, WINDOWS_X64_MSVC_TARGET, } from "./targets.js";
8
+ import { compilerReleaseVersion } from "../library/sidecar.js";
9
+ const dirs = [];
10
+ afterEach(async () => Promise.all(dirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true }))));
11
+ async function fixture(target) {
12
+ const root = await mkdtemp(join(tmpdir(), "scriptc-runtime-pack-target-"));
13
+ dirs.push(root);
14
+ const packagePath = join(root, "package.json");
15
+ const bytes = Buffer.from("runtime object");
16
+ const artifact = { path: "artifacts/runtime.o", sha256: createHash("sha256").update(bytes).digest("hex"), size: bytes.length };
17
+ await mkdir(dirname(join(root, artifact.path)), { recursive: true });
18
+ await Promise.all([
19
+ writeFile(join(root, artifact.path), bytes),
20
+ writeFile(join(root, "LICENSE"), "license"),
21
+ writeFile(packagePath, JSON.stringify({ name: target.runtimePackPackage, version: compilerReleaseVersion() })),
22
+ ]);
23
+ const manifest = {
24
+ schema: "scriptc.runtime-pack.v1", format: 1, package: target.runtimePackPackage, version: compilerReleaseVersion(),
25
+ target: { name: target.name, llvm_triple: target.llvmTriple, architecture: target.architecture, object_format: target.objectFormat, minimum_os: target.minimumOs },
26
+ runtime_abi: { version: 1, marker: "scr_runtime_abi_v1" },
27
+ compiler: { command: "fixture", identity: "fixture", target: target.llvmTriple },
28
+ macros: { executable: [], excluded: ["SCR_LIB"], sanitizer: "external-toolchain-required" },
29
+ flavors: {
30
+ release: { optimization: "-O2", runtime_units: [{ source: "scr_runtime.c", predicate: true, variants: [{ id: "default", when: {}, defines: [], ...artifact }] }] },
31
+ dev: { optimization: "-O0", runtime_units: [{ source: "scr_runtime.c", predicate: true, variants: [{ id: "default", when: {}, defines: [], ...artifact }] }] },
32
+ },
33
+ archives: [], system_libraries: [], licenses: [{ path: "LICENSE", license: "fixture" }],
34
+ };
35
+ await writeFile(join(root, "runtime-pack.json"), JSON.stringify(manifest));
36
+ return { packagePath };
37
+ }
38
+ const features = {
39
+ dynamic: false, regex: false, copying: false, textDecoderLegacy: false, fileHandle: false,
40
+ fetch: false, netIsland: false, zlib: false, assert: false, inspect: false, dynInvoke: false,
41
+ dc: false, dynAsync: false, events: false, emitter: false, symbol: false, searchParams: false,
42
+ qs: false, parseArgs: false, stream: false, net: false, http: false, http2: false,
43
+ dgram: false, watch: false, foreignFfi: false, nodeTest: false, tls: false, tlsCa: false,
44
+ };
45
+ test.each([
46
+ MACOS_X64_TARGET, LINUX_X64_GNU_TARGET, LINUX_ARM64_GNU_TARGET,
47
+ WINDOWS_X64_MSVC_TARGET, LINUX_X64_MUSL_TARGET, LINUX_ARM64_MUSL_TARGET, WASM32_WASI_TARGET,
48
+ ])("runtime-pack validation selects the exact $name package", async (target) => {
49
+ const pack = await fixture(target);
50
+ const result = await loadRuntimePack({ target, features, optimization: "release", resolver: () => pack.packagePath });
51
+ expect(result.manifest.package).toBe(target.runtimePackPackage);
52
+ expect(result.manifest.target).toMatchObject({ name: target.name, architecture: target.architecture, object_format: target.objectFormat });
53
+ });
54
+ //# sourceMappingURL=runtime-pack-targets.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pack-targets.test.js","sourceRoot":"","sources":["../../src/backend/runtime-pack-targets.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
- import type { FfiProfile } from "../ffi/ffi-manifest.js";
2
1
  import type { NativeLinkFeatures } from "./native-link-info.js";
3
2
  import { type NativeArtifactDependency } from "./native-toolchain.js";
4
3
  import type { NativeTargetSpec } from "./targets.js";
@@ -36,7 +35,7 @@ export interface RuntimePackManifest {
36
35
  target: {
37
36
  name: NativeTargetSpec["name"];
38
37
  llvm_triple: NativeTargetSpec["llvmTriple"];
39
- architecture: "arm64";
38
+ architecture: NativeTargetSpec["architecture"];
40
39
  object_format: NativeTargetSpec["objectFormat"];
41
40
  minimum_os: NativeTargetSpec["minimumOs"];
42
41
  };
@@ -92,17 +91,6 @@ export interface RuntimePackSelection {
92
91
  selectedRuntimeArtifacts: RuntimePackArtifact[];
93
92
  selectedArchiveArtifacts: RuntimePackArtifact[];
94
93
  }
95
- export interface RuntimeLinkPlan {
96
- target: NativeTargetSpec;
97
- outputPath: string;
98
- inputs: string[];
99
- systemLibraries: string[];
100
- driverFlags: string[];
101
- dependencyPaths: string[];
102
- /** Inputs already snapshotted by the stage that produced the program object. */
103
- programObjectDependencies: NativeArtifactDependency[];
104
- runtimePack: RuntimePackSelection;
105
- }
106
94
  export declare class RuntimePackError extends Error {
107
95
  readonly code: "missing" | "invalid" | "unsupported";
108
96
  constructor(message: string, code: "missing" | "invalid" | "unsupported");
@@ -110,6 +98,10 @@ export declare class RuntimePackError extends Error {
110
98
  export declare function parseRuntimePackManifest(value: unknown): RuntimePackManifest;
111
99
  export declare function effectiveRuntimeFeatures(features: NativeLinkFeatures, env?: NodeJS.ProcessEnv): RuntimeFeatureSet;
112
100
  export declare function evaluateRuntimePredicate(predicate: RuntimePredicate, features: object): boolean;
101
+ export declare function stageRuntimePackArtifacts(selection: RuntimePackSelection): Promise<{
102
+ root: string;
103
+ replacements: Map<string, string>;
104
+ }>;
113
105
  export declare function loadRuntimePack(options: {
114
106
  target: NativeTargetSpec;
115
107
  features: NativeLinkFeatures;
@@ -117,21 +109,4 @@ export declare function loadRuntimePack(options: {
117
109
  env?: NodeJS.ProcessEnv;
118
110
  resolver?: (specifier: string) => string;
119
111
  }): Promise<RuntimePackSelection>;
120
- export declare function createRuntimeLinkPlan(options: {
121
- target: NativeTargetSpec;
122
- programObject: string;
123
- outPath: string;
124
- features: NativeLinkFeatures;
125
- ffi: FfiProfile | null;
126
- optimization: "release" | "dev";
127
- programObjectDependencies?: readonly NativeArtifactDependency[];
128
- env?: NodeJS.ProcessEnv;
129
- resolver?: (specifier: string) => string;
130
- }): Promise<RuntimeLinkPlan>;
131
- export declare function linkRuntimePackExecutable(plan: RuntimeLinkPlan, options?: {
132
- linker?: string;
133
- onArtifactReady?: (artifact: {
134
- dependencies: NativeArtifactDependency[];
135
- }) => Promise<void>;
136
- }): Promise<void>;
137
112
  export {};
@@ -1,14 +1,11 @@
1
- import { execFile } from "node:child_process";
2
1
  import { createHash } from "node:crypto";
3
2
  import { createRequire } from "node:module";
4
- import { mkdir, mkdtemp, readFile, realpath, rename, rm, stat, writeFile } from "node:fs/promises";
3
+ import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
5
4
  import { tmpdir } from "node:os";
6
- import { basename, dirname, join, resolve } from "node:path";
7
- import { promisify } from "node:util";
5
+ import { dirname, join } from "node:path";
8
6
  import { compilerReleaseVersion } from "../library/sidecar.js";
9
- import { CcCompileError, executableSectionEliminationFlags, nativeArtifactDependenciesStillMatch, nativeLinkerDependencyPaths, subprocessFailureDetail, } from "./native-toolchain.js";
7
+ import { nativeArtifactDependenciesStillMatch, } from "./native-toolchain.js";
10
8
  import { RUNTIME_ABI_MARKER, RUNTIME_ABI_VERSION } from "./runtime-abi.js";
11
- const execFileAsync = promisify(execFile);
12
9
  export const RUNTIME_PACK_SCHEMA = "scriptc.runtime-pack.v1";
13
10
  export const RUNTIME_PACK_FORMAT = 1;
14
11
  export class RuntimePackError extends Error {
@@ -68,11 +65,10 @@ export function parseRuntimePackManifest(value) {
68
65
  };
69
66
  if (manifest?.schema !== RUNTIME_PACK_SCHEMA || manifest.format !== RUNTIME_PACK_FORMAT ||
70
67
  typeof manifest.package !== "string" || typeof manifest.version !== "string" ||
71
- target?.name !== "macos-arm64" || target.llvm_triple !== "arm64-apple-macosx14.0.0" ||
72
- target.architecture !== "arm64" || target.object_format !== "macho" || target.minimum_os !== "14.0" ||
68
+ !isRuntimePackTarget(target) ||
73
69
  abi?.version !== RUNTIME_ABI_VERSION || abi.marker !== RUNTIME_ABI_MARKER ||
74
70
  typeof compiler?.command !== "string" || typeof compiler.identity !== "string" ||
75
- compiler.target !== target.llvm_triple ||
71
+ compiler.target !== (target?.llvm_triple) ||
76
72
  !Array.isArray(macros?.executable) || !macros.executable.every((entry) => typeof entry === "string") ||
77
73
  !Array.isArray(macros.excluded) || !macros.excluded.every((entry) => typeof entry === "string") ||
78
74
  macros.sanitizer !== "external-toolchain-required" ||
@@ -92,6 +88,14 @@ export function parseRuntimePackManifest(value) {
92
88
  throw new RuntimePackError("installed runtime-pack.json is malformed or incompatible", "invalid");
93
89
  return manifest;
94
90
  }
91
+ function isRuntimePackTarget(target) {
92
+ return target !== null &&
93
+ typeof target.name === "string" &&
94
+ typeof target.llvm_triple === "string" &&
95
+ (target.architecture === "arm64" || target.architecture === "x64" || target.architecture === "wasm32") &&
96
+ (target.object_format === "macho" || target.object_format === "elf" || target.object_format === "coff" || target.object_format === "wasm") &&
97
+ typeof target.minimum_os === "string";
98
+ }
95
99
  export function effectiveRuntimeFeatures(features, env = process.env) {
96
100
  const curlFetch = features.dynamic && features.fetch && env["SCRIPTC_FETCH_CURL"] === "1";
97
101
  if (curlFetch) {
@@ -147,7 +151,36 @@ async function verifyArtifact(root, artifact) {
147
151
  }
148
152
  return path;
149
153
  }
150
- async function stageRuntimePackArtifacts(selection) {
154
+ async function snapshotDependencies(paths) {
155
+ const { lstat, realpath, stat } = await import("node:fs/promises");
156
+ const { resolve } = await import("node:path");
157
+ return Promise.all([...new Set(paths.map((path) => resolve(path)))].sort().map(async (path) => {
158
+ const info = await lstat(path);
159
+ const kind = info.isFile() ? "file" : info.isDirectory() ? "directory" : "symlink";
160
+ const dependency = {
161
+ path,
162
+ kind,
163
+ dev: Number(info.dev), ino: Number(info.ino), size: Number(info.size),
164
+ mtimeMs: Number(info.mtimeMs), ctimeMs: Number(info.ctimeMs),
165
+ };
166
+ if (kind === "symlink") {
167
+ const targetPath = await realpath(path);
168
+ const target = await stat(path);
169
+ const targetKind = target.isFile() ? "file" : target.isDirectory() ? "directory" : null;
170
+ if (targetKind === null)
171
+ throw new Error(`unsupported runtime-pack dependency: ${path}`);
172
+ dependency.targetPath = targetPath;
173
+ dependency.targetKind = targetKind;
174
+ dependency.targetDev = Number(target.dev);
175
+ dependency.targetIno = Number(target.ino);
176
+ dependency.targetSize = Number(target.size);
177
+ dependency.targetMtimeMs = Number(target.mtimeMs);
178
+ dependency.targetCtimeMs = Number(target.ctimeMs);
179
+ }
180
+ return dependency;
181
+ }));
182
+ }
183
+ export async function stageRuntimePackArtifacts(selection) {
151
184
  if (!(await nativeArtifactDependenciesStillMatch(selection.sourceDependencies).catch(() => false))) {
152
185
  throw new RuntimePackError("runtime pack changed after artifact selection", "invalid");
153
186
  }
@@ -182,16 +215,14 @@ async function stageRuntimePackArtifacts(selection) {
182
215
  }
183
216
  }
184
217
  export async function loadRuntimePack(options) {
185
- const packageName = options.target.name === "macos-arm64"
186
- ? "@scriptc/runtime-darwin-arm64"
187
- : (() => { throw new RuntimePackError(`no runtime pack supports ${options.target.name}`, "unsupported"); })();
218
+ const packageName = options.target.runtimePackPackage;
188
219
  const resolvePackageJson = options.resolver ?? ((specifier) => createRequire(import.meta.url).resolve(specifier));
189
220
  let packagePath;
190
221
  try {
191
222
  packagePath = resolvePackageJson(`${packageName}/package.json`);
192
223
  }
193
224
  catch {
194
- throw new RuntimePackError(`precompiled runtime package ${packageName} is not installed; reinstall scriptc with optional dependencies enabled for macOS arm64`, "missing");
225
+ throw new RuntimePackError(`precompiled runtime package ${packageName} is not installed; reinstall scriptc with optional dependencies enabled for ${options.target.name}`, "missing");
195
226
  }
196
227
  const root = dirname(packagePath);
197
228
  const manifestPath = join(root, "runtime-pack.json");
@@ -221,6 +252,7 @@ export async function loadRuntimePack(options) {
221
252
  }
222
253
  if (manifest.target.name !== options.target.name ||
223
254
  manifest.target.llvm_triple !== options.target.llvmTriple ||
255
+ manifest.target.architecture !== options.target.architecture ||
224
256
  manifest.target.object_format !== options.target.objectFormat ||
225
257
  manifest.target.minimum_os !== options.target.minimumOs)
226
258
  throw new RuntimePackError(`runtime pack does not support target ${options.target.name}`, "invalid");
@@ -270,131 +302,4 @@ export async function loadRuntimePack(options) {
270
302
  selectedArchiveArtifacts: selectedArchives,
271
303
  };
272
304
  }
273
- export async function createRuntimeLinkPlan(options) {
274
- const runtimePack = await loadRuntimePack(options);
275
- return {
276
- target: options.target,
277
- outputPath: options.outPath,
278
- inputs: [
279
- options.programObject,
280
- ...(options.ffi?.libraries ?? []),
281
- ...runtimePack.runtimeObjects,
282
- ...runtimePack.archives,
283
- ],
284
- systemLibraries: [...new Set([
285
- ...(options.ffi?.systemLibraries ?? []),
286
- ...runtimePack.systemLibraries,
287
- ])],
288
- driverFlags: [
289
- "-target", options.target.llvmTriple, "-pthread",
290
- ...executableSectionEliminationFlags("darwin").link,
291
- ],
292
- dependencyPaths: [
293
- ...runtimePack.dependencyPaths,
294
- ...(options.ffi?.libraries ?? []),
295
- ],
296
- programObjectDependencies: [...(options.programObjectDependencies ?? [])],
297
- runtimePack,
298
- };
299
- }
300
- async function snapshotDependencies(paths) {
301
- const { lstat } = await import("node:fs/promises");
302
- return Promise.all([...new Set(paths.map((path) => resolve(path)))].sort().map(async (path) => {
303
- const info = await lstat(path);
304
- const kind = info.isFile() ? "file" : info.isDirectory() ? "directory" : "symlink";
305
- const dependency = {
306
- path,
307
- kind,
308
- dev: Number(info.dev), ino: Number(info.ino), size: Number(info.size),
309
- mtimeMs: Number(info.mtimeMs), ctimeMs: Number(info.ctimeMs),
310
- };
311
- if (kind === "symlink") {
312
- const targetPath = await realpath(path);
313
- const target = await stat(path);
314
- const targetKind = target.isFile() ? "file" : target.isDirectory() ? "directory" : null;
315
- if (targetKind === null)
316
- throw new Error(`unsupported linker dependency: ${path}`);
317
- dependency.targetPath = targetPath;
318
- dependency.targetKind = targetKind;
319
- dependency.targetDev = Number(target.dev);
320
- dependency.targetIno = Number(target.ino);
321
- dependency.targetSize = Number(target.size);
322
- dependency.targetMtimeMs = Number(target.mtimeMs);
323
- dependency.targetCtimeMs = Number(target.ctimeMs);
324
- }
325
- return dependency;
326
- }));
327
- }
328
- export async function linkRuntimePackExecutable(plan, options = {}) {
329
- const linker = options.linker ?? process.env["SCRIPTC_LINKER"] ?? "clang";
330
- // ld64 derives an ad-hoc signature identifier from the output basename.
331
- // Keep that basename caller-visible while a private sibling directory gives
332
- // the link its own inode and preserves an atomic same-filesystem install.
333
- const privateOutRoot = await mkdtemp(join(dirname(plan.outputPath), ".scriptc-runtime-pack-link-"));
334
- const privateOut = join(privateOutRoot, basename(plan.outputPath));
335
- let stagedRoot = null;
336
- try {
337
- const staged = await stageRuntimePackArtifacts(plan.runtimePack);
338
- stagedRoot = staged.root;
339
- const args = [
340
- ...plan.driverFlags,
341
- ...plan.inputs.map((input) => staged.replacements.get(input) ?? input),
342
- ...plan.systemLibraries.map((name) => `-l${name}`),
343
- "-o", privateOut,
344
- ];
345
- // The pack snapshots bracket both verification passes and private staging;
346
- // the program-object snapshot begins before helper emission. Snapshot the
347
- // remaining cache-bearing inputs before the linker consumes them, then
348
- // require the complete set to remain stable through publication.
349
- const inheritedDependencies = [
350
- ...plan.runtimePack.sourceDependencies,
351
- ...plan.programObjectDependencies,
352
- ];
353
- const inheritedDependencyPaths = new Set(inheritedDependencies.map((dependency) => resolve(dependency.path)));
354
- const additionalDependencyPaths = plan.dependencyPaths.filter((path) => !inheritedDependencyPaths.has(resolve(path)));
355
- const preLinkDependencies = options.onArtifactReady === undefined ||
356
- !(await nativeArtifactDependenciesStillMatch(inheritedDependencies).catch(() => false))
357
- ? null
358
- : await nativeLinkerDependencyPaths(linker, [
359
- ...plan.driverFlags,
360
- ...plan.systemLibraries.map((name) => `-l${name}`),
361
- ])
362
- .then(async (toolchain) => [
363
- ...inheritedDependencies,
364
- ...await snapshotDependencies([...toolchain, ...additionalDependencyPaths]),
365
- ])
366
- .catch(() => null);
367
- await execFileAsync(linker, args);
368
- const output = await stat(privateOut);
369
- if (!output.isFile() || output.size === 0)
370
- throw new Error("linker produced no executable");
371
- await rename(privateOut, plan.outputPath).catch(async () => {
372
- await rm(plan.outputPath, { force: true });
373
- await rename(privateOut, plan.outputPath);
374
- });
375
- if (options.onArtifactReady !== undefined && preLinkDependencies !== null &&
376
- await nativeArtifactDependenciesStillMatch(preLinkDependencies).catch(() => false)) {
377
- // A complete executable cache entry is published only when the driver,
378
- // platform linker, compiler runtime, selected SDK stubs/settings, pack,
379
- // and FFI inputs all remained unchanged across the link. Failure to
380
- // prove any ambient input keeps a correct executable but no complete
381
- // cache.
382
- await options.onArtifactReady({ dependencies: preLinkDependencies }).catch(() => undefined);
383
- }
384
- }
385
- catch (error) {
386
- if (error instanceof CcCompileError || error instanceof RuntimePackError)
387
- throw error;
388
- const detail = subprocessFailureDetail(error);
389
- throw new CcCompileError(linker, detail, `${linker} failed linking ${basename(plan.outputPath)} from the precompiled runtime pack.\n${detail}`);
390
- }
391
- finally {
392
- await Promise.all([
393
- rm(privateOutRoot, { recursive: true, force: true }).catch(() => undefined),
394
- stagedRoot === null
395
- ? Promise.resolve()
396
- : rm(stagedRoot, { recursive: true, force: true }).catch(() => undefined),
397
- ]);
398
- }
399
- }
400
305
  //# sourceMappingURL=runtime-pack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-pack.js","sourceRoot":"","sources":["../../src/backend/runtime-pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EACL,cAAc,EACd,iCAAiC,EACjC,oCAAoC,EACpC,2BAA2B,EAC3B,uBAAuB,GAExB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG3E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAkC,CAAC;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAU,CAAC;AAgG9C,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACH;IAAtC,YAAY,OAAe,EAAW,IAA2C;QAC/E,KAAK,CAAC,OAAO,CAAC,CAAC;QADqB,SAAI,GAAJ,IAAI,CAAuC;QAE/E,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzE,CAAC,CAAC,KAAgC;QAClC,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACtF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAK,IAAI,CAAC,GAAG,CAAe,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CACrG,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,OAAO,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACjF,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;QACpE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG,CAAC,KAAc,EAAE,YAAoB,EAAW,EAAE;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,MAAM,EAAE,YAAY,KAAK,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC;YACjF,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACzB,OAAO,OAAO,IAAI,EAAE,MAAM,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;oBACvE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,EAAE;oBAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;oBACnC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;oBACnC,OAAO,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;wBAClF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,SAAS,CAAC;wBAChE,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC;gBAClG,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;IACP,CAAC,CAAC;IACF,IACE,QAAQ,EAAE,MAAM,KAAK,mBAAmB,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB;QACnF,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;QAC5E,MAAM,EAAE,IAAI,KAAK,aAAa,IAAI,MAAM,CAAC,WAAW,KAAK,0BAA0B;QACnF,MAAM,CAAC,YAAY,KAAK,OAAO,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,IAAI,MAAM,CAAC,UAAU,KAAK,MAAM;QACnG,GAAG,EAAE,OAAO,KAAK,mBAAmB,IAAI,GAAG,CAAC,MAAM,KAAK,kBAAkB;QACzE,OAAO,QAAQ,EAAE,OAAO,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAC9E,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW;QACtC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACpG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QAC/F,MAAM,CAAC,SAAS,KAAK,6BAA6B;QAClD,OAAO,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAC5F,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpG,CAAC,CAAC;QACF,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpF,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC,CAAC;QACF,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;QACpE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,OAAO,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC;IAClF,CAAC,CAAC;QACF,MAAM,IAAI,gBAAgB,CAAC,0DAA0D,EAAE,SAAS,CAAC,CAAC;IACpG,OAAO,QAA0C,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAA4B,EAC5B,MAAyB,OAAO,CAAC,GAAG;IAEpC,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,oBAAoB,CAAC,KAAK,GAAG,CAAC;IAC1F,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,IAAI,gBAAgB,CACxB,6HAA6H,EAC7H,aAAa,CACd,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC;IACnC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,WAAW,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACvE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACzE,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,IAAI,WAAW,IAAI,kBAAkB,CAAC;IACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC;IACtD,OAAO;QACL,GAAG,QAAQ;QACX,WAAW;QACX,kBAAkB;QAClB,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,cAAc;QACd,aAAa,EAAE,QAAQ,CAAC,IAAI,IAAI,WAAW;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,SAA2B,EAC3B,QAAgB;IAEhB,MAAM,MAAM,GAAG,QAAmC,CAAC;IACnD,IAAI,OAAO,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,OAAO,SAAS,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;IACrE,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QACpE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;QAC9D,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACpE,CAAC;AAED,SAAS,aAAa,CAAC,IAAqB,EAAE,QAA2B;IACvE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAC/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAA+B,CAAC,KAAK,QAAQ,CAAC,CACjH,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5G,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,gBAAgB,CAAC,mCAAmC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,QAA6B;IACvE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3G,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,SAA+B;IAItE,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,gBAAgB,CAAC,+CAA+C,EAAE,SAAS,CAAC,CAAC;IACzF,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,4BAA4B,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,GAAG,SAAS,CAAC,wBAAwB;YACrC,GAAG,SAAS,CAAC,wBAAwB;SACtC,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC9C,MAAM,IAAI,gBAAgB,CAAC,qCAAqC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;YACH,IACE,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI;gBAC9B,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,MAAM,EACpE,CAAC;gBACD,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;YACjG,CAAC;YACD,MAAM,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC,CAAC;QACJ,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,gBAAgB,CAAC,uDAAuD,EAAE,SAAS,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC7E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAMrC;IACC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,aAAa;QACvD,CAAC,CAAC,+BAA+B;QACjC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,gBAAgB,CAAC,4BAA4B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChH,MAAM,kBAAkB,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAiB,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC1H,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CACxB,+BAA+B,WAAW,yFAAyF,EACnI,SAAS,CACV,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IACrD,IAAI,oBAAgD,CAAC;IACrD,IAAI,CAAC;QACH,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,WAAW,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,eAAoD,CAAC;IACzD,IAAI,QAA6B,CAAC;IAClC,IAAI,CAAC;QACH,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC9D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SAC1F,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,gBAAgB;YAAE,MAAM,KAAK,CAAC;QACnD,MAAM,IAAI,gBAAgB,CAAC,kBAAkB,WAAW,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IACD,IACE,eAAe,CAAC,IAAI,KAAK,WAAW,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW;QACxE,eAAe,CAAC,OAAO,KAAK,sBAAsB,EAAE,IAAI,QAAQ,CAAC,OAAO,KAAK,sBAAsB,EAAE,EACrG,CAAC;QACD,MAAM,IAAI,gBAAgB,CACxB,2CAA2C,WAAW,IAAI,sBAAsB,EAAE,WAAW,eAAe,CAAC,IAAI,IAAI,eAAe,CAAC,OAAO,EAAE,EAC9I,SAAS,CACV,CAAC;IACJ,CAAC;IACD,IACE,QAAQ,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,IAAI;QAC5C,QAAQ,CAAC,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,UAAU;QACzD,QAAQ,CAAC,MAAM,CAAC,aAAa,KAAK,OAAO,CAAC,MAAM,CAAC,YAAY;QAC7D,QAAQ,CAAC,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,SAAS;QACvD,MAAM,IAAI,gBAAgB,CAAC,wCAAwC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IACvG,MAAM,QAAQ,GAAG,wBAAwB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACzE,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IACpC,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,aAAa;SACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IACxE,MAAM,gBAAgB,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpF,MAAM,gBAAgB,GAAG,QAAQ,CAAC,QAAQ;SACvC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,wBAAwB,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,MAAM,qBAAqB,GAAG;QAC5B,GAAG,gBAAgB;QACnB,GAAG,gBAAgB;KACpB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,IAAI,oBAAgD,CAAC;IACrD,IAAI,CAAC;QACH,oBAAoB,GAAG,MAAM,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAC3E,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,gBAAgB,CAAC,oDAAoD,EAAE,SAAS,CAAC,CAAC;IAC9F,CAAC;IACD,MAAM,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/E,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;KAChF,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACnG,MAAM,IAAI,gBAAgB,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IACH,MAAM,kBAAkB,GAAG,CAAC,GAAG,oBAAoB,EAAE,GAAG,oBAAoB,CAAC,CAAC;IAC9E,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,gBAAgB,CAAC,yDAAyD,EAAE,SAAS,CAAC,CAAC;IACnG,CAAC;IACD,OAAO;QACL,IAAI;QACJ,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,cAAc;QACd,QAAQ;QACR,eAAe,EAAE,QAAQ,CAAC,gBAAgB;aACvC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aACtE,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;QAC7B,eAAe,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,CAAC;QAC5E,kBAAkB;QAClB,wBAAwB,EAAE,gBAAgB;QAC1C,wBAAwB,EAAE,gBAAgB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAU3C;IACC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,UAAU,EAAE,OAAO,CAAC,OAAO;QAC3B,MAAM,EAAE;YACN,OAAO,CAAC,aAAa;YACrB,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC;YACjC,GAAG,WAAW,CAAC,cAAc;YAC7B,GAAG,WAAW,CAAC,QAAQ;SACxB;QACD,eAAe,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC;gBAC3B,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,eAAe,IAAI,EAAE,CAAC;gBACvC,GAAG,WAAW,CAAC,eAAe;aAC/B,CAAC,CAAC;QACH,WAAW,EAAE;YACX,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU;YAChD,GAAG,iCAAiC,CAAC,QAAQ,CAAC,CAAC,IAAI;SACpD;QACD,eAAe,EAAE;YACf,GAAG,WAAW,CAAC,eAAe;YAC9B,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC;SAClC;QACD,yBAAyB,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;QACzE,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,KAAwB;IAC1D,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC5F,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,MAAM,UAAU,GAA6B;YAC3C,IAAI;YACJ,IAAI;YACJ,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;SAC7D,CAAC;QACF,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;YACxF,IAAI,UAAU,KAAK,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;YACnF,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1C,UAAU,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5C,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAClD,UAAU,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAqB,EACrB,UAGI,EAAE;IAEN,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC;IAC1E,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,MAAM,cAAc,GAAG,MAAM,OAAO,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,6BAA6B,CAAC,CAC9D,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACnE,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;YACtE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,EAAE,UAAU;SACjB,CAAC;QACF,2EAA2E;QAC3E,0EAA0E;QAC1E,uEAAuE;QACvE,iEAAiE;QACjE,MAAM,qBAAqB,GAAG;YAC5B,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB;YACtC,GAAG,IAAI,CAAC,yBAAyB;SAClC,CAAC;QACF,MAAM,wBAAwB,GAAG,IAAI,GAAG,CACtC,qBAAqB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CACpE,CAAC;QACF,MAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAC3D,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,wBAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CACvD,CAAC;QACF,MAAM,mBAAmB,GAAG,OAAO,CAAC,eAAe,KAAK,SAAS;YAC7D,CAAC,CAAC,MAAM,oCAAoC,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;YACzF,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,2BAA2B,CAAC,MAAM,EAAE;gBACxC,GAAG,IAAI,CAAC,WAAW;gBACnB,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;aACnD,CAAC;iBACD,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;gBACzB,GAAG,qBAAqB;gBACxB,GAAG,MAAM,oBAAoB,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,yBAAyB,CAAC,CAAC;aAC5E,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACvB,MAAM,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC5F,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YACzD,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QACH,IACE,OAAO,CAAC,eAAe,KAAK,SAAS,IAAI,mBAAmB,KAAK,IAAI;YACrE,MAAM,oCAAoC,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,EAClF,CAAC;YACD,uEAAuE;YACvE,wEAAwE;YACxE,oEAAoE;YACpE,qEAAqE;YACrE,SAAS;YACT,MAAM,OAAO,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,mBAAmB,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,cAAc,IAAI,KAAK,YAAY,gBAAgB;YAAE,MAAM,KAAK,CAAC;QACtF,MAAM,MAAM,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,IAAI,cAAc,CACtB,MAAM,EACN,MAAM,EACN,GAAG,MAAM,mBAAmB,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,wCAAwC,MAAM,EAAE,CACtG,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;YAC3E,UAAU,KAAK,IAAI;gBACjB,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE;gBACnB,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"runtime-pack.js","sourceRoot":"","sources":["../../src/backend/runtime-pack.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ import { basename, dirname, join } from "node:path";
5
5
  import { describe, expect, test } from "vitest";
6
6
  import { compilerReleaseVersion } from "../library/sidecar.js";
7
7
  import { snapshotNativeArtifactDependencies } from "./native-toolchain.js";
8
- import { createRuntimeLinkPlan, effectiveRuntimeFeatures, evaluateRuntimePredicate, linkRuntimePackExecutable, loadRuntimePack, parseRuntimePackManifest, } from "./runtime-pack.js";
8
+ import { effectiveRuntimeFeatures, evaluateRuntimePredicate, loadRuntimePack, parseRuntimePackManifest, RuntimePackError, } from "./runtime-pack.js";
9
+ import { createNativeLinkPlan } from "./link-plan.js";
10
+ import { executableLinkerEnvironmentFingerprint, linkNativeExecutable, platformLinkerSupportsPersistentCache, resolvePlatformLinker, } from "./linker.js";
9
11
  import { MACOS_ARM64_TARGET } from "./targets.js";
10
12
  const VERSION = compilerReleaseVersion();
11
13
  const BASE = {
@@ -109,6 +111,39 @@ async function fixture() {
109
111
  return { root, packagePath, manifest };
110
112
  }
111
113
  describe("runtime pack manifests", () => {
114
+ test("the object linker is configured independently from the C compiler", () => {
115
+ expect(resolvePlatformLinker({})).toBe("clang");
116
+ expect(resolvePlatformLinker({ SCRIPTC_LINKER: "ld-driver" })).toBe("ld-driver");
117
+ expect(platformLinkerSupportsPersistentCache({ SCRIPTC_LINKER: "wrapper" })).toBe(false);
118
+ expect(platformLinkerSupportsPersistentCache({ LIBRARY_PATH: "/mutable" })).toBe(false);
119
+ expect(platformLinkerSupportsPersistentCache({ SDKROOT: "/mutable" })).toBe(false);
120
+ });
121
+ test("the linker environment follows the effective clang behind a stable driver", async () => {
122
+ const root = await mkdtemp(join(tmpdir(), "scriptc-linker-environment-"));
123
+ const linker = join(root, "linker.mjs");
124
+ const selectedOne = join(root, "selected-one");
125
+ const selectedTwo = join(root, "selected-two");
126
+ await Promise.all([
127
+ writeFile(selectedOne, "one"),
128
+ writeFile(selectedTwo, "two"),
129
+ writeFile(linker, [
130
+ "#!/bin/sh",
131
+ 'test "$1" = "-print-prog-name=clang" || exit 2',
132
+ 'printf "%s\\n" "$SCRIPTC_TEST_SELECTED_CLANG"',
133
+ "",
134
+ ].join("\n")),
135
+ ]);
136
+ await chmod(linker, 0o755);
137
+ const first = await executableLinkerEnvironmentFingerprint({
138
+ SCRIPTC_LINKER: linker,
139
+ SCRIPTC_TEST_SELECTED_CLANG: selectedOne,
140
+ });
141
+ const second = await executableLinkerEnvironmentFingerprint({
142
+ SCRIPTC_LINKER: linker,
143
+ SCRIPTC_TEST_SELECTED_CLANG: selectedTwo,
144
+ });
145
+ expect(second).not.toBe(first);
146
+ });
112
147
  test("feature implications and predicates are deterministic", () => {
113
148
  const features = effectiveRuntimeFeatures({ ...BASE, dynamic: true, fetch: true });
114
149
  expect(features).toMatchObject({
@@ -125,7 +160,7 @@ describe("runtime pack manifests", () => {
125
160
  });
126
161
  test("static runtime-pack executable links dead-strip too", async () => {
127
162
  const { packagePath, root } = await fixture();
128
- const plan = await createRuntimeLinkPlan({
163
+ const plan = await createNativeLinkPlan({
129
164
  target: MACOS_ARM64_TARGET,
130
165
  programObject: join(root, "program.o"),
131
166
  outPath: join(root, "program"),
@@ -185,7 +220,7 @@ describe("runtime pack manifests", () => {
185
220
  ].join("\n")),
186
221
  ]);
187
222
  await chmod(linker, 0o755);
188
- const plan = await createRuntimeLinkPlan({
223
+ const plan = await createNativeLinkPlan({
189
224
  target: MACOS_ARM64_TARGET,
190
225
  programObject,
191
226
  outPath: output,
@@ -195,7 +230,7 @@ describe("runtime pack manifests", () => {
195
230
  resolver: () => packagePath,
196
231
  });
197
232
  await writeFile(join(root, "artifacts/base.o"), "tampered");
198
- await expect(linkRuntimePackExecutable(plan, { linker })).rejects.toThrow("runtime pack changed after artifact selection");
233
+ await expect(linkNativeExecutable(plan, { linker })).rejects.toBeInstanceOf(RuntimePackError);
199
234
  expect(await stat(output).then(() => true, () => false)).toBe(false);
200
235
  });
201
236
  test("links a private verified copy when the installed artifact changes during linking", async () => {
@@ -219,7 +254,7 @@ describe("runtime pack manifests", () => {
219
254
  ].join("\n")),
220
255
  ]);
221
256
  await chmod(linker, 0o755);
222
- const plan = await createRuntimeLinkPlan({
257
+ const plan = await createNativeLinkPlan({
223
258
  target: MACOS_ARM64_TARGET,
224
259
  programObject,
225
260
  outPath: output,
@@ -228,7 +263,7 @@ describe("runtime pack manifests", () => {
228
263
  optimization: "release",
229
264
  resolver: () => packagePath,
230
265
  });
231
- await linkRuntimePackExecutable(plan, { linker });
266
+ await linkNativeExecutable(plan, { linker });
232
267
  expect(await readFile(output, "utf8")).toBe("base");
233
268
  expect(await readFile(runtimeObject, "utf8")).toBe("tampered");
234
269
  });
@@ -249,7 +284,7 @@ describe("runtime pack manifests", () => {
249
284
  ].join("\n")),
250
285
  ]);
251
286
  await chmod(linker, 0o755);
252
- const plan = await createRuntimeLinkPlan({
287
+ const plan = await createNativeLinkPlan({
253
288
  target: MACOS_ARM64_TARGET,
254
289
  programObject,
255
290
  outPath: output,
@@ -258,7 +293,7 @@ describe("runtime pack manifests", () => {
258
293
  optimization: "release",
259
294
  resolver: () => packagePath,
260
295
  });
261
- await linkRuntimePackExecutable(plan, { linker });
296
+ await linkNativeExecutable(plan, { linker });
262
297
  const privateOutput = JSON.parse(await readFile(output, "utf8"));
263
298
  expect(privateOutput).not.toBe(output);
264
299
  expect(basename(privateOutput)).toBe(basename(output));
@@ -284,7 +319,7 @@ describe("runtime pack manifests", () => {
284
319
  await chmod(linker, 0o755);
285
320
  const helperDependencies = await snapshotNativeArtifactDependencies([helper]);
286
321
  await writeFile(helper, "helper replaced during emission");
287
- const plan = await createRuntimeLinkPlan({
322
+ const plan = await createNativeLinkPlan({
288
323
  target: MACOS_ARM64_TARGET,
289
324
  programObject,
290
325
  outPath: output,
@@ -295,7 +330,7 @@ describe("runtime pack manifests", () => {
295
330
  resolver: () => packagePath,
296
331
  });
297
332
  let published = false;
298
- await linkRuntimePackExecutable(plan, {
333
+ await linkNativeExecutable(plan, {
299
334
  linker,
300
335
  onArtifactReady: async () => { published = true; },
301
336
  });
@@ -350,7 +385,7 @@ describe("runtime pack manifests", () => {
350
385
  ].join("\n")),
351
386
  ]);
352
387
  await chmod(driver, 0o755);
353
- const plan = await createRuntimeLinkPlan({
388
+ const plan = await createNativeLinkPlan({
354
389
  target: MACOS_ARM64_TARGET,
355
390
  programObject,
356
391
  outPath: output,
@@ -360,7 +395,7 @@ describe("runtime pack manifests", () => {
360
395
  resolver: () => packagePath,
361
396
  });
362
397
  let dependencyPaths = [];
363
- await linkRuntimePackExecutable(plan, {
398
+ await linkNativeExecutable(plan, {
364
399
  linker: driver,
365
400
  onArtifactReady: async ({ dependencies }) => {
366
401
  dependencyPaths = dependencies.map((dependency) => dependency.path);
@@ -416,7 +451,7 @@ describe("runtime pack manifests", () => {
416
451
  ].join("\n")),
417
452
  ]);
418
453
  await chmod(linker, 0o755);
419
- const plan = await createRuntimeLinkPlan({
454
+ const plan = await createNativeLinkPlan({
420
455
  target: MACOS_ARM64_TARGET,
421
456
  programObject,
422
457
  outPath: output,
@@ -427,7 +462,7 @@ describe("runtime pack manifests", () => {
427
462
  resolver: () => packagePath,
428
463
  });
429
464
  let published = false;
430
- await linkRuntimePackExecutable(plan, {
465
+ await linkNativeExecutable(plan, {
431
466
  linker,
432
467
  onArtifactReady: async () => { published = true; },
433
468
  });