@scriptc/compiler 0.4.8 → 0.4.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/ambient/node-fallback/buffer.d.ts +2 -0
  2. package/ambient/node-fallback/child_process.d.ts +9 -3
  3. package/ambient/node-fallback/dns-promises.d.ts +25 -0
  4. package/ambient/node-fallback/dns.d.ts +29 -0
  5. package/ambient/node-fallback/test.d.ts +7 -0
  6. package/ambient/scriptc-node-fallback.d.ts +145 -2
  7. package/ambient/scriptc-overrides.d.ts +22 -13
  8. package/dist/backend/build-cache.d.ts +1 -1
  9. package/dist/backend/build-cache.js +1 -1
  10. package/dist/backend/build-cache.js.map +1 -1
  11. package/dist/backend/cache-root.d.ts +7 -0
  12. package/dist/backend/cache-root.js +27 -0
  13. package/dist/backend/cache-root.js.map +1 -1
  14. package/dist/backend/executable-features.js +5 -1
  15. package/dist/backend/executable-features.js.map +1 -1
  16. package/dist/backend/link-plan.js +7 -1
  17. package/dist/backend/link-plan.js.map +1 -1
  18. package/dist/backend/llvm/bytes-loop-versions.d.ts +12 -1
  19. package/dist/backend/llvm/bytes-loop-versions.js +107 -30
  20. package/dist/backend/llvm/bytes-loop-versions.js.map +1 -1
  21. package/dist/backend/llvm/bytes-loop-versions.test.js +96 -0
  22. package/dist/backend/llvm/bytes-loop-versions.test.js.map +1 -1
  23. package/dist/backend/llvm/checked-value-lifetimes.js +1 -0
  24. package/dist/backend/llvm/checked-value-lifetimes.js.map +1 -1
  25. package/dist/backend/llvm/classes.d.ts +16 -5
  26. package/dist/backend/llvm/classes.js +34 -6
  27. package/dist/backend/llvm/classes.js.map +1 -1
  28. package/dist/backend/llvm/classes.test.js +21 -2
  29. package/dist/backend/llvm/classes.test.js.map +1 -1
  30. package/dist/backend/llvm/common.d.ts +9 -0
  31. package/dist/backend/llvm/common.js +9 -0
  32. package/dist/backend/llvm/common.js.map +1 -1
  33. package/dist/backend/llvm/cpu-dispatch.d.ts +36 -2
  34. package/dist/backend/llvm/cpu-dispatch.js +96 -2
  35. package/dist/backend/llvm/cpu-dispatch.js.map +1 -1
  36. package/dist/backend/llvm/dense-array-access.d.ts +5 -2
  37. package/dist/backend/llvm/dense-array-access.js +16 -12
  38. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  39. package/dist/backend/llvm/dense-array-access.test.js +3 -1
  40. package/dist/backend/llvm/dense-array-access.test.js.map +1 -1
  41. package/dist/backend/llvm/dyn.d.ts +24 -0
  42. package/dist/backend/llvm/dyn.js +117 -3
  43. package/dist/backend/llvm/dyn.js.map +1 -1
  44. package/dist/backend/llvm/emit-function.js +6 -0
  45. package/dist/backend/llvm/emit-function.js.map +1 -1
  46. package/dist/backend/llvm/emit-journal.d.ts +1 -0
  47. package/dist/backend/llvm/emit-journal.js.map +1 -1
  48. package/dist/backend/llvm/emit-module.js +48 -5
  49. package/dist/backend/llvm/emit-module.js.map +1 -1
  50. package/dist/backend/llvm/emit-module.test.js +41 -0
  51. package/dist/backend/llvm/emit-module.test.js.map +1 -1
  52. package/dist/backend/llvm/emit-statements.js +11 -0
  53. package/dist/backend/llvm/emit-statements.js.map +1 -1
  54. package/dist/backend/llvm/emitter.d.ts +87 -7
  55. package/dist/backend/llvm/emitter.js +136 -15
  56. package/dist/backend/llvm/emitter.js.map +1 -1
  57. package/dist/backend/llvm/expr-async.js +28 -6
  58. package/dist/backend/llvm/expr-async.js.map +1 -1
  59. package/dist/backend/llvm/expr-containers.js +19 -5
  60. package/dist/backend/llvm/expr-containers.js.map +1 -1
  61. package/dist/backend/llvm/expr-dynamic.js +29 -1
  62. package/dist/backend/llvm/expr-dynamic.js.map +1 -1
  63. package/dist/backend/llvm/expr-primitives.js +104 -6
  64. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  65. package/dist/backend/llvm/expr-records.js +15 -1
  66. package/dist/backend/llvm/expr-records.js.map +1 -1
  67. package/dist/backend/llvm/expr-stream-bridges.js +53 -5
  68. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  69. package/dist/backend/llvm/inline-arrays.js +1 -1
  70. package/dist/backend/llvm/inline-arrays.js.map +1 -1
  71. package/dist/backend/llvm/js-ic.js +126 -2
  72. package/dist/backend/llvm/js-ic.js.map +1 -1
  73. package/dist/backend/llvm/lanes.d.ts +38 -0
  74. package/dist/backend/llvm/lanes.js +778 -0
  75. package/dist/backend/llvm/lanes.js.map +1 -0
  76. package/dist/backend/llvm/lanes.test.d.ts +1 -0
  77. package/dist/backend/llvm/lanes.test.js +402 -0
  78. package/dist/backend/llvm/lanes.test.js.map +1 -0
  79. package/dist/backend/llvm/lib-dispatch.js +9 -4
  80. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  81. package/dist/backend/llvm/lib-network.js +20 -0
  82. package/dist/backend/llvm/lib-network.js.map +1 -1
  83. package/dist/backend/llvm/lib-shared.js +27 -0
  84. package/dist/backend/llvm/lib-shared.js.map +1 -1
  85. package/dist/backend/llvm/lib-test.js +11 -0
  86. package/dist/backend/llvm/lib-test.js.map +1 -1
  87. package/dist/backend/llvm/local-array-reads.js +2 -2
  88. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  89. package/dist/backend/llvm/map-number-lookup.js +8 -2
  90. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  91. package/dist/backend/llvm/nullable-unions.js +5 -2
  92. package/dist/backend/llvm/nullable-unions.js.map +1 -1
  93. package/dist/backend/llvm/publish.d.ts +3 -0
  94. package/dist/backend/llvm/publish.js +2 -2
  95. package/dist/backend/llvm/publish.js.map +1 -1
  96. package/dist/backend/llvm/reference-writes.js +1 -0
  97. package/dist/backend/llvm/reference-writes.js.map +1 -1
  98. package/dist/backend/llvm/region-groups.js +43 -4
  99. package/dist/backend/llvm/region-groups.js.map +1 -1
  100. package/dist/backend/llvm/region-groups.test.js +79 -0
  101. package/dist/backend/llvm/region-groups.test.js.map +1 -1
  102. package/dist/backend/llvm/runtime-registries.test.js +32 -1
  103. package/dist/backend/llvm/runtime-registries.test.js.map +1 -1
  104. package/dist/backend/llvm/shapes.js +10 -1
  105. package/dist/backend/llvm/shapes.js.map +1 -1
  106. package/dist/backend/llvm/string-reads.d.ts +1 -1
  107. package/dist/backend/llvm/string-reads.js +1 -1
  108. package/dist/backend/llvm/string-reads.js.map +1 -1
  109. package/dist/backend/llvm/unwind-abi.js +24 -2
  110. package/dist/backend/llvm/unwind-abi.js.map +1 -1
  111. package/dist/backend/llvm/unwind-abi.test.js +38 -0
  112. package/dist/backend/llvm/unwind-abi.test.js.map +1 -1
  113. package/dist/backend/llvm/walkers.d.ts +3 -0
  114. package/dist/backend/llvm/walkers.js +20 -2
  115. package/dist/backend/llvm/walkers.js.map +1 -1
  116. package/dist/backend/native/contracts.d.ts +15 -3
  117. package/dist/backend/native/executable.js +19 -5
  118. package/dist/backend/native/executable.js.map +1 -1
  119. package/dist/backend/native-codegen-core.d.ts +20 -0
  120. package/dist/backend/native-codegen-core.js +15 -0
  121. package/dist/backend/native-codegen-core.js.map +1 -1
  122. package/dist/backend/native-codegen.d.ts +5 -0
  123. package/dist/backend/native-codegen.js +62 -8
  124. package/dist/backend/native-codegen.js.map +1 -1
  125. package/dist/backend/native-codegen.test.js +48 -8
  126. package/dist/backend/native-codegen.test.js.map +1 -1
  127. package/dist/backend/native-link-info-core.d.ts +27 -3
  128. package/dist/backend/native-link-info-core.js.map +1 -1
  129. package/dist/backend/native-link-info.test.js +17 -1
  130. package/dist/backend/native-link-info.test.js.map +1 -1
  131. package/dist/backend/native-toolchain.d.ts +1 -1
  132. package/dist/backend/native-toolchain.js +1 -1
  133. package/dist/backend/native-toolchain.js.map +1 -1
  134. package/dist/backend/native-toolchain.test.js +14 -1
  135. package/dist/backend/native-toolchain.test.js.map +1 -1
  136. package/dist/backend/runtime-pack-core.d.ts +9 -3
  137. package/dist/backend/runtime-pack-core.js +6 -1
  138. package/dist/backend/runtime-pack-core.js.map +1 -1
  139. package/dist/backend/runtime-pack.test.js +32 -1
  140. package/dist/backend/runtime-pack.test.js.map +1 -1
  141. package/dist/backend/targets.d.ts +9 -1
  142. package/dist/backend/targets.js +11 -2
  143. package/dist/backend/targets.js.map +1 -1
  144. package/dist/backend/targets.test.js +6 -0
  145. package/dist/backend/targets.test.js.map +1 -1
  146. package/dist/cli/command.js +15 -1
  147. package/dist/cli/command.js.map +1 -1
  148. package/dist/cli/host.d.ts +6 -0
  149. package/dist/cli/mcp.d.ts +72 -0
  150. package/dist/cli/mcp.js +601 -0
  151. package/dist/cli/mcp.js.map +1 -0
  152. package/dist/cli/mcp.test.d.ts +1 -0
  153. package/dist/cli/mcp.test.js +380 -0
  154. package/dist/cli/mcp.test.js.map +1 -0
  155. package/dist/cli/output-options.d.ts +1 -0
  156. package/dist/cli/output-options.js +3 -0
  157. package/dist/cli/output-options.js.map +1 -1
  158. package/dist/cli/usage.d.ts +51 -1
  159. package/dist/cli/usage.js +709 -186
  160. package/dist/cli/usage.js.map +1 -1
  161. package/dist/compat/fetch-profile.js +9 -4
  162. package/dist/compat/fetch-profile.js.map +1 -1
  163. package/dist/compile-types.d.ts +17 -0
  164. package/dist/coverage/report.d.ts +5 -9
  165. package/dist/coverage/report.js.map +1 -1
  166. package/dist/executable/executable-cache.d.ts +17 -3
  167. package/dist/executable/executable-cache.js +17 -3
  168. package/dist/executable/executable-cache.js.map +1 -1
  169. package/dist/executable/prepare.js +87 -10
  170. package/dist/executable/prepare.js.map +1 -1
  171. package/dist/frontend/analysis.js +3 -2
  172. package/dist/frontend/analysis.js.map +1 -1
  173. package/dist/frontend/canon-map.js +13 -8
  174. package/dist/frontend/canon-map.js.map +1 -1
  175. package/dist/frontend/decl-projection.d.ts +18 -0
  176. package/dist/frontend/decl-projection.js +90 -22
  177. package/dist/frontend/decl-projection.js.map +1 -1
  178. package/dist/frontend/decl-projection.test.js +47 -1
  179. package/dist/frontend/decl-projection.test.js.map +1 -1
  180. package/dist/frontend/default-library.d.ts +10 -0
  181. package/dist/frontend/default-library.js +43 -0
  182. package/dist/frontend/default-library.js.map +1 -0
  183. package/dist/frontend/fork-target.js +54 -9
  184. package/dist/frontend/fork-target.js.map +1 -1
  185. package/dist/frontend/fork-target.test.js +82 -0
  186. package/dist/frontend/fork-target.test.js.map +1 -1
  187. package/dist/frontend/inferred-js-diagnostics.test.js +73 -0
  188. package/dist/frontend/inferred-js-diagnostics.test.js.map +1 -1
  189. package/dist/frontend/lowering/abstract-equality.d.ts +2 -1
  190. package/dist/frontend/lowering/abstract-equality.js +7 -1
  191. package/dist/frontend/lowering/abstract-equality.js.map +1 -1
  192. package/dist/frontend/lowering/array-values.js +2 -2
  193. package/dist/frontend/lowering/array-values.js.map +1 -1
  194. package/dist/frontend/lowering/assertion-members.js +52 -2
  195. package/dist/frontend/lowering/assertion-members.js.map +1 -1
  196. package/dist/frontend/lowering/builtin-namespaces.d.ts +5 -0
  197. package/dist/frontend/lowering/builtin-namespaces.js +19 -12
  198. package/dist/frontend/lowering/builtin-namespaces.js.map +1 -1
  199. package/dist/frontend/lowering/builtins/callable-aliases.js +42 -6
  200. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  201. package/dist/frontend/lowering/builtins/child-process.d.ts +12 -11
  202. package/dist/frontend/lowering/builtins/child-process.js +235 -38
  203. package/dist/frontend/lowering/builtins/child-process.js.map +1 -1
  204. package/dist/frontend/lowering/builtins/compression.d.ts +6 -1
  205. package/dist/frontend/lowering/builtins/compression.js +3 -3
  206. package/dist/frontend/lowering/builtins/compression.js.map +1 -1
  207. package/dist/frontend/lowering/builtins/constants.js +2 -2
  208. package/dist/frontend/lowering/builtins/constants.js.map +1 -1
  209. package/dist/frontend/lowering/builtins/crypto.d.ts +3 -1
  210. package/dist/frontend/lowering/builtins/crypto.js +9 -1
  211. package/dist/frontend/lowering/builtins/crypto.js.map +1 -1
  212. package/dist/frontend/lowering/builtins/dates.js +26 -6
  213. package/dist/frontend/lowering/builtins/dates.js.map +1 -1
  214. package/dist/frontend/lowering/builtins/environment.d.ts +13 -1
  215. package/dist/frontend/lowering/builtins/environment.js +15 -4
  216. package/dist/frontend/lowering/builtins/environment.js.map +1 -1
  217. package/dist/frontend/lowering/builtins/module-bindings.d.ts +33 -0
  218. package/dist/frontend/lowering/builtins/module-bindings.js +213 -11
  219. package/dist/frontend/lowering/builtins/module-bindings.js.map +1 -1
  220. package/dist/frontend/lowering/builtins/module-resolution.d.ts +9 -2
  221. package/dist/frontend/lowering/builtins/module-resolution.js +187 -19
  222. package/dist/frontend/lowering/builtins/module-resolution.js.map +1 -1
  223. package/dist/frontend/lowering/builtins/performance.js +1 -1
  224. package/dist/frontend/lowering/builtins/performance.js.map +1 -1
  225. package/dist/frontend/lowering/builtins/process.js +40 -2
  226. package/dist/frontend/lowering/builtins/process.js.map +1 -1
  227. package/dist/frontend/lowering/builtins/promises.js +33 -0
  228. package/dist/frontend/lowering/builtins/promises.js.map +1 -1
  229. package/dist/frontend/lowering/builtins/readline.d.ts +9 -5
  230. package/dist/frontend/lowering/builtins/readline.js +184 -75
  231. package/dist/frontend/lowering/builtins/readline.js.map +1 -1
  232. package/dist/frontend/lowering/builtins/url.d.ts +4 -0
  233. package/dist/frontend/lowering/builtins/url.js +6 -0
  234. package/dist/frontend/lowering/builtins/url.js.map +1 -1
  235. package/dist/frontend/lowering/call-arguments.js +15 -0
  236. package/dist/frontend/lowering/call-arguments.js.map +1 -1
  237. package/dist/frontend/lowering/callable-properties.d.ts +34 -0
  238. package/dist/frontend/lowering/callable-properties.js +210 -0
  239. package/dist/frontend/lowering/callable-properties.js.map +1 -0
  240. package/dist/frontend/lowering/cjs-inline-require.d.ts +16 -0
  241. package/dist/frontend/lowering/cjs-inline-require.js +105 -0
  242. package/dist/frontend/lowering/cjs-inline-require.js.map +1 -1
  243. package/dist/frontend/lowering/cjs-inline-require.test.d.ts +1 -0
  244. package/dist/frontend/lowering/cjs-inline-require.test.js +61 -0
  245. package/dist/frontend/lowering/cjs-inline-require.test.js.map +1 -0
  246. package/dist/frontend/lowering/class-dynamic-dispatch.js +82 -2
  247. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  248. package/dist/frontend/lowering/class-protocols.d.ts +57 -4
  249. package/dist/frontend/lowering/class-protocols.js +597 -30
  250. package/dist/frontend/lowering/class-protocols.js.map +1 -1
  251. package/dist/frontend/lowering/class-unions.js +2 -2
  252. package/dist/frontend/lowering/class-unions.js.map +1 -1
  253. package/dist/frontend/lowering/coercions/function-adapters.d.ts +12 -0
  254. package/dist/frontend/lowering/coercions/function-adapters.js +62 -0
  255. package/dist/frontend/lowering/coercions/function-adapters.js.map +1 -1
  256. package/dist/frontend/lowering/coercions/structural-plans.js +56 -1
  257. package/dist/frontend/lowering/coercions/structural-plans.js.map +1 -1
  258. package/dist/frontend/lowering/coercions/structural.js +9 -4
  259. package/dist/frontend/lowering/coercions/structural.js.map +1 -1
  260. package/dist/frontend/lowering/collection-ingestion.d.ts +9 -0
  261. package/dist/frontend/lowering/collection-ingestion.js +115 -41
  262. package/dist/frontend/lowering/collection-ingestion.js.map +1 -1
  263. package/dist/frontend/lowering/containers/array-callbacks.js +16 -0
  264. package/dist/frontend/lowering/containers/array-callbacks.js.map +1 -1
  265. package/dist/frontend/lowering/containers/bytes.js +66 -10
  266. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  267. package/dist/frontend/lowering/containers/collection-methods.js +61 -5
  268. package/dist/frontend/lowering/containers/collection-methods.js.map +1 -1
  269. package/dist/frontend/lowering/containers/filter-predicates.js +11 -0
  270. package/dist/frontend/lowering/containers/filter-predicates.js.map +1 -1
  271. package/dist/frontend/lowering/containers/indexed-objects.d.ts +15 -0
  272. package/dist/frontend/lowering/containers/indexed-objects.js +213 -30
  273. package/dist/frontend/lowering/containers/indexed-objects.js.map +1 -1
  274. package/dist/frontend/lowering/error-name-order.d.ts +16 -0
  275. package/dist/frontend/lowering/error-name-order.js +61 -0
  276. package/dist/frontend/lowering/error-name-order.js.map +1 -1
  277. package/dist/frontend/lowering/expressions/asserted-receiver.d.ts +17 -0
  278. package/dist/frontend/lowering/expressions/asserted-receiver.js +123 -1
  279. package/dist/frontend/lowering/expressions/asserted-receiver.js.map +1 -1
  280. package/dist/frontend/lowering/expressions/binary.js +147 -20
  281. package/dist/frontend/lowering/expressions/binary.js.map +1 -1
  282. package/dist/frontend/lowering/expressions/element-access.js +63 -14
  283. package/dist/frontend/lowering/expressions/element-access.js.map +1 -1
  284. package/dist/frontend/lowering/expressions/erased-delete.d.ts +59 -0
  285. package/dist/frontend/lowering/expressions/erased-delete.js +247 -0
  286. package/dist/frontend/lowering/expressions/erased-delete.js.map +1 -0
  287. package/dist/frontend/lowering/expressions/hosted-narrowing.d.ts +10 -0
  288. package/dist/frontend/lowering/expressions/hosted-narrowing.js +48 -1
  289. package/dist/frontend/lowering/expressions/hosted-narrowing.js.map +1 -1
  290. package/dist/frontend/lowering/expressions/identifiers.js +20 -0
  291. package/dist/frontend/lowering/expressions/identifiers.js.map +1 -1
  292. package/dist/frontend/lowering/expressions/narrowing.d.ts +7 -2
  293. package/dist/frontend/lowering/expressions/narrowing.js +77 -45
  294. package/dist/frontend/lowering/expressions/narrowing.js.map +1 -1
  295. package/dist/frontend/lowering/expressions/object-literals.js +62 -19
  296. package/dist/frontend/lowering/expressions/object-literals.js.map +1 -1
  297. package/dist/frontend/lowering/expressions/optional-chains.js +19 -0
  298. package/dist/frontend/lowering/expressions/optional-chains.js.map +1 -1
  299. package/dist/frontend/lowering/expressions/property-access.d.ts +7 -7
  300. package/dist/frontend/lowering/expressions/property-access.js +247 -48
  301. package/dist/frontend/lowering/expressions/property-access.js.map +1 -1
  302. package/dist/frontend/lowering/expressions/relational.d.ts +1 -0
  303. package/dist/frontend/lowering/expressions/relational.js +18 -8
  304. package/dist/frontend/lowering/expressions/relational.js.map +1 -1
  305. package/dist/frontend/lowering/expressions/union-fields.js +11 -5
  306. package/dist/frontend/lowering/expressions/union-fields.js.map +1 -1
  307. package/dist/frontend/lowering/expressions/updates.js +121 -11
  308. package/dist/frontend/lowering/expressions/updates.js.map +1 -1
  309. package/dist/frontend/lowering/function-context.d.ts +10 -0
  310. package/dist/frontend/lowering/function-context.js +36 -0
  311. package/dist/frontend/lowering/function-context.js.map +1 -1
  312. package/dist/frontend/lowering/function-returns.js +8 -8
  313. package/dist/frontend/lowering/function-returns.js.map +1 -1
  314. package/dist/frontend/lowering/handle-properties.d.ts +62 -3
  315. package/dist/frontend/lowering/handle-properties.js +674 -26
  316. package/dist/frontend/lowering/handle-properties.js.map +1 -1
  317. package/dist/frontend/lowering/handle-properties.test.js +95 -2
  318. package/dist/frontend/lowering/handle-properties.test.js.map +1 -1
  319. package/dist/frontend/lowering/lower-builtin-values.d.ts +12 -0
  320. package/dist/frontend/lowering/lower-builtin-values.js +44 -0
  321. package/dist/frontend/lowering/lower-builtin-values.js.map +1 -1
  322. package/dist/frontend/lowering/lower-calls.js +328 -136
  323. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  324. package/dist/frontend/lowering/lower-classes.js +82 -17
  325. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  326. package/dist/frontend/lowering/lower-event-emitter.js +113 -9
  327. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  328. package/dist/frontend/lowering/lower-expando.d.ts +13 -21
  329. package/dist/frontend/lowering/lower-expando.js +90 -126
  330. package/dist/frontend/lowering/lower-expando.js.map +1 -1
  331. package/dist/frontend/lowering/lower-exprs.js +2 -2
  332. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  333. package/dist/frontend/lowering/lower-functions.js +65 -0
  334. package/dist/frontend/lowering/lower-functions.js.map +1 -1
  335. package/dist/frontend/lowering/lower-inspect.js +471 -0
  336. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  337. package/dist/frontend/lowering/lower-modules.js +36 -10
  338. package/dist/frontend/lowering/lower-modules.js.map +1 -1
  339. package/dist/frontend/lowering/lower-node-island.js +28 -0
  340. package/dist/frontend/lowering/lower-node-island.js.map +1 -1
  341. package/dist/frontend/lowering/lower-server.d.ts +53 -7
  342. package/dist/frontend/lowering/lower-server.js +213 -42
  343. package/dist/frontend/lowering/lower-server.js.map +1 -1
  344. package/dist/frontend/lowering/lower-stdlib.js +50 -7
  345. package/dist/frontend/lowering/lower-stdlib.js.map +1 -1
  346. package/dist/frontend/lowering/lower-stmts.d.ts +24 -0
  347. package/dist/frontend/lowering/lower-stmts.js +463 -220
  348. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  349. package/dist/frontend/lowering/lower-stream.js +2 -2
  350. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  351. package/dist/frontend/lowering/lower-test.js +71 -2
  352. package/dist/frontend/lowering/lower-test.js.map +1 -1
  353. package/dist/frontend/lowering/lowerer.d.ts +81 -10
  354. package/dist/frontend/lowering/lowerer.js +319 -72
  355. package/dist/frontend/lowering/lowerer.js.map +1 -1
  356. package/dist/frontend/lowering/new-target.js +10 -2
  357. package/dist/frontend/lowering/new-target.js.map +1 -1
  358. package/dist/frontend/lowering/nullish-empty-pattern.js +3 -3
  359. package/dist/frontend/lowering/nullish-empty-pattern.js.map +1 -1
  360. package/dist/frontend/lowering/partial-assertions.js +30 -5
  361. package/dist/frontend/lowering/partial-assertions.js.map +1 -1
  362. package/dist/frontend/lowering/primitive-throws.js +91 -1
  363. package/dist/frontend/lowering/primitive-throws.js.map +1 -1
  364. package/dist/frontend/lowering/primitive-wrappers.d.ts +9 -0
  365. package/dist/frontend/lowering/primitive-wrappers.js +2 -2
  366. package/dist/frontend/lowering/primitive-wrappers.js.map +1 -1
  367. package/dist/frontend/lowering/promise-executor-adapter.js +5 -2
  368. package/dist/frontend/lowering/promise-executor-adapter.js.map +1 -1
  369. package/dist/frontend/lowering/record-links.js +7 -2
  370. package/dist/frontend/lowering/record-links.js.map +1 -1
  371. package/dist/frontend/lowering/surfaces.d.ts +4 -0
  372. package/dist/frontend/lowering/surfaces.js +118 -2
  373. package/dist/frontend/lowering/surfaces.js.map +1 -1
  374. package/dist/frontend/lowering/surfaces.test.d.ts +1 -0
  375. package/dist/frontend/lowering/surfaces.test.js +31 -0
  376. package/dist/frontend/lowering/surfaces.test.js.map +1 -0
  377. package/dist/frontend/mock-shapes.js +3 -3
  378. package/dist/frontend/mock-shapes.js.map +1 -1
  379. package/dist/frontend/npm-static-ladder.d.ts +21 -0
  380. package/dist/frontend/npm-static-ladder.js +2 -0
  381. package/dist/frontend/npm-static-ladder.js.map +1 -0
  382. package/dist/frontend/npm-static-ladder.test.d.ts +1 -0
  383. package/dist/frontend/npm-static-ladder.test.js +138 -0
  384. package/dist/frontend/npm-static-ladder.test.js.map +1 -0
  385. package/dist/frontend/npm-static-status.d.ts +15 -0
  386. package/dist/frontend/npm-static-status.js +2 -0
  387. package/dist/frontend/npm-static-status.js.map +1 -0
  388. package/dist/frontend/package-shims.js +1 -1
  389. package/dist/frontend/package-shims.js.map +1 -1
  390. package/dist/frontend/pipeline.d.ts +1 -1
  391. package/dist/frontend/pipeline.js +222 -25
  392. package/dist/frontend/pipeline.js.map +1 -1
  393. package/dist/frontend/program-analysis.d.ts +4 -0
  394. package/dist/frontend/program-analysis.js +6 -0
  395. package/dist/frontend/program-analysis.js.map +1 -1
  396. package/dist/frontend/program.js +258 -32
  397. package/dist/frontend/program.js.map +1 -1
  398. package/dist/frontend/program.test.js +30 -0
  399. package/dist/frontend/program.test.js.map +1 -1
  400. package/dist/frontend/resolve.js +29 -5
  401. package/dist/frontend/resolve.js.map +1 -1
  402. package/dist/frontend/resolve.test.js +40 -0
  403. package/dist/frontend/resolve.test.js.map +1 -1
  404. package/dist/frontend/services.d.ts +8 -0
  405. package/dist/frontend/services.js +7 -0
  406. package/dist/frontend/services.js.map +1 -1
  407. package/dist/frontend/ts7/checker.d.ts +7 -0
  408. package/dist/frontend/ts7/checker.js +12 -0
  409. package/dist/frontend/ts7/checker.js.map +1 -1
  410. package/dist/frontend/ts7/checker.test.js +1 -0
  411. package/dist/frontend/ts7/checker.test.js.map +1 -1
  412. package/dist/frontend/ts7/program-host.d.ts +39 -2
  413. package/dist/frontend/ts7/program-host.js +62 -8
  414. package/dist/frontend/ts7/program-host.js.map +1 -1
  415. package/dist/frontend/ts7/program-host.test.js +33 -0
  416. package/dist/frontend/ts7/program-host.test.js.map +1 -1
  417. package/dist/frontend/ts7/session-cache.d.ts +5 -1
  418. package/dist/frontend/ts7/session-cache.js +7 -1
  419. package/dist/frontend/ts7/session-cache.js.map +1 -1
  420. package/dist/frontend/ts7/session-cache.test.js +37 -0
  421. package/dist/frontend/ts7/session-cache.test.js.map +1 -1
  422. package/dist/frontend/ts7/session.js +19 -1
  423. package/dist/frontend/ts7/session.js.map +1 -1
  424. package/dist/frontend/ts7/source-parser.d.ts +17 -2
  425. package/dist/frontend/ts7/source-parser.js +61 -2
  426. package/dist/frontend/ts7/source-parser.js.map +1 -1
  427. package/dist/frontend/ts7/source-parser.test.js +55 -2
  428. package/dist/frontend/ts7/source-parser.test.js.map +1 -1
  429. package/dist/frontend/tsc-codes.d.ts +3 -2
  430. package/dist/frontend/tsc-codes.js +129 -22
  431. package/dist/frontend/tsc-codes.js.map +1 -1
  432. package/dist/frontend/type-mapper.d.ts +5 -11
  433. package/dist/frontend/type-mapper.js +380 -70
  434. package/dist/frontend/type-mapper.js.map +1 -1
  435. package/dist/index.d.ts +1 -1
  436. package/dist/index.js +67 -7
  437. package/dist/index.js.map +1 -1
  438. package/dist/ir/builtin-effects.js +29 -0
  439. package/dist/ir/builtin-effects.js.map +1 -1
  440. package/dist/ir/builtin-signatures.d.ts +1 -1
  441. package/dist/ir/builtin-signatures.js +72 -6
  442. package/dist/ir/builtin-signatures.js.map +1 -1
  443. package/dist/ir/codec.generated.d.ts +1 -1
  444. package/dist/ir/codec.generated.js +321 -263
  445. package/dist/ir/codec.generated.js.map +1 -1
  446. package/dist/ir/constant-length-clones.d.ts +26 -0
  447. package/dist/ir/constant-length-clones.js +589 -0
  448. package/dist/ir/constant-length-clones.js.map +1 -0
  449. package/dist/ir/constant-length-clones.test.d.ts +1 -0
  450. package/dist/ir/constant-length-clones.test.js +292 -0
  451. package/dist/ir/constant-length-clones.test.js.map +1 -0
  452. package/dist/ir/constant-tables.d.ts +10 -5
  453. package/dist/ir/constant-tables.js +83 -17
  454. package/dist/ir/constant-tables.js.map +1 -1
  455. package/dist/ir/constant-tables.test.js +58 -1
  456. package/dist/ir/constant-tables.test.js.map +1 -1
  457. package/dist/ir/fields.generated.js +5 -2
  458. package/dist/ir/fields.generated.js.map +1 -1
  459. package/dist/ir/function-references.js +2 -0
  460. package/dist/ir/function-references.js.map +1 -1
  461. package/dist/ir/function-references.test.js +13 -0
  462. package/dist/ir/function-references.test.js.map +1 -1
  463. package/dist/ir/integer-loops.js +1 -0
  464. package/dist/ir/integer-loops.js.map +1 -1
  465. package/dist/ir/integer-loops.test.js +16 -0
  466. package/dist/ir/integer-loops.test.js.map +1 -1
  467. package/dist/ir/ir.d.ts +50 -6
  468. package/dist/ir/ir.js +44 -2
  469. package/dist/ir/ir.js.map +1 -1
  470. package/dist/ir/ir.test.js +83 -1
  471. package/dist/ir/ir.test.js.map +1 -1
  472. package/dist/ir/js-groups.js +5 -1
  473. package/dist/ir/js-groups.js.map +1 -1
  474. package/dist/ir/js-ic.d.ts +20 -0
  475. package/dist/ir/js-ic.js +81 -4
  476. package/dist/ir/js-ic.js.map +1 -1
  477. package/dist/ir/js-ic.test.js +8 -1
  478. package/dist/ir/js-ic.test.js.map +1 -1
  479. package/dist/ir/lane-plans.d.ts +86 -0
  480. package/dist/ir/lane-plans.js +589 -0
  481. package/dist/ir/lane-plans.js.map +1 -0
  482. package/dist/ir/lane-plans.test.d.ts +1 -0
  483. package/dist/ir/lane-plans.test.js +549 -0
  484. package/dist/ir/lane-plans.test.js.map +1 -0
  485. package/dist/ir/runtime-features.d.ts +68 -10
  486. package/dist/ir/runtime-features.js +285 -17
  487. package/dist/ir/runtime-features.js.map +1 -1
  488. package/dist/ir/runtime-features.test.js +190 -1
  489. package/dist/ir/runtime-features.test.js.map +1 -1
  490. package/dist/ir/validate.js +61 -24
  491. package/dist/ir/validate.js.map +1 -1
  492. package/dist/native/cache.d.ts +5 -0
  493. package/dist/native/cache.js +23 -1
  494. package/dist/native/cache.js.map +1 -1
  495. package/dist/native/cache.test.js +29 -1
  496. package/dist/native/cache.test.js.map +1 -1
  497. package/dist/native/cli.js +4 -2
  498. package/dist/native/cli.js.map +1 -1
  499. package/dist/native/compiler.d.ts +11 -3
  500. package/dist/native/compiler.js +102 -16
  501. package/dist/native/compiler.js.map +1 -1
  502. package/dist/native/compiler.test.js +244 -2
  503. package/dist/native/compiler.test.js.map +1 -1
  504. package/dist/native/prepare.d.ts +14 -1
  505. package/dist/native/prepare.js +79 -29
  506. package/dist/native/prepare.js.map +1 -1
  507. package/dist/native/sanitizer.test.js +3 -0
  508. package/dist/native/sanitizer.test.js.map +1 -1
  509. package/dist/native/unchanged.d.ts +80 -0
  510. package/dist/native/unchanged.js +301 -0
  511. package/dist/native/unchanged.js.map +1 -0
  512. package/dist/native/unchanged.test.d.ts +1 -0
  513. package/dist/native/unchanged.test.js +249 -0
  514. package/dist/native/unchanged.test.js.map +1 -0
  515. package/dist/node-islands/boundary.d.ts +16 -0
  516. package/dist/node-islands/boundary.js +70 -7
  517. package/dist/node-islands/boundary.js.map +1 -1
  518. package/dist/node-islands/boundary.test.js +59 -14
  519. package/dist/node-islands/boundary.test.js.map +1 -1
  520. package/dist/node-islands/detect.js +203 -47
  521. package/dist/node-islands/detect.js.map +1 -1
  522. package/dist/node-islands/detect.test.js +45 -0
  523. package/dist/node-islands/detect.test.js.map +1 -1
  524. package/dist/node-islands/growth.js +4 -16
  525. package/dist/node-islands/growth.js.map +1 -1
  526. package/dist/node-islands/modules.d.ts +3 -0
  527. package/dist/node-islands/modules.js +143 -12
  528. package/dist/node-islands/modules.js.map +1 -1
  529. package/dist/node-islands/modules.test.js +125 -0
  530. package/dist/node-islands/modules.test.js.map +1 -1
  531. package/dist/node-islands/report.d.ts +1 -1
  532. package/dist/node-islands/report.js +2 -1
  533. package/dist/node-islands/report.js.map +1 -1
  534. package/package.json +20 -20
  535. package/shims/undici/core/request.ts +7 -1
  536. package/surface-manifest.json +380 -2
