@scriptc/compiler 0.2.8 → 0.2.9

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 (189) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +1 -0
  2. package/dist/backend/cycle-analysis.js +50 -17
  3. package/dist/backend/cycle-analysis.js.map +1 -1
  4. package/dist/backend/cycle-analysis.test.js +138 -14
  5. package/dist/backend/cycle-analysis.test.js.map +1 -1
  6. package/dist/backend/cycle-mutability.d.ts +31 -6
  7. package/dist/backend/cycle-mutability.js +120 -18
  8. package/dist/backend/cycle-mutability.js.map +1 -1
  9. package/dist/backend/llvm/alloc.d.ts +13 -3
  10. package/dist/backend/llvm/alloc.js +24 -10
  11. package/dist/backend/llvm/alloc.js.map +1 -1
  12. package/dist/backend/llvm/alloc.test.js +5 -5
  13. package/dist/backend/llvm/alloc.test.js.map +1 -1
  14. package/dist/backend/llvm/byte-numbers.js +2 -3
  15. package/dist/backend/llvm/byte-numbers.js.map +1 -1
  16. package/dist/backend/llvm/classes.js +7 -6
  17. package/dist/backend/llvm/classes.js.map +1 -1
  18. package/dist/backend/llvm/common.d.ts +17 -0
  19. package/dist/backend/llvm/common.js +28 -0
  20. package/dist/backend/llvm/common.js.map +1 -1
  21. package/dist/backend/llvm/dense-array-access.js +1 -1
  22. package/dist/backend/llvm/dense-array-access.test.js +1 -1
  23. package/dist/backend/llvm/dyn.d.ts +4 -4
  24. package/dist/backend/llvm/dyn.js +27 -11
  25. package/dist/backend/llvm/dyn.js.map +1 -1
  26. package/dist/backend/llvm/emitter.d.ts +45 -3
  27. package/dist/backend/llvm/emitter.js +333 -74
  28. package/dist/backend/llvm/emitter.js.map +1 -1
  29. package/dist/backend/llvm/emitter.test.js +36 -3
  30. package/dist/backend/llvm/emitter.test.js.map +1 -1
  31. package/dist/backend/llvm/expr-bytes.js +35 -28
  32. package/dist/backend/llvm/expr-bytes.js.map +1 -1
  33. package/dist/backend/llvm/expr-containers.js +1 -1
  34. package/dist/backend/llvm/expr-context.d.ts +2 -0
  35. package/dist/backend/llvm/expr-control.js +46 -5
  36. package/dist/backend/llvm/expr-control.js.map +1 -1
  37. package/dist/backend/llvm/expr-dynamic.js +3 -0
  38. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  39. package/dist/backend/llvm/expr-stream-bridges.d.ts +3 -0
  40. package/dist/backend/llvm/expr-stream-bridges.js +73 -11
  41. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  42. package/dist/backend/llvm/lib-filesystem.js +18 -2
  43. package/dist/backend/llvm/lib-filesystem.js.map +1 -1
  44. package/dist/backend/llvm/lib-shared.js +1 -0
  45. package/dist/backend/llvm/lib-shared.js.map +1 -1
  46. package/dist/backend/llvm/local-array-reads.d.ts +17 -6
  47. package/dist/backend/llvm/local-array-reads.js +155 -43
  48. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  49. package/dist/backend/llvm/reference-effects.js +34 -1
  50. package/dist/backend/llvm/reference-effects.js.map +1 -1
  51. package/dist/backend/llvm/shapes.d.ts +14 -3
  52. package/dist/backend/llvm/shapes.js +43 -12
  53. package/dist/backend/llvm/shapes.js.map +1 -1
  54. package/dist/backend/llvm/shapes.test.js +5 -5
  55. package/dist/backend/llvm/shapes.test.js.map +1 -1
  56. package/dist/backend/llvm/string-reads.js +29 -26
  57. package/dist/backend/llvm/string-reads.js.map +1 -1
  58. package/dist/backend/llvm/string-slices.js +1 -1
  59. package/dist/backend/llvm/trunc.d.ts +8 -0
  60. package/dist/backend/llvm/trunc.js +28 -0
  61. package/dist/backend/llvm/trunc.js.map +1 -0
  62. package/dist/backend/loop-polls.d.ts +14 -0
  63. package/dist/backend/loop-polls.js +100 -0
  64. package/dist/backend/loop-polls.js.map +1 -0
  65. package/dist/backend/loop-polls.test.d.ts +1 -0
  66. package/dist/backend/loop-polls.test.js +86 -0
  67. package/dist/backend/loop-polls.test.js.map +1 -0
  68. package/dist/backend/may-throw.js +20 -1
  69. package/dist/backend/may-throw.js.map +1 -1
  70. package/dist/backend/may-throw.test.js +23 -0
  71. package/dist/backend/may-throw.test.js.map +1 -1
  72. package/dist/backend/native-codegen.d.ts +1 -3
  73. package/dist/backend/native-codegen.js +4 -32
  74. package/dist/backend/native-codegen.js.map +1 -1
  75. package/dist/backend/runtime-abi.d.ts +2 -2
  76. package/dist/backend/runtime-abi.js +2 -2
  77. package/dist/backend/runtime-abi.js.map +1 -1
  78. package/dist/backend/runtime-pack-targets.test.js +1 -1
  79. package/dist/backend/runtime-pack-targets.test.js.map +1 -1
  80. package/dist/backend/runtime-pack.test.js +1 -1
  81. package/dist/backend/runtime-pack.test.js.map +1 -1
  82. package/dist/cli/command.js +8 -1
  83. package/dist/cli/command.js.map +1 -1
  84. package/dist/cli/output-options.d.ts +1 -0
  85. package/dist/cli/output-options.js +3 -0
  86. package/dist/cli/output-options.js.map +1 -1
  87. package/dist/cli/usage.d.ts +5 -1
  88. package/dist/cli/usage.js +6 -0
  89. package/dist/cli/usage.js.map +1 -1
  90. package/dist/compile-types.d.ts +5 -0
  91. package/dist/executable/executable-cache.d.ts +2 -0
  92. package/dist/executable/executable-cache.js +3 -0
  93. package/dist/executable/executable-cache.js.map +1 -1
  94. package/dist/executable/executable-cache.test.js +1 -0
  95. package/dist/executable/executable-cache.test.js.map +1 -1
  96. package/dist/frontend/lowering/array-values.js +37 -1
  97. package/dist/frontend/lowering/array-values.js.map +1 -1
  98. package/dist/frontend/lowering/builtins/strings.js +4 -1
  99. package/dist/frontend/lowering/builtins/strings.js.map +1 -1
  100. package/dist/frontend/lowering/call-arguments.js +96 -4
  101. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  102. package/dist/frontend/lowering/class-method-mutations.js +88 -0
  103. package/dist/frontend/lowering/class-method-mutations.js.map +1 -1
  104. package/dist/frontend/lowering/containers/bytes.js +15 -4
  105. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  106. package/dist/frontend/lowering/expressions/union-fields.d.ts +19 -0
  107. package/dist/frontend/lowering/expressions/union-fields.js +236 -0
  108. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -0
  109. package/dist/frontend/lowering/lower-calls.js +12 -2
  110. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  111. package/dist/frontend/lowering/lower-exprs.d.ts +6 -0
  112. package/dist/frontend/lowering/lower-exprs.js +162 -3
  113. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  114. package/dist/frontend/lowering/lower-island.js +5 -19
  115. package/dist/frontend/lowering/lower-island.js.map +1 -1
  116. package/dist/frontend/lowering/lower-stmts.js +11 -1
  117. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  118. package/dist/frontend/lowering/lowerer.d.ts +5 -0
  119. package/dist/frontend/lowering/lowerer.js +174 -8
  120. package/dist/frontend/lowering/lowerer.js.map +1 -1
  121. package/dist/frontend/lowering/nan-coded-reads.d.ts +161 -0
  122. package/dist/frontend/lowering/nan-coded-reads.js +1342 -0
  123. package/dist/frontend/lowering/nan-coded-reads.js.map +1 -0
  124. package/dist/frontend/lowering/runtime-optional-bounds.d.ts +14 -2
  125. package/dist/frontend/lowering/runtime-optional-bounds.js +17 -11
  126. package/dist/frontend/lowering/runtime-optional-bounds.js.map +1 -1
  127. package/dist/frontend/lowering/runtime-optional-bounds.test.js +28 -0
  128. package/dist/frontend/lowering/runtime-optional-bounds.test.js.map +1 -1
  129. package/dist/frontend/lowering/surfaces.js +8 -0
  130. package/dist/frontend/lowering/surfaces.js.map +1 -1
  131. package/dist/index.d.ts +1 -1
  132. package/dist/index.js +20 -8
  133. package/dist/index.js.map +1 -1
  134. package/dist/ir/builtin-signatures.d.ts +1 -1
  135. package/dist/ir/builtin-signatures.js +2 -0
  136. package/dist/ir/builtin-signatures.js.map +1 -1
  137. package/dist/ir/constant-globals.d.ts +14 -0
  138. package/dist/ir/constant-globals.js +81 -0
  139. package/dist/ir/constant-globals.js.map +1 -0
  140. package/dist/ir/constant-globals.test.d.ts +1 -0
  141. package/dist/ir/constant-globals.test.js +97 -0
  142. package/dist/ir/constant-globals.test.js.map +1 -0
  143. package/dist/ir/final-fields.d.ts +35 -0
  144. package/dist/ir/final-fields.js +187 -0
  145. package/dist/ir/final-fields.js.map +1 -0
  146. package/dist/ir/final-fields.test.d.ts +1 -0
  147. package/dist/ir/final-fields.test.js +106 -0
  148. package/dist/ir/final-fields.test.js.map +1 -0
  149. package/dist/ir/int32-slots.d.ts +9 -0
  150. package/dist/ir/int32-slots.js +70 -57
  151. package/dist/ir/int32-slots.js.map +1 -1
  152. package/dist/ir/int32-slots.test.js +27 -0
  153. package/dist/ir/int32-slots.test.js.map +1 -1
  154. package/dist/ir/integer-loops.d.ts +5 -0
  155. package/dist/ir/integer-loops.js +20 -4
  156. package/dist/ir/integer-loops.js.map +1 -1
  157. package/dist/ir/integer-loops.test.js +17 -0
  158. package/dist/ir/integer-loops.test.js.map +1 -1
  159. package/dist/ir/ir.d.ts +6 -1
  160. package/dist/ir/ir.js +4 -0
  161. package/dist/ir/ir.js.map +1 -1
  162. package/dist/ir/serialize.d.ts +12 -2
  163. package/dist/ir/serialize.js +190 -39
  164. package/dist/ir/serialize.js.map +1 -1
  165. package/dist/ir/serialize.test.js +65 -1
  166. package/dist/ir/serialize.test.js.map +1 -1
  167. package/dist/native/cache.d.ts +8 -1
  168. package/dist/native/cache.js +38 -1
  169. package/dist/native/cache.js.map +1 -1
  170. package/dist/native/cache.test.js +11 -0
  171. package/dist/native/cache.test.js.map +1 -1
  172. package/dist/native/compiler.js +4 -3
  173. package/dist/native/compiler.js.map +1 -1
  174. package/dist/native/prepare.d.ts +3 -1
  175. package/dist/native/prepare.js +63 -28
  176. package/dist/native/prepare.js.map +1 -1
  177. package/dist/native/prepare.test.js +23 -1
  178. package/dist/native/prepare.test.js.map +1 -1
  179. package/dist/native/text-file.d.ts +10 -0
  180. package/dist/native/text-file.js +41 -0
  181. package/dist/native/text-file.js.map +1 -0
  182. package/dist/text-parts.d.ts +5 -0
  183. package/dist/text-parts.js +36 -0
  184. package/dist/text-parts.js.map +1 -0
  185. package/package.json +20 -20
  186. package/surface-manifest.json +7 -1
  187. package/dist/frontend/lowering/expressions/union-field-write.d.ts +0 -8
  188. package/dist/frontend/lowering/expressions/union-field-write.js +0 -108
  189. package/dist/frontend/lowering/expressions/union-field-write.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ import { closeSync, openSync, writeSync } from "node:fs";
