@scriptc/compiler 0.0.33 → 0.0.34

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 (102) hide show
  1. package/dist/backend/cc-cache.test.js +122 -0
  2. package/dist/backend/cc-cache.test.js.map +1 -1
  3. package/dist/backend/cc.d.ts +19 -0
  4. package/dist/backend/cc.js +111 -20
  5. package/dist/backend/cc.js.map +1 -1
  6. package/dist/backend/emission/emit-exprs.js +26 -1
  7. package/dist/backend/emission/emit-exprs.js.map +1 -1
  8. package/dist/backend/emission/emit-shapes.js +37 -4
  9. package/dist/backend/emission/emit-shapes.js.map +1 -1
  10. package/dist/backend/emission/emitter.d.ts +11 -2
  11. package/dist/backend/emission/emitter.js +11 -5
  12. package/dist/backend/emission/emitter.js.map +1 -1
  13. package/dist/backend/library-identity.d.ts +22 -0
  14. package/dist/backend/library-identity.js +103 -0
  15. package/dist/backend/library-identity.js.map +1 -0
  16. package/dist/backend/llvm/emitter.d.ts +3 -0
  17. package/dist/backend/llvm/emitter.js +35 -5
  18. package/dist/backend/llvm/emitter.js.map +1 -1
  19. package/dist/backend/llvm/shapes.d.ts +1 -0
  20. package/dist/backend/llvm/shapes.js +25 -1
  21. package/dist/backend/llvm/shapes.js.map +1 -1
  22. package/dist/backend/mangle.d.ts +1 -0
  23. package/dist/backend/mangle.js +3 -0
  24. package/dist/backend/mangle.js.map +1 -1
  25. package/dist/backend/object-localize.d.ts +5 -5
  26. package/dist/backend/object-localize.js +19 -16
  27. package/dist/backend/object-localize.js.map +1 -1
  28. package/dist/backend/object-localize.test.js +37 -13
  29. package/dist/backend/object-localize.test.js.map +1 -1
  30. package/dist/frontend/input-tracker.d.ts +82 -0
  31. package/dist/frontend/input-tracker.js +380 -0
  32. package/dist/frontend/input-tracker.js.map +1 -0
  33. package/dist/frontend/input-tracker.test.d.ts +1 -0
  34. package/dist/frontend/input-tracker.test.js +137 -0
  35. package/dist/frontend/input-tracker.test.js.map +1 -0
  36. package/dist/frontend/lowering/lower-builtins.js +2 -8
  37. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  38. package/dist/frontend/lowering/lower-calls.js +155 -140
  39. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  40. package/dist/frontend/lowering/lower-classes.js +3 -0
  41. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  42. package/dist/frontend/lowering/lower-containers.js +48 -9
  43. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  44. package/dist/frontend/lowering/lower-exprs.js +67 -1
  45. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  46. package/dist/frontend/lowering/lower-inspect.js +45 -26
  47. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  48. package/dist/frontend/lowering/lower-modules.js +1 -1
  49. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  50. package/dist/frontend/lowering/lower-stmts.js +48 -3
  51. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  52. package/dist/frontend/lowering/lowerer.d.ts +67 -29
  53. package/dist/frontend/lowering/lowerer.js +410 -87
  54. package/dist/frontend/lowering/lowerer.js.map +1 -1
  55. package/dist/frontend/npm-static-rewrite.js +25 -26
  56. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  57. package/dist/frontend/npm-static.js +29 -30
  58. package/dist/frontend/npm-static.js.map +1 -1
  59. package/dist/frontend/npm-static.test.d.ts +1 -0
  60. package/dist/frontend/npm-static.test.js +15 -0
  61. package/dist/frontend/npm-static.test.js.map +1 -0
  62. package/dist/frontend/npm.js +5 -17
  63. package/dist/frontend/npm.js.map +1 -1
  64. package/dist/frontend/program.js +2 -6
  65. package/dist/frontend/program.js.map +1 -1
  66. package/dist/frontend/resolve.js +8 -29
  67. package/dist/frontend/resolve.js.map +1 -1
  68. package/dist/frontend/ts7/program.js +17 -18
  69. package/dist/frontend/ts7/program.js.map +1 -1
  70. package/dist/frontend/types.d.ts +33 -0
  71. package/dist/frontend/types.js +114 -3
  72. package/dist/frontend/types.js.map +1 -1
  73. package/dist/index.d.ts +1 -1
  74. package/dist/index.js +241 -42
  75. package/dist/index.js.map +1 -1
  76. package/dist/ir/nodes.d.ts +21 -4
  77. package/dist/ir/nodes.js.map +1 -1
  78. package/dist/ir/serialize.d.ts +1 -1
  79. package/dist/ir/serialize.js +1 -1
  80. package/dist/ir/validate.js +31 -1
  81. package/dist/ir/validate.js.map +1 -1
  82. package/dist/library/early-cache.d.ts +65 -0
  83. package/dist/library/early-cache.js +380 -0
  84. package/dist/library/early-cache.js.map +1 -0
  85. package/dist/library/early-cache.test.d.ts +1 -0
  86. package/dist/library/early-cache.test.js +528 -0
  87. package/dist/library/early-cache.test.js.map +1 -0
  88. package/dist/library/int-infer.js +14 -0
  89. package/dist/library/int-infer.js.map +1 -1
  90. package/dist/library/int-infer.test.js +21 -4
  91. package/dist/library/int-infer.test.js.map +1 -1
  92. package/dist/library/semantic-source.d.ts +13 -0
  93. package/dist/library/semantic-source.js +257 -0
  94. package/dist/library/semantic-source.js.map +1 -0
  95. package/dist/library/semantic-source.test.d.ts +1 -0
  96. package/dist/library/semantic-source.test.js +113 -0
  97. package/dist/library/semantic-source.test.js.map +1 -0
  98. package/dist/library/sidecar.d.ts +6 -0
  99. package/dist/library/sidecar.js +11 -0
  100. package/dist/library/sidecar.js.map +1 -1
  101. package/package.json +2 -2
  102. package/surface-manifest.json +1 -1
