@scriptc/compiler 0.1.2 → 0.1.3

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 (151) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +59 -14
  2. package/dist/backend/c/async.d.ts +5 -0
  3. package/dist/backend/c/async.js +57 -0
  4. package/dist/backend/c/async.js.map +1 -1
  5. package/dist/backend/c/c-emitter.d.ts +3 -0
  6. package/dist/backend/c/c-emitter.js +15 -8
  7. package/dist/backend/c/c-emitter.js.map +1 -1
  8. package/dist/backend/c/exprs.d.ts +8 -1
  9. package/dist/backend/c/exprs.js +152 -9
  10. package/dist/backend/c/exprs.js.map +1 -1
  11. package/dist/backend/c/shapes.js +15 -13
  12. package/dist/backend/c/shapes.js.map +1 -1
  13. package/dist/backend/c/types.d.ts +4 -0
  14. package/dist/backend/c/types.js +18 -1
  15. package/dist/backend/c/types.js.map +1 -1
  16. package/dist/backend/c/types.test.js +8 -1
  17. package/dist/backend/c/types.test.js.map +1 -1
  18. package/dist/backend/c/walkers.js +32 -11
  19. package/dist/backend/c/walkers.js.map +1 -1
  20. package/dist/backend/json-literal.d.ts +7 -0
  21. package/dist/backend/json-literal.js +17 -0
  22. package/dist/backend/json-literal.js.map +1 -0
  23. package/dist/backend/json-literal.test.d.ts +1 -0
  24. package/dist/backend/json-literal.test.js +17 -0
  25. package/dist/backend/json-literal.test.js.map +1 -0
  26. package/dist/backend/link-plan.d.ts +1 -1
  27. package/dist/backend/link-plan.js +5 -1
  28. package/dist/backend/link-plan.js.map +1 -1
  29. package/dist/backend/llvm/classes.js +8 -7
  30. package/dist/backend/llvm/classes.js.map +1 -1
  31. package/dist/backend/llvm/common.d.ts +4 -0
  32. package/dist/backend/llvm/common.js +6 -0
  33. package/dist/backend/llvm/common.js.map +1 -1
  34. package/dist/backend/llvm/common.test.d.ts +1 -0
  35. package/dist/backend/llvm/common.test.js +9 -0
  36. package/dist/backend/llvm/common.test.js.map +1 -0
  37. package/dist/backend/llvm/dyn.d.ts +4 -0
  38. package/dist/backend/llvm/dyn.js +24 -13
  39. package/dist/backend/llvm/dyn.js.map +1 -1
  40. package/dist/backend/llvm/emitter.js +35 -7
  41. package/dist/backend/llvm/emitter.js.map +1 -1
  42. package/dist/backend/llvm/expr-context.d.ts +4 -0
  43. package/dist/backend/llvm/expr-dynamic.js +9 -0
  44. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  45. package/dist/backend/llvm/expr-primitives.js +8 -0
  46. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  47. package/dist/backend/llvm/expr-records.js +3 -3
  48. package/dist/backend/llvm/expr-records.js.map +1 -1
  49. package/dist/backend/llvm/expr-stream-bridges.js +2 -1
  50. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  51. package/dist/backend/llvm/expr-stream-callbacks.d.ts +3 -0
  52. package/dist/backend/llvm/expr-stream-callbacks.js +53 -0
  53. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -1
  54. package/dist/backend/llvm/lib-dispatch.js +22 -0
  55. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  56. package/dist/backend/llvm/lib-process.js +50 -5
  57. package/dist/backend/llvm/lib-process.js.map +1 -1
  58. package/dist/backend/llvm/lib-shared.js +46 -0
  59. package/dist/backend/llvm/lib-shared.js.map +1 -1
  60. package/dist/backend/llvm/shapes.js +10 -8
  61. package/dist/backend/llvm/shapes.js.map +1 -1
  62. package/dist/backend/llvm/walkers.js +7 -5
  63. package/dist/backend/llvm/walkers.js.map +1 -1
  64. package/dist/backend/native-link-info.d.ts +2 -1
  65. package/dist/backend/native-link-info.js +4 -0
  66. package/dist/backend/native-link-info.js.map +1 -1
  67. package/dist/backend/native-link-info.test.js +24 -1
  68. package/dist/backend/native-link-info.test.js.map +1 -1
  69. package/dist/backend/native-toolchain.d.ts +8 -6
  70. package/dist/backend/native-toolchain.js +28 -13
  71. package/dist/backend/native-toolchain.js.map +1 -1
  72. package/dist/backend/native-toolchain.test.js +36 -1
  73. package/dist/backend/native-toolchain.test.js.map +1 -1
  74. package/dist/backend/runtime-pack-targets.test.js +1 -1
  75. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  76. package/dist/backend/runtime-pack.test.js +1 -0
  77. package/dist/backend/runtime-pack.test.js.map +1 -1
  78. package/dist/backend/targets.d.ts +5 -0
  79. package/dist/backend/targets.js +9 -0
  80. package/dist/backend/targets.js.map +1 -1
  81. package/dist/backend/targets.test.js +6 -1
  82. package/dist/backend/targets.test.js.map +1 -1
  83. package/dist/coverage/surface-manifest.js +1 -0
  84. package/dist/coverage/surface-manifest.js.map +1 -1
  85. package/dist/diagnostics/diagnostic.js +3 -3
  86. package/dist/diagnostics/diagnostic.js.map +1 -1
  87. package/dist/executable/executable-cache.d.ts +1 -0
  88. package/dist/executable/executable-cache.js +1 -0
  89. package/dist/executable/executable-cache.js.map +1 -1
  90. package/dist/executable/executable-cache.test.js +1 -0
  91. package/dist/executable/executable-cache.test.js.map +1 -1
  92. package/dist/frontend/lowering/containers/bytes.d.ts +0 -4
  93. package/dist/frontend/lowering/containers/bytes.js +112 -28
  94. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  95. package/dist/frontend/lowering/lower-assert.js +16 -10
  96. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  97. package/dist/frontend/lowering/lower-builtins.d.ts +22 -21
  98. package/dist/frontend/lowering/lower-builtins.js +392 -67
  99. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  100. package/dist/frontend/lowering/lower-calls.d.ts +8 -6
  101. package/dist/frontend/lowering/lower-calls.js +110 -12
  102. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  103. package/dist/frontend/lowering/lower-containers.js +12 -8
  104. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  105. package/dist/frontend/lowering/lower-exprs.js +104 -5
  106. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  107. package/dist/frontend/lowering/lower-inspect.js +7 -0
  108. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  109. package/dist/frontend/lowering/lower-modules.js +8 -0
  110. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  111. package/dist/frontend/lowering/lower-stmts.d.ts +5 -4
  112. package/dist/frontend/lowering/lower-stmts.js +23 -6
  113. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  114. package/dist/frontend/lowering/lowerer.d.ts +4 -4
  115. package/dist/frontend/lowering/lowerer.js +5 -5
  116. package/dist/frontend/lowering/lowerer.js.map +1 -1
  117. package/dist/frontend/lowering/surfaces.d.ts +5 -3
  118. package/dist/frontend/lowering/surfaces.js +33 -13
  119. package/dist/frontend/lowering/surfaces.js.map +1 -1
  120. package/dist/frontend/npm-static-declarations.js +27 -14
  121. package/dist/frontend/npm-static-declarations.js.map +1 -1
  122. package/dist/frontend/npm-static-declarations.test.js +10 -0
  123. package/dist/frontend/npm-static-declarations.test.js.map +1 -1
  124. package/dist/frontend/program.js +18 -2
  125. package/dist/frontend/program.js.map +1 -1
  126. package/dist/frontend/resolve.d.ts +22 -7
  127. package/dist/frontend/resolve.js +83 -22
  128. package/dist/frontend/resolve.js.map +1 -1
  129. package/dist/frontend/resolve.test.js +21 -1
  130. package/dist/frontend/resolve.test.js.map +1 -1
  131. package/dist/frontend/type-mapper.js +52 -10
  132. package/dist/frontend/type-mapper.js.map +1 -1
  133. package/dist/index.js +6 -0
  134. package/dist/index.js.map +1 -1
  135. package/dist/ir/analysis.js +1 -0
  136. package/dist/ir/analysis.js.map +1 -1
  137. package/dist/ir/ir.d.ts +67 -24
  138. package/dist/ir/ir.js +81 -3
  139. package/dist/ir/ir.js.map +1 -1
  140. package/dist/ir/serialize.d.ts +1 -1
  141. package/dist/ir/serialize.js +1 -1
  142. package/dist/ir/validate.js +77 -5
  143. package/dist/ir/validate.js.map +1 -1
  144. package/dist/library/int-infer.test.js +4 -4
  145. package/dist/library/library-cache.d.ts +1 -0
  146. package/dist/library/library-cache.js +1 -0
  147. package/dist/library/library-cache.js.map +1 -1
  148. package/dist/library/library-cache.test.js +18 -5
  149. package/dist/library/library-cache.test.js.map +1 -1
  150. package/package.json +17 -17
  151. package/surface-manifest.json +32 -17