2
+ /** Native compiler strings stop at 2^31 - 1 UTF-8 bytes, and exceeding that
3
+ * traps instead of throwing. Large artifacts therefore travel as bounded
4
+ * parts; this is the part size that batching aims for. */
5
+ export const TEXT_BATCH_LENGTH = 16 * 1024 * 1024;
6
+ /** Join consecutive small parts into batches of about TEXT_BATCH_LENGTH
7
+ * UTF-16 units, so callers hold and write few, still-bounded strings. */
8
+ export function batchTextParts(parts) {
9
+ const batches = [];
10
+ let batch = [];
11
+ let length = 0;
12
+ for (const part of parts) {
13
+ batch.push(part);
14
+ length += part.length;
15
+ if (length >= TEXT_BATCH_LENGTH) {
16
+ batches.push(batch.join(""));
17
+ batch = [];
18
+ length = 0;
19
+ }
20
+ }
21
+ if (batch.length > 0)
22
+ batches.push(batch.join(""));
23
+ return batches;
24
+ }
25
+ /** Write text parts to `path` in order without joining them first. Each part
26
+ * is one write; pass batched parts (`batchTextParts`) for many small ones. */
27
+ export function writeTextPartsSync(path, parts) {
28
+ const fd = openSync(path, "w");
29
+ try {
30
+ for (const part of parts) {
31
+ const bytes = Buffer.from(part, "utf8");
32
+ for (let offset = 0; offset < bytes.length;) {
33
+ offset += writeSync(fd, bytes, offset, bytes.length - offset);
34
+ }
35
+ }
36
+ }
37
+ finally {
38
+ closeSync(fd);
39
+ }
40
+ }
41
+ //# sourceMappingURL=text-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-file.js","sourceRoot":"","sources":["../../src/native/text-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzD;;0DAE0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD;yEACyE;AACzE,MAAM,UAAU,cAAc,CAAC,KAAwB;IACrD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAa,EAAE,CAAC;IACzB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,MAAM,IAAI,iBAAiB,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,KAAK,GAAG,EAAE,CAAC;YACX,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;8EAC8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAwB;IACvE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACxC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC5C,MAAM,IAAI,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,EAAE,CAAC,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Writes compiler text artifacts (LLVM, serialized IR) in large batches.
2
+ * Programs past the engine's string limit arrive as many parts, and writing
3
+ * each part separately is several times slower than writing the same bytes in
4
+ * a few large chunks. Batches stay far below the limit. */
5
+ export declare function writeTextParts(path: string, text: string | readonly string[], mode?: number): Promise<void>;
@@ -0,0 +1,36 @@
1
+ import { open } from "node:fs/promises";
2
+ /** Writes compiler text artifacts (LLVM, serialized IR) in large batches.
3
+ * Programs past the engine's string limit arrive as many parts, and writing
4
+ * each part separately is several times slower than writing the same bytes in
5
+ * a few large chunks. Batches stay far below the limit. */
6
+ export async function writeTextParts(path, text, mode = 0o666) {
7
+ const file = await open(path, "w", mode);
8
+ try {
9
+ const write = async (chunk) => {
10
+ const bytes = Buffer.from(chunk, "utf8");
11
+ for (let offset = 0; offset < bytes.length;) {
12
+ const { bytesWritten } = await file.write(bytes, offset, bytes.length - offset);
13
+ offset += bytesWritten;
14
+ }
15
+ };
16
+ if (typeof text === "string")
17
+ return await write(text);
18
+ let batch = [];
19
+ let length = 0;
20
+ for (const part of text) {
21
+ batch.push(part);
22
+ length += part.length;
23
+ if (length >= 16 * 1024 * 1024) {
24
+ await write(batch.join(""));
25
+ batch = [];
26
+ length = 0;
27
+ }
28
+ }
29
+ if (batch.length > 0)
30
+ await write(batch.join(""));
31
+ }
32
+ finally {
33
+ await file.close();
34
+ }
35
+ }
36
+ //# sourceMappingURL=text-parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-parts.js","sourceRoot":"","sources":["../src/text-parts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC;;;2DAG2D;AAC3D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAY,EACZ,IAAgC,EAChC,IAAI,GAAG,KAAK;IAEZ,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,KAAK,EAAE,KAAa,EAAiB,EAAE;YACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACzC,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;gBAC5C,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;gBAChF,MAAM,IAAI,YAAY,CAAC;YACzB,CAAC;QACH,CAAC,CAAC;QACF,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjB,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC;YACtB,IAAI,MAAM,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBAC/B,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC5B,KAAK,GAAG,EAAE,CAAC;gBACX,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@scriptc/compiler",
3
- "version": "0.2.8",
3
+ "version": "0.2.9",
4
4
  "description": "The scriptc compiler — TypeScript/JavaScript frontend, typed IR, LLVM backend",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://scriptc.dev",