@@ -0,0 +1,65 @@
1
+ import type { IrModule } from "../ir/nodes.js";
2
+ import { type FrontendInputSnapshot } from "../frontend/input-tracker.js";
3
+ export interface EarlyLibraryNativeFeatures {
4
+ backend: "c" | "llvm";
5
+ regex: boolean;
6
+ assert: boolean;
7
+ inspect: boolean;
8
+ symbol: boolean;
9
+ searchParams: boolean;
10
+ emitter: boolean;
11
+ zlib: boolean;
12
+ copying: boolean;
13
+ textDecoderLegacy: boolean;
14
+ /** Volatile exact-source build identity emitted from the tiny identity TU. */
15
+ buildId?: string;
16
+ }
17
+ export interface EarlyLibraryCacheOptions {
18
+ profilePath: string;
19
+ profileBytes: Uint8Array;
20
+ entryPath: string;
21
+ outDir: string;
22
+ outPath?: string;
23
+ emitIr: boolean;
24
+ sanitize: boolean;
25
+ target: string;
26
+ compiler: string[];
27
+ /** Host Node runtime whose builtin-module inventory participates in
28
+ * frontend classification. */
29
+ nodeVersion: string;
30
+ implementation: string;
31
+ }
32
+ export interface EarlyLibraryCacheHit {
33
+ cPath: string;
34
+ irPath?: string;
35
+ sidecarPath?: string;
36
+ native: EarlyLibraryNativeFeatures;
37
+ }
38
+ export interface EarlyLibraryCachePublish extends EarlyLibraryCacheHit {
39
+ frontend: FrontendInputSnapshot;
40
+ semantic?: {
41
+ mod: IrModule;
42
+ sources: ReadonlyMap<string, string>;
43
+ };
44
+ }
45
+ export interface SemanticLibraryCacheHit {
46
+ mod: IrModule;
47
+ translationUnit: string;
48
+ sourceTexts: Map<string, string>;
49
+ previousSources: Map<string, string>;
50
+ frontend: FrontendInputSnapshot;
51
+ sidecarJson: string | null;
52
+ native: EarlyLibraryNativeFeatures;
53
+ changedSources: string[];
54
+ }
55
+ /**
56
+ * Release versions separate published compilers. A source checkout keeps the
57
+ * package version unchanged while a branch is under test, so the built
58
+ * implementation directory also joins the key. Published packages execute
59
+ * the same `dist` tree and therefore get the same protection from partial or
60
+ * mixed installs without hashing the TypeScript source tree beside it.
61
+ */
62
+ export declare function libraryFrontendImplementationFingerprint(): Promise<string>;
63
+ export declare function readEarlyLibraryCache(root: string | null, options: EarlyLibraryCacheOptions, sidecarConfiguredPath: string | null | undefined): Promise<EarlyLibraryCacheHit | null>;
64
+ export declare function readSemanticLibraryCache(root: string | null, options: EarlyLibraryCacheOptions, sidecarConfiguredPath: string | null | undefined): Promise<SemanticLibraryCacheHit | null>;
65
+ export declare function publishEarlyLibraryCache(root: string | null, options: EarlyLibraryCacheOptions, result: EarlyLibraryCachePublish): Promise<void>;
@@ -0,0 +1,380 @@
1
+ import { createHash } from "node:crypto";
2
+ import { chmod, copyFile, mkdir, readFile, readdir, rename, rm, utimes, writeFile } from "node:fs/promises";
3
+ import { basename, dirname, join, relative, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { promisify } from "node:util";
6
+ import { deserialize as deserializeV8, serialize as serializeV8 } from "node:v8";
7
+ import { gzip, gunzip } from "node:zlib";
8
+ import { compilerReleaseVersion } from "./sidecar.js";
9
+ import { IR_VERSION } from "../ir/serialize.js";
10
+ import { frontendInputsSemanticallyMatch, frontendInputsStillMatch, validFrontendInputSnapshot } from "../frontend/input-tracker.js";
11
+ import { rebaseSourceLocations, semanticallyEqualSource, sourceLineRebaseIsIdentity } from "./semantic-source.js";
12
+ const gzipAsync = promisify(gzip);
13
+ const gunzipAsync = promisify(gunzip);
14
+ function validNativeFeatures(value) {
15
+ if (value === null || typeof value !== "object")
16
+ return false;
17
+ const native = value;
18
+ return (native.backend === "c" || native.backend === "llvm") &&
19
+ [
20
+ native.regex,
21
+ native.assert,
22
+ native.inspect,
23
+ native.symbol,
24
+ native.searchParams,
25
+ native.emitter,
26
+ native.zlib,
27
+ native.copying,
28
+ native.textDecoderLegacy,
29
+ ].every((flag) => typeof flag === "boolean") &&
30
+ (native.buildId === undefined || /^[0-9a-f]{16}$/.test(native.buildId));
31
+ }
32
+ function digest(bytes) {
33
+ return createHash("sha256").update(bytes).digest("hex");
34
+ }
35
+ function cacheKey(options) {
36
+ return createHash("sha256")
37
+ .update("early-library-v2\0")
38
+ .update(compilerReleaseVersion()).update("\0")
39
+ .update(resolve(options.profilePath)).update("\0")
40
+ .update(options.profileBytes).update("\0")
41
+ .update(resolve(options.entryPath)).update("\0")
42
+ .update(resolve(options.outDir)).update("\0")
43
+ .update(options.outPath === undefined ? "<default>" : resolve(options.outPath)).update("\0")
44
+ .update(options.emitIr ? "emit-ir" : "no-ir").update("\0")
45
+ .update(options.sanitize ? "sanitize" : "plain").update("\0")
46
+ .update(options.target).update("\0")
47
+ .update(options.compiler.join("\x1f")).update("\0")
48
+ .update(options.nodeVersion).update("\0")
49
+ .update(options.implementation)
50
+ .digest("hex");
51
+ }
52
+ /**
53
+ * Release versions separate published compilers. A source checkout keeps the
54
+ * package version unchanged while a branch is under test, so the built
55
+ * implementation directory also joins the key. Published packages execute
56
+ * the same `dist` tree and therefore get the same protection from partial or
57
+ * mixed installs without hashing the TypeScript source tree beside it.
58
+ */
59
+ export async function libraryFrontendImplementationFingerprint() {
60
+ const moduleDir = dirname(fileURLToPath(import.meta.url));
61
+ const implementationRoot = resolve(moduleDir, "..", "..");
62
+ const files = [];
63
+ const walk = async (directory) => {
64
+ const entries = await readdir(directory, { withFileTypes: true });
65
+ entries.sort((a, b) => a.name.localeCompare(b.name));
66
+ for (const entry of entries) {
67
+ const path = join(directory, entry.name);
68
+ if (entry.isDirectory())
69
+ await walk(path);
70
+ else if (entry.isFile())
71
+ files.push(path);
72
+ }
73
+ };
74
+ await walk(implementationRoot);
75
+ const hash = createHash("sha256").update("scriptc-frontend-implementation-v1\0");
76
+ for (const file of files) {
77
+ hash.update(relative(implementationRoot, file)).update("\0").update(await readFile(file)).update("\0");
78
+ }
79
+ return hash.digest("hex");
80
+ }
81
+ function stampPath(root, options) {
82
+ return join(root, "early-lib", cacheKey(options), "stamp.json");
83
+ }
84
+ function stampIntegrity(stamp) {
85
+ return createHash("sha256")
86
+ .update("early-library-stamp-v2\0")
87
+ .update(JSON.stringify(stamp))
88
+ .digest("hex");
89
+ }
90
+ function outputPaths(options, backend) {
91
+ const stem = basename(options.entryPath).replace(/\.(ts|js|mjs|cjs)$/, "");
92
+ return {
93
+ cPath: join(options.outDir, `${stem}.lib.${backend === "llvm" ? "ll" : "c"}`),
94
+ staleCPath: join(options.outDir, `${stem}.lib.${backend === "llvm" ? "c" : "ll"}`),
95
+ irPath: join(options.outDir, `${stem}.lib.ir.json`),
96
+ };
97
+ }
98
+ function sidecarOutputPath(options, configured) {
99
+ const archivePath = archiveOutputPath(options);
100
+ return configured !== null ? resolve(dirname(archivePath), configured) : `${archivePath}.contract.json`;
101
+ }
102
+ function archiveOutputPath(options) {
103
+ return options.outPath ?? join(options.outDir, `${basename(options.entryPath).replace(/\.(ts|js|mjs|cjs)$/, "")}.lib.a`);
104
+ }
105
+ function frontendOutputExclusions(options, backend, sidecarPath) {
106
+ const paths = outputPaths(options, backend);
107
+ const outputArtifacts = [
108
+ paths.cPath,
109
+ paths.staleCPath,
110
+ ...(options.emitIr ? [paths.irPath] : []),
111
+ archiveOutputPath(options),
112
+ ...(sidecarPath === undefined ? [] : [sidecarPath]),
113
+ ].map((path) => resolve(path));
114
+ const outputDirectories = new Set();
115
+ for (const artifact of outputArtifacts) {
116
+ for (let directory = dirname(artifact);; directory = dirname(directory)) {
117
+ outputDirectories.add(directory);
118
+ if (dirname(directory) === directory)
119
+ break;
120
+ }
121
+ }
122
+ return {
123
+ outputPaths: outputArtifacts,
124
+ outputDirectories,
125
+ };
126
+ }
127
+ async function readCachedFile(path, expected) {
128
+ try {
129
+ const bytes = await readFile(path);
130
+ return digest(bytes) === expected ? bytes : null;
131
+ }
132
+ catch {
133
+ return null;
134
+ }
135
+ }
136
+ async function installBytes(bytes, destination) {
137
+ await mkdir(dirname(destination), { recursive: true });
138
+ const tmp = join(dirname(destination), `.scriptc-early-hit-${process.pid}-${Math.random().toString(36).slice(2)}`);
139
+ try {
140
+ await writeFile(tmp, bytes, { mode: 0o600 });
141
+ await chmod(tmp, 0o666 & ~process.umask());
142
+ await rename(tmp, destination);
143
+ }
144
+ finally {
145
+ await rm(tmp, { force: true }).catch(() => undefined);
146
+ }
147
+ }
148
+ export async function readEarlyLibraryCache(root, options, sidecarConfiguredPath) {
149
+ if (root === null)
150
+ return null;
151
+ const path = stampPath(root, options);
152
+ try {
153
+ const stamp = JSON.parse(await readFile(path, "utf8"));
154
+ const { integrity, ...unsigned } = stamp;
155
+ if (stamp.version !== 2 ||
156
+ stamp.key !== cacheKey(options) ||
157
+ !validFrontendInputSnapshot(stamp.frontend) ||
158
+ !validNativeFeatures(stamp.native) ||
159
+ stamp.files?.translationUnit?.name !== "program.tu" ||
160
+ !/^[0-9a-f]{64}$/.test(stamp.files.translationUnit.digest) ||
161
+ (stamp.files.ir !== null && (stamp.files.ir?.name !== "program.ir.json" || !/^[0-9a-f]{64}$/.test(stamp.files.ir.digest))) ||
162
+ (stamp.files.sidecar !== null && (stamp.files.sidecar?.name !== "contract.json" || !/^[0-9a-f]{64}$/.test(stamp.files.sidecar.digest))) ||
163
+ (stamp.files.semanticIr !== null && (stamp.files.semanticIr?.name !== "semantic.ir.json.gz" || !/^[0-9a-f]{64}$/.test(stamp.files.semanticIr.digest))) ||
164
+ (stamp.files.sources !== null && (stamp.files.sources?.name !== "sources.json.gz" || !/^[0-9a-f]{64}$/.test(stamp.files.sources.digest))) ||
165
+ (stamp.files.semanticIr === null) !== (stamp.files.sources === null) ||
166
+ stampIntegrity(unsigned) !== integrity ||
167
+ !frontendInputsStillMatch(stamp.frontend, frontendOutputExclusions(options, stamp.native.backend, stamp.files.sidecar === null
168
+ ? undefined
169
+ : sidecarOutputPath(options, sidecarConfiguredPath ?? null))) ||
170
+ (stamp.files.ir !== null) !== options.emitIr ||
171
+ (stamp.files.sidecar !== null) !== (sidecarConfiguredPath !== undefined))
172
+ return null;
173
+ const directory = dirname(path);
174
+ const [translationUnit, ir, sidecar] = await Promise.all([
175
+ readCachedFile(join(directory, stamp.files.translationUnit.name), stamp.files.translationUnit.digest),
176
+ stamp.files.ir === null
177
+ ? Promise.resolve(null)
178
+ : readCachedFile(join(directory, stamp.files.ir.name), stamp.files.ir.digest),
179
+ stamp.files.sidecar === null
180
+ ? Promise.resolve(null)
181
+ : readCachedFile(join(directory, stamp.files.sidecar.name), stamp.files.sidecar.digest),
182
+ ]);
183
+ if (translationUnit === null ||
184
+ stamp.files.ir !== null && ir === null ||
185
+ stamp.files.sidecar !== null && sidecar === null)
186
+ return null;
187
+ const paths = outputPaths(options, stamp.native.backend);
188
+ await installBytes(translationUnit, paths.cPath);
189
+ await rm(paths.staleCPath, { force: true });
190
+ if (ir !== null)
191
+ await installBytes(ir, paths.irPath);
192
+ let sidecarPath;
193
+ if (sidecar !== null) {
194
+ sidecarPath = sidecarOutputPath(options, sidecarConfiguredPath ?? null);
195
+ await installBytes(sidecar, sidecarPath);
196
+ }
197
+ const now = new Date();
198
+ await Promise.all([
199
+ path,
200
+ join(directory, stamp.files.translationUnit.name),
201
+ ...(stamp.files.ir === null ? [] : [join(directory, stamp.files.ir.name)]),
202
+ ...(stamp.files.sidecar === null ? [] : [join(directory, stamp.files.sidecar.name)]),
203
+ ].map((cachePath) => utimes(cachePath, now, now).catch(() => undefined)));
204
+ return {
205
+ cPath: paths.cPath,
206
+ native: stamp.native,
207
+ ...(ir !== null ? { irPath: paths.irPath } : {}),
208
+ ...(sidecarPath !== undefined ? { sidecarPath } : {}),
209
+ };
210
+ }
211
+ catch {
212
+ return null;
213
+ }
214
+ }
215
+ function decodeSources(bytes) {
216
+ const entries = JSON.parse(Buffer.from(bytes).toString("utf8"));
217
+ if (!Array.isArray(entries))
218
+ throw new Error("semantic source payload is not an array");
219
+ const sources = new Map();
220
+ for (const entry of entries) {
221
+ if (!Array.isArray(entry) || entry.length !== 2 ||
222
+ typeof entry[0] !== "string" || typeof entry[1] !== "string")
223
+ throw new Error("semantic source payload has an invalid entry");
224
+ sources.set(entry[0], entry[1]);
225
+ }
226
+ return sources;
227
+ }
228
+ export async function readSemanticLibraryCache(root, options, sidecarConfiguredPath) {
229
+ if (root === null)
230
+ return null;
231
+ const path = stampPath(root, options);
232
+ try {
233
+ const stamp = JSON.parse(await readFile(path, "utf8"));
234
+ const { integrity, ...unsigned } = stamp;
235
+ if (stamp.version !== 2 || stamp.key !== cacheKey(options) ||
236
+ !validFrontendInputSnapshot(stamp.frontend) || !validNativeFeatures(stamp.native) ||
237
+ stamp.files?.translationUnit?.name !== "program.tu" ||
238
+ stamp.files?.semanticIr?.name !== "semantic.ir.json.gz" ||
239
+ stamp.files?.sources?.name !== "sources.json.gz" ||
240
+ !/^[0-9a-f]{64}$/.test(stamp.files.translationUnit.digest) ||
241
+ !/^[0-9a-f]{64}$/.test(stamp.files.semanticIr.digest) ||
242
+ !/^[0-9a-f]{64}$/.test(stamp.files.sources.digest) ||
243
+ (stamp.files.sidecar !== null) !== (sidecarConfiguredPath !== undefined) ||
244
+ stampIntegrity(unsigned) !== integrity)
245
+ return null;
246
+ const directory = dirname(path);
247
+ const [translationUnit, irCompressed, sourcesCompressed, sidecar] = await Promise.all([
248
+ readCachedFile(join(directory, stamp.files.translationUnit.name), stamp.files.translationUnit.digest),
249
+ readCachedFile(join(directory, stamp.files.semanticIr.name), stamp.files.semanticIr.digest),
250
+ readCachedFile(join(directory, stamp.files.sources.name), stamp.files.sources.digest),
251
+ stamp.files.sidecar === null
252
+ ? Promise.resolve(null)
253
+ : readCachedFile(join(directory, stamp.files.sidecar.name), stamp.files.sidecar.digest),
254
+ ]);
255
+ if (translationUnit === null || irCompressed === null || sourcesCompressed === null ||
256
+ (stamp.files.sidecar !== null && sidecar === null)) {
257
+ return null;
258
+ }
259
+ const [irJson, sourcesJson] = await Promise.all([
260
+ gunzipAsync(irCompressed),
261
+ gunzipAsync(sourcesCompressed),
262
+ ]);
263
+ const previousSources = decodeSources(sourcesJson);
264
+ const semantic = frontendInputsSemanticallyMatch(stamp.frontend, previousSources, semanticallyEqualSource, frontendOutputExclusions(options, stamp.native.backend, stamp.files.sidecar === null
265
+ ? undefined
266
+ : sidecarOutputPath(options, sidecarConfiguredPath ?? null)));
267
+ if (semantic === null || semantic.changed.length === 0)
268
+ return null;
269
+ // C source annotations are rendered through the entry source's line table,
270
+ // including imported offsets stamped with the entry path and synthetic
271
+ // byte-zero locations. Their line-only text cannot be rebased exactly for
272
+ // multi-source graphs or line-shifting edits. Keep TU reuse to the safe
273
+ // single-source, line-preserving subset; take the normal frontend path for
274
+ // the other uncommon trivia edits.
275
+ if (stamp.native.backend === "c") {
276
+ const entry = resolve(options.entryPath);
277
+ const change = semantic.changed.find((candidate) => candidate.path === entry);
278
+ if (previousSources.size > 1 || semantic.changed.length !== 1 || change === undefined ||
279
+ !sourceLineRebaseIsIdentity(entry, change.previous, change.current))
280
+ return null;
281
+ }
282
+ const mod = deserializeV8(irJson);
283
+ if (mod.irVersion !== IR_VERSION)
284
+ return null;
285
+ rebaseSourceLocations(mod, previousSources, semantic.currentSources);
286
+ const now = new Date();
287
+ await Promise.all([
288
+ path,
289
+ join(directory, stamp.files.translationUnit.name),
290
+ join(directory, stamp.files.semanticIr.name),
291
+ join(directory, stamp.files.sources.name),
292
+ ...(stamp.files.sidecar === null ? [] : [join(directory, stamp.files.sidecar.name)]),
293
+ ].map((cachePath) => utimes(cachePath, now, now).catch(() => undefined)));
294
+ return {
295
+ mod,
296
+ translationUnit: translationUnit.toString("utf8"),
297
+ sourceTexts: semantic.currentSources,
298
+ previousSources,
299
+ frontend: semantic.snapshot,
300
+ sidecarJson: sidecar === null ? null : sidecar.toString("utf8"),
301
+ native: stamp.native,
302
+ changedSources: semantic.changed.map((change) => change.path),
303
+ };
304
+ }
305
+ catch {
306
+ return null;
307
+ }
308
+ }
309
+ export async function publishEarlyLibraryCache(root, options, result) {
310
+ if (root === null || !result.frontend.stable)
311
+ return;
312
+ const destination = dirname(stampPath(root, options));
313
+ const parent = dirname(destination);
314
+ const stage = join(parent, `.tmp-${basename(destination).slice(0, 12)}-${process.pid}-${Math.random().toString(36).slice(2)}`);
315
+ try {
316
+ await mkdir(stage, { recursive: true, mode: 0o700 });
317
+ const publishFile = async (source, name) => {
318
+ const target = join(stage, name);
319
+ await copyFile(source, target);
320
+ await chmod(target, 0o600);
321
+ return { name, digest: digest(await readFile(target)) };
322
+ };
323
+ const [translationUnit, ir, sidecar, semanticIr, sources] = await Promise.all([
324
+ publishFile(result.cPath, "program.tu"),
325
+ result.irPath === undefined ? Promise.resolve(null) : publishFile(result.irPath, "program.ir.json"),
326
+ result.sidecarPath === undefined ? Promise.resolve(null) : publishFile(result.sidecarPath, "contract.json"),
327
+ result.semantic === undefined
328
+ ? Promise.resolve(null)
329
+ : gzipAsync(serializeV8(result.semantic.mod), { level: 1 }).then(async (bytes) => {
330
+ const target = join(stage, "semantic.ir.json.gz");
331
+ await writeFile(target, bytes, { mode: 0o600 });
332
+ return { name: "semantic.ir.json.gz", digest: digest(bytes) };
333
+ }),
334
+ result.semantic === undefined
335
+ ? Promise.resolve(null)
336
+ : gzipAsync(Buffer.from(JSON.stringify([...result.semantic.sources]), "utf8"), { level: 1 }).then(async (bytes) => {
337
+ const target = join(stage, "sources.json.gz");
338
+ await writeFile(target, bytes, { mode: 0o600 });
339
+ return { name: "sources.json.gz", digest: digest(bytes) };
340
+ }),
341
+ ]);
342
+ if (!frontendInputsStillMatch(result.frontend, frontendOutputExclusions(options, result.native.backend, result.sidecarPath)))
343
+ return;
344
+ const unsigned = {
345
+ version: 2,
346
+ key: cacheKey(options),
347
+ frontend: result.frontend,
348
+ files: { translationUnit, ir, sidecar, semanticIr, sources },
349
+ native: result.native,
350
+ };
351
+ const stamp = { ...unsigned, integrity: stampIntegrity(unsigned) };
352
+ await writeFile(join(stage, "stamp.json"), `${JSON.stringify(stamp)}\n`, { mode: 0o600 });
353
+ await mkdir(destination, { recursive: true, mode: 0o700 });
354
+ const install = async (name) => {
355
+ const source = join(stage, name);
356
+ const target = join(destination, name);
357
+ await rename(source, target).catch(async () => {
358
+ // Windows does not replace an existing destination through rename.
359
+ // A racing reader sees either the old file or a miss; the stamp lands
360
+ // last, so no mixed artifact set can validate as a hit.
361
+ await rm(target, { force: true });
362
+ await rename(source, target);
363
+ });
364
+ };
365
+ await install(translationUnit.name);
366
+ if (ir !== null)
367
+ await install(ir.name);
368
+ if (sidecar !== null)
369
+ await install(sidecar.name);
370
+ if (semanticIr !== null)
371
+ await install(semanticIr.name);
372
+ if (sources !== null)
373
+ await install(sources.name);
374
+ await install("stamp.json");
375
+ }
376
+ finally {
377
+ await rm(stage, { recursive: true, force: true }).catch(() => undefined);
378
+ }
379
+ }
380
+ //# sourceMappingURL=early-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"early-cache.js","sourceRoot":"","sources":["../../src/library/early-cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};