@scriptc/compiler 0.0.34 → 0.0.35

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 (66) hide show
  1. package/dist/backend/cc-cache.test.js +969 -7
  2. package/dist/backend/cc-cache.test.js.map +1 -1
  3. package/dist/backend/cc.d.ts +90 -18
  4. package/dist/backend/cc.js +953 -276
  5. package/dist/backend/cc.js.map +1 -1
  6. package/dist/backend/llvm/split.d.ts +43 -0
  7. package/dist/backend/llvm/split.js +227 -0
  8. package/dist/backend/llvm/split.js.map +1 -0
  9. package/dist/backend/llvm/split.test.d.ts +1 -0
  10. package/dist/backend/llvm/split.test.js +102 -0
  11. package/dist/backend/llvm/split.test.js.map +1 -0
  12. package/dist/backend/object-localize.test.js +20 -0
  13. package/dist/backend/object-localize.test.js.map +1 -1
  14. package/dist/executable/early-cache.d.ts +86 -0
  15. package/dist/executable/early-cache.js +460 -0
  16. package/dist/executable/early-cache.js.map +1 -0
  17. package/dist/executable/early-cache.test.d.ts +1 -0
  18. package/dist/executable/early-cache.test.js +300 -0
  19. package/dist/executable/early-cache.test.js.map +1 -0
  20. package/dist/ffi/profile.d.ts +7 -2
  21. package/dist/ffi/profile.js +1 -0
  22. package/dist/ffi/profile.js.map +1 -1
  23. package/dist/frontend/lowering/lower-builtins.js +2 -2
  24. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  25. package/dist/frontend/lowering/lower-calls.js +14 -4
  26. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  27. package/dist/frontend/lowering/lower-containers.js +18 -23
  28. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  29. package/dist/frontend/lowering/lower-exprs.js +22 -10
  30. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  31. package/dist/frontend/lowering/lower-island.js +3 -3
  32. package/dist/frontend/lowering/lower-island.js.map +1 -1
  33. package/dist/frontend/lowering/lower-mixins.js +1 -1
  34. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  35. package/dist/frontend/lowering/lower-stmts.js +1 -1
  36. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  37. package/dist/frontend/lowering/lowerer.d.ts +6 -0
  38. package/dist/frontend/lowering/lowerer.js +230 -81
  39. package/dist/frontend/lowering/lowerer.js.map +1 -1
  40. package/dist/frontend/lowering/surfaces.js +1 -1
  41. package/dist/frontend/lowering/surfaces.js.map +1 -1
  42. package/dist/frontend/program.js +42 -13
  43. package/dist/frontend/program.js.map +1 -1
  44. package/dist/frontend/ts7/checker.d.ts +40 -2
  45. package/dist/frontend/ts7/checker.js +194 -32
  46. package/dist/frontend/ts7/checker.js.map +1 -1
  47. package/dist/frontend/types.js +20 -42
  48. package/dist/frontend/types.js.map +1 -1
  49. package/dist/index.d.ts +4 -1
  50. package/dist/index.js +219 -101
  51. package/dist/index.js.map +1 -1
  52. package/dist/ir/nodes.d.ts +6 -0
  53. package/dist/ir/nodes.js +28 -0
  54. package/dist/ir/nodes.js.map +1 -1
  55. package/dist/ir/validate.js +7 -1
  56. package/dist/ir/validate.js.map +1 -1
  57. package/dist/library/early-cache.js +4 -23
  58. package/dist/library/early-cache.js.map +1 -1
  59. package/dist/library/implementation-identity.d.ts +23 -0
  60. package/dist/library/implementation-identity.js +84 -0
  61. package/dist/library/implementation-identity.js.map +1 -0
  62. package/dist/startup-cache.d.ts +6 -0
  63. package/dist/startup-cache.js +6 -0
  64. package/dist/startup-cache.js.map +1 -0
  65. package/package.json +3 -2
  66. package/surface-manifest.json +1 -1