@@ -0,0 +1,589 @@
1
+ /* Lane plans.
2
+ *
3
+ * A lane plan is the loop emitter's permission to run several consecutive
4
+ * iterations of one `for` loop in vector registers. This file recognizes
5
+ * the `elementwise` shapes and records the facts the emitter needs; it does
6
+ * not emit anything, and it leaves the IR alone (a plan is a side table
7
+ * keyed by the loop statement, like the contracts).
8
+ *
9
+ * The shapes read a typed array or a dense `number[]` at the induction
10
+ * variable:
11
+ *
12
+ * for (let i = 0; i < a.length; i++) total += a[i]!; // sum
13
+ * for (let i = 0; i < a.length; i++) if (a[i]! >= n) count++; // count
14
+ * for (let i = 0; i < a.length; i++) a[i] = a[i]! * 2; // store
15
+ *
16
+ * Sums and counts are order-free when every partial sum is an integer below
17
+ * 2^53: a sum of integer elements is exact in any order below that bound,
18
+ * and a count is at most the length. The sum's bound is checked at the loop
19
+ * entry by the emitter (`lengthBound`), because it depends on the element
20
+ * type. A store is order-free because it writes element `i` from element `i`
21
+ * of the same iteration, so lanes never move a value across an iteration.
22
+ *
23
+ * A dense array's slots hold either exact int32s (which are never -0) or
24
+ * doubles, decided per array at run time; a plan lanes the int32 storage for
25
+ * a sum or count and the double storage for a store, and the emitter tests
26
+ * the storage kind at the loop entry.
27
+ *
28
+ * A loop qualifies when:
29
+ * - it is the canonical loop the integer matchers recognize (typed arrays:
30
+ * `matchIntegerBytesForLoop`, dense arrays: `matchIntegerArrayForLoop`),
31
+ * the receiver is never assigned in the body, and its elements are
32
+ * integers narrower than f64 or, for a store, doubles;
33
+ * - the body is exactly one of the shapes above, reading `receiver[i]` and
34
+ * writing the accumulator or the element;
35
+ * - for a sum or count the accumulator is a mutable unboxed `f64` local
36
+ * declared as the literal 0, and it holds exactly +0 wherever the loop is
37
+ * entered. Those facts, which `entryIsZero` checks, are what the exactness
38
+ * argument needs: the loop's partial sums then start from +0 and stay
39
+ * inside the bound on their own.
40
+ *
41
+ * Everything else keeps its scalar form. */
42
+ import {} from "./ir.js";
43
+ import { matchIntegerArrayForLoop, matchIntegerBytesForLoop } from "./integer-loops.js";
44
+ import { everyExpr, everyStmt } from "./traverse.js";
45
+ export const LANE_SHAPES = ["sum", "count", "store"];
46
+ const LANE_ELEMS = new Map([
47
+ ["u8", { type: "i8", bits: 8, signed: false, max: 255 }],
48
+ // A clamped array reads like a byte array; only its stores clamp.
49
+ ["u8c", { type: "i8", bits: 8, signed: false, max: 255 }],
50
+ ["i8", { type: "i8", bits: 8, signed: true, max: 128 }],
51
+ ["u16", { type: "i16", bits: 16, signed: false, max: 65535 }],
52
+ ["i16", { type: "i16", bits: 16, signed: true, max: 32768 }],
53
+ ["u32", { type: "i32", bits: 32, signed: false, max: 4294967295 }],
54
+ ["i32", { type: "i32", bits: 32, signed: true, max: 2147483648 }],
55
+ // A dense number array's int32 slots hold exact int32s and never -0, so a
56
+ // sum of them is the sum of the integers the scalar loop adds.
57
+ ["i32slot", { type: "i32", bits: 32, signed: true, max: 2147483648 }],
58
+ ]);
59
+ /** The element an integer typed array loads as, or null for a float or an
60
+ * unknown element. */
61
+ export function laneElem(elem) {
62
+ return LANE_ELEMS.get(elem) ?? null;
63
+ }
64
+ /** The largest element count whose sum of `elem` elements stays below 2^53
65
+ * in magnitude: 2^21 for u32, 2^22 for i32, 2^45 for u8, and so on. */
66
+ function sumLengthBound(elem) {
67
+ return 2 ** (53 - elem.bits + (elem.signed ? 1 : 0));
68
+ }
69
+ function isLoop(s) {
70
+ return s.kind === "for" || s.kind === "forOf" || s.kind === "while" || s.kind === "doWhile";
71
+ }
72
+ /** The statement lists a statement holds. */
73
+ function heldLists(s) {
74
+ switch (s.kind) {
75
+ case "if":
76
+ return s.else_ === null ? [s.then] : [s.then, s.else_];
77
+ case "block":
78
+ case "while":
79
+ case "doWhile":
80
+ case "for":
81
+ case "forOf":
82
+ return [s.body];
83
+ case "switch":
84
+ return s.cases.map((c) => c.body);
85
+ case "tryCatch":
86
+ return [
87
+ s.tryBody,
88
+ ...(s.catchBody === null ? [] : [s.catchBody]),
89
+ ...(s.finallyBody === null ? [] : [s.finallyBody]),
90
+ ];
91
+ default:
92
+ return [];
93
+ }
94
+ }
95
+ function functionFacts(fn) {
96
+ const decls = new Map();
97
+ const loops = [];
98
+ const walk = (list, path, enclosing) => {
99
+ for (let index = 0; index < list.length; index++) {
100
+ const s = list[index];
101
+ const step = { list, index, cond: s.kind === "if" ? s.cond : null };
102
+ if (s.kind === "varDecl") {
103
+ if (!decls.has(s.localId))
104
+ decls.set(s.localId, { stmt: s, list, index, loops: enclosing });
105
+ }
106
+ else if (s.kind === "for") {
107
+ loops.push({ stmt: s, path: [...path, step], loops: enclosing });
108
+ }
109
+ const inner = isLoop(s) ? [...enclosing, s] : enclosing;
110
+ for (const held of heldLists(s))
111
+ walk(held, [...path, step], inner);
112
+ }
113
+ };
114
+ walk(fn.body, [], []);
115
+ return { decls, loops };
116
+ }
117
+ /** Whether `stmt` writes `id` anywhere in its subtree: an assignment, a
118
+ * compound assignment, an increment, a `for`-`of` binding, or a declaring
119
+ * initializer. */
120
+ function writesLocal(stmt, id) {
121
+ let found = false;
122
+ everyStmt(stmt, {
123
+ expr: (e) => {
124
+ if ((e.kind === "assignExpr" || e.kind === "incDec") && e.localId === id)
125
+ found = true;
126
+ return !found;
127
+ },
128
+ stmt: (s) => {
129
+ if ((s.kind === "assign" || s.kind === "forOf") && s.localId === id)
130
+ found = true;
131
+ else if (s.kind === "varDecl" && s.init !== null && s.localId === id)
132
+ found = true;
133
+ return !found;
134
+ },
135
+ });
136
+ return found;
137
+ }
138
+ const RELATIONAL = new Set(["<", "<=", ">", ">=", "===", "!=="]);
139
+ /** `e` is the induction, as the index of an element access. */
140
+ function atInduction(e, induction) {
141
+ return e.kind === "varRef" && e.localId === induction;
142
+ }
143
+ /** `e` is `receiver[induction]` in a typed array. */
144
+ function bytesElementRead(e, receiver, induction) {
145
+ return (e.kind === "bytesIntrinsic" &&
146
+ e.method === "get" &&
147
+ e.receiver.kind === "varRef" &&
148
+ e.receiver.localId === receiver &&
149
+ e.args.length === 1 &&
150
+ atInduction(e.args[0], induction));
151
+ }
152
+ /** `e` is `receiver[induction]` in a dense `number[]`: the strict element
153
+ * read, or the numeric read a plain `a[i]` compiles to. */
154
+ function arrayElementRead(e, receiver, induction) {
155
+ if (e.kind === "arrayGet")
156
+ return e.arr.kind === "varRef" && e.arr.localId === receiver && atInduction(e.index, induction);
157
+ return (e.kind === "arrIntrinsic" &&
158
+ e.method === "getNumber" &&
159
+ e.receiver.kind === "varRef" &&
160
+ e.receiver.localId === receiver &&
161
+ e.args.length === 1 &&
162
+ atInduction(e.args[0], induction));
163
+ }
164
+ /** `e` is `receiver[induction]` in a receiver of the plan's container. */
165
+ function elementRead(e, receiver, induction, container) {
166
+ return container === "bytes"
167
+ ? bytesElementRead(e, receiver, induction)
168
+ : arrayElementRead(e, receiver, induction);
169
+ }
170
+ /** `acc = acc + receiver[induction]`, in either operand order. */
171
+ function matchSumBody(only, receiver, induction, container) {
172
+ if (only.kind !== "assign" || only.value.kind !== "bin" || only.value.op !== "+")
173
+ return null;
174
+ const { left, right } = only.value;
175
+ const isAcc = (e) => e.kind === "varRef" && e.localId === only.localId;
176
+ if (isAcc(left) && elementRead(right, receiver, induction, container))
177
+ return only.localId;
178
+ if (isAcc(right) && elementRead(left, receiver, induction, container))
179
+ return only.localId;
180
+ return null;
181
+ }
182
+ /** The same test with the element on the right. */
183
+ function flip(op) {
184
+ switch (op) {
185
+ case "<":
186
+ return ">";
187
+ case "<=":
188
+ return ">=";
189
+ case ">":
190
+ return "<";
191
+ case ">=":
192
+ return "<=";
193
+ default:
194
+ return op;
195
+ }
196
+ }
197
+ /** `if (receiver[induction] <op> limit) acc++;`, with no else branch and an
198
+ * accumulator written as `acc + 1`. */
199
+ function matchCountBody(only, receiver, induction, container) {
200
+ if (only.kind !== "if" || only.else_ !== null || only.then.length !== 1)
201
+ return null;
202
+ const inc = only.then[0];
203
+ if (inc.kind !== "assign" || inc.value.kind !== "bin" || inc.value.op !== "+")
204
+ return null;
205
+ const { left, right } = inc.value;
206
+ const isSelf = (e) => e.kind === "varRef" && e.localId === inc.localId;
207
+ const isOne = (e) => e.kind === "numLit" && e.value === 1;
208
+ if (!((isSelf(left) && isOne(right)) || (isSelf(right) && isOne(left))))
209
+ return null;
210
+ const cond = only.cond;
211
+ if (cond.kind !== "bin" || !RELATIONAL.has(cond.op))
212
+ return null;
213
+ const op = cond.op;
214
+ if (elementRead(cond.left, receiver, induction, container))
215
+ return { accumulator: inc.localId, compare: { op, limit: cond.right } };
216
+ if (elementRead(cond.right, receiver, induction, container))
217
+ return { accumulator: inc.localId, compare: { op: flip(op), limit: cond.left } };
218
+ return null;
219
+ }
220
+ /** The limit test's operand: a value the lane entry can evaluate once. The
221
+ * entry evaluates it before the loop, so it must be the same on every
222
+ * iteration: a literal, or a number local the loop itself never writes. That
223
+ * rules out the counter and the accumulator, which the entry would freeze at
224
+ * their starting values. */
225
+ function invariantLimit(e, loop, induction) {
226
+ if (e.kind === "numLit")
227
+ return true;
228
+ return (e.kind === "varRef" &&
229
+ e.type.kind === "f64" &&
230
+ e.localId !== induction &&
231
+ !writesLocal(loop, e.localId));
232
+ }
233
+ /** The statements of a body without the blocks that only group them. A
234
+ * versioned union arm loop folds its tag test into a block, and the store
235
+ * arrives inside one, so the shape is read through them. */
236
+ function flatBody(body) {
237
+ const out = [];
238
+ for (const s of body) {
239
+ if (s.kind === "block")
240
+ out.push(...flatBody(s.body));
241
+ else
242
+ out.push(s);
243
+ }
244
+ return out;
245
+ }
246
+ /** `receiver[induction] = value`, with the value maybe bound to one temp
247
+ * first, which is how an elementwise store reaches the IR. The loop body
248
+ * holds nothing else, so the store is its only effect. */
249
+ function matchStoreBody(body, induction) {
250
+ const list = flatBody(body);
251
+ let set;
252
+ let temp = null;
253
+ if (list.length === 1)
254
+ set = list[0];
255
+ else if (list.length === 2 && list[0].kind === "varDecl" && list[0].init !== null) {
256
+ temp = list[0].localId;
257
+ set = list[1];
258
+ }
259
+ if (set === undefined)
260
+ return null;
261
+ if (set.kind !== "bytesSet" && set.kind !== "arraySet")
262
+ return null;
263
+ if (!atInduction(set.index, induction))
264
+ return null;
265
+ if (set.kind === "bytesSet") {
266
+ if (set.arr.kind !== "varRef" || set.arr.type.kind !== "bytes")
267
+ return null;
268
+ }
269
+ else if (set.arr.kind !== "varRef" || set.arr.type.kind !== "array")
270
+ return null;
271
+ let value = set.value;
272
+ if (temp !== null) {
273
+ if (value.kind !== "varRef" || value.localId !== temp)
274
+ return null;
275
+ const decl = list[0];
276
+ if (decl.kind !== "varDecl" || decl.init === null)
277
+ return null;
278
+ value = decl.init;
279
+ }
280
+ return { receiver: set.arr.localId, value };
281
+ }
282
+ /** The lane form of a stored value, or null when the form needs work the
283
+ * lane body does not do. The forms are a leaf (an invariant, the induction,
284
+ * or an element read at the induction) and a sum, difference or product of
285
+ * two of them with at least one invariant operand. Anything else — a call,
286
+ * a bitwise operator, `Math.sqrt`, a second store — keeps the loop scalar. */
287
+ function storeValueNode(e, receiver, induction, container) {
288
+ const leaf = (role, expr, lhs = null, rhs = null, op = null) => ({ role, expr, op, left: lhs, right: rhs });
289
+ if (e.kind === "numLit")
290
+ return leaf("invariant", e);
291
+ if (e.kind === "varRef")
292
+ return e.localId === induction && e.type.kind === "f64"
293
+ ? leaf("induction", null)
294
+ : e.type.kind === "f64"
295
+ ? leaf("invariant", e)
296
+ : null;
297
+ if (elementRead(e, receiver, induction, container))
298
+ return leaf("element", e);
299
+ if (e.kind !== "bin" || (e.op !== "+" && e.op !== "-" && e.op !== "*"))
300
+ return null;
301
+ const left = storeValueNode(e.left, receiver, induction, container);
302
+ const right = left === null ? null : storeValueNode(e.right, receiver, induction, container);
303
+ if (left === null || right === null)
304
+ return null;
305
+ // One operand must be loop-invariant: an element read or the induction
306
+ // cannot stand alone beside another element-dependent node here, because
307
+ // the lane body evaluates the tree once per vector, not per element.
308
+ const isInvariant = (n) => n.role === "invariant" && n.op === null;
309
+ if (!isInvariant(left) && !isInvariant(right))
310
+ return null;
311
+ return leaf("invariant", null, left, right, e.op);
312
+ }
313
+ /** Every local a node's invariants name. */
314
+ function nodeInvariants(node, out) {
315
+ if (node.left !== null)
316
+ nodeInvariants(node.left, out);
317
+ if (node.right !== null)
318
+ nodeInvariants(node.right, out);
319
+ if (node.role === "invariant" && node.expr?.kind === "varRef")
320
+ out.add(node.expr.localId);
321
+ }
322
+ /** Whether the accumulator holds exactly +0 wherever this loop is entered.
323
+ *
324
+ * The value is +0 when the declaration runs before the loop on every way in:
325
+ * it must be declared as the literal 0, it must be declared inside the same
326
+ * loops as the loop (so no back edge swings past it between two entries of
327
+ * the loop), and it must be on the loop's path with nothing in front of it
328
+ * writing it, in the list that holds it or in a region that reaches the loop
329
+ * without being listed there. Loop versioning rewrites one source loop into
330
+ * several copies,
331
+ * each in its own branch, so the declaration usually belongs to an enclosing
332
+ * list rather than the loop's own. */
333
+ function entryIsZero(id, site, locals, facts) {
334
+ const local = locals.get(id);
335
+ if (local === undefined ||
336
+ local.type.kind !== "f64" ||
337
+ !local.mutable ||
338
+ local.boxed === true ||
339
+ local.tdz === true)
340
+ return false;
341
+ const decl = facts.decls.get(id);
342
+ if (decl === undefined)
343
+ return false;
344
+ const init = decl.stmt.init;
345
+ if (init === null || init.kind !== "numLit" || init.value !== 0 || Object.is(init.value, -0))
346
+ return false;
347
+ if (decl.loops.length !== site.loops.length)
348
+ return false;
349
+ for (let i = 0; i < site.loops.length; i++)
350
+ if (decl.loops[i] !== site.loops[i])
351
+ return false;
352
+ let declared = false;
353
+ for (const step of site.path) {
354
+ for (let i = 0; i < step.index; i++) {
355
+ const s = step.list[i];
356
+ if (s === decl.stmt)
357
+ declared = true;
358
+ else if (writesLocal(s, id))
359
+ return false;
360
+ }
361
+ if (step.cond !== null && exprWrites(step.cond, id))
362
+ return false;
363
+ }
364
+ return declared && !earlierRegionWrites(site, id);
365
+ }
366
+ /** Whether region code that runs before the loop, but that no path step
367
+ * lists, writes `id`. A switch case falls into the next one, so the cases
368
+ * ahead of the loop's own run before it; a catch body runs after the try
369
+ * body, and a finally body after both. Refusing the plan is always sound,
370
+ * so a case that ends in `break` counts like one that falls through. */
371
+ function earlierRegionWrites(site, id) {
372
+ for (let i = 0; i < site.path.length; i++) {
373
+ const step = site.path[i];
374
+ const holder = step.list[step.index];
375
+ const next = site.path[i + 1];
376
+ const inner = next === undefined ? site.stmt.body : next.list;
377
+ if (holder.kind === "switch") {
378
+ if (exprWrites(holder.disc, id))
379
+ return true;
380
+ for (const branch of holder.cases) {
381
+ if (branch.body === inner)
382
+ break;
383
+ if (branch.body.some((s) => writesLocal(s, id)))
384
+ return true;
385
+ }
386
+ }
387
+ else if (holder.kind === "tryCatch") {
388
+ if (holder.tryBody === inner)
389
+ continue;
390
+ if (holder.catchBody !== inner && holder.finallyBody !== inner)
391
+ continue;
392
+ if (holder.tryBody.some((s) => writesLocal(s, id)))
393
+ return true;
394
+ if (holder.finallyBody === inner &&
395
+ holder.catchBody !== null &&
396
+ holder.catchBody.some((s) => writesLocal(s, id)))
397
+ return true;
398
+ }
399
+ }
400
+ return false;
401
+ }
402
+ /** Whether an expression writes `id`. */
403
+ function exprWrites(e, id) {
404
+ return !everyExpr(e, {
405
+ expr: (node) => !((node.kind === "assignExpr" || node.kind === "incDec") && node.localId === id),
406
+ stmt: () => true,
407
+ });
408
+ }
409
+ /** The element kinds a lane store writes. A half float goes through a
410
+ * runtime call per element, which lanes cannot make. */
411
+ const STORE_ELEMS = new Set([
412
+ "u8",
413
+ "u8c",
414
+ "i8",
415
+ "u16",
416
+ "i16",
417
+ "u32",
418
+ "i32",
419
+ "f32",
420
+ "f64",
421
+ // A dense number array's double slots.
422
+ "f64slot",
423
+ ]);
424
+ /** The store plan for one loop, or null. The written array is the loop's
425
+ * limit receiver, so the counter's bound is the array's length and every
426
+ * lane's index is in range on every iteration of the lane loop. */
427
+ function storePlan(site, loop, limit, locals) {
428
+ if (!STORE_ELEMS.has(limit.elem))
429
+ return null;
430
+ const stmt = site.stmt;
431
+ const body = matchStoreBody(stmt.body, loop.localId);
432
+ if (body === null || body.receiver !== limit.receiver)
433
+ return null;
434
+ const view = locals.get(body.receiver);
435
+ if (view === undefined || view.boxed === true)
436
+ return null;
437
+ if (limit.container === "bytes") {
438
+ if (view.type.kind !== "bytes")
439
+ return null;
440
+ }
441
+ else if (view.type.kind !== "array" || view.type.elem.kind !== "f64")
442
+ return null;
443
+ const value = storeValueNode(body.value, body.receiver, loop.localId, limit.container);
444
+ if (value === null)
445
+ return null;
446
+ // The lane body evaluates each invariant once, before the loop, so the
447
+ // loop must leave it alone.
448
+ const invariants = new Set();
449
+ nodeInvariants(value, invariants);
450
+ for (const id of invariants)
451
+ if (writesLocal(stmt, id))
452
+ return null;
453
+ return {
454
+ shape: "store",
455
+ induction: loop.localId,
456
+ receiver: body.receiver,
457
+ container: limit.container,
458
+ elem: limit.elem,
459
+ value,
460
+ };
461
+ }
462
+ /** The container, element and receiver of a loop the integer loop matchers
463
+ * accept, or null. A dense array loop is recognized with no enclosing array
464
+ * binding, which is every loop that starts at zero; a loop that starts from
465
+ * an outer counter keeps its scalar form. */
466
+ function loopSource(stmt, locals) {
467
+ const bytes = matchIntegerBytesForLoop(stmt, locals);
468
+ const loop = bytes ?? matchIntegerArrayForLoop(stmt, locals, new Set());
469
+ if (loop === null || !loop.stableReceiver)
470
+ return null;
471
+ const receiver = loop.limitReceiver;
472
+ if (receiver.kind !== "varRef")
473
+ return null;
474
+ const view = locals.get(receiver.localId);
475
+ if (view === undefined || view.boxed === true)
476
+ return null;
477
+ if (bytes !== null) {
478
+ if (view.type.kind !== "bytes")
479
+ return null;
480
+ return {
481
+ induction: loop.localId,
482
+ container: "bytes",
483
+ receiver: receiver.localId,
484
+ elem: view.type.elem,
485
+ };
486
+ }
487
+ // A dense number array: its double storage takes elementwise stores, and
488
+ // int32 storage (exact int32 elements, never -0) takes sums and counts.
489
+ if (view.type.kind !== "array" || view.type.elem.kind !== "f64")
490
+ return null;
491
+ return {
492
+ induction: loop.localId,
493
+ container: "array",
494
+ receiver: receiver.localId,
495
+ elem: "i32slot",
496
+ };
497
+ }
498
+ /** The lane plan for one loop, or null when it has none. */
499
+ function planLoop(site, locals, facts, shapes) {
500
+ const stmt = site.stmt;
501
+ const source = loopSource(stmt, locals);
502
+ if (source === null)
503
+ return null;
504
+ const { induction, container, receiver, elem } = source;
505
+ const loop = { localId: induction };
506
+ if (shapes.has("store")) {
507
+ // A dense number array's stores are double-slot stores: a plan for the
508
+ // int32 storage a sum reads would need the element's own conversion.
509
+ const storeElem = container === "array" ? "f64slot" : elem;
510
+ const store = storePlan(site, loop, { receiver, container, elem: storeElem }, locals);
511
+ if (store !== null)
512
+ return store;
513
+ }
514
+ const lanes = laneElem(elem);
515
+ if (lanes === null)
516
+ return null;
517
+ if (stmt.body.length !== 1)
518
+ return null;
519
+ const only = stmt.body[0];
520
+ if (shapes.has("sum")) {
521
+ const accumulator = matchSumBody(only, receiver, loop.localId, container);
522
+ if (accumulator !== null && entryIsZero(accumulator, site, locals, facts))
523
+ return {
524
+ shape: "sum",
525
+ induction: loop.localId,
526
+ receiver,
527
+ container,
528
+ elem,
529
+ accumulator,
530
+ lengthBound: sumLengthBound(lanes),
531
+ };
532
+ }
533
+ if (shapes.has("count")) {
534
+ const matched = matchCountBody(only, receiver, loop.localId, container);
535
+ if (matched !== null &&
536
+ invariantLimit(matched.compare.limit, stmt, loop.localId) &&
537
+ entryIsZero(matched.accumulator, site, locals, facts))
538
+ return {
539
+ shape: "count",
540
+ induction: loop.localId,
541
+ receiver,
542
+ container,
543
+ elem,
544
+ accumulator: matched.accumulator,
545
+ compare: matched.compare,
546
+ };
547
+ }
548
+ return null;
549
+ }
550
+ /** The lane plans of one function, keyed by the loop statement. `locals` is
551
+ * the map the emitter matches loops with (initializer bindings included). */
552
+ export function planLaneLoops(fn, locals, shapes) {
553
+ const plans = new Map();
554
+ if (shapes.size === 0)
555
+ return plans;
556
+ const facts = functionFacts(fn);
557
+ for (const site of facts.loops) {
558
+ const plan = planLoop(site, locals, facts, shapes);
559
+ if (plan !== null)
560
+ plans.set(site.stmt, plan);
561
+ }
562
+ return plans;
563
+ }
564
+ /** The shapes `SCRIPTC_LANES_PLAN` names, or none. `all` names every shape. */
565
+ export function parseLaneShapes(text) {
566
+ const shapes = new Set();
567
+ if (text === undefined)
568
+ return shapes;
569
+ for (const name of text.split(",")) {
570
+ const trimmed = name.trim();
571
+ if (trimmed === "all")
572
+ return new Set(LANE_SHAPES);
573
+ if (LANE_SHAPES.includes(trimmed))
574
+ shapes.add(trimmed);
575
+ }
576
+ return shapes;
577
+ }
578
+ /** The lane plans this build emits: `SCRIPTC_LANES_PLAN=<kinds>`. */
579
+ export function laneShapesFromEnvironment() {
580
+ return parseLaneShapes(process.env["SCRIPTC_LANES_PLAN"]);
581
+ }
582
+ /** Cache-key parts for a build's lane plans; empty when none is enabled, so
583
+ * existing keys are unchanged. */
584
+ export function laneShapesKeyParts(shapes) {
585
+ if (shapes.size === 0)
586
+ return [];
587
+ return [`lane-plans-${LANE_SHAPES.filter((s) => shapes.has(s)).join("+")}`];
588
+ }
589
+ //# sourceMappingURL=lane-plans.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lane-plans.js","sourceRoot":"","sources":["../../src/ir/lane-plans.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};