@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,360 @@
1
+ /* Focused LLVM expression emission extracted from emitter.ts. */
2
+ import { InternalCompilerError } from "../../errors.js";
3
+ import { isRefCounted, typeKey } from "../../ir/ir.js";
4
+ import { FN_ATTRS, releaseSym, retainSym, traceArg } from "./shapes.js";
5
+ export function streamDataAdapter(host, cbT) {
6
+ const key = `eed:${typeKey(cbT)}`;
7
+ let sym = host.resolveThunks.get(key);
8
+ if (sym)
9
+ return sym;
10
+ sym = `sc_ee_dad_${host.resolveThunks.size}`;
11
+ host.resolveThunks.set(key, sym);
12
+ const p = cbT.params[0];
13
+ if (cbT.params.length > 1 || (p && p.kind !== "bytes" && p.kind !== "string" && p.kind !== "dyn")) {
14
+ throw new InternalCompilerError("llvm emitter bug: stream data listener param shape (frontend must fence)");
15
+ }
16
+ host.declare(`declare ptr @scr_box_get_ref(ptr)`);
17
+ host.declare(`declare void @scr_closure_release(ptr)`);
18
+ const d = [
19
+ `define internal void @${sym}(ptr %cb, ptr %a0, ptr %a1) ${FN_ATTRS} { ; stream 'data' adapter ${typeKey(cbT)}`,
20
+ `entry:`,
21
+ ` %capsp = getelementptr inbounds %ScrClosure, ptr %cb, i64 1`,
22
+ ` %bx = load ptr, ptr %capsp`,
23
+ ` %orig = call ptr @scr_box_get_ref(ptr %bx) ; the listener, +1`,
24
+ ];
25
+ const finish = (arg) => {
26
+ d.push(` %fnp = getelementptr inbounds %ScrClosure, ptr %orig, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`);
27
+ const retTy = host.llType(cbT.ret);
28
+ const argList = arg === null ? `ptr %orig` : `ptr %orig, ptr ${arg}`;
29
+ if (retTy === "void") {
30
+ d.push(` call void %fn(${argList})`);
31
+ }
32
+ else {
33
+ d.push(` %ret = call ${retTy} %fn(${argList})`);
34
+ if (isRefCounted(cbT.ret)) {
35
+ d.push(` call void ${releaseSym(host, cbT.ret)}(ptr %ret) ; discarded listener result`);
36
+ }
37
+ }
38
+ d.push(` call void @scr_closure_release(ptr %orig)`, ` ret void`);
39
+ };
40
+ if (p === undefined) {
41
+ finish(null);
42
+ d.push(`}`, ``);
43
+ }
44
+ else if (p.kind === "bytes" || p.kind === "string") {
45
+ const msg = p.kind === "bytes"
46
+ ? "a 'data' listener declaring a Buffer chunk received a string (the stream has an encoding set)"
47
+ : "a 'data' listener declaring a string chunk received a Buffer (call setEncoding, or declare the chunk as a Buffer)";
48
+ const slot = p.kind === "bytes" ? "%a0" : "%a1";
49
+ host.declare(`declare void @scr_throw_error_msg(i32, ptr, ${host.sizeType})`);
50
+ d.push(` %miss = icmp eq ptr ${slot}, null`, ` br i1 %miss, label %bad, label %ok`, `bad:`, ` call void @scr_throw_error_msg(i32 1, ptr ${host.cstr(msg)}, ${host.sizeType} ${Buffer.byteLength(msg, "utf8")})`, ` call void @scr_closure_release(ptr %orig)`, ` ret void`, `ok:`, ` %r0 = call ptr ${retainSym(host, p)}(ptr ${slot})`);
51
+ finish("%r0");
52
+ d.push(`}`, ``);
53
+ }
54
+ else {
55
+ // dyn: box by runtime tag — the JS lane's adapter parameter.
56
+ host.declare(`declare ptr @scr_dyn_new_buffer_copy(ptr)`);
57
+ host.declare(`declare ptr @scr_dyn_new_str(ptr)`);
58
+ d.push(` %dslot = alloca ptr`, ` %isb = icmp ne ptr %a0, null`, ` br i1 %isb, label %buf, label %str`, `buf:`, ` %db = call ptr @scr_dyn_new_buffer_copy(ptr %a0)`, ` store ptr %db, ptr %dslot`, ` br label %go`, `str:`, ` %ds = call ptr @scr_dyn_new_str(ptr %a1)`, ` store ptr %ds, ptr %dslot`, ` br label %go`, `go:`, ` %dv = load ptr, ptr %dslot`);
59
+ finish("%dv");
60
+ d.push(`}`, ``);
61
+ }
62
+ host.resolveThunkDefs.push(...d);
63
+ return sym;
64
+ }
65
+ export function streamDoneFnFor(host, kind, doneT) {
66
+ const key = `sd:${kind}:${typeKey(doneT)}`;
67
+ let sym = host.resolveThunks.get(key);
68
+ if (sym)
69
+ return sym;
70
+ sym = `sc_sd_${host.resolveThunks.size}`;
71
+ host.resolveThunks.set(key, sym);
72
+ const errT = doneT.params[0];
73
+ let errTag = -1;
74
+ if (errT !== undefined) {
75
+ if (errT.kind !== "union")
76
+ throw new InternalCompilerError("llvm emitter bug: stream done err param not a union");
77
+ const def = host.unionsById.get(errT.unionId);
78
+ errTag = def ? def.arms.findIndex((a) => a.kind === "object") : -1;
79
+ if (errTag < 0)
80
+ throw new InternalCompilerError("llvm emitter bug: stream done err union lacks its Error arm");
81
+ }
82
+ const dataT = kind === "t" || kind === "l" ? doneT.params[1] : undefined;
83
+ let bytesTag = -1;
84
+ let strTag = -1;
85
+ if (dataT !== undefined) {
86
+ if (dataT.kind !== "union")
87
+ throw new InternalCompilerError("llvm emitter bug: stream done data param not a union");
88
+ const def = host.unionsById.get(dataT.unionId);
89
+ bytesTag = def ? def.arms.findIndex((a) => a.kind === "bytes") : -1;
90
+ strTag = def ? def.arms.findIndex((a) => a.kind === "string") : -1;
91
+ }
92
+ const entry = kind === "w" ? "scr_stream_write_done" :
93
+ kind === "f" ? "scr_stream_final_done" :
94
+ kind === "d" ? "scr_stream_destroy_done" :
95
+ kind === "t" ? "scr_stream_transform_done" : "scr_stream_flush_done";
96
+ const twoSlot = kind === "t" || kind === "l";
97
+ host.declare(`declare void @${entry}(ptr, ptr${twoSlot ? ", ptr, ptr" : ""})`);
98
+ host.declare(`declare ptr @scr_box_get_ref(ptr)`);
99
+ host.declare(`declare void @scr_stream_release_v(ptr)`);
100
+ host.declare(`declare ptr @scr_error_retain_v(ptr)`);
101
+ host.declare(`declare void @scr_union_release(ptr)`);
102
+ const params = [
103
+ "ptr %self",
104
+ ...(errT !== undefined ? ["ptr %e"] : []),
105
+ ...(dataT !== undefined ? ["ptr %d"] : []),
106
+ ];
107
+ const d = [
108
+ `define internal void @${sym}(${params.join(", ")}) ${FN_ATTRS} { ; stream '${kind}' done ${typeKey(doneT)}`,
109
+ `entry:`,
110
+ ` %eslot = alloca ptr`,
111
+ ...(twoSlot ? [` %bslot = alloca ptr`, ` %sslot = alloca ptr`] : []),
112
+ ` %capsp = getelementptr inbounds %ScrClosure, ptr %self, i64 1`,
113
+ ` %bx = load ptr, ptr %capsp`,
114
+ ` %s = call ptr @scr_box_get_ref(ptr %bx) ; the stream, +1`,
115
+ ` store ptr null, ptr %eslot`,
116
+ ...(twoSlot ? [` store ptr null, ptr %bslot`, ` store ptr null, ptr %sslot`] : []),
117
+ ];
118
+ // A tag-guarded retained peek out of a union argument into a slot.
119
+ let arm = 0;
120
+ const unwrap = (u, tag, retain, slot) => {
121
+ const a = arm++;
122
+ d.push(` %un${a} = icmp ne ptr ${u}, null`, ` br i1 %un${a}, label %chk${a}, label %done${a}`, `chk${a}:`, ` %tp${a} = getelementptr inbounds %ScrUnion, ptr ${u}, i64 0, i32 1`, ` %tg${a} = load i32, ptr %tp${a}`, ` %hit${a} = icmp eq i32 %tg${a}, ${tag}`, ` br i1 %hit${a}, label %yes${a}, label %done${a}`, `yes${a}:`, ` %pp${a} = getelementptr inbounds %ScrUnion, ptr ${u}, i64 0, i32 5`, ` %pv${a} = load ptr, ptr %pp${a}`, ` %rt${a} = call ptr ${retain}(ptr %pv${a})`, ` store ptr %rt${a}, ptr ${slot}`, ` br label %done${a}`, `done${a}:`);
123
+ };
124
+ if (errT !== undefined)
125
+ unwrap("%e", errTag, "@scr_error_retain_v", "%eslot");
126
+ if (dataT !== undefined && bytesTag >= 0) {
127
+ host.declare(`declare ptr @scr_bytes_retain_v(ptr)`);
128
+ unwrap("%d", bytesTag, "@scr_bytes_retain_v", "%bslot");
129
+ }
130
+ if (dataT !== undefined && strTag >= 0) {
131
+ host.declare(`declare ptr @scr_str_retain_v(ptr)`);
132
+ unwrap("%d", strTag, "@scr_str_retain_v", "%sslot");
133
+ }
134
+ d.push(` %ev = load ptr, ptr %eslot`);
135
+ if (twoSlot) {
136
+ d.push(` %bv = load ptr, ptr %bslot`, ` %sv = load ptr, ptr %sslot`, ` call void @${entry}(ptr %s, ptr %ev, ptr %bv, ptr %sv) ; moves err/data; borrows s`);
137
+ }
138
+ else {
139
+ d.push(` call void @${entry}(ptr %s, ptr %ev) ; moves err; borrows s`);
140
+ }
141
+ d.push(` call void @scr_stream_release_v(ptr %s)`);
142
+ if (errT !== undefined)
143
+ d.push(` call void @scr_union_release(ptr %e)`);
144
+ if (dataT !== undefined)
145
+ d.push(` call void @scr_union_release(ptr %d)`);
146
+ d.push(` ret void`, `}`, ``);
147
+ host.resolveThunkDefs.push(...d);
148
+ return sym;
149
+ }
150
+ export function fsRenameThunkFor(host, cbT) {
151
+ if (cbT.params.length === 0) {
152
+ host.declare(`declare void @scr_fs_rename_thunk0(ptr, ptr)`);
153
+ return "scr_fs_rename_thunk0";
154
+ }
155
+ const key = `fsren:${typeKey(cbT)}`;
156
+ let sym = host.resolveThunks.get(key);
157
+ if (sym)
158
+ return sym;
159
+ sym = `sc_fsren_${host.resolveThunks.size}`;
160
+ host.resolveThunks.set(key, sym);
161
+ const param = cbT.params[0];
162
+ const d = [
163
+ `define internal void @${sym}(ptr %cb, ptr %err) ${FN_ATTRS} { ; fs.rename callback ${typeKey(cbT)}`,
164
+ `entry:`,
165
+ ` %slot = alloca ptr`,
166
+ ` %has = icmp ne ptr %err, null`,
167
+ ` br i1 %has, label %yes, label %no`,
168
+ `yes:`,
169
+ ];
170
+ if (param.kind === "dyn") {
171
+ host.declare(`declare ptr @scr_dyn_from_error(ptr)`);
172
+ host.declare(`declare ptr @scr_dyn_new_null()`);
173
+ d.push(` %de = call ptr @scr_dyn_from_error(ptr %err)`, ` store ptr %de, ptr %slot`, ` br label %go`, `no:`, ` %dn = call ptr @scr_dyn_new_null()`, ` store ptr %dn, ptr %slot`);
174
+ }
175
+ else {
176
+ if (param.kind !== "union")
177
+ throw new InternalCompilerError("llvm emitter bug: fs.rename error param not a union");
178
+ const def = host.unionsById.get(param.unionId);
179
+ const errTag = def ? def.arms.findIndex((a) => a.kind === "object" && a.className === "%Error") : -1;
180
+ const nullTag = def ? def.arms.findIndex((a) => a.kind === "nullT") : -1;
181
+ if (errTag < 0 || nullTag < 0)
182
+ throw new InternalCompilerError("llvm emitter bug: fs.rename error union lacks its arms");
183
+ host.declare(`declare ptr @scr_error_retain(ptr)`);
184
+ host.declare(`declare ptr @scr_error_retain_v(ptr)`);
185
+ host.declare(`declare void @scr_error_release_v(ptr)`);
186
+ host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
187
+ d.push(` %er = call ptr @scr_error_retain(ptr %err)`, ` %eu = call ptr @scr_union_new_ref(i32 ${errTag}, ptr %er, ptr @scr_error_retain_v, ptr @scr_error_release_v, ptr null)`, ` store ptr %eu, ptr %slot`, ` br label %go`, `no:`, ` store ptr ${host.unitInstanceRef(param.unionId, nullTag)}, ptr %slot`);
188
+ }
189
+ d.push(` br label %go`, `go:`, ` %arg = load ptr, ptr %slot`, ` %fnp = getelementptr inbounds %ScrClosure, ptr %cb, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`, ` call void %fn(ptr %cb, ptr %arg)`, ` ret void`, `}`, ``);
190
+ host.resolveThunkDefs.push(...d);
191
+ return sym;
192
+ }
193
+ export function streamCbThunkFor(host, kind, cbT) {
194
+ if (cbT.kind !== "func")
195
+ throw new InternalCompilerError("llvm emitter bug: stream option callback not a func");
196
+ const key = `scb:${kind}:${typeKey(cbT)}`;
197
+ let sym = host.resolveThunks.get(key);
198
+ if (sym)
199
+ return sym;
200
+ sym = `sc_scb_${host.resolveThunks.size}`;
201
+ host.resolveThunks.set(key, sym);
202
+ const runtimeParams = kind === "r" ? ["ptr %s", "double %size"] :
203
+ kind === "w" || kind === "t" ? ["ptr %s", "ptr %chunk"] :
204
+ kind === "d" || kind === "e" ? ["ptr %s", "ptr %err"] :
205
+ ["ptr %s"];
206
+ const declared = cbT.params;
207
+ const hasThis = declared[0] !== undefined && declared[0].kind === "object";
208
+ if (declared.length === 0) {
209
+ throw new InternalCompilerError("llvm emitter bug: stream option callback with no params (frontend must fence)");
210
+ }
211
+ const off = hasThis ? 1 : 0;
212
+ const full = (kind === "r" ? 1 : kind === "w" || kind === "t" ? 3 : kind === "d" ? 2 : 1) + off;
213
+ if (declared.length > full) {
214
+ throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' callback declares ${declared.length} params (frontend must fence)`);
215
+ }
216
+ const d = [
217
+ `define internal void @${sym}(ptr %cb, ${runtimeParams.join(", ")}) ${FN_ATTRS} { ; stream '${kind}' option callback ${typeKey(cbT)}`,
218
+ `entry:`,
219
+ ];
220
+ const passed = ["ptr %cb"];
221
+ if (hasThis) {
222
+ host.declare(`declare ptr @scr_stream_retain_v(ptr)`);
223
+ d.push(` %sr = call ptr @scr_stream_retain_v(ptr %s)`);
224
+ passed.push(`ptr %sr`);
225
+ }
226
+ // The stream-owning completion closure (a 1-cap closure boxing the
227
+ // retained stream) — shared by the typed and dyn done shapes.
228
+ const doneClosure = (fnRef, tag) => {
229
+ host.declare(`declare ptr @scr_closure_new(ptr, ${host.sizeType})`);
230
+ host.declare(`declare ptr @scr_box_new_obj(ptr, ptr, ptr)`);
231
+ host.declare(`declare void @scr_box_set_ref(ptr, ptr)`);
232
+ host.declare(`declare ptr @scr_stream_retain_v(ptr)`);
233
+ host.declare(`declare void @scr_stream_release_v(ptr)`);
234
+ host.declare(`declare void @scr_stream_trace(ptr, ptr, ptr)`);
235
+ d.push(` %${tag}clo = call ptr @scr_closure_new(ptr ${fnRef}, ${host.sizeType} 1)`, ` %${tag}bx = call ptr @scr_box_new_obj(ptr @scr_stream_retain_v, ptr @scr_stream_release_v, ptr @scr_stream_trace)`, ` %${tag}cp = getelementptr inbounds %ScrClosure, ptr %${tag}clo, i64 1`, ` store ptr %${tag}bx, ptr %${tag}cp`, ` %${tag}sr = call ptr @scr_stream_retain_v(ptr %s)`, ` call void @scr_box_set_ref(ptr %${tag}bx, ptr %${tag}sr)`);
236
+ return `%${tag}clo`;
237
+ };
238
+ for (let i = off; i < declared.length; i++) {
239
+ const p = declared[i];
240
+ const pos = i - off;
241
+ if (kind === "r") {
242
+ if (p.kind === "dyn") {
243
+ host.declare(`declare ptr @scr_dyn_new_num(double)`);
244
+ d.push(` %dn${i} = call ptr @scr_dyn_new_num(double %size)`);
245
+ passed.push(`ptr %dn${i}`);
246
+ }
247
+ else {
248
+ passed.push(`double %size`);
249
+ }
250
+ continue;
251
+ }
252
+ const isChunkPos = (kind === "w" || kind === "t") && pos === 0;
253
+ const isEncPos = (kind === "w" || kind === "t") && pos === 1;
254
+ const isErrPos = (kind === "d" || kind === "e") && pos === 0;
255
+ const isDonePos = kind === "e" ? false
256
+ : (kind === "w" || kind === "t") ? pos === 2 : (kind === "f" || kind === "l") ? pos === 0 : pos === 1;
257
+ if (p.kind === "dyn") {
258
+ if (isChunkPos) {
259
+ host.declare(`declare ptr @scr_dyn_new_buffer_copy(ptr)`);
260
+ d.push(` %dc${i} = call ptr @scr_dyn_new_buffer_copy(ptr %chunk)`);
261
+ passed.push(`ptr %dc${i}`);
262
+ }
263
+ else if (isEncPos) {
264
+ host.declare(`declare ptr @scr_str_new(ptr, ${host.sizeType})`);
265
+ host.declare(`declare ptr @scr_dyn_new_str(ptr)`);
266
+ host.declare(`declare void @scr_str_release(ptr)`);
267
+ d.push(` %es${i} = call ptr @scr_str_new(ptr ${host.cstr("buffer")}, ${host.sizeType} 6)`, ` %ed${i} = call ptr @scr_dyn_new_str(ptr %es${i})`, ` call void @scr_str_release(ptr %es${i})`);
268
+ passed.push(`ptr %ed${i}`);
269
+ }
270
+ else if (isErrPos) {
271
+ // finished/pipeline succeed with UNDEFINED (Node calls the eos
272
+ // callback with no arguments); destroy passes null.
273
+ host.declare(`declare ptr @scr_dyn_from_error(ptr)`);
274
+ d.push(` %edslot${i} = alloca ptr`, ` %ehas${i} = icmp ne ptr %err, null`, ` br i1 %ehas${i}, label %eyes${i}, label %eno${i}`, `eyes${i}:`, ` %ede${i} = call ptr @scr_dyn_from_error(ptr %err)`, ` store ptr %ede${i}, ptr %edslot${i}`, ` br label %ego${i}`, `eno${i}:`);
275
+ if (kind === "e") {
276
+ host.declare(`declare ptr @scr_dyn_undefined()`);
277
+ host.declare(`declare ptr @scr_dyn_retain_v(ptr)`);
278
+ d.push(` %eun${i} = call ptr @scr_dyn_undefined()`, ` %eur${i} = call ptr @scr_dyn_retain_v(ptr %eun${i})`, ` store ptr %eur${i}, ptr %edslot${i}`);
279
+ }
280
+ else {
281
+ host.declare(`declare ptr @scr_dyn_new_null()`);
282
+ d.push(` %enl${i} = call ptr @scr_dyn_new_null()`, ` store ptr %enl${i}, ptr %edslot${i}`);
283
+ }
284
+ d.push(` br label %ego${i}`, `ego${i}:`, ` %edv${i} = load ptr, ptr %edslot${i}`);
285
+ passed.push(`ptr %edv${i}`);
286
+ }
287
+ else if (isDonePos) {
288
+ const glue = `scr_stream_done_dyn_${kind}`;
289
+ host.declare(`declare ptr @${glue}(ptr, ptr, ${host.sizeType})`);
290
+ host.declare(`declare ptr @scr_dyn_new_func(ptr, ptr, i32, ptr, ptr)`);
291
+ const clo = doneClosure(`@${glue}`, `dd${i}`);
292
+ const arity = kind === "t" || kind === "l" ? 2 : 1;
293
+ const sig = kind === "t" || kind === "l" ? "(error,data)" : "(error)";
294
+ d.push(` %ddn${i} = call ptr @scr_dyn_new_func(ptr ${clo}, ptr @${glue}, i32 ${arity}, ptr ${host.cstr(sig)}, ptr ${host.cstr("callback")})`);
295
+ passed.push(`ptr %ddn${i}`);
296
+ }
297
+ else {
298
+ throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' dyn callback param ${i} has no adapter`);
299
+ }
300
+ continue;
301
+ }
302
+ if (isChunkPos) {
303
+ host.declare(`declare ptr @scr_bytes_retain_v(ptr)`);
304
+ d.push(` %rc${i} = call ptr @scr_bytes_retain_v(ptr %chunk)`);
305
+ passed.push(`ptr %rc${i}`);
306
+ }
307
+ else if (isEncPos) {
308
+ // Node's encoding for decoded (Buffer) chunks is 'buffer'.
309
+ host.declare(`declare ptr @scr_str_new(ptr, ${host.sizeType})`);
310
+ d.push(` %en${i} = call ptr @scr_str_new(ptr ${host.cstr("buffer")}, ${host.sizeType} 6)`);
311
+ passed.push(`ptr %en${i}`);
312
+ }
313
+ else if (isErrPos) {
314
+ // destroy's error argument: `Error | null` — wrap type-directedly.
315
+ // The finished/pipeline callback ("e") may declare `Error | null |
316
+ // undefined`; success prefers the undefined arm there.
317
+ if (p.kind !== "union")
318
+ throw new InternalCompilerError("llvm emitter bug: stream destroy err param not a union");
319
+ const def = host.unionsById.get(p.unionId);
320
+ const errTag = def ? def.arms.findIndex((a) => a.kind === "object") : -1;
321
+ const undefTag = kind === "e" && def ? def.arms.findIndex((a) => a.kind === "undefinedT") : -1;
322
+ const nullTag = def
323
+ ? (undefTag >= 0 ? undefTag : def.arms.findIndex((a) => a.kind === "nullT"))
324
+ : -1;
325
+ if (errTag < 0 || nullTag < 0)
326
+ throw new InternalCompilerError("llvm emitter bug: stream destroy err union lacks its arms");
327
+ host.declare(`declare ptr @scr_union_new_ref(i32, ptr, ptr, ptr, ptr)`);
328
+ host.declare(`declare ptr @scr_error_retain_v(ptr)`);
329
+ host.declare(`declare void @scr_error_release_v(ptr)`);
330
+ d.push(` %euslot${i} = alloca ptr`, ` %euh${i} = icmp ne ptr %err, null`, ` br i1 %euh${i}, label %euy${i}, label %eun${i}`, `euy${i}:`, ` %eur${i} = call ptr @scr_error_retain_v(ptr %err)`, ` %euu${i} = call ptr @scr_union_new_ref(i32 ${errTag}, ptr %eur${i}, ptr @scr_error_retain_v, ptr @scr_error_release_v, ptr ${traceArg(host, def.arms[errTag])})`, ` store ptr %euu${i}, ptr %euslot${i}`, ` br label %eug${i}`, `eun${i}:`, ` store ptr ${host.unitInstanceRef(p.unionId, nullTag)}, ptr %euslot${i}`, ` br label %eug${i}`, `eug${i}:`, ` %euv${i} = load ptr, ptr %euslot${i}`);
331
+ passed.push(`ptr %euv${i}`);
332
+ }
333
+ else if (isDonePos) {
334
+ const doneKind = kind; // "e" has no done position
335
+ if (p.kind !== "func")
336
+ throw new InternalCompilerError("llvm emitter bug: stream done callback not a func");
337
+ const doneFn = host.streamDoneFnFor(doneKind, p);
338
+ const clo = doneClosure(`@${doneFn}`, `dn${i}`);
339
+ passed.push(`ptr ${clo}`);
340
+ }
341
+ else {
342
+ throw new InternalCompilerError(`llvm emitter bug: stream '${kind}' callback param ${i} has no adapter`);
343
+ }
344
+ }
345
+ d.push(` %fnp = getelementptr inbounds %ScrClosure, ptr %cb, i64 0, i32 1`, ` %fn = load ptr, ptr %fnp`);
346
+ const retTy = host.llType(cbT.ret);
347
+ if (retTy === "void") {
348
+ d.push(` call void %fn(${passed.join(", ")})`);
349
+ }
350
+ else {
351
+ d.push(` %ret = call ${retTy} %fn(${passed.join(", ")})`);
352
+ if (isRefCounted(cbT.ret)) {
353
+ d.push(` call void ${releaseSym(host, cbT.ret)}(ptr %ret) ; discarded option-callback result`);
354
+ }
355
+ }
356
+ d.push(` ret void`, `}`, ``);
357
+ host.resolveThunkDefs.push(...d);
358
+ return sym;
359
+ }
360
+ //# sourceMappingURL=expr-stream-callbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"expr-stream-callbacks.js","sourceRoot":"","sources":["../../../src/backend/llvm/expr-stream-callbacks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { LlvmEmitterContext, LibCallExpr, LlValue } from "./expr-context.js";
2
+ export declare function emitAssertInspectLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
3
+ export declare function emitIoLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
4
+ export declare function emitGenericLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;
5
+ export declare function emitLibCall(host: LlvmEmitterContext, e: LibCallExpr): LlValue;