@@ -0,0 +1,86 @@
1
+ import type { FrontendInputSnapshot } from "../frontend/input-tracker.js";
2
+ import { type NativeArtifactDependency } from "../backend/cc.js";
3
+ import type { CompilerImplementationDependency } from "../library/implementation-identity.js";
4
+ export interface EarlyExecutableNativeFeatures {
5
+ backend: "c" | "llvm";
6
+ /** Omitted is the historical release posture. */
7
+ optimization?: "dev";
8
+ llvmRefusal?: string;
9
+ dynamic: boolean;
10
+ regex: boolean;
11
+ copying: boolean;
12
+ textDecoderLegacy: boolean;
13
+ fileHandle: boolean;
14
+ fetch: boolean;
15
+ netIsland: boolean;
16
+ zlib: boolean;
17
+ assert: boolean;
18
+ inspect: boolean;
19
+ dynInvoke: boolean;
20
+ dc: boolean;
21
+ dynAsync: boolean;
22
+ events: boolean;
23
+ emitter: boolean;
24
+ symbol: boolean;
25
+ searchParams: boolean;
26
+ qs: boolean;
27
+ parseArgs: boolean;
28
+ stream: boolean;
29
+ net: boolean;
30
+ http: boolean;
31
+ http2: boolean;
32
+ dgram: boolean;
33
+ watch: boolean;
34
+ foreignFfi: boolean;
35
+ nodeTest: boolean;
36
+ tls: boolean;
37
+ tlsCa: boolean;
38
+ }
39
+ export interface EarlyExecutableCacheOptions {
40
+ entryPath: string;
41
+ outDir: string;
42
+ outPath: string;
43
+ emitIr: boolean;
44
+ sanitize: boolean;
45
+ dynamic: boolean;
46
+ backend: "auto" | "c" | "llvm";
47
+ /** Omitted is the historical release posture and preserves v1 keys. */
48
+ optimization?: "dev";
49
+ npmStatic: readonly string[] | "auto" | null;
50
+ /** Raw manifest identity: path and bytes. Native archives remain under the
51
+ * stricter native cache's independent dependency validation. */
52
+ ffiProfile: {
53
+ path: string;
54
+ bytes: Uint8Array;
55
+ } | null;
56
+ target: string;
57
+ compiler: string[];
58
+ nativeEnvironment: string;
59
+ nodeVersion: string;
60
+ implementation: string;
61
+ implementationDependencies: CompilerImplementationDependency[];
62
+ }
63
+ export type EarlyExecutableRouteOptions = Omit<EarlyExecutableCacheOptions, "implementation" | "implementationDependencies">;
64
+ export interface EarlyExecutableCacheHit {
65
+ cPath: string;
66
+ irPath?: string;
67
+ /** True when the final executable was restored after native dependencies
68
+ * validated. False restores only frontend artifacts and must call compileC. */
69
+ executableRestored: boolean;
70
+ native: EarlyExecutableNativeFeatures;
71
+ frontend: FrontendInputSnapshot;
72
+ }
73
+ export interface EarlyExecutableCachePublish extends EarlyExecutableCacheHit {
74
+ nativeDependencies?: NativeArtifactDependency[];
75
+ }
76
+ export declare function readEarlyExecutableCache(root: string | null, options: EarlyExecutableCacheOptions): Promise<EarlyExecutableCacheHit | null>;
77
+ /** Follow the exact-invocation route without hashing/importing the complete
78
+ * compiler package. The full compiler publishes a content digest plus a
79
+ * metadata replay proof; any implementation change turns this into a miss. */
80
+ export declare function readRoutedExecutableCache(root: string | null, options: EarlyExecutableRouteOptions): Promise<EarlyExecutableCacheHit | null>;
81
+ /** Publish the lightweight lookup metadata for an already-validated payload.
82
+ * Full-compiler cache hits call this as a repair path: route/proof files can be
83
+ * evicted independently of the larger executable entry, and one fallback
84
+ * lookup should make later CLI invocations lightweight again. */
85
+ export declare function publishEarlyExecutableRoute(root: string | null, options: EarlyExecutableCacheOptions): Promise<void>;
86
+ export declare function publishEarlyExecutableCache(root: string | null, options: EarlyExecutableCacheOptions, result: EarlyExecutableCachePublish): Promise<void>;
@@ -0,0 +1,460 @@
1
+ import { createHash } from "node:crypto";
2
+ import { chmod, copyFile, mkdir, readFile, rename, rm, stat, utimes, writeFile } from "node:fs/promises";
3
+ import { basename, dirname, join, resolve } from "node:path";
4
+ import { frontendInputsStillMatch, validFrontendInputSnapshot } from "../frontend/input-tracker.js";
5
+ import { compilerReleaseVersion } from "../library/sidecar.js";
6
+ import { nativeArtifactDependenciesStillMatch } from "../backend/cc.js";
7
+ import { compilerImplementationDependenciesStillMatch, compilerImplementationRoot } from "../library/implementation-identity.js";
8
+ const BOOLEAN_NATIVE_KEYS = [
9
+ "dynamic",
10
+ "regex",
11
+ "copying",
12
+ "textDecoderLegacy",
13
+ "fileHandle",
14
+ "fetch",
15
+ "netIsland",
16
+ "zlib",
17
+ "assert",
18
+ "inspect",
19
+ "dynInvoke",
20
+ "dc",
21
+ "dynAsync",
22
+ "events",
23
+ "emitter",
24
+ "symbol",
25
+ "searchParams",
26
+ "qs",
27
+ "parseArgs",
28
+ "stream",
29
+ "net",
30
+ "http",
31
+ "http2",
32
+ "dgram",
33
+ "watch",
34
+ "foreignFfi",
35
+ "nodeTest",
36
+ "tls",
37
+ "tlsCa",
38
+ ];
39
+ function validNativeFeatures(value) {
40
+ if (value === null || typeof value !== "object")
41
+ return false;
42
+ const native = value;
43
+ return (native.backend === "c" || native.backend === "llvm") &&
44
+ (native.optimization === undefined || native.optimization === "dev") &&
45
+ (native.llvmRefusal === undefined || typeof native.llvmRefusal === "string") &&
46
+ BOOLEAN_NATIVE_KEYS.every((key) => typeof native[key] === "boolean");
47
+ }
48
+ function digest(bytes) {
49
+ return createHash("sha256").update(bytes).digest("hex");
50
+ }
51
+ function cacheKey(options) {
52
+ const hash = createHash("sha256")
53
+ .update("early-executable-v1\0")
54
+ .update(compilerReleaseVersion()).update("\0")
55
+ .update(resolve(options.entryPath)).update("\0")
56
+ .update(resolve(options.outDir)).update("\0")
57
+ .update(resolve(options.outPath)).update("\0")
58
+ .update(options.emitIr ? "emit-ir" : "no-ir").update("\0")
59
+ .update(options.sanitize ? "sanitize" : "plain").update("\0")
60
+ .update(options.dynamic ? "dynamic" : "static").update("\0")
61
+ .update(options.backend).update("\0");
62
+ if (options.optimization === "dev")
63
+ hash.update("optimization-dev\0");
64
+ hash
65
+ .update(options.npmStatic === null
66
+ ? "<npm-static-off>"
67
+ : options.npmStatic === "auto"
68
+ ? "<npm-static-auto>"
69
+ : JSON.stringify(options.npmStatic)).update("\0")
70
+ .update(options.target).update("\0")
71
+ .update(options.compiler.join("\x1f")).update("\0")
72
+ .update(options.nativeEnvironment).update("\0")
73
+ .update(options.nodeVersion).update("\0")
74
+ .update(options.implementation).update("\0");
75
+ if (options.ffiProfile === null) {
76
+ hash.update("<ffi-off>");
77
+ }
78
+ else {
79
+ hash
80
+ .update(resolve(options.ffiProfile.path)).update("\0")
81
+ .update(options.ffiProfile.bytes);
82
+ }
83
+ return hash.digest("hex");
84
+ }
85
+ function routeKey(options) {
86
+ const hash = createHash("sha256")
87
+ .update("early-executable-route-v1\0")
88
+ .update(compilerReleaseVersion()).update("\0")
89
+ .update(compilerImplementationRoot()).update("\0")
90
+ .update(resolve(options.entryPath)).update("\0")
91
+ .update(resolve(options.outDir)).update("\0")
92
+ .update(resolve(options.outPath)).update("\0")
93
+ .update(options.emitIr ? "emit-ir" : "no-ir").update("\0")
94
+ .update(options.sanitize ? "sanitize" : "plain").update("\0")
95
+ .update(options.dynamic ? "dynamic" : "static").update("\0")
96
+ .update(options.backend).update("\0");
97
+ if (options.optimization === "dev")
98
+ hash.update("optimization-dev\0");
99
+ hash
100
+ .update(options.npmStatic === null
101
+ ? "<npm-static-off>"
102
+ : options.npmStatic === "auto"
103
+ ? "<npm-static-auto>"
104
+ : JSON.stringify(options.npmStatic)).update("\0")
105
+ .update(options.target).update("\0")
106
+ .update(options.compiler.join("\x1f")).update("\0")
107
+ .update(options.nativeEnvironment).update("\0")
108
+ .update(options.nodeVersion).update("\0");
109
+ if (options.ffiProfile === null) {
110
+ hash.update("<ffi-off>");
111
+ }
112
+ else {
113
+ hash
114
+ .update(resolve(options.ffiProfile.path)).update("\0")
115
+ .update(options.ffiProfile.bytes);
116
+ }
117
+ return hash.digest("hex");
118
+ }
119
+ function routePath(root, options) {
120
+ return join(root, "early-exe-route", routeKey(options));
121
+ }
122
+ function routeIntegrity(stamp) {
123
+ return createHash("sha256")
124
+ .update("early-executable-route-stamp-v1\0")
125
+ .update(JSON.stringify(stamp))
126
+ .digest("hex");
127
+ }
128
+ function implementationProofPath(root, implementation) {
129
+ const install = createHash("sha256")
130
+ .update("early-executable-install-v1\0")
131
+ .update(compilerImplementationRoot())
132
+ .digest("hex");
133
+ return join(root, "early-exe-implementation", install, implementation);
134
+ }
135
+ function implementationProofIntegrity(proof) {
136
+ return createHash("sha256")
137
+ .update("early-executable-implementation-proof-v1\0")
138
+ .update(JSON.stringify(proof))
139
+ .digest("hex");
140
+ }
141
+ async function installCacheMetadata(source, destination) {
142
+ await rename(source, destination).catch(async () => {
143
+ // Windows does not replace an existing destination with rename(). Route
144
+ // and implementation-proof files are republished on every full compile,
145
+ // so use the same replacement fallback as the payload cache below.
146
+ await rm(destination, { force: true });
147
+ await rename(source, destination);
148
+ });
149
+ }
150
+ function stampPath(root, options) {
151
+ return join(root, "early-exe", cacheKey(options), "stamp.json");
152
+ }
153
+ function stampIntegrity(stamp) {
154
+ return createHash("sha256")
155
+ .update("early-executable-stamp-v1\0")
156
+ .update(JSON.stringify(stamp))
157
+ .digest("hex");
158
+ }
159
+ function outputPaths(options, backend) {
160
+ const stem = basename(options.entryPath).replace(/\.(ts|js|mjs|cjs)$/, "");
161
+ return {
162
+ cPath: join(options.outDir, `${stem}.${backend === "llvm" ? "ll" : "c"}`),
163
+ staleCPath: join(options.outDir, `${stem}.${backend === "llvm" ? "c" : "ll"}`),
164
+ irPath: join(options.outDir, `${stem}.ir.json`),
165
+ };
166
+ }
167
+ function frontendOutputExclusions(options, backend) {
168
+ const paths = outputPaths(options, backend);
169
+ const outputArtifacts = [
170
+ paths.cPath,
171
+ paths.staleCPath,
172
+ ...(options.emitIr ? [paths.irPath] : []),
173
+ options.outPath,
174
+ ].map((path) => resolve(path));
175
+ const outputDirectories = new Set();
176
+ for (const artifact of outputArtifacts) {
177
+ for (let directory = dirname(artifact);; directory = dirname(directory)) {
178
+ outputDirectories.add(directory);
179
+ if (dirname(directory) === directory)
180
+ break;
181
+ }
182
+ }
183
+ return { outputPaths: outputArtifacts, outputDirectories };
184
+ }
185
+ async function readCachedFile(path, expected) {
186
+ try {
187
+ const bytes = await readFile(path);
188
+ return digest(bytes) === expected ? bytes : null;
189
+ }
190
+ catch {
191
+ return null;
192
+ }
193
+ }
194
+ async function installBytes(bytes, destination) {
195
+ await mkdir(dirname(destination), { recursive: true });
196
+ const tmp = join(dirname(destination), `.scriptc-exe-hit-${process.pid}-${Math.random().toString(36).slice(2)}`);
197
+ try {
198
+ await writeFile(tmp, bytes, { mode: 0o600 });
199
+ await chmod(tmp, 0o666 & ~process.umask());
200
+ await rename(tmp, destination);
201
+ }
202
+ finally {
203
+ await rm(tmp, { force: true }).catch(() => undefined);
204
+ }
205
+ }
206
+ async function fileMatches(destination, expectedDigest, expectedMode) {
207
+ try {
208
+ if (expectedMode !== undefined) {
209
+ const info = await stat(destination);
210
+ if (!info.isFile() || (info.mode & 0o777) !== expectedMode)
211
+ return false;
212
+ }
213
+ return digest(await readFile(destination)) === expectedDigest;
214
+ }
215
+ catch {
216
+ return false;
217
+ }
218
+ }
219
+ async function installExecutable(bytes, destination) {
220
+ await mkdir(dirname(destination), { recursive: true });
221
+ const tmp = join(dirname(destination), `.scriptc-exe-bin-${process.pid}-${Math.random().toString(36).slice(2)}`);
222
+ try {
223
+ await writeFile(tmp, bytes, { mode: 0o600 });
224
+ await chmod(tmp, 0o777 & ~process.umask());
225
+ await rename(tmp, destination);
226
+ }
227
+ finally {
228
+ await rm(tmp, { force: true }).catch(() => undefined);
229
+ }
230
+ }
231
+ export async function readEarlyExecutableCache(root, options) {
232
+ if (root === null)
233
+ return null;
234
+ const path = stampPath(root, options);
235
+ try {
236
+ const stamp = JSON.parse(await readFile(path, "utf8"));
237
+ const { integrity, ...unsigned } = stamp;
238
+ if (stamp.version !== 1 || stamp.key !== cacheKey(options) ||
239
+ !validFrontendInputSnapshot(stamp.frontend) || !validNativeFeatures(stamp.native) ||
240
+ stamp.files?.translationUnit?.name !== "program.tu" ||
241
+ !/^[0-9a-f]{64}$/.test(stamp.files.translationUnit.digest) ||
242
+ (stamp.files.ir !== null && (stamp.files.ir?.name !== "program.ir.json" ||
243
+ !/^[0-9a-f]{64}$/.test(stamp.files.ir.digest))) ||
244
+ (stamp.files.executable !== null && (stamp.files.executable?.name !== "program.bin" ||
245
+ !/^[0-9a-f]{64}$/.test(stamp.files.executable.digest))) ||
246
+ (stamp.files.executable === null) !== (stamp.nativeDependencies === null) ||
247
+ (stamp.nativeDependencies !== null && !Array.isArray(stamp.nativeDependencies)) ||
248
+ (stamp.files.ir !== null) !== options.emitIr ||
249
+ stampIntegrity(unsigned) !== integrity ||
250
+ !frontendInputsStillMatch(stamp.frontend, frontendOutputExclusions(options, stamp.native.backend)))
251
+ return null;
252
+ const directory = dirname(path);
253
+ const [translationUnit, ir, executable] = await Promise.all([
254
+ readCachedFile(join(directory, stamp.files.translationUnit.name), stamp.files.translationUnit.digest),
255
+ stamp.files.ir === null
256
+ ? Promise.resolve(null)
257
+ : readCachedFile(join(directory, stamp.files.ir.name), stamp.files.ir.digest),
258
+ stamp.files.executable === null
259
+ ? Promise.resolve(null)
260
+ : readCachedFile(join(directory, stamp.files.executable.name), stamp.files.executable.digest),
261
+ ]);
262
+ if (translationUnit === null ||
263
+ stamp.files.ir !== null && ir === null ||
264
+ stamp.files.executable !== null && executable === null)
265
+ return null;
266
+ // Validate the native proof before restoring frontend artifacts: replacing
267
+ // a TU can update its output directory metadata, which is itself part of
268
+ // compileC's same-output dependency snapshot.
269
+ let executableRestored = executable !== null && stamp.nativeDependencies !== null &&
270
+ await nativeArtifactDependenciesStillMatch(stamp.nativeDependencies) &&
271
+ // Recheck after hashing every dependency: a concurrent tool/runtime
272
+ // update must not win the window immediately before installation.
273
+ await nativeArtifactDependenciesStillMatch(stamp.nativeDependencies);
274
+ const paths = outputPaths(options, stamp.native.backend);
275
+ if (!(await fileMatches(paths.cPath, stamp.files.translationUnit.digest))) {
276
+ await installBytes(translationUnit, paths.cPath);
277
+ }
278
+ await rm(paths.staleCPath, { force: true });
279
+ if (ir !== null && stamp.files.ir !== null &&
280
+ !(await fileMatches(paths.irPath, stamp.files.ir.digest)))
281
+ await installBytes(ir, paths.irPath);
282
+ if (executableRestored) {
283
+ try {
284
+ const expectedMode = 0o777 & ~process.umask();
285
+ if (!(await fileMatches(options.outPath, stamp.files.executable.digest, expectedMode))) {
286
+ await installExecutable(executable, options.outPath);
287
+ }
288
+ }
289
+ catch {
290
+ executableRestored = false;
291
+ }
292
+ }
293
+ const now = new Date();
294
+ await Promise.all([
295
+ path,
296
+ join(directory, stamp.files.translationUnit.name),
297
+ ...(stamp.files.ir === null ? [] : [join(directory, stamp.files.ir.name)]),
298
+ ...(stamp.files.executable === null ? [] : [join(directory, stamp.files.executable.name)]),
299
+ ].map((cachePath) => utimes(cachePath, now, now).catch(() => undefined)));
300
+ return {
301
+ cPath: paths.cPath,
302
+ native: stamp.native,
303
+ executableRestored,
304
+ frontend: stamp.frontend,
305
+ ...(ir === null ? {} : { irPath: paths.irPath }),
306
+ };
307
+ }
308
+ catch {
309
+ return null;
310
+ }
311
+ }
312
+ /** Follow the exact-invocation route without hashing/importing the complete
313
+ * compiler package. The full compiler publishes a content digest plus a
314
+ * metadata replay proof; any implementation change turns this into a miss. */
315
+ export async function readRoutedExecutableCache(root, options) {
316
+ if (root === null)
317
+ return null;
318
+ try {
319
+ const routeFile = routePath(root, options);
320
+ const route = JSON.parse(await readFile(routeFile, "utf8"));
321
+ const { integrity, ...unsigned } = route;
322
+ if (route.version !== 1 ||
323
+ !/^[0-9a-f]{64}$/.test(route.key) ||
324
+ !/^[0-9a-f]{64}$/.test(route.implementation) ||
325
+ routeIntegrity(unsigned) !== integrity)
326
+ return null;
327
+ const proofFile = implementationProofPath(root, route.implementation);
328
+ const proof = JSON.parse(await readFile(proofFile, "utf8"));
329
+ const { integrity: proofIntegrity, ...proofUnsigned } = proof;
330
+ if (proof.version !== 1 || proof.implementation !== route.implementation ||
331
+ !Array.isArray(proof.dependencies) ||
332
+ implementationProofIntegrity(proofUnsigned) !== proofIntegrity ||
333
+ !(await compilerImplementationDependenciesStillMatch(proof.dependencies)))
334
+ return null;
335
+ const complete = {
336
+ ...options,
337
+ implementation: route.implementation,
338
+ implementationDependencies: proof.dependencies,
339
+ };
340
+ if (cacheKey(complete) !== route.key)
341
+ return null;
342
+ const hit = await readEarlyExecutableCache(root, complete);
343
+ if (hit?.executableRestored !== true)
344
+ return null;
345
+ const now = new Date();
346
+ await Promise.all([
347
+ routeFile,
348
+ proofFile,
349
+ ].map((cachePath) => utimes(cachePath, now, now).catch(() => undefined)));
350
+ return hit;
351
+ }
352
+ catch {
353
+ return null;
354
+ }
355
+ }
356
+ /** Publish the lightweight lookup metadata for an already-validated payload.
357
+ * Full-compiler cache hits call this as a repair path: route/proof files can be
358
+ * evicted independently of the larger executable entry, and one fallback
359
+ * lookup should make later CLI invocations lightweight again. */
360
+ export async function publishEarlyExecutableRoute(root, options) {
361
+ if (root === null)
362
+ return;
363
+ const proofDestination = implementationProofPath(root, options.implementation);
364
+ const proofUnsigned = {
365
+ version: 1,
366
+ implementation: options.implementation,
367
+ dependencies: options.implementationDependencies,
368
+ };
369
+ const proof = {
370
+ ...proofUnsigned,
371
+ integrity: implementationProofIntegrity(proofUnsigned),
372
+ };
373
+ await mkdir(dirname(proofDestination), { recursive: true, mode: 0o700 });
374
+ const proofTmp = `${proofDestination}.tmp-${process.pid}-${Math.random().toString(36).slice(2)}`;
375
+ try {
376
+ await writeFile(proofTmp, `${JSON.stringify(proof)}\n`, { mode: 0o600 });
377
+ await installCacheMetadata(proofTmp, proofDestination);
378
+ }
379
+ finally {
380
+ await rm(proofTmp, { force: true }).catch(() => undefined);
381
+ }
382
+ const routeOptions = options;
383
+ const routeDestination = routePath(root, routeOptions);
384
+ const routeUnsigned = {
385
+ version: 1,
386
+ key: cacheKey(options),
387
+ implementation: options.implementation,
388
+ };
389
+ const route = {
390
+ ...routeUnsigned,
391
+ integrity: routeIntegrity(routeUnsigned),
392
+ };
393
+ await mkdir(dirname(routeDestination), { recursive: true, mode: 0o700 });
394
+ const routeTmp = `${routeDestination}.tmp-${process.pid}-${Math.random().toString(36).slice(2)}`;
395
+ try {
396
+ await writeFile(routeTmp, `${JSON.stringify(route)}\n`, { mode: 0o600 });
397
+ await installCacheMetadata(routeTmp, routeDestination);
398
+ }
399
+ finally {
400
+ await rm(routeTmp, { force: true }).catch(() => undefined);
401
+ }
402
+ }
403
+ export async function publishEarlyExecutableCache(root, options, result) {
404
+ if (root === null || !result.frontend.stable)
405
+ return;
406
+ const destination = dirname(stampPath(root, options));
407
+ const parent = dirname(destination);
408
+ const stage = join(parent, `.tmp-${basename(destination).slice(0, 12)}-${process.pid}-${Math.random().toString(36).slice(2)}`);
409
+ try {
410
+ await mkdir(stage, { recursive: true, mode: 0o700 });
411
+ const publishFile = async (source, name) => {
412
+ const target = join(stage, name);
413
+ await copyFile(source, target);
414
+ await chmod(target, 0o600);
415
+ return { name, digest: digest(await readFile(target)) };
416
+ };
417
+ const publishExecutable = result.nativeDependencies === undefined || !result.executableRestored
418
+ ? Promise.resolve(null)
419
+ : publishFile(options.outPath, "program.bin");
420
+ const [translationUnit, ir, executable] = await Promise.all([
421
+ publishFile(result.cPath, "program.tu"),
422
+ result.irPath === undefined
423
+ ? Promise.resolve(null)
424
+ : publishFile(result.irPath, "program.ir.json"),
425
+ publishExecutable,
426
+ ]);
427
+ if (!frontendInputsStillMatch(result.frontend, frontendOutputExclusions(options, result.native.backend)))
428
+ return;
429
+ const unsigned = {
430
+ version: 1,
431
+ key: cacheKey(options),
432
+ frontend: result.frontend,
433
+ files: { translationUnit, ir, executable },
434
+ nativeDependencies: executable === null ? null : result.nativeDependencies,
435
+ native: result.native,
436
+ };
437
+ const stamp = { ...unsigned, integrity: stampIntegrity(unsigned) };
438
+ await writeFile(join(stage, "stamp.json"), `${JSON.stringify(stamp)}\n`, { mode: 0o600 });
439
+ await mkdir(destination, { recursive: true, mode: 0o700 });
440
+ const install = async (name) => {
441
+ const source = join(stage, name);
442
+ const target = join(destination, name);
443
+ await rename(source, target).catch(async () => {
444
+ await rm(target, { force: true });
445
+ await rename(source, target);
446
+ });
447
+ };
448
+ await install(translationUnit.name);
449
+ if (ir !== null)
450
+ await install(ir.name);
451
+ if (executable !== null)
452
+ await install(executable.name);
453
+ await install("stamp.json");
454
+ await publishEarlyExecutableRoute(root, options);
455
+ }
456
+ finally {
457
+ await rm(stage, { recursive: true, force: true }).catch(() => undefined);
458
+ }
459
+ }
460
+ //# sourceMappingURL=early-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-cache.js","sourceRoot":"","sources":["../../src/executable/early-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};