@scriptc/compiler 0.0.35 → 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 (439) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +14 -11
  2. package/ambient/scriptc-overrides.d.ts +0 -7
  3. package/ambient/scriptc.d.ts +1 -1
  4. package/dist/backend/build-cache.d.ts +44 -0
  5. package/dist/backend/build-cache.js +241 -0
  6. package/dist/backend/build-cache.js.map +1 -0
  7. package/dist/backend/{emission/emit-async.d.ts → c/async.d.ts} +21 -30
  8. package/dist/backend/{emission/emit-async.js → c/async.js} +270 -286
  9. package/dist/backend/c/async.js.map +1 -0
  10. package/dist/backend/{emission/emitter.d.ts → c/c-emitter.d.ts} +6 -23
  11. package/dist/backend/{emission/emitter.js → c/c-emitter.js} +53 -107
  12. package/dist/backend/c/c-emitter.js.map +1 -0
  13. package/dist/backend/c/exprs.d.ts +8 -0
  14. package/dist/backend/c/exprs.js +7937 -0
  15. package/dist/backend/c/exprs.js.map +1 -0
  16. package/dist/backend/{emission/emit-island.d.ts → c/island.d.ts} +5 -5
  17. package/dist/backend/{emission/emit-island.js → c/island.js} +24 -22
  18. package/dist/backend/c/island.js.map +1 -0
  19. package/dist/backend/{emission → c}/may-throw.d.ts +1 -1
  20. package/dist/backend/{emission → c}/may-throw.js +4 -1
  21. package/dist/backend/c/may-throw.js.map +1 -0
  22. package/dist/backend/{emission/emit-shapes.d.ts → c/shapes.d.ts} +19 -19
  23. package/dist/backend/{emission/emit-shapes.js → c/shapes.js} +78 -87
  24. package/dist/backend/c/shapes.js.map +1 -0
  25. package/dist/backend/{emission/emit-stmts.d.ts → c/stmts.d.ts} +12 -12
  26. package/dist/backend/{emission/emit-stmts.js → c/stmts.js} +395 -343
  27. package/dist/backend/c/stmts.js.map +1 -0
  28. package/dist/backend/{emission/emit-types.d.ts → c/types.d.ts} +1 -1
  29. package/dist/backend/{emission/emit-types.js → c/types.js} +42 -286
  30. package/dist/backend/c/types.js.map +1 -0
  31. package/dist/backend/c/types.test.js +25 -0
  32. package/dist/backend/c/types.test.js.map +1 -0
  33. package/dist/backend/{emission/emit-walkers.d.ts → c/walkers.d.ts} +19 -41
  34. package/dist/backend/{emission/emit-walkers.js → c/walkers.js} +242 -304
  35. package/dist/backend/c/walkers.js.map +1 -0
  36. package/dist/backend/external-c.d.ts +33 -0
  37. package/dist/backend/external-c.js +51 -0
  38. package/dist/backend/external-c.js.map +1 -0
  39. package/dist/backend/ffi-callbacks.d.ts +1 -1
  40. package/dist/backend/ffi-callbacks.js +4 -3
  41. package/dist/backend/ffi-callbacks.js.map +1 -1
  42. package/dist/backend/{library-identity.d.ts → library-identity-markers.d.ts} +0 -4
  43. package/dist/backend/{library-identity.js → library-identity-markers.js} +10 -9
  44. package/dist/backend/library-identity-markers.js.map +1 -0
  45. package/dist/backend/link-plan.d.ts +37 -0
  46. package/dist/backend/link-plan.js +26 -0
  47. package/dist/backend/link-plan.js.map +1 -0
  48. package/dist/backend/linker.d.ts +22 -0
  49. package/dist/backend/linker.js +236 -0
  50. package/dist/backend/linker.js.map +1 -0
  51. package/dist/backend/llvm/blocks.d.ts +4 -0
  52. package/dist/backend/llvm/blocks.js +29 -0
  53. package/dist/backend/llvm/blocks.js.map +1 -1
  54. package/dist/backend/llvm/classes.d.ts +2 -19
  55. package/dist/backend/llvm/classes.js +20 -52
  56. package/dist/backend/llvm/classes.js.map +1 -1
  57. package/dist/backend/llvm/common.d.ts +4 -0
  58. package/dist/backend/llvm/common.js +27 -0
  59. package/dist/backend/llvm/common.js.map +1 -0
  60. package/dist/backend/llvm/dyn.d.ts +3 -8
  61. package/dist/backend/llvm/dyn.js +159 -224
  62. package/dist/backend/llvm/dyn.js.map +1 -1
  63. package/dist/backend/llvm/emitter.d.ts +4 -1
  64. package/dist/backend/llvm/emitter.js +548 -9988
  65. package/dist/backend/llvm/emitter.js.map +1 -1
  66. package/dist/backend/llvm/expr-async.d.ts +4 -0
  67. package/dist/backend/llvm/expr-async.js +726 -0
  68. package/dist/backend/llvm/expr-async.js.map +1 -0
  69. package/dist/backend/llvm/expr-bytes.d.ts +13 -0
  70. package/dist/backend/llvm/expr-bytes.js +456 -0
  71. package/dist/backend/llvm/expr-bytes.js.map +1 -0
  72. package/dist/backend/llvm/expr-callbacks.d.ts +22 -0
  73. package/dist/backend/llvm/expr-callbacks.js +520 -0
  74. package/dist/backend/llvm/expr-callbacks.js.map +1 -0
  75. package/dist/backend/llvm/expr-calls.d.ts +2 -0
  76. package/dist/backend/llvm/expr-calls.js +618 -0
  77. package/dist/backend/llvm/expr-calls.js.map +1 -0
  78. package/dist/backend/llvm/expr-containers.d.ts +25 -0
  79. package/dist/backend/llvm/expr-containers.js +637 -0
  80. package/dist/backend/llvm/expr-containers.js.map +1 -0
  81. package/dist/backend/llvm/expr-context.d.ts +255 -0
  82. package/dist/backend/llvm/expr-context.js +2 -0
  83. package/dist/backend/llvm/expr-context.js.map +1 -0
  84. package/dist/backend/llvm/expr-control.d.ts +2 -0
  85. package/dist/backend/llvm/expr-control.js +473 -0
  86. package/dist/backend/llvm/expr-control.js.map +1 -0
  87. package/dist/backend/llvm/expr-dispatch.d.ts +4 -0
  88. package/dist/backend/llvm/expr-dispatch.js +153 -0
  89. package/dist/backend/llvm/expr-dispatch.js.map +1 -0
  90. package/dist/backend/llvm/expr-dynamic.d.ts +2 -0
  91. package/dist/backend/llvm/expr-dynamic.js +810 -0
  92. package/dist/backend/llvm/expr-dynamic.js.map +1 -0
  93. package/dist/backend/llvm/expr-island.d.ts +15 -0
  94. package/dist/backend/llvm/expr-island.js +690 -0
  95. package/dist/backend/llvm/expr-island.js.map +1 -0
  96. package/dist/backend/llvm/expr-primitives.d.ts +6 -0
  97. package/dist/backend/llvm/expr-primitives.js +642 -0
  98. package/dist/backend/llvm/expr-primitives.js.map +1 -0
  99. package/dist/backend/llvm/expr-records.d.ts +9 -0
  100. package/dist/backend/llvm/expr-records.js +299 -0
  101. package/dist/backend/llvm/expr-records.js.map +1 -0
  102. package/dist/backend/llvm/expr-stream-bridges.d.ts +13 -0
  103. package/dist/backend/llvm/expr-stream-bridges.js +420 -0
  104. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -0
  105. package/dist/backend/llvm/expr-stream-callbacks.d.ts +12 -0
  106. package/dist/backend/llvm/expr-stream-callbacks.js +360 -0
  107. package/dist/backend/llvm/expr-stream-callbacks.js.map +1 -0
  108. package/dist/backend/llvm/lib-dispatch.d.ts +5 -0
  109. package/dist/backend/llvm/lib-dispatch.js +267 -0
  110. package/dist/backend/llvm/lib-dispatch.js.map +1 -0
  111. package/dist/backend/llvm/lib-filesystem.d.ts +6 -0
  112. package/dist/backend/llvm/lib-filesystem.js +594 -0
  113. package/dist/backend/llvm/lib-filesystem.js.map +1 -0
  114. package/dist/backend/llvm/lib-network.d.ts +2 -0
  115. package/dist/backend/llvm/lib-network.js +429 -0
  116. package/dist/backend/llvm/lib-network.js.map +1 -0
  117. package/dist/backend/llvm/lib-process.d.ts +5 -0
  118. package/dist/backend/llvm/lib-process.js +585 -0
  119. package/dist/backend/llvm/lib-process.js.map +1 -0
  120. package/dist/backend/llvm/lib-shared.d.ts +6 -0
  121. package/dist/backend/llvm/lib-shared.js +687 -0
  122. package/dist/backend/llvm/lib-shared.js.map +1 -0
  123. package/dist/backend/llvm/lib-stream.d.ts +2 -0
  124. package/dist/backend/llvm/lib-stream.js +470 -0
  125. package/dist/backend/llvm/lib-stream.js.map +1 -0
  126. package/dist/backend/llvm/shapes.d.ts +12 -2
  127. package/dist/backend/llvm/shapes.js +66 -307
  128. package/dist/backend/llvm/shapes.js.map +1 -1
  129. package/dist/backend/llvm/shapes.test.js +52 -0
  130. package/dist/backend/llvm/shapes.test.js.map +1 -0
  131. package/dist/backend/llvm/unsupported.d.ts +1 -1
  132. package/dist/backend/llvm/walkers.d.ts +2 -3
  133. package/dist/backend/llvm/walkers.js +195 -222
  134. package/dist/backend/llvm/walkers.js.map +1 -1
  135. package/dist/backend/native-codegen.d.ts +45 -0
  136. package/dist/backend/native-codegen.js +275 -0
  137. package/dist/backend/native-codegen.js.map +1 -0
  138. package/dist/backend/native-codegen.test.js +226 -0
  139. package/dist/backend/native-codegen.test.js.map +1 -0
  140. package/dist/backend/native-link-info.d.ts +96 -0
  141. package/dist/backend/native-link-info.js +243 -0
  142. package/dist/backend/native-link-info.js.map +1 -0
  143. package/dist/backend/native-link-info.test.d.ts +1 -0
  144. package/dist/backend/native-link-info.test.js +134 -0
  145. package/dist/backend/native-link-info.test.js.map +1 -0
  146. package/dist/backend/{cc.d.ts → native-toolchain.d.ts} +54 -34
  147. package/dist/backend/{cc.js → native-toolchain.js} +231 -810
  148. package/dist/backend/native-toolchain.js.map +1 -0
  149. package/dist/backend/native-toolchain.test.d.ts +1 -0
  150. package/dist/backend/{cc-cache.test.js → native-toolchain.test.js} +219 -7
  151. package/dist/backend/native-toolchain.test.js.map +1 -0
  152. package/dist/backend/object-localize.js +1 -1
  153. package/dist/backend/runtime-abi.d.ts +10 -0
  154. package/dist/backend/runtime-abi.js +11 -0
  155. package/dist/backend/runtime-abi.js.map +1 -0
  156. package/dist/backend/runtime-pack-targets.test.d.ts +1 -0
  157. package/dist/backend/runtime-pack-targets.test.js +54 -0
  158. package/dist/backend/runtime-pack-targets.test.js.map +1 -0
  159. package/dist/backend/runtime-pack.d.ts +112 -0
  160. package/dist/backend/runtime-pack.js +305 -0
  161. package/dist/backend/runtime-pack.js.map +1 -0
  162. package/dist/backend/runtime-pack.test.d.ts +1 -0
  163. package/dist/backend/runtime-pack.test.js +473 -0
  164. package/dist/backend/runtime-pack.test.js.map +1 -0
  165. package/dist/backend/targets.d.ts +76 -0
  166. package/dist/backend/targets.js +262 -0
  167. package/dist/backend/targets.js.map +1 -0
  168. package/dist/backend/targets.test.d.ts +1 -0
  169. package/dist/backend/targets.test.js +41 -0
  170. package/dist/backend/targets.test.js.map +1 -0
  171. package/dist/backend/vendor-archives.d.ts +41 -0
  172. package/dist/backend/vendor-archives.js +462 -0
  173. package/dist/backend/vendor-archives.js.map +1 -0
  174. package/dist/compat/fetch-profile.d.ts +0 -1
  175. package/dist/compat/fetch-profile.js +0 -1
  176. package/dist/compat/fetch-profile.js.map +1 -1
  177. package/dist/coverage/report.js +3 -3
  178. package/dist/coverage/report.js.map +1 -1
  179. package/dist/coverage/surface-manifest.js +35 -33
  180. package/dist/coverage/surface-manifest.js.map +1 -1
  181. package/dist/diagnostics/diagnostic.d.ts +11 -12
  182. package/dist/diagnostics/diagnostic.js +19 -17
  183. package/dist/diagnostics/diagnostic.js.map +1 -1
  184. package/dist/diagnostics/render.d.ts +1 -1
  185. package/dist/diagnostics/render.js +1 -1
  186. package/dist/diagnostics/render.js.map +1 -1
  187. package/dist/errors.d.ts +5 -0
  188. package/dist/errors.js +9 -0
  189. package/dist/errors.js.map +1 -0
  190. package/dist/executable/{early-cache.d.ts → executable-cache.d.ts} +2 -2
  191. package/dist/executable/{early-cache.js → executable-cache.js} +36 -98
  192. package/dist/executable/executable-cache.js.map +1 -0
  193. package/dist/executable/executable-cache.test.d.ts +1 -0
  194. package/dist/executable/{early-cache.test.js → executable-cache.test.js} +3 -3
  195. package/dist/executable/executable-cache.test.js.map +1 -0
  196. package/dist/ffi/{profile.js → ffi-manifest.js} +1 -1
  197. package/dist/ffi/ffi-manifest.js.map +1 -0
  198. package/dist/frontend/builtin-modules.d.ts +21 -0
  199. package/dist/frontend/builtin-modules.js +82 -0
  200. package/dist/frontend/builtin-modules.js.map +1 -0
  201. package/dist/frontend/cjs-lexer.d.ts +7 -0
  202. package/dist/frontend/cjs-lexer.js +15 -17
  203. package/dist/frontend/cjs-lexer.js.map +1 -1
  204. package/dist/frontend/dts-paths.d.ts +26 -0
  205. package/dist/frontend/dts-paths.js +41 -0
  206. package/dist/frontend/dts-paths.js.map +1 -0
  207. package/dist/frontend/input-tracker.d.ts +0 -2
  208. package/dist/frontend/input-tracker.js +1 -4
  209. package/dist/frontend/input-tracker.js.map +1 -1
  210. package/dist/frontend/lib-contract.d.ts +1 -5
  211. package/dist/frontend/lib-contract.js +1 -1
  212. package/dist/frontend/lib-contract.js.map +1 -1
  213. package/dist/frontend/lib-exports.d.ts +1 -1
  214. package/dist/frontend/lowering/array-values.d.ts +8 -0
  215. package/dist/frontend/lowering/array-values.js +60 -0
  216. package/dist/frontend/lowering/array-values.js.map +1 -0
  217. package/dist/frontend/lowering/call-position.d.ts +4 -0
  218. package/dist/frontend/lowering/call-position.js +7 -0
  219. package/dist/frontend/lowering/call-position.js.map +1 -0
  220. package/dist/frontend/lowering/callback-arg.d.ts +20 -0
  221. package/dist/frontend/lowering/callback-arg.js +44 -0
  222. package/dist/frontend/lowering/callback-arg.js.map +1 -0
  223. package/dist/frontend/lowering/lib-boundary.d.ts +1 -1
  224. package/dist/frontend/lowering/lib-boundary.js +34 -34
  225. package/dist/frontend/lowering/lib-boundary.js.map +1 -1
  226. package/dist/frontend/lowering/lower-array-sort.d.ts +22 -0
  227. package/dist/frontend/lowering/lower-array-sort.js +619 -0
  228. package/dist/frontend/lowering/lower-array-sort.js.map +1 -0
  229. package/dist/frontend/lowering/lower-assert.d.ts +3 -3
  230. package/dist/frontend/lowering/lower-assert.js +214 -241
  231. package/dist/frontend/lowering/lower-assert.js.map +1 -1
  232. package/dist/frontend/lowering/lower-builtins.d.ts +74 -146
  233. package/dist/frontend/lowering/lower-builtins.js +1285 -1233
  234. package/dist/frontend/lowering/lower-builtins.js.map +1 -1
  235. package/dist/frontend/lowering/lower-calls.d.ts +59 -192
  236. package/dist/frontend/lowering/lower-calls.js +1644 -1506
  237. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  238. package/dist/frontend/lowering/lower-classes.d.ts +62 -125
  239. package/dist/frontend/lowering/lower-classes.js +832 -866
  240. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  241. package/dist/frontend/lowering/lower-comptime.d.ts +5 -12
  242. package/dist/frontend/lowering/lower-comptime.js +32 -31
  243. package/dist/frontend/lowering/lower-comptime.js.map +1 -1
  244. package/dist/frontend/lowering/lower-containers.d.ts +35 -135
  245. package/dist/frontend/lowering/lower-containers.js +1984 -2227
  246. package/dist/frontend/lowering/lower-containers.js.map +1 -1
  247. package/dist/frontend/lowering/lower-dgram.d.ts +3 -7
  248. package/dist/frontend/lowering/lower-dgram.js +97 -111
  249. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  250. package/dist/frontend/lowering/lower-enums.d.ts +4 -4
  251. package/dist/frontend/lowering/lower-enums.js +30 -30
  252. package/dist/frontend/lowering/lower-enums.js.map +1 -1
  253. package/dist/frontend/lowering/{lower-emitter.d.ts → lower-event-emitter.d.ts} +7 -18
  254. package/dist/frontend/lowering/{lower-emitter.js → lower-event-emitter.js} +172 -174
  255. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -0
  256. package/dist/frontend/lowering/lower-expando.d.ts +5 -5
  257. package/dist/frontend/lowering/lower-expando.js +40 -40
  258. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  259. package/dist/frontend/lowering/lower-exprs.d.ts +60 -264
  260. package/dist/frontend/lowering/lower-exprs.js +2361 -1765
  261. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  262. package/dist/frontend/lowering/lower-generators.d.ts +6 -6
  263. package/dist/frontend/lowering/lower-generators.js +73 -72
  264. package/dist/frontend/lowering/lower-generators.js.map +1 -1
  265. package/dist/frontend/lowering/lower-inspect.d.ts +5 -17
  266. package/dist/frontend/lowering/lower-inspect.js +273 -261
  267. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  268. package/dist/frontend/lowering/lower-island.d.ts +39 -49
  269. package/dist/frontend/lowering/lower-island.js +447 -513
  270. package/dist/frontend/lowering/lower-island.js.map +1 -1
  271. package/dist/frontend/lowering/lower-mixins.d.ts +7 -10
  272. package/dist/frontend/lowering/lower-mixins.js +85 -85
  273. package/dist/frontend/lowering/lower-mixins.js.map +1 -1
  274. package/dist/frontend/lowering/lower-modules.d.ts +12 -18
  275. package/dist/frontend/lowering/lower-modules.js +284 -283
  276. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  277. package/dist/frontend/lowering/lower-namespaces.d.ts +23 -49
  278. package/dist/frontend/lowering/lower-namespaces.js +123 -115
  279. package/dist/frontend/lowering/lower-namespaces.js.map +1 -1
  280. package/dist/frontend/lowering/lower-server.d.ts +18 -25
  281. package/dist/frontend/lowering/lower-server.js +909 -899
  282. package/dist/frontend/lowering/lower-server.js.map +1 -1
  283. package/dist/frontend/lowering/lower-stmts.d.ts +30 -149
  284. package/dist/frontend/lowering/lower-stmts.js +1463 -1285
  285. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  286. package/dist/frontend/lowering/lower-stream.d.ts +12 -12
  287. package/dist/frontend/lowering/lower-stream.js +300 -301
  288. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  289. package/dist/frontend/lowering/lower-test.d.ts +5 -5
  290. package/dist/frontend/lowering/lower-test.js +82 -82
  291. package/dist/frontend/lowering/lower-test.js.map +1 -1
  292. package/dist/frontend/lowering/lowerer.d.ts +134 -22
  293. package/dist/frontend/lowering/lowerer.js +1277 -126
  294. package/dist/frontend/lowering/lowerer.js.map +1 -1
  295. package/dist/frontend/lowering/pairs-snapshot.d.ts +11 -0
  296. package/dist/frontend/lowering/pairs-snapshot.js +85 -0
  297. package/dist/frontend/lowering/pairs-snapshot.js.map +1 -0
  298. package/dist/frontend/lowering/static-this.d.ts +6 -0
  299. package/dist/frontend/lowering/static-this.js +24 -0
  300. package/dist/frontend/lowering/static-this.js.map +1 -0
  301. package/dist/frontend/lowering/surfaces.d.ts +24 -35
  302. package/dist/frontend/lowering/surfaces.js +78 -66
  303. package/dist/frontend/lowering/surfaces.js.map +1 -1
  304. package/dist/frontend/npm-static-rewrite.js +6 -28
  305. package/dist/frontend/npm-static-rewrite.js.map +1 -1
  306. package/dist/frontend/npm-static.d.ts +0 -10
  307. package/dist/frontend/npm-static.js +4 -7
  308. package/dist/frontend/npm-static.js.map +1 -1
  309. package/dist/frontend/npm.d.ts +0 -24
  310. package/dist/frontend/npm.js +11 -85
  311. package/dist/frontend/npm.js.map +1 -1
  312. package/dist/frontend/program.d.ts +3 -1
  313. package/dist/frontend/program.js +9 -4
  314. package/dist/frontend/program.js.map +1 -1
  315. package/dist/frontend/provenance-registry.d.ts +0 -2
  316. package/dist/frontend/provenance-registry.js +0 -10
  317. package/dist/frontend/provenance-registry.js.map +1 -1
  318. package/dist/frontend/provenance.js +4 -7
  319. package/dist/frontend/provenance.js.map +1 -1
  320. package/dist/frontend/resolve.d.ts +7 -2
  321. package/dist/frontend/resolve.js +12 -17
  322. package/dist/frontend/resolve.js.map +1 -1
  323. package/dist/frontend/resolve.test.d.ts +1 -0
  324. package/dist/frontend/resolve.test.js +29 -0
  325. package/dist/frontend/resolve.test.js.map +1 -0
  326. package/dist/frontend/ts7/adapter.d.ts +2 -2
  327. package/dist/frontend/ts7/adapter.js +1 -1
  328. package/dist/frontend/ts7/adapter.js.map +1 -1
  329. package/dist/frontend/ts7/checker.js +2 -36
  330. package/dist/frontend/ts7/checker.js.map +1 -1
  331. package/dist/frontend/ts7/enums.js +2 -1
  332. package/dist/frontend/ts7/enums.js.map +1 -1
  333. package/dist/frontend/ts7/{program.js → program-adapter.js} +7 -6
  334. package/dist/frontend/ts7/program-adapter.js.map +1 -0
  335. package/dist/frontend/ts7/world-check.d.ts +1 -3
  336. package/dist/frontend/ts7/world-check.js +3 -1
  337. package/dist/frontend/ts7/world-check.js.map +1 -1
  338. package/dist/frontend/tsc-codes.d.ts +8 -0
  339. package/dist/frontend/tsc-codes.js +109 -0
  340. package/dist/frontend/tsc-codes.js.map +1 -0
  341. package/dist/frontend/{types.d.ts → type-mapper.d.ts} +2 -25
  342. package/dist/frontend/{types.js → type-mapper.js} +12 -11
  343. package/dist/frontend/type-mapper.js.map +1 -0
  344. package/dist/frontend/workspace-registry.d.ts +26 -0
  345. package/dist/frontend/workspace-registry.js +71 -0
  346. package/dist/frontend/workspace-registry.js.map +1 -0
  347. package/dist/index.d.ts +113 -31
  348. package/dist/index.js +536 -128
  349. package/dist/index.js.map +1 -1
  350. package/dist/ir/analysis.d.ts +37 -0
  351. package/dist/ir/analysis.js +118 -0
  352. package/dist/ir/analysis.js.map +1 -0
  353. package/dist/ir/analysis.test.d.ts +1 -0
  354. package/dist/ir/analysis.test.js +21 -0
  355. package/dist/ir/analysis.test.js.map +1 -0
  356. package/dist/ir/build.d.ts +9 -0
  357. package/dist/ir/build.js +33 -0
  358. package/dist/ir/build.js.map +1 -0
  359. package/dist/ir/integer-loops.d.ts +1 -1
  360. package/dist/ir/{nodes.d.ts → ir.d.ts} +119 -37
  361. package/dist/ir/{nodes.js → ir.js} +170 -166
  362. package/dist/ir/ir.js.map +1 -0
  363. package/dist/ir/ir.test.d.ts +1 -0
  364. package/dist/ir/ir.test.js +17 -0
  365. package/dist/ir/ir.test.js.map +1 -0
  366. package/dist/ir/serialize.d.ts +2 -2
  367. package/dist/ir/serialize.js +3 -2
  368. package/dist/ir/serialize.js.map +1 -1
  369. package/dist/ir/validate.d.ts +1 -1
  370. package/dist/ir/validate.js +93 -41
  371. package/dist/ir/validate.js.map +1 -1
  372. package/dist/library/cache-primitives.d.ts +24 -0
  373. package/dist/library/cache-primitives.js +83 -0
  374. package/dist/library/cache-primitives.js.map +1 -0
  375. package/dist/library/cache-reset.test.d.ts +1 -0
  376. package/dist/library/cache-reset.test.js +47 -0
  377. package/dist/library/cache-reset.test.js.map +1 -0
  378. package/dist/library/{implementation-identity.js → compiler-self-identity.js} +1 -1
  379. package/dist/library/compiler-self-identity.js.map +1 -0
  380. package/dist/library/fence-eval.d.ts +3 -1
  381. package/dist/library/fence-eval.js +8 -2
  382. package/dist/library/fence-eval.js.map +1 -1
  383. package/dist/library/int-infer.d.ts +1 -36
  384. package/dist/library/int-infer.js +29 -18
  385. package/dist/library/int-infer.js.map +1 -1
  386. package/dist/library/int-infer.test.js +4 -4
  387. package/dist/library/{early-cache.d.ts → library-cache.d.ts} +1 -1
  388. package/dist/library/{early-cache.js → library-cache.js} +34 -89
  389. package/dist/library/library-cache.js.map +1 -0
  390. package/dist/library/library-cache.test.d.ts +1 -0
  391. package/dist/library/{early-cache.test.js → library-cache.test.js} +7 -7
  392. package/dist/library/library-cache.test.js.map +1 -0
  393. package/dist/library/{profile.d.ts → library-profile.d.ts} +4 -7
  394. package/dist/library/{profile.js → library-profile.js} +18 -11
  395. package/dist/library/library-profile.js.map +1 -0
  396. package/dist/library/semantic-source.js +2 -1
  397. package/dist/library/semantic-source.js.map +1 -1
  398. package/dist/library/sidecar.d.ts +5 -2
  399. package/dist/library/sidecar.js +11 -5
  400. package/dist/library/sidecar.js.map +1 -1
  401. package/dist/startup-cache.d.ts +11 -3
  402. package/dist/startup-cache.js +17 -2
  403. package/dist/startup-cache.js.map +1 -1
  404. package/package.json +19 -2
  405. package/surface-manifest.json +5 -5
  406. package/dist/backend/cc-cache.test.js.map +0 -1
  407. package/dist/backend/cc.js.map +0 -1
  408. package/dist/backend/emission/emit-async.js.map +0 -1
  409. package/dist/backend/emission/emit-exprs.d.ts +0 -13
  410. package/dist/backend/emission/emit-exprs.js +0 -7407
  411. package/dist/backend/emission/emit-exprs.js.map +0 -1
  412. package/dist/backend/emission/emit-island.js.map +0 -1
  413. package/dist/backend/emission/emit-shapes.js.map +0 -1
  414. package/dist/backend/emission/emit-stmts.js.map +0 -1
  415. package/dist/backend/emission/emit-types.js.map +0 -1
  416. package/dist/backend/emission/emit-walkers.js.map +0 -1
  417. package/dist/backend/emission/emitter.js.map +0 -1
  418. package/dist/backend/emission/may-throw.js.map +0 -1
  419. package/dist/backend/library-identity.js.map +0 -1
  420. package/dist/executable/early-cache.js.map +0 -1
  421. package/dist/executable/early-cache.test.js.map +0 -1
  422. package/dist/ffi/profile.js.map +0 -1
  423. package/dist/frontend/lowering/lower-emitter.js.map +0 -1
  424. package/dist/frontend/shared.d.ts +0 -82
  425. package/dist/frontend/shared.js +0 -308
  426. package/dist/frontend/shared.js.map +0 -1
  427. package/dist/frontend/ts7/program.js.map +0 -1
  428. package/dist/frontend/types.js.map +0 -1
  429. package/dist/ir/nodes.js.map +0 -1
  430. package/dist/library/early-cache.js.map +0 -1
  431. package/dist/library/early-cache.test.js.map +0 -1
  432. package/dist/library/implementation-identity.js.map +0 -1
  433. package/dist/library/profile.js.map +0 -1
  434. /package/dist/backend/{cc-cache.test.d.ts → c/types.test.d.ts} +0 -0
  435. /package/dist/{executable/early-cache.test.d.ts → backend/llvm/shapes.test.d.ts} +0 -0
  436. /package/dist/{library/early-cache.test.d.ts → backend/native-codegen.test.d.ts} +0 -0
  437. /package/dist/ffi/{profile.d.ts → ffi-manifest.d.ts} +0 -0
  438. /package/dist/frontend/ts7/{program.d.ts → program-adapter.d.ts} +0 -0
  439. /package/dist/library/{implementation-identity.d.ts → compiler-self-identity.d.ts} +0 -0