@@ -37,27 +37,27 @@
37
37
  "dependencies": {
38
38
  "typescript": "7.0.2",
39
39
  "typescript5": "npm:typescript@5.9.3",
40
- "@scriptc/runtime": "0.2.8"
40
+ "@scriptc/runtime": "0.2.9"
41
41
  },
42
42
  "optionalDependencies": {
43
- "@scriptc/llvm-darwin-arm64": "0.2.8",
44
- "@scriptc/llvm-linux-x64-gnu": "0.2.8",
45
- "@scriptc/llvm-darwin-x64": "0.2.8",
46
- "@scriptc/llvm-linux-arm64-gnu": "0.2.8",
47
- "@scriptc/llvm-linux-x64-musl": "0.2.8",
48
- "@scriptc/llvm-linux-arm64-musl": "0.2.8",
49
- "@scriptc/llvm-win32-x64-msvc": "0.2.8",
50
- "@scriptc/runtime-darwin-x64": "0.2.8",
51
- "@scriptc/runtime-linux-x64-gnu": "0.2.8",
52
- "@scriptc/runtime-darwin-arm64": "0.2.8",
53
- "@scriptc/runtime-linux-arm64-gnu": "0.2.8",
54
- "@scriptc/runtime-linux-arm64-musl": "0.2.8",
55
- "@scriptc/runtime-linux-x64-musl": "0.2.8",
56
- "@scriptc/runtime-ios-arm64": "0.2.8",
57
- "@scriptc/runtime-ios-simulator-arm64": "0.2.8",
58
- "@scriptc/runtime-android-arm64": "0.2.8",
59
- "@scriptc/runtime-win32-x64-msvc": "0.2.8",
60
- "@scriptc/runtime-wasm32-wasi": "0.2.8"
43
+ "@scriptc/llvm-darwin-x64": "0.2.9",
44
+ "@scriptc/llvm-darwin-arm64": "0.2.9",
45
+ "@scriptc/llvm-linux-x64-gnu": "0.2.9",
46
+ "@scriptc/llvm-linux-arm64-gnu": "0.2.9",
47
+ "@scriptc/llvm-linux-x64-musl": "0.2.9",
48
+ "@scriptc/llvm-linux-arm64-musl": "0.2.9",
49
+ "@scriptc/llvm-win32-x64-msvc": "0.2.9",
50
+ "@scriptc/runtime-linux-x64-gnu": "0.2.9",
51
+ "@scriptc/runtime-darwin-x64": "0.2.9",
52
+ "@scriptc/runtime-linux-arm64-gnu": "0.2.9",
53
+ "@scriptc/runtime-darwin-arm64": "0.2.9",
54
+ "@scriptc/runtime-linux-x64-musl": "0.2.9",
55
+ "@scriptc/runtime-linux-arm64-musl": "0.2.9",
56
+ "@scriptc/runtime-win32-x64-msvc": "0.2.9",
57
+ "@scriptc/runtime-wasm32-wasi": "0.2.9",
58
+ "@scriptc/runtime-ios-simulator-arm64": "0.2.9",
59
+ "@scriptc/runtime-android-arm64": "0.2.9",
60
+ "@scriptc/runtime-ios-arm64": "0.2.9"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "node node_modules/typescript/bin/tsc -p tsconfig.json"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "compilerVersion": "0.2.8",
3
+ "compilerVersion": "0.2.9",
4
4
  "coverage": [
5
5
  "Entries are projected mechanically from the compiler's own decision tables: the diagnostics registry, the unsupported-syntax dispatch tables, the stdlib and node-builtin lowering tables, and the supported-builtin-module list. Nothing is hand-maintained; the manifest regenerates byte-identically from the source tree at this version.",
6
6
  "Absence from this manifest means 'not projected', never 'unsupported'. Surfaces lowered through dedicated code paths rather than tables are not yet projected: console, JSON, Promise/async and the timer surface, the net/http/tls/https/dgram/dns/assert/test/stream/readline module member surfaces, template literals, the regex slice, global functions (parseInt, parseFloat, isNaN, isFinite), and the process surface outside its ambient slice.",
@@ -1334,6 +1334,12 @@
1334
1334
  "status": "static",
1335
1335
  "note": "constant value read"
1336
1336
  },
1337
+ {
1338
+ "id": "node-builtin.os.availableParallelism",
1339
+ "kind": "node-builtin",
1340
+ "name": "os.availableParallelism",
1341
+ "status": "static"
1342
+ },
1337
1343
  {
1338
1344
  "id": "node-builtin.os.homedir",
1339
1345
  "kind": "node-builtin",
@@ -1,8 +0,0 @@
1
- import * as ts from "../../ts7/adapter.js";
2
- import type { Lowerer } from "../lowerer.js";
3
- import { type IrExpr } from "../../../ir/ir.js";
4
- /** Assign a common data field without projecting the union's objects into
5
- * a new structural shape. Each tag writes the original payload, so
6
- * aliases and identity-keyed collections observe the mutation. Accessors,
7
- * missing fields, and differently typed storage retain their own fences. */
8
- export declare function lowerUnionFieldWrite(lowerer: Lowerer, access: ts.PropertyAccessExpression, rhs: ts.Expression): IrExpr | null;
@@ -1,108 +0,0 @@
1
- import { nodeThrowExpr, varRef } from "../../../ir/build.js";
2
- import * as ts from "../../ts7/adapter.js";
3
- import { BOOL, typeEquals } from "../../../ir/ir.js";
4
- import { locOf } from "../../program.js";
5
- /** Assign a common data field without projecting the union's objects into
6
- * a new structural shape. Each tag writes the original payload, so
7
- * aliases and identity-keyed collections observe the mutation. Accessors,
8
- * missing fields, and differently typed storage retain their own fences. */
9
- export function lowerUnionFieldWrite(lowerer, access, rhs) {
10
- const mapped = lowerer.mapTypeOf(lowerer.typeOf(access.expression));
11
- if (access.questionDotToken || mapped?.kind !== "union")
12
- return null;
13
- const receiver = lowerer.maybeNarrow(lowerer.lowerExpr(access.expression), access.expression);
14
- if (receiver.type.kind !== "union")
15
- return null;
16
- const unionId = receiver.type.unionId;
17
- const arms = lowerer.unions.get(unionId)?.arms;
18
- if (!arms?.length)
19
- return null;
20
- const fields = [];
21
- let fieldType = null;
22
- for (const arm of arms) {
23
- if (arm.kind === "undefinedT" || arm.kind === "nullT") {
24
- fields.push(null);
25
- continue;
26
- }
27
- if (arm.kind !== "record" && arm.kind !== "object")
28
- return null;
29
- const type = arm.kind === "record"
30
- ? lowerer.shapes.get(arm.shapeId)?.fields.find((f) => f.name === access.name.text)?.type
31
- : lowerer.classes.get(arm.className)?.fields.get(access.name.text);
32
- if (!type || (fieldType !== null && !typeEquals(fieldType, type)))
33
- return null;
34
- fieldType = type;
35
- fields.push({ receiver: arm, type });
36
- }
37
- if (fieldType === null)
38
- return null;
39
- const loc = locOf(access);
40
- const object = lowerer.declareHiddenLocal("%unionWriteObject", receiver.type);
41
- const objectRef = varRef(object.id, object.type, loc);
42
- const value = lowerer.lowerExprExpecting(rhs, fieldType);
43
- const stored = lowerer.declareHiddenLocal("%unionWriteValue", value.type);
44
- // Snapshot the reference before evaluating the RHS, which can change the
45
- // original binding. Evaluate and retain the value once before dispatch.
46
- const body = [
47
- { kind: "varDecl", localId: object.id, init: receiver, loc },
48
- { kind: "varDecl", localId: stored.id, init: value, loc },
49
- ];
50
- const result = varRef(stored.id, stored.type, loc);
51
- let dispatch = result;
52
- for (let tag = fields.length - 1; tag >= 0; tag--) {
53
- const field = fields[tag];
54
- let branch;
55
- if (field) {
56
- const obj = {
57
- kind: "unionNarrow",
58
- unionId,
59
- tag,
60
- value: objectRef,
61
- type: field.receiver,
62
- loc,
63
- };
64
- const write = field.receiver.kind === "record"
65
- ? {
66
- kind: "recordSet",
67
- obj,
68
- shapeId: field.receiver.shapeId,
69
- field: access.name.text,
70
- value: result,
71
- loc,
72
- }
73
- : {
74
- kind: "fieldSet",
75
- obj,
76
- className: field.receiver.className,
77
- field: access.name.text,
78
- value: result,
79
- loc,
80
- };
81
- branch = { kind: "seqExpr", stmts: [write], result, type: result.type, loc };
82
- }
83
- else {
84
- branch = nodeThrowExpr(1, "", `Cannot set properties of ${arms[tag].kind === "nullT" ? "null" : "undefined"} (setting '${access.name.text}')`, result.type, loc);
85
- }
86
- dispatch =
87
- tag === fields.length - 1
88
- ? branch
89
- : {
90
- kind: "ternary",
91
- cond: {
92
- kind: "unionIsTag",
93
- unionId,
94
- tag,
95
- value: objectRef,
96
- negated: false,
97
- type: BOOL,
98
- loc,
99
- },
100
- then: branch,
101
- else_: dispatch,
102
- type: result.type,
103
- loc,
104
- };
105
- }
106
- return { kind: "seqExpr", stmts: body, result: dispatch, type: result.type, loc };
107
- }
108
- //# sourceMappingURL=union-field-write.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"union-field-write.js","sourceRoot":"","sources":["../../../../src/frontend/lowering/expressions/union-field-write.ts"],"names":[],"mappings":"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"}