@@ -96,7 +96,7 @@ test("the production cache root follows overrides, platform defaults, and the ha
96
96
  expect(resolveBuildCacheRoot({}, "darwin", "/Users/tester")).toBe("/Users/tester/Library/Caches/scriptc/build");
97
97
  expect(resolveBuildCacheRoot({ LOCALAPPDATA: "/Users/tester/AppData/Local" }, "win32", "/Users/tester")).toBe("/Users/tester/AppData/Local/scriptc/cache/build");
98
98
  });
99
- test("executable section elimination flags are target-aware and never enter library recipes", () => {
99
+ test("executable section elimination flags are target-aware", () => {
100
100
  expect(executableSectionEliminationFlags("darwin")).toEqual({
101
101
  compile: [],
102
102
  link: ["-Wl,-dead_strip"],
@@ -111,6 +111,41 @@ test("executable section elimination flags are target-aware and never enter libr
111
111
  });
112
112
  expect(executableSectionEliminationFlags("wasi")).toEqual({ compile: [], link: [] });
113
113
  });
114
+ test.skipIf(process.platform !== "linux")("ELF library members preserve consumer section-GC granularity", async () => {
115
+ const dir = await mkdtemp(join(tmpdir(), "scriptc-lib-section-gc-"));
116
+ scratch.push(dir);
117
+ const cPath = join(dir, "program.c");
118
+ const archivePath = join(dir, "program.lib.a");
119
+ const probePath = join(dir, "probe.c");
120
+ const binaryPath = join(dir, "probe");
121
+ const oldNoCache = process.env["SCRIPTC_NO_CACHE"];
122
+ try {
123
+ process.env["SCRIPTC_NO_CACHE"] = "1";
124
+ await writeFile(cPath, `int scriptc_kept_data = 41;
125
+ int scriptc_dropped_data = 99;
126
+ int scriptc_kept_fn(void) { return scriptc_kept_data + 1; }
127
+ int scriptc_dropped_fn(void) { return scriptc_dropped_data; }
128
+ `);
129
+ await writeFile(probePath, `#include <stdio.h>
130
+ int scriptc_kept_fn(void);
131
+ int main(void) { printf("%d\\n", scriptc_kept_fn()); return 0; }
132
+ `);
133
+ await compileLibArchive({ cPath, outPath: archivePath });
134
+ execFileSync("clang", [probePath, archivePath, "-Wl,--gc-sections", "-o", binaryPath]);
135
+ expect(execFileSync(binaryPath, { encoding: "utf8" })).toBe("42\n");
136
+ const symbols = execFileSync("nm", [binaryPath], { encoding: "utf8" });
137
+ expect(symbols).toContain("scriptc_kept_fn");
138
+ expect(symbols).toContain("scriptc_kept_data");
139
+ expect(symbols).not.toContain("scriptc_dropped_fn");
140
+ expect(symbols).not.toContain("scriptc_dropped_data");
141
+ }
142
+ finally {
143
+ if (oldNoCache === undefined)
144
+ delete process.env["SCRIPTC_NO_CACHE"];
145
+ else
146
+ process.env["SCRIPTC_NO_CACHE"] = oldNoCache;
147
+ }
148
+ });
114
149
  test.skipIf(process.platform === "win32")("the early executable identity follows a compiler selected behind a stable driver", async () => {
115
150
  const dir = await mkdtemp(join(tmpdir(), "scriptc-effective-compiler-"));
116
151
  scratch.push(dir);