@@ -0,0 +1,236 @@
1
+ /** Platform-linker invocation for a previously created native link plan.
2
+ *
3
+ * No source file is accepted here. That makes it mechanically impossible
4
+ * for the helper/runtime-pack executable route to compile generated or
5
+ * runtime C as part of linking.
6
+ */
7
+ import { execFile } from "node:child_process";
8
+ import { createHash, randomUUID } from "node:crypto";
9
+ import { existsSync, realpathSync, statSync } from "node:fs";
10
+ import { mkdtemp, rename, rm, stat } from "node:fs/promises";
11
+ import { delimiter } from "node:path";
12
+ import { basename, dirname, isAbsolute, join, resolve } from "node:path";
13
+ import { promisify } from "node:util";
14
+ import { CcCompileError, nativeArtifactDependenciesStillMatch, parseLinkTraceFiles, subprocessFailureDetail, toolchainEnvironmentCachePolicy, toolchainEnvironmentFingerprint, } from "./native-toolchain.js";
15
+ import { RuntimePackError, stageRuntimePackArtifacts } from "./runtime-pack.js";
16
+ const execFileAsync = promisify(execFile);
17
+ /** The linker (or linker driver) is independent from SCRIPTC_CC. A plain
18
+ * `clang` is the initial macOS driver because it locates the selected SDK and
19
+ * CRT inputs; it receives only objects and archives on this route. */
20
+ export function resolvePlatformLinker(env = process.env, defaultLinker = "clang") {
21
+ return env["SCRIPTC_LINKER"] || defaultLinker;
22
+ }
23
+ /** Exact executable selected for a linker spelling. The object-only route
24
+ * must still invalidate an early executable when a new `clang` appears ahead
25
+ * of an unchanged PATH entry; relying on the string "clang" would restore a
26
+ * binary past a wrapper that injects link inputs. */
27
+ function platformLinkerIdentity(env, linker = resolvePlatformLinker(env)) {
28
+ const hasSeparator = linker.includes("/") || linker.includes("\\");
29
+ const pathEntries = hasSeparator
30
+ ? [""]
31
+ : (env["PATH"] ?? "/usr/bin:/bin").split(delimiter);
32
+ const extensions = process.platform === "win32" && !/\.[^/\\]+$/.test(linker)
33
+ ? (env["PATHEXT"] ?? ".COM;.EXE;.BAT;.CMD").split(";")
34
+ : [""];
35
+ for (const entry of pathEntries) {
36
+ const base = hasSeparator
37
+ ? (isAbsolute(linker) ? linker : resolve(linker))
38
+ : join(entry === "" ? process.cwd() : entry, linker);
39
+ for (const extension of extensions) {
40
+ const candidate = `${base}${extension}`;
41
+ try {
42
+ if (!existsSync(candidate))
43
+ continue;
44
+ const canonical = realpathSync(candidate);
45
+ const info = statSync(canonical);
46
+ if (!info.isFile())
47
+ continue;
48
+ return [canonical, info.dev, info.ino, info.size, info.mtimeMs, info.ctimeMs].join("\0");
49
+ }
50
+ catch {
51
+ // Keep searching PATH exactly as process spawning does.
52
+ }
53
+ }
54
+ }
55
+ return `<unresolved:${linker}>`;
56
+ }
57
+ /** Cache-route identity for an object-only platform-link invocation. The
58
+ * complete executable cache additionally records and revalidates the
59
+ * linker's resolved SDK/CRT inputs before it restores an executable. This
60
+ * deliberately performs no synthetic C compilation: the linker receives
61
+ * only the helper-produced program object and runtime-pack artifacts. */
62
+ export async function executableLinkerEnvironmentFingerprint(env = process.env, defaultLinker = "clang") {
63
+ const linker = resolvePlatformLinker(env, defaultLinker);
64
+ const linkerIdentity = platformLinkerIdentity(env);
65
+ let effectiveDriverIdentity;
66
+ try {
67
+ const selected = await execFileAsync(linker, ["-print-prog-name=clang"], {
68
+ env,
69
+ maxBuffer: 16 * 1024 * 1024,
70
+ });
71
+ const selectedDriver = selected.stdout.trim();
72
+ if (selectedDriver === "")
73
+ throw new Error("linker driver reported no effective clang");
74
+ effectiveDriverIdentity = platformLinkerIdentity(env, selectedDriver);
75
+ }
76
+ catch {
77
+ // A driver that cannot expose its effective clang may still link correctly,
78
+ // but the trusted default cannot safely address an existing early
79
+ // executable entry. Explicit drivers never publish complete executables,
80
+ // so their own file identity remains a sufficient stable partial-cache key.
81
+ effectiveDriverIdentity = env["SCRIPTC_LINKER"] === undefined
82
+ ? `<unavailable:${linker}:${randomUUID()}>`
83
+ : `<unavailable:${linker}>`;
84
+ }
85
+ const hash = createHash("sha256")
86
+ .update("executable-linker-environment-v2\0")
87
+ .update(toolchainEnvironmentFingerprint(env)).update("\0")
88
+ .update(linkerIdentity).update("\0")
89
+ .update(effectiveDriverIdentity).update("\0");
90
+ for (const name of ["PATH", "SCRIPTC_FETCH_CURL", "SCRIPTC_TEST_RUNTIME_SRC_DIR"]) {
91
+ const value = env[name];
92
+ hash.update(name).update(value === undefined ? "\0unset\0" : "\0set\0").update(value ?? "").update("\0");
93
+ }
94
+ return hash.digest("hex");
95
+ }
96
+ /** Whether the object-only linker route can publish a whole executable cache
97
+ * entry. The current proof machinery trusts only the direct default driver;
98
+ * a caller-selected SCRIPTC_LINKER may be a wrapper with hidden inputs. */
99
+ export function platformLinkerSupportsPersistentCache(env = process.env, target) {
100
+ if (target !== undefined && target.platform !== "darwin")
101
+ return false;
102
+ // The Apple system shim is a stable front door to the active SDK/linker;
103
+ // linkNativeExecutable snapshots the selected transitive inputs before it
104
+ // publishes the final cache entry. A PATH wrapper is intentionally opaque.
105
+ return env["SCRIPTC_LINKER"] === undefined &&
106
+ toolchainEnvironmentCachePolicy(env).completeArtifacts &&
107
+ platformLinkerIdentity(env).startsWith("/usr/bin/clang\0");
108
+ }
109
+ async function snapshotDependencies(paths) {
110
+ const { lstat, realpath } = await import("node:fs/promises");
111
+ return Promise.all([...new Set(paths.map((path) => resolve(path)))].sort().map(async (path) => {
112
+ const info = await lstat(path);
113
+ const kind = info.isFile() ? "file" : info.isDirectory() ? "directory" : "symlink";
114
+ const dependency = {
115
+ path,
116
+ kind,
117
+ dev: Number(info.dev), ino: Number(info.ino), size: Number(info.size),
118
+ mtimeMs: Number(info.mtimeMs), ctimeMs: Number(info.ctimeMs),
119
+ };
120
+ if (kind === "symlink") {
121
+ const targetPath = await realpath(path);
122
+ const target = await stat(path);
123
+ const targetKind = target.isFile() ? "file" : target.isDirectory() ? "directory" : null;
124
+ if (targetKind === null)
125
+ throw new Error(`unsupported linker dependency: ${path}`);
126
+ dependency.targetPath = targetPath;
127
+ dependency.targetKind = targetKind;
128
+ dependency.targetDev = Number(target.dev);
129
+ dependency.targetIno = Number(target.ino);
130
+ dependency.targetSize = Number(target.size);
131
+ dependency.targetMtimeMs = Number(target.mtimeMs);
132
+ dependency.targetCtimeMs = Number(target.ctimeMs);
133
+ }
134
+ return dependency;
135
+ }));
136
+ }
137
+ /** Resolve platform SDK/CRT inputs from the actual object-only link line.
138
+ *
139
+ * This intentionally avoids native-toolchain's C-driver probe: the program
140
+ * object and staged runtime pack already give the linker everything it needs
141
+ * for a faithful dry/trace link. Besides keeping the Phase 5 boundary
142
+ * honest, this observes driver options injected only at link time. */
143
+ async function objectLinkerDependencyPaths(linker, args, cwd, excludedRoots) {
144
+ const [reportedLinker, dryRun, trace] = await Promise.all([
145
+ execFileAsync(linker, ["-print-prog-name=ld"], { cwd, maxBuffer: 16 * 1024 * 1024 }),
146
+ execFileAsync(linker, [...args, "-###"], { cwd, maxBuffer: 32 * 1024 * 1024 }),
147
+ execFileAsync(linker, [...args, "-Wl,-t"], { cwd, maxBuffer: 32 * 1024 * 1024 }),
148
+ ]);
149
+ const paths = new Set();
150
+ const add = async (candidate) => {
151
+ const path = resolve(cwd, candidate.trim());
152
+ if (path === "")
153
+ return;
154
+ const info = await stat(path).catch(() => null);
155
+ if (info?.isFile())
156
+ paths.add(path);
157
+ };
158
+ await add(reportedLinker.stdout.trim());
159
+ for (const path of await parseLinkTraceFiles(`${dryRun.stdout}\n${dryRun.stderr}`, cwd, cwd, true))
160
+ paths.add(path);
161
+ for (const path of await parseLinkTraceFiles(`${trace.stdout}\n${trace.stderr}`, cwd, cwd))
162
+ paths.add(path);
163
+ const normalizedRoots = excludedRoots.map((root) => resolve(root));
164
+ return [...paths].filter((path) => !normalizedRoots.some((root) => path === root || path.startsWith(`${root}/`) || path.startsWith(`${root}\\`))).sort();
165
+ }
166
+ export async function linkNativeExecutable(plan, options = {}) {
167
+ const explicitLinker = options.linker ?? process.env["SCRIPTC_LINKER"];
168
+ const linker = explicitLinker ?? plan.target.defaultLinker;
169
+ // ld64 derives an ad-hoc signature identifier from the output basename.
170
+ // Keep that basename caller-visible while a private sibling directory gives
171
+ // the link its own inode and preserves an atomic same-filesystem install.
172
+ const privateOutRoot = await mkdtemp(join(dirname(plan.outputPath), ".scriptc-runtime-pack-link-"));
173
+ const privateOut = join(privateOutRoot, basename(plan.outputPath));
174
+ let stagedRoot = null;
175
+ try {
176
+ const staged = await stageRuntimePackArtifacts(plan.runtimePack);
177
+ stagedRoot = staged.root;
178
+ const args = [
179
+ ...(explicitLinker === undefined ? plan.target.defaultLinkerArgs : []),
180
+ ...plan.driverFlags,
181
+ ...plan.inputs.map((input) => staged.replacements.get(input) ?? input),
182
+ ...plan.systemLibraries.map((name) => `-l${name}`),
183
+ "-o", privateOut,
184
+ ];
185
+ // The pack snapshots bracket both verification passes and private staging;
186
+ // the program-object snapshot begins before helper emission. Snapshot the
187
+ // remaining cache-bearing inputs before the linker consumes them, then
188
+ // require the complete set to remain stable through publication.
189
+ const inheritedDependencies = [
190
+ ...plan.runtimePack.sourceDependencies,
191
+ ...plan.programObjectDependencies,
192
+ ];
193
+ const inheritedDependencyPaths = new Set(inheritedDependencies.map((dependency) => resolve(dependency.path)));
194
+ const additionalDependencyPaths = plan.dependencyPaths.filter((path) => !inheritedDependencyPaths.has(resolve(path)));
195
+ const preLinkDependencies = options.onArtifactReady === undefined ||
196
+ !(await nativeArtifactDependenciesStillMatch(inheritedDependencies).catch(() => false))
197
+ ? null
198
+ : await objectLinkerDependencyPaths(linker, args, privateOutRoot, [
199
+ privateOutRoot,
200
+ staged.root,
201
+ ...plan.inputs,
202
+ ])
203
+ .then(async (toolchain) => [
204
+ ...inheritedDependencies,
205
+ ...await snapshotDependencies([...toolchain, ...additionalDependencyPaths]),
206
+ ])
207
+ .catch(() => null);
208
+ await execFileAsync(linker, args);
209
+ const output = await stat(privateOut);
210
+ if (!output.isFile() || output.size === 0)
211
+ throw new Error("linker produced no executable");
212
+ await rename(privateOut, plan.outputPath).catch(async () => {
213
+ await rm(plan.outputPath, { force: true });
214
+ await rename(privateOut, plan.outputPath);
215
+ });
216
+ if (options.onArtifactReady !== undefined && preLinkDependencies !== null &&
217
+ await nativeArtifactDependenciesStillMatch(preLinkDependencies).catch(() => false)) {
218
+ await options.onArtifactReady({ dependencies: preLinkDependencies }).catch(() => undefined);
219
+ }
220
+ }
221
+ catch (error) {
222
+ if (error instanceof CcCompileError || error instanceof RuntimePackError)
223
+ throw error;
224
+ const detail = subprocessFailureDetail(error);
225
+ throw new CcCompileError(linker, detail, `${linker} failed linking ${basename(plan.outputPath)} from the precompiled runtime pack.\n${detail}`);
226
+ }
227
+ finally {
228
+ await Promise.all([
229
+ rm(privateOutRoot, { recursive: true, force: true }).catch(() => undefined),
230
+ stagedRoot === null
231
+ ? Promise.resolve()
232
+ : rm(stagedRoot, { recursive: true, force: true }).catch(() => undefined),
233
+ ]);
234
+ }
235
+ }
236
+ //# sourceMappingURL=linker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"linker.js","sourceRoot":"","sources":["../../src/backend/linker.ts"],"names":[],"mappings":"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"}
@@ -17,5 +17,9 @@ export declare class BlockBuilder {
17
17
  terminate(s: string): void;
18
18
  br(label: string): void;
19
19
  condBr(v: string, t: string, f: string): void;
20
+ /** Emit a double-indexed `for (i = 0; i < len; i++)` loop. `next` is
21
+ * exposed for bodies with internal branches that need to continue at the
22
+ * shared increment block. */
23
+ countedLoop(len: string, emitBody: (index: string, next: string) => void, comparison?: "olt" | "ole"): void;
20
24
  render(): string;
21
25
  }
@@ -52,6 +52,35 @@ export class BlockBuilder {
52
52
  condBr(v, t, f) {
53
53
  this.terminate(`br i1 ${v}, label %${t}, label %${f}`);
54
54
  }
55
+ /** Emit a double-indexed `for (i = 0; i < len; i++)` loop. `next` is
56
+ * exposed for bodies with internal branches that need to continue at the
57
+ * shared increment block. */
58
+ countedLoop(len, emitBody, comparison = "olt") {
59
+ const indexSlot = this.slot();
60
+ this.entryAllocas.push(`${indexSlot} = alloca double`);
61
+ this.line(`store double 0x0000000000000000, ptr ${indexSlot}`);
62
+ const condition = this.newLabel("count.c");
63
+ const body = this.newLabel("count.b");
64
+ const next = this.newLabel("count.n");
65
+ const done = this.newLabel("count.e");
66
+ this.br(condition);
67
+ this.startBlock(condition);
68
+ const index = this.tmp();
69
+ const more = this.tmp();
70
+ this.line(`${index} = load double, ptr ${indexSlot}`);
71
+ this.line(`${more} = fcmp ${comparison} double ${index}, ${len}`);
72
+ this.condBr(more, body, done);
73
+ this.startBlock(body);
74
+ emitBody(index, next);
75
+ if (!this.isTerminated())
76
+ this.br(next);
77
+ this.startBlock(next);
78
+ const incremented = this.tmp();
79
+ this.line(`${incremented} = fadd double ${index}, 0x3FF0000000000000`);
80
+ this.line(`store double ${incremented}, ptr ${indexSlot}`);
81
+ this.br(condition);
82
+ this.startBlock(done);
83
+ }
55
84
  render() {
56
85
  return this.blocks
57
86
  .map((b, i) => {
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;6CAU6C;AAE7C,MAAM,OAAO,YAAY;IACN,MAAM,GAA8D,EAAE,CAAC;IAChF,GAAG,CAA0D;IACrE;;2CAEuC;IAC9B,YAAY,GAAa,EAAE,CAAC;IAC7B,WAAW,GAAG,CAAC,CAAC;IAChB,YAAY,GAAG,CAAC,CAAC;IAEzB;QACE,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,KAAa;QACtB,IAAI,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,CAAS;QACZ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG;QACD,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,IAAI;QACF,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC;IAChC,CAAC;IAED,SAAS,CAAC,CAAS;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;IACvD,CAAC;IAED,EAAE,CAAC,KAAa;QACd,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;QACpC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACZ,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1F,+DAA+D;YAC/D,mEAAmE;YACnE,cAAc;YACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC;YACvC,OAAO,GAAG,CAAC,CAAC,KAAK,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;QAC9E,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;CACF"}
1
+ {"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../../src/backend/llvm/blocks.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { IrClassDef, IrFunction, IrModule, IrType } from "../../ir/nodes.js";
1
+ import type { IrClassDef, IrFunction, IrModule, IrType, IrUnionDef } from "../../ir/ir.js";
2
2
  import { type ShapeHost } from "./shapes.js";
3
3
  /** One virtual method slot of a hierarchy: the ROOT-MOST declaring class
4
4
  * owns the slot; its declaration's IrFunction fixes the slot's ABI (the
@@ -28,27 +28,10 @@ export interface LlClassMeta {
28
28
  * strict descendant redeclares it (whole-program devirtualization).
29
29
  * Ported from the CEmitter constructor. */
30
30
  export declare function buildClassGraph(mod: IrModule, fnByName: Map<string, IrFunction>): Map<string, LlClassMeta>;
31
- /** The root's slot list as seen by one class: the implementation the class
32
- * dispatches to, or null outside the slot's declaring subtree / on a
33
- * fully-abstract chain (vtEntriesFor, ported). */
34
- export declare function vtEntriesFor(meta: LlClassMeta): {
35
- slot: LlVtSlot;
36
- impl: LlClassMeta | null;
37
- }[];
38
31
  /** The LLVM struct type name a class's instances GEP through: the runtime
39
32
  * error classes share the runtime's ScrError layout (emitted subclasses
40
33
  * embed it as their prefix); every emitted class has its own %sc_o_*. */
41
34
  export declare function classStructSym(className: string): string;
42
- /** True when the class descends from the runtime emitter class: its
43
- * struct embeds ScrEmitter's remaining prefix (the registry pointer and
44
- * the display-name slot) after the vtable word, so an upcast to
45
- * ScrEmitter* is the usual pointer reinterpret (emit-shapes.ts's rule). */
46
- export declare function emitterRooted(meta: LlClassMeta): boolean;
47
- /** True when the class descends from a runtime STREAM class: its struct
48
- * embeds the FULL ScrStream prefix (registry, display name, state
49
- * pointer) and its RC/trace helpers delegate the state block to
50
- * scr_stream_st_* (emit-shapes.ts's streamRooted). */
51
- export declare function streamRooted(meta: LlClassMeta): boolean;
52
35
  /** A field's GEP index inside its class struct: rc at 0, the vtable word
53
36
  * at 1 on hierarchy members, then the flattened field list. */
54
37
  export declare function classFieldIndex(meta: LlClassMeta, field: string): {
@@ -60,8 +43,8 @@ export declare function classFieldIndex(meta: LlClassMeta, field: string): {
60
43
  * undefined-armed union start as JS's `undefined`, never NULL), and the
61
44
  * interned NUL-terminated constants (emitter subclass display names). */
62
45
  export interface ClassHost extends ShapeHost {
46
+ readonly unionsById: Map<string, IrUnionDef>;
63
47
  unitInstanceRef(unionId: string, tag: number): string;
64
- undefinedArmTag(t: IrType): number;
65
48
  cstr(text: string): string;
66
49
  }
67
50
  /** Per-class LLVM emission for every non-runtime class: the struct types
@@ -1,6 +1,8 @@
1
- import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES } from "../../ir/nodes.js";
1
+ import { InternalCompilerError } from "../../errors.js";
2
+ import { isRefCounted, RUNTIME_EMITTER_CLASS, RUNTIME_ERROR_CLASSES, RUNTIME_STREAM_CLASSES } from "../../ir/ir.js";
3
+ import { streamRooted, undefinedArmTag } from "../../ir/analysis.js";
2
4
  import { mangleClassGcFree, mangleClassNew, mangleClassObj, mangleClassRelease, mangleClassReleaseDirect, mangleClassRetain, mangleClassStruct, mangleClassTrace, mangleCtorThunk, mangleFunction, mangleVtInstance, mangleVtStruct, } from "../mangle.js";
3
- import { FN_ATTRS, llFieldType, releaseSym, traceAdapter } from "./shapes.js";
5
+ import { FN_ATTRS, llFieldType, releaseBody, releaseSym, retainBody, traceAdapter } from "./shapes.js";
4
6
  /** The class graph: link base/children, number the forest in preorder
5
7
  * (roots and children in module class order — the SAME numbering the C
6
8
  * backend computes, so instanceof agrees between backends and with the
@@ -27,7 +29,7 @@ export function buildClassGraph(mod, fnByName) {
27
29
  continue;
28
30
  const base = metaMap.get(meta.def.base);
29
31
  if (!base)
30
- throw new Error(`llvm emitter bug: undeclared base class ${meta.def.base}`);
32
+ throw new InternalCompilerError(`llvm emitter bug: undeclared base class ${meta.def.base}`);
31
33
  meta.base = base;
32
34
  base.children.push(meta);
33
35
  }
@@ -73,7 +75,7 @@ export function buildClassGraph(mod, fnByName) {
73
75
  continue;
74
76
  }
75
77
  if (!fn)
76
- throw new Error(`llvm emitter bug: missing method function %${m.def.name}.${method}`);
78
+ throw new InternalCompilerError(`llvm emitter bug: missing method function %${m.def.name}.${method}`);
77
79
  root.slots.push({ method, declarer: m, fn });
78
80
  }
79
81
  }
@@ -89,7 +91,7 @@ export function buildClassGraph(mod, fnByName) {
89
91
  /** The root's slot list as seen by one class: the implementation the class
90
92
  * dispatches to, or null outside the slot's declaring subtree / on a
91
93
  * fully-abstract chain (vtEntriesFor, ported). */
92
- export function vtEntriesFor(meta) {
94
+ function vtEntriesFor(meta) {
93
95
  return meta.root.slots.map((slot) => {
94
96
  if (!(slot.declarer.pre <= meta.pre && meta.pre <= slot.declarer.post)) {
95
97
  return { slot, impl: null };
@@ -101,7 +103,7 @@ export function vtEntriesFor(meta) {
101
103
  }
102
104
  if (meta.def.abstract === true)
103
105
  return { slot, impl: null };
104
- throw new Error(`llvm emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
106
+ throw new InternalCompilerError(`llvm emitter bug: no implementation of ${slot.method} for ${meta.def.name}`);
105
107
  });
106
108
  }
107
109
  /** The LLVM struct type name a class's instances GEP through: the runtime
@@ -119,21 +121,10 @@ export function classStructSym(className) {
119
121
  /** True when the class descends from the runtime emitter class: its
120
122
  * struct embeds ScrEmitter's remaining prefix (the registry pointer and
121
123
  * the display-name slot) after the vtable word, so an upcast to
122
- * ScrEmitter* is the usual pointer reinterpret (emit-shapes.ts's rule). */
123
- export function emitterRooted(meta) {
124
+ * ScrEmitter* is the usual pointer reinterpret (shapes.ts's rule). */
125
+ function emitterRooted(meta) {
124
126
  return meta.root.def.name === RUNTIME_EMITTER_CLASS;
125
127
  }
126
- /** True when the class descends from a runtime STREAM class: its struct
127
- * embeds the FULL ScrStream prefix (registry, display name, state
128
- * pointer) and its RC/trace helpers delegate the state block to
129
- * scr_stream_st_* (emit-shapes.ts's streamRooted). */
130
- export function streamRooted(meta) {
131
- for (let m = meta.base; m; m = m.base) {
132
- if (RUNTIME_STREAM_CLASSES.has(m.def.name))
133
- return true;
134
- }
135
- return false;
136
- }
137
128
  /** The GEP index where a class's own fields start: rc at 0, the vtable
138
129
  * word at 1 on hierarchy members, then the emitter prefix (registry +
139
130
  * display name) on emitter-rooted classes, then the stream-state slot on
@@ -150,7 +141,7 @@ function fieldBase(meta) {
150
141
  export function classFieldIndex(meta, field) {
151
142
  const idx = meta.def.fields.findIndex((f) => f.name === field);
152
143
  if (idx < 0)
153
- throw new Error(`llvm emitter bug: unknown field ${field} on class ${meta.def.name}`);
144
+ throw new InternalCompilerError(`llvm emitter bug: unknown field ${field} on class ${meta.def.name}`);
154
145
  return { index: fieldBase(meta) + idx, type: meta.def.fields[idx].type };
155
146
  }
156
147
  /** The newFn initialization stores for fields whose type ADMITS undefined
@@ -168,7 +159,7 @@ function undefFieldInits(host, meta) {
168
159
  }
169
160
  if (f.type.kind !== "union")
170
161
  return;
171
- const tag = host.undefinedArmTag(f.type);
162
+ const tag = undefinedArmTag(f.type, host.unionsById);
172
163
  if (tag < 0)
173
164
  return;
174
165
  out.push(` %uf${i} = getelementptr inbounds %${mangleClassStruct(meta.def.name)}, ptr %o, i64 0, i32 ${index}`, ` store ptr ${host.unitInstanceRef(f.type.unionId, tag)}, ptr %uf${i} ; ${f.name} starts undefined`);
@@ -254,9 +245,7 @@ export function emitClassShapes(host, mod, metaMap) {
254
245
  const stCall = (tag, entry, tail) => prefixCall(tag, 4, entry, tail, "stream state (ScrStream prefix)");
255
246
  // retain: NULL-tolerant, immortal-skip, mark-live on traced shapes —
256
247
  // layout-generic (rc at 0), so hierarchy members need no dispatch.
257
- defs.push(`define internal ptr @${mangleClassRetain(cls.name)}(ptr %o) ${FN_ATTRS} { ; retain ${cls.name}`, `entry:`, ` %isnull = icmp eq ptr %o, null`, ` br i1 %isnull, label %done, label %check`, `check:`, ` %rc = load ${host.sizeType}, ptr %o`, ` %imm = icmp eq ${host.sizeType} %rc, -1`, ` br i1 %imm, label %done, label %inc`, `inc:`, ` %n = add ${host.sizeType} %rc, 1`, ` store ${host.sizeType} %n, ptr %o`, ...(traced
258
- ? [` %colorp = getelementptr i8, ptr %o, ${host.sizeType} -${host.cycleColorOffset}`, ` store i32 0, ptr %colorp ; mark live`]
259
- : []), ` br label %done`, `done:`, ` ret ptr %o`, `}`, ``);
248
+ defs.push(...retainBody(host, mangleClassRetain(cls.name), traced, `retain ${cls.name}`), ``);
260
249
  // The field-releasing teardown body shared by both release shapes
261
250
  // (the public one on standalone classes, the DIRECT one on hierarchy
262
251
  // members). Runs at rc == 0.
@@ -309,30 +298,9 @@ export function emitClassShapes(host, mod, metaMap) {
309
298
  defs.push(...reld);
310
299
  }
311
300
  else {
312
- const rel = [
313
- `define internal void @${mangleClassRelease(cls.name)}(ptr %o) ${FN_ATTRS} { ; release ${cls.name}`,
314
- `entry:`,
315
- ` %isnull = icmp eq ptr %o, null`,
316
- ` br i1 %isnull, label %done, label %check`,
317
- `check:`,
318
- ` %rc = load ${host.sizeType}, ptr %o`,
319
- ` %imm = icmp eq ${host.sizeType} %rc, -1`,
320
- ` br i1 %imm, label %done, label %dec`,
321
- `dec:`,
322
- ` %n = sub ${host.sizeType} %rc, 1`,
323
- ` store ${host.sizeType} %n, ptr %o`,
324
- ` %dead = icmp eq ${host.sizeType} %n, 0`,
325
- ` br i1 %dead, label %free, label %${traced ? "root" : "done"}`,
326
- `free:`,
327
- ];
328
- teardown(rel);
329
- rel.push(` br label %done`);
330
- if (traced) {
331
- host.declare(`declare void @scr_cyc_on_release(ptr)`);
332
- rel.push(`root:`, ` call void @scr_cyc_on_release(ptr %o) ; possible cycle root; may collect`, ` br label %done`);
333
- }
334
- rel.push(`done:`, ` ret void`, `}`, ``);
335
- defs.push(...rel);
301
+ const freeBody = [];
302
+ teardown(freeBody);
303
+ defs.push(...releaseBody(host, mangleClassRelease(cls.name), traced, freeBody, `release ${cls.name}`), ``);
336
304
  }
337
305
  // new: zeroed allocation, rc = 1, the vtable word on hierarchy
338
306
  // members, undefined-admitting union fields at the interned unit
@@ -358,7 +326,7 @@ export function emitClassShapes(host, mod, metaMap) {
358
326
  if (isEmitterRooted) {
359
327
  // The ScrEmitter prefix: registry stays NULL (zeroed allocation);
360
328
  // the display name Node's leak warning prints ([My]) is the source
361
- // class name, without the module qualifier (emit-shapes.ts's rule).
329
+ // class name, without the module qualifier (shapes.ts's rule).
362
330
  const displayName = cls.name.includes(".")
363
331
  ? cls.name.slice(cls.name.lastIndexOf(".") + 1)
364
332
  : cls.name;
@@ -416,17 +384,17 @@ export function emitClassObjDefs(host, metaMap, classObjs, fnByName, llType) {
416
384
  for (const [className, { nameSym }] of classObjs) {
417
385
  const meta = metaMap.get(className);
418
386
  if (!meta)
419
- throw new Error(`llvm emitter bug: class object for unknown class ${className}`);
387
+ throw new InternalCompilerError(`llvm emitter bug: class object for unknown class ${className}`);
420
388
  // A generic instantiation's class object carries its FAMILY's interval
421
389
  // (JS has ONE `Box` at runtime); construction still dispatches the
422
390
  // instantiation's own thunk.
423
391
  const intervalMeta = meta.def.genericOf !== undefined ? metaMap.get(meta.def.genericOf) : meta;
424
392
  if (!intervalMeta) {
425
- throw new Error(`llvm emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
393
+ throw new InternalCompilerError(`llvm emitter bug: class object for ${className} names unknown family ${meta.def.genericOf ?? ""}`);
426
394
  }
427
395
  const ctor = fnByName.get(`%${className}.constructor`);
428
396
  if (!ctor)
429
- throw new Error(`llvm emitter bug: class object for ${className} without a constructor`);
397
+ throw new InternalCompilerError(`llvm emitter bug: class object for ${className} without a constructor`);
430
398
  const params = ctor.params.slice(1);
431
399
  const paramDecls = params.map((p, i) => `${llType(p.type)} %a${i}`).join(", ");
432
400
  const ctorArgs = params.map((p, i) => `${llType(p.type)} %a${i}`);
@@ -1 +1 @@
1
- {"version":3,"file":"classes.js","sourceRoot":"","sources":["../../../src/backend/llvm/classes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"classes.js","sourceRoot":"","sources":["../../../src/backend/llvm/classes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { IrFfiCallbackParamClass, IrFfiReturnClass, IrFfiValueParamClass } from "../../ir/ir.js";
2
+ export declare function ffiNativeTypeLl(cls: IrFfiCallbackParamClass | IrFfiValueParamClass | IrFfiReturnClass): string;
3
+ export declare function f64Lit(n: number): string;
4
+ export declare const F64_INF: string;