@adobe/ecs 0.0.0-stage → 0.1.0

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 (2801) hide show
  1. package/LICENSE +21 -0
  2. package/dist/implementation/compiler/access.d.ts +6 -0
  3. package/dist/implementation/compiler/access.js +155 -0
  4. package/dist/implementation/compiler/access.js.map +1 -0
  5. package/dist/implementation/compiler/assign.d.ts +7 -0
  6. package/dist/implementation/compiler/assign.js +162 -0
  7. package/dist/implementation/compiler/assign.js.map +1 -0
  8. package/dist/implementation/compiler/bind.d.ts +9 -0
  9. package/dist/implementation/compiler/bind.js +82 -0
  10. package/dist/implementation/compiler/bind.js.map +1 -0
  11. package/dist/implementation/compiler/body-access.d.ts +15 -0
  12. package/dist/implementation/compiler/body-access.js +377 -0
  13. package/dist/implementation/compiler/body-access.js.map +1 -0
  14. package/dist/implementation/compiler/booleans.d.ts +8 -0
  15. package/dist/implementation/compiler/booleans.js +35 -0
  16. package/dist/implementation/compiler/booleans.js.map +1 -0
  17. package/dist/implementation/compiler/branches.d.ts +16 -0
  18. package/dist/implementation/compiler/branches.js +38 -0
  19. package/dist/implementation/compiler/branches.js.map +1 -0
  20. package/dist/implementation/compiler/calls.d.ts +6 -0
  21. package/dist/implementation/compiler/calls.js +390 -0
  22. package/dist/implementation/compiler/calls.js.map +1 -0
  23. package/dist/implementation/compiler/columns.d.ts +20 -0
  24. package/dist/implementation/compiler/columns.js +37 -0
  25. package/dist/implementation/compiler/columns.js.map +1 -0
  26. package/dist/implementation/compiler/compile-kernel.d.ts +14 -0
  27. package/dist/implementation/compiler/compile-kernel.js +139 -0
  28. package/dist/implementation/compiler/compile-kernel.js.map +1 -0
  29. package/dist/implementation/compiler/data.d.ts +30 -0
  30. package/dist/implementation/compiler/data.js +77 -0
  31. package/dist/implementation/compiler/data.js.map +1 -0
  32. package/dist/implementation/compiler/estree.d.ts +18 -0
  33. package/dist/implementation/compiler/estree.js +62 -0
  34. package/dist/implementation/compiler/estree.js.map +1 -0
  35. package/dist/implementation/compiler/exact.d.ts +24 -0
  36. package/dist/implementation/compiler/exact.js +64 -0
  37. package/dist/implementation/compiler/exact.js.map +1 -0
  38. package/dist/implementation/compiler/expression.d.ts +6 -0
  39. package/dist/implementation/compiler/expression.js +129 -0
  40. package/dist/implementation/compiler/expression.js.map +1 -0
  41. package/dist/implementation/compiler/failure.d.ts +27 -0
  42. package/dist/implementation/compiler/failure.js +24 -0
  43. package/dist/implementation/compiler/failure.js.map +1 -0
  44. package/dist/implementation/compiler/identify.d.ts +33 -0
  45. package/dist/implementation/compiler/identify.js +149 -0
  46. package/dist/implementation/compiler/identify.js.map +1 -0
  47. package/dist/implementation/compiler/index.d.ts +1 -0
  48. package/dist/implementation/compiler/index.js +2 -0
  49. package/dist/implementation/compiler/index.js.map +1 -0
  50. package/dist/implementation/compiler/ir.d.ts +214 -0
  51. package/dist/implementation/compiler/ir.js +28 -0
  52. package/dist/implementation/compiler/ir.js.map +1 -0
  53. package/dist/implementation/compiler/kernel-id.d.ts +17 -0
  54. package/dist/implementation/compiler/kernel-id.js +27 -0
  55. package/dist/implementation/compiler/kernel-id.js.map +1 -0
  56. package/dist/implementation/compiler/key.d.ts +21 -0
  57. package/dist/implementation/compiler/key.js +21 -0
  58. package/dist/implementation/compiler/key.js.map +1 -0
  59. package/dist/implementation/compiler/link.d.ts +70 -0
  60. package/dist/implementation/compiler/link.js +169 -0
  61. package/dist/implementation/compiler/link.js.map +1 -0
  62. package/dist/implementation/compiler/lists.d.ts +39 -0
  63. package/dist/implementation/compiler/lists.js +189 -0
  64. package/dist/implementation/compiler/lists.js.map +1 -0
  65. package/dist/implementation/compiler/lookups.d.ts +24 -0
  66. package/dist/implementation/compiler/lookups.js +118 -0
  67. package/dist/implementation/compiler/lookups.js.map +1 -0
  68. package/dist/implementation/compiler/math.d.ts +3 -0
  69. package/dist/implementation/compiler/math.js +9 -0
  70. package/dist/implementation/compiler/math.js.map +1 -0
  71. package/dist/implementation/compiler/module-scope.d.ts +53 -0
  72. package/dist/implementation/compiler/module-scope.js +121 -0
  73. package/dist/implementation/compiler/module-scope.js.map +1 -0
  74. package/dist/implementation/compiler/module-value.d.ts +15 -0
  75. package/dist/implementation/compiler/module-value.js +124 -0
  76. package/dist/implementation/compiler/module-value.js.map +1 -0
  77. package/dist/implementation/compiler/out.d.ts +4 -0
  78. package/dist/implementation/compiler/out.js +2 -0
  79. package/dist/implementation/compiler/out.js.map +1 -0
  80. package/dist/implementation/compiler/paths.d.ts +14 -0
  81. package/dist/implementation/compiler/paths.js +29 -0
  82. package/dist/implementation/compiler/paths.js.map +1 -0
  83. package/dist/implementation/compiler/plugin.d.ts +2 -0
  84. package/dist/implementation/compiler/plugin.js +225 -0
  85. package/dist/implementation/compiler/plugin.js.map +1 -0
  86. package/dist/implementation/compiler/print.d.ts +12 -0
  87. package/dist/implementation/compiler/print.js +96 -0
  88. package/dist/implementation/compiler/print.js.map +1 -0
  89. package/dist/implementation/compiler/program.d.ts +10 -0
  90. package/dist/implementation/compiler/program.js +255 -0
  91. package/dist/implementation/compiler/program.js.map +1 -0
  92. package/dist/implementation/compiler/scalar.d.ts +8 -0
  93. package/dist/implementation/compiler/scalar.js +47 -0
  94. package/dist/implementation/compiler/scalar.js.map +1 -0
  95. package/dist/implementation/compiler/scope.d.ts +24 -0
  96. package/dist/implementation/compiler/scope.js +4 -0
  97. package/dist/implementation/compiler/scope.js.map +1 -0
  98. package/dist/implementation/compiler/serialize.d.ts +2 -0
  99. package/dist/implementation/compiler/serialize.js +14 -0
  100. package/dist/implementation/compiler/serialize.js.map +1 -0
  101. package/dist/implementation/compiler/signature.d.ts +45 -0
  102. package/dist/implementation/compiler/signature.js +150 -0
  103. package/dist/implementation/compiler/signature.js.map +1 -0
  104. package/dist/implementation/compiler/snapshot.d.ts +21 -0
  105. package/dist/implementation/compiler/snapshot.js +18 -0
  106. package/dist/implementation/compiler/snapshot.js.map +1 -0
  107. package/dist/implementation/compiler/source-map.d.ts +34 -0
  108. package/dist/implementation/compiler/source-map.js +130 -0
  109. package/dist/implementation/compiler/source-map.js.map +1 -0
  110. package/dist/implementation/compiler/spawns.d.ts +29 -0
  111. package/dist/implementation/compiler/spawns.js +102 -0
  112. package/dist/implementation/compiler/spawns.js.map +1 -0
  113. package/dist/implementation/compiler/stamps.d.ts +6 -0
  114. package/dist/implementation/compiler/stamps.js +25 -0
  115. package/dist/implementation/compiler/stamps.js.map +1 -0
  116. package/dist/implementation/compiler/statement.d.ts +7 -0
  117. package/dist/implementation/compiler/statement.js +112 -0
  118. package/dist/implementation/compiler/statement.js.map +1 -0
  119. package/dist/implementation/compiler/terminal.d.ts +8 -0
  120. package/dist/implementation/compiler/terminal.js +51 -0
  121. package/dist/implementation/compiler/terminal.js.map +1 -0
  122. package/dist/implementation/compiler/transform.d.ts +31 -0
  123. package/dist/implementation/compiler/transform.js +227 -0
  124. package/dist/implementation/compiler/transform.js.map +1 -0
  125. package/dist/implementation/compiler/unit.d.ts +91 -0
  126. package/dist/implementation/compiler/unit.js +39 -0
  127. package/dist/implementation/compiler/unit.js.map +1 -0
  128. package/dist/implementation/compiler/value.d.ts +115 -0
  129. package/dist/implementation/compiler/value.js +9 -0
  130. package/dist/implementation/compiler/value.js.map +1 -0
  131. package/dist/implementation/index.d.ts +2 -0
  132. package/dist/implementation/index.js +3 -0
  133. package/dist/implementation/index.js.map +1 -0
  134. package/dist/implementation/world/activate.d.ts +21 -0
  135. package/dist/implementation/world/activate.js +132 -0
  136. package/dist/implementation/world/activate.js.map +1 -0
  137. package/dist/implementation/world/archetype.d.ts +136 -0
  138. package/dist/implementation/world/archetype.js +313 -0
  139. package/dist/implementation/world/archetype.js.map +1 -0
  140. package/dist/implementation/world/arrays.d.ts +24 -0
  141. package/dist/implementation/world/arrays.js +31 -0
  142. package/dist/implementation/world/arrays.js.map +1 -0
  143. package/dist/implementation/world/attach-kernel.d.ts +9 -0
  144. package/dist/implementation/world/attach-kernel.js +22 -0
  145. package/dist/implementation/world/attach-kernel.js.map +1 -0
  146. package/dist/implementation/world/batches.d.ts +15 -0
  147. package/dist/implementation/world/batches.js +144 -0
  148. package/dist/implementation/world/batches.js.map +1 -0
  149. package/dist/implementation/world/buffer.d.ts +60 -0
  150. package/dist/implementation/world/buffer.js +105 -0
  151. package/dist/implementation/world/buffer.js.map +1 -0
  152. package/dist/implementation/world/cascade.d.ts +28 -0
  153. package/dist/implementation/world/cascade.js +139 -0
  154. package/dist/implementation/world/cascade.js.map +1 -0
  155. package/dist/implementation/world/cells.d.ts +7 -0
  156. package/dist/implementation/world/cells.js +22 -0
  157. package/dist/implementation/world/cells.js.map +1 -0
  158. package/dist/implementation/world/check-kernel.d.ts +10 -0
  159. package/dist/implementation/world/check-kernel.js +102 -0
  160. package/dist/implementation/world/check-kernel.js.map +1 -0
  161. package/dist/implementation/world/claims.d.ts +13 -0
  162. package/dist/implementation/world/claims.js +50 -0
  163. package/dist/implementation/world/claims.js.map +1 -0
  164. package/dist/implementation/world/closure.d.ts +12 -0
  165. package/dist/implementation/world/closure.js +43 -0
  166. package/dist/implementation/world/closure.js.map +1 -0
  167. package/dist/implementation/world/command-ring.d.ts +97 -0
  168. package/dist/implementation/world/command-ring.js +438 -0
  169. package/dist/implementation/world/command-ring.js.map +1 -0
  170. package/dist/implementation/world/commands.d.ts +25 -0
  171. package/dist/implementation/world/commands.js +74 -0
  172. package/dist/implementation/world/commands.js.map +1 -0
  173. package/dist/implementation/world/create.d.ts +61 -0
  174. package/dist/implementation/world/create.js +787 -0
  175. package/dist/implementation/world/create.js.map +1 -0
  176. package/dist/implementation/world/directories.d.ts +28 -0
  177. package/dist/implementation/world/directories.js +67 -0
  178. package/dist/implementation/world/directories.js.map +1 -0
  179. package/dist/implementation/world/entities.d.ts +77 -0
  180. package/dist/implementation/world/entities.js +137 -0
  181. package/dist/implementation/world/entities.js.map +1 -0
  182. package/dist/implementation/world/execute.d.ts +36 -0
  183. package/dist/implementation/world/execute.js +616 -0
  184. package/dist/implementation/world/execute.js.map +1 -0
  185. package/dist/implementation/world/failures.d.ts +10 -0
  186. package/dist/implementation/world/failures.js +5 -0
  187. package/dist/implementation/world/failures.js.map +1 -0
  188. package/dist/implementation/world/finalizers.d.ts +63 -0
  189. package/dist/implementation/world/finalizers.js +408 -0
  190. package/dist/implementation/world/finalizers.js.map +1 -0
  191. package/dist/implementation/world/gpu.d.ts +64 -0
  192. package/dist/implementation/world/gpu.js +317 -0
  193. package/dist/implementation/world/gpu.js.map +1 -0
  194. package/dist/implementation/world/holders.d.ts +21 -0
  195. package/dist/implementation/world/holders.js +65 -0
  196. package/dist/implementation/world/holders.js.map +1 -0
  197. package/dist/implementation/world/index-build.d.ts +88 -0
  198. package/dist/implementation/world/index-build.js +404 -0
  199. package/dist/implementation/world/index-build.js.map +1 -0
  200. package/dist/implementation/world/index-hash.d.ts +99 -0
  201. package/dist/implementation/world/index-hash.js +440 -0
  202. package/dist/implementation/world/index-hash.js.map +1 -0
  203. package/dist/implementation/world/index-keys.d.ts +75 -0
  204. package/dist/implementation/world/index-keys.js +251 -0
  205. package/dist/implementation/world/index-keys.js.map +1 -0
  206. package/dist/implementation/world/index-lookups.d.ts +76 -0
  207. package/dist/implementation/world/index-lookups.js +567 -0
  208. package/dist/implementation/world/index-lookups.js.map +1 -0
  209. package/dist/implementation/world/index-order.d.ts +21 -0
  210. package/dist/implementation/world/index-order.js +174 -0
  211. package/dist/implementation/world/index-order.js.map +1 -0
  212. package/dist/implementation/world/index-readers.d.ts +101 -0
  213. package/dist/implementation/world/index-readers.js +341 -0
  214. package/dist/implementation/world/index-readers.js.map +1 -0
  215. package/dist/implementation/world/index-sorted.d.ts +120 -0
  216. package/dist/implementation/world/index-sorted.js +631 -0
  217. package/dist/implementation/world/index-sorted.js.map +1 -0
  218. package/dist/implementation/world/indexes.d.ts +139 -0
  219. package/dist/implementation/world/indexes.js +1174 -0
  220. package/dist/implementation/world/indexes.js.map +1 -0
  221. package/dist/implementation/world/input.d.ts +3 -0
  222. package/dist/implementation/world/input.js +17 -0
  223. package/dist/implementation/world/input.js.map +1 -0
  224. package/dist/implementation/world/intrinsics.d.ts +5 -0
  225. package/dist/implementation/world/intrinsics.js +33 -0
  226. package/dist/implementation/world/intrinsics.js.map +1 -0
  227. package/dist/implementation/world/join.d.ts +23 -0
  228. package/dist/implementation/world/join.js +709 -0
  229. package/dist/implementation/world/join.js.map +1 -0
  230. package/dist/implementation/world/joined-observer.d.ts +179 -0
  231. package/dist/implementation/world/joined-observer.js +758 -0
  232. package/dist/implementation/world/joined-observer.js.map +1 -0
  233. package/dist/implementation/world/joining.d.ts +338 -0
  234. package/dist/implementation/world/joining.js +143 -0
  235. package/dist/implementation/world/joining.js.map +1 -0
  236. package/dist/implementation/world/journal.d.ts +21 -0
  237. package/dist/implementation/world/journal.js +22 -0
  238. package/dist/implementation/world/journal.js.map +1 -0
  239. package/dist/implementation/world/kernel-indexes.d.ts +30 -0
  240. package/dist/implementation/world/kernel-indexes.js +172 -0
  241. package/dist/implementation/world/kernel-indexes.js.map +1 -0
  242. package/dist/implementation/world/kernel.d.ts +358 -0
  243. package/dist/implementation/world/kernel.js +3 -0
  244. package/dist/implementation/world/kernel.js.map +1 -0
  245. package/dist/implementation/world/kernels.d.ts +80 -0
  246. package/dist/implementation/world/kernels.js +284 -0
  247. package/dist/implementation/world/kernels.js.map +1 -0
  248. package/dist/implementation/world/layout-directory.d.ts +107 -0
  249. package/dist/implementation/world/layout-directory.js +218 -0
  250. package/dist/implementation/world/layout-directory.js.map +1 -0
  251. package/dist/implementation/world/lists.d.ts +56 -0
  252. package/dist/implementation/world/lists.js +118 -0
  253. package/dist/implementation/world/lists.js.map +1 -0
  254. package/dist/implementation/world/lookup-keys.d.ts +19 -0
  255. package/dist/implementation/world/lookup-keys.js +48 -0
  256. package/dist/implementation/world/lookup-keys.js.map +1 -0
  257. package/dist/implementation/world/loop.d.ts +73 -0
  258. package/dist/implementation/world/loop.js +253 -0
  259. package/dist/implementation/world/loop.js.map +1 -0
  260. package/dist/implementation/world/memory.d.ts +40 -0
  261. package/dist/implementation/world/memory.js +64 -0
  262. package/dist/implementation/world/memory.js.map +1 -0
  263. package/dist/implementation/world/mirror.d.ts +112 -0
  264. package/dist/implementation/world/mirror.js +542 -0
  265. package/dist/implementation/world/mirror.js.map +1 -0
  266. package/dist/implementation/world/move-log.d.ts +107 -0
  267. package/dist/implementation/world/move-log.js +165 -0
  268. package/dist/implementation/world/move-log.js.map +1 -0
  269. package/dist/implementation/world/observer.d.ts +16 -0
  270. package/dist/implementation/world/observer.js +131 -0
  271. package/dist/implementation/world/observer.js.map +1 -0
  272. package/dist/implementation/world/order.d.ts +38 -0
  273. package/dist/implementation/world/order.js +323 -0
  274. package/dist/implementation/world/order.js.map +1 -0
  275. package/dist/implementation/world/plan.d.ts +50 -0
  276. package/dist/implementation/world/plan.js +20 -0
  277. package/dist/implementation/world/plan.js.map +1 -0
  278. package/dist/implementation/world/pool.d.ts +70 -0
  279. package/dist/implementation/world/pool.js +263 -0
  280. package/dist/implementation/world/pool.js.map +1 -0
  281. package/dist/implementation/world/port.d.ts +61 -0
  282. package/dist/implementation/world/port.js +104 -0
  283. package/dist/implementation/world/port.js.map +1 -0
  284. package/dist/implementation/world/prepared-lookup.d.ts +11 -0
  285. package/dist/implementation/world/prepared-lookup.js +98 -0
  286. package/dist/implementation/world/prepared-lookup.js.map +1 -0
  287. package/dist/implementation/world/prepared-spawn.d.ts +39 -0
  288. package/dist/implementation/world/prepared-spawn.js +115 -0
  289. package/dist/implementation/world/prepared-spawn.js.map +1 -0
  290. package/dist/implementation/world/program.d.ts +11 -0
  291. package/dist/implementation/world/program.js +12 -0
  292. package/dist/implementation/world/program.js.map +1 -0
  293. package/dist/implementation/world/protocol.d.ts +185 -0
  294. package/dist/implementation/world/protocol.js +41 -0
  295. package/dist/implementation/world/protocol.js.map +1 -0
  296. package/dist/implementation/world/publish.d.ts +9 -0
  297. package/dist/implementation/world/publish.js +28 -0
  298. package/dist/implementation/world/publish.js.map +1 -0
  299. package/dist/implementation/world/ranges.d.ts +11 -0
  300. package/dist/implementation/world/ranges.js +47 -0
  301. package/dist/implementation/world/ranges.js.map +1 -0
  302. package/dist/implementation/world/reductions.d.ts +32 -0
  303. package/dist/implementation/world/reductions.js +92 -0
  304. package/dist/implementation/world/reductions.js.map +1 -0
  305. package/dist/implementation/world/register.d.ts +64 -0
  306. package/dist/implementation/world/register.js +368 -0
  307. package/dist/implementation/world/register.js.map +1 -0
  308. package/dist/implementation/world/remote-systems.d.ts +139 -0
  309. package/dist/implementation/world/remote-systems.js +551 -0
  310. package/dist/implementation/world/remote-systems.js.map +1 -0
  311. package/dist/implementation/world/remote.d.ts +25 -0
  312. package/dist/implementation/world/remote.js +137 -0
  313. package/dist/implementation/world/remote.js.map +1 -0
  314. package/dist/implementation/world/reports.d.ts +63 -0
  315. package/dist/implementation/world/reports.js +180 -0
  316. package/dist/implementation/world/reports.js.map +1 -0
  317. package/dist/implementation/world/resources.d.ts +20 -0
  318. package/dist/implementation/world/resources.js +63 -0
  319. package/dist/implementation/world/resources.js.map +1 -0
  320. package/dist/implementation/world/rows.d.ts +108 -0
  321. package/dist/implementation/world/rows.js +479 -0
  322. package/dist/implementation/world/rows.js.map +1 -0
  323. package/dist/implementation/world/runner.d.ts +123 -0
  324. package/dist/implementation/world/runner.js +1014 -0
  325. package/dist/implementation/world/runner.js.map +1 -0
  326. package/dist/implementation/world/sharing.d.ts +47 -0
  327. package/dist/implementation/world/sharing.js +548 -0
  328. package/dist/implementation/world/sharing.js.map +1 -0
  329. package/dist/implementation/world/staging.d.ts +60 -0
  330. package/dist/implementation/world/staging.js +169 -0
  331. package/dist/implementation/world/staging.js.map +1 -0
  332. package/dist/implementation/world/state.d.ts +261 -0
  333. package/dist/implementation/world/state.js +335 -0
  334. package/dist/implementation/world/state.js.map +1 -0
  335. package/dist/implementation/world/stop-lists.d.ts +114 -0
  336. package/dist/implementation/world/stop-lists.js +250 -0
  337. package/dist/implementation/world/stop-lists.js.map +1 -0
  338. package/dist/implementation/world/strings.d.ts +48 -0
  339. package/dist/implementation/world/strings.js +213 -0
  340. package/dist/implementation/world/strings.js.map +1 -0
  341. package/dist/implementation/world/structure.d.ts +39 -0
  342. package/dist/implementation/world/structure.js +39 -0
  343. package/dist/implementation/world/structure.js.map +1 -0
  344. package/dist/implementation/world/synchronize.d.ts +32 -0
  345. package/dist/implementation/world/synchronize.js +868 -0
  346. package/dist/implementation/world/synchronize.js.map +1 -0
  347. package/dist/implementation/world/tail-blocks.d.ts +40 -0
  348. package/dist/implementation/world/tail-blocks.js +54 -0
  349. package/dist/implementation/world/tail-blocks.js.map +1 -0
  350. package/dist/implementation/world/tails.d.ts +114 -0
  351. package/dist/implementation/world/tails.js +441 -0
  352. package/dist/implementation/world/tails.js.map +1 -0
  353. package/dist/implementation/world/terminal.d.ts +7 -0
  354. package/dist/implementation/world/terminal.js +12 -0
  355. package/dist/implementation/world/terminal.js.map +1 -0
  356. package/dist/implementation/world/thread-directory.d.ts +66 -0
  357. package/dist/implementation/world/thread-directory.js +173 -0
  358. package/dist/implementation/world/thread-directory.js.map +1 -0
  359. package/dist/implementation/world/thread-finalizers.d.ts +52 -0
  360. package/dist/implementation/world/thread-finalizers.js +266 -0
  361. package/dist/implementation/world/thread-finalizers.js.map +1 -0
  362. package/dist/implementation/world/thread-indexes.d.ts +26 -0
  363. package/dist/implementation/world/thread-indexes.js +71 -0
  364. package/dist/implementation/world/thread-indexes.js.map +1 -0
  365. package/dist/implementation/world/thread-observer.d.ts +41 -0
  366. package/dist/implementation/world/thread-observer.js +181 -0
  367. package/dist/implementation/world/thread-observer.js.map +1 -0
  368. package/dist/implementation/world/thread-systems.d.ts +113 -0
  369. package/dist/implementation/world/thread-systems.js +1169 -0
  370. package/dist/implementation/world/thread-systems.js.map +1 -0
  371. package/dist/implementation/world/thread-tasks.d.ts +61 -0
  372. package/dist/implementation/world/thread-tasks.js +69 -0
  373. package/dist/implementation/world/thread-tasks.js.map +1 -0
  374. package/dist/implementation/world/transfers.d.ts +30 -0
  375. package/dist/implementation/world/transfers.js +101 -0
  376. package/dist/implementation/world/transfers.js.map +1 -0
  377. package/dist/implementation/world/up.d.ts +32 -0
  378. package/dist/implementation/world/up.js +723 -0
  379. package/dist/implementation/world/up.js.map +1 -0
  380. package/dist/implementation/world/wasm.d.ts +112 -0
  381. package/dist/implementation/world/wasm.js +2159 -0
  382. package/dist/implementation/world/wasm.js.map +1 -0
  383. package/dist/implementation/world/wgsl.d.ts +20 -0
  384. package/dist/implementation/world/wgsl.js +485 -0
  385. package/dist/implementation/world/wgsl.js.map +1 -0
  386. package/dist/implementation/world/worker-platform.d.ts +37 -0
  387. package/dist/implementation/world/worker-platform.js +80 -0
  388. package/dist/implementation/world/worker-platform.js.map +1 -0
  389. package/dist/implementation/world/worker.d.ts +1 -0
  390. package/dist/implementation/world/worker.js +510 -0
  391. package/dist/implementation/world/worker.js.map +1 -0
  392. package/dist/index.d.ts +15 -0
  393. package/dist/index.js +9 -0
  394. package/dist/index.js.map +1 -0
  395. package/dist/interface/archetype/archetype.d.ts +2 -0
  396. package/dist/interface/archetype/archetype.js +2 -0
  397. package/dist/interface/archetype/archetype.js.map +1 -0
  398. package/dist/interface/archetype/create.d.ts +7 -0
  399. package/dist/interface/archetype/create.js +11 -0
  400. package/dist/interface/archetype/create.js.map +1 -0
  401. package/dist/interface/archetype/index.d.ts +1 -0
  402. package/dist/interface/archetype/index.js +2 -0
  403. package/dist/interface/archetype/index.js.map +1 -0
  404. package/dist/interface/archetype/values-of.d.ts +17 -0
  405. package/dist/interface/archetype/values-of.js +2 -0
  406. package/dist/interface/archetype/values-of.js.map +1 -0
  407. package/dist/interface/component/component.d.ts +2 -0
  408. package/dist/interface/component/component.js +2 -0
  409. package/dist/interface/component/component.js.map +1 -0
  410. package/dist/interface/component/declaration.d.ts +74 -0
  411. package/dist/interface/component/declaration.js +2 -0
  412. package/dist/interface/component/declaration.js.map +1 -0
  413. package/dist/interface/component/index.d.ts +3 -0
  414. package/dist/interface/component/index.js +2 -0
  415. package/dist/interface/component/index.js.map +1 -0
  416. package/dist/interface/component/key.d.ts +2 -0
  417. package/dist/interface/component/key.js +2 -0
  418. package/dist/interface/component/key.js.map +1 -0
  419. package/dist/interface/component/register.d.ts +23 -0
  420. package/dist/interface/component/register.js +6 -0
  421. package/dist/interface/component/register.js.map +1 -0
  422. package/dist/interface/component/types.d.ts +6 -0
  423. package/dist/interface/component/types.js +2 -0
  424. package/dist/interface/component/types.js.map +1 -0
  425. package/dist/interface/component/value.d.ts +34 -0
  426. package/dist/interface/component/value.js +2 -0
  427. package/dist/interface/component/value.js.map +1 -0
  428. package/dist/interface/component/values.d.ts +6 -0
  429. package/dist/interface/component/values.js +2 -0
  430. package/dist/interface/component/values.js.map +1 -0
  431. package/dist/interface/entity/entity.d.ts +9 -0
  432. package/dist/interface/entity/entity.js +2 -0
  433. package/dist/interface/entity/entity.js.map +1 -0
  434. package/dist/interface/entity/index.d.ts +8 -0
  435. package/dist/interface/entity/index.js +5 -0
  436. package/dist/interface/entity/index.js.map +1 -0
  437. package/dist/interface/finalizer/body.d.ts +50 -0
  438. package/dist/interface/finalizer/body.js +2 -0
  439. package/dist/interface/finalizer/body.js.map +1 -0
  440. package/dist/interface/finalizer/create.d.ts +43 -0
  441. package/dist/interface/finalizer/create.js +97 -0
  442. package/dist/interface/finalizer/create.js.map +1 -0
  443. package/dist/interface/finalizer/created.d.ts +16 -0
  444. package/dist/interface/finalizer/created.js +2 -0
  445. package/dist/interface/finalizer/created.js.map +1 -0
  446. package/dist/interface/finalizer/declaration.d.ts +38 -0
  447. package/dist/interface/finalizer/declaration.js +2 -0
  448. package/dist/interface/finalizer/declaration.js.map +1 -0
  449. package/dist/interface/finalizer/finalizer.d.ts +8 -0
  450. package/dist/interface/finalizer/finalizer.js +2 -0
  451. package/dist/interface/finalizer/finalizer.js.map +1 -0
  452. package/dist/interface/finalizer/index.d.ts +1 -0
  453. package/dist/interface/finalizer/index.js +2 -0
  454. package/dist/interface/finalizer/index.js.map +1 -0
  455. package/dist/interface/finalizer/name.d.ts +6 -0
  456. package/dist/interface/finalizer/name.js +2 -0
  457. package/dist/interface/finalizer/name.js.map +1 -0
  458. package/dist/interface/gpu/accessors.d.ts +14 -0
  459. package/dist/interface/gpu/accessors.js +70 -0
  460. package/dist/interface/gpu/accessors.js.map +1 -0
  461. package/dist/interface/gpu/gpu.d.ts +3 -0
  462. package/dist/interface/gpu/gpu.js +2 -0
  463. package/dist/interface/gpu/gpu.js.map +1 -0
  464. package/dist/interface/gpu/index.d.ts +2 -0
  465. package/dist/interface/gpu/index.js +3 -0
  466. package/dist/interface/gpu/index.js.map +1 -0
  467. package/dist/interface/gpu/layout.d.ts +5 -0
  468. package/dist/interface/gpu/layout.js +21 -0
  469. package/dist/interface/gpu/layout.js.map +1 -0
  470. package/dist/interface/gpu/record.d.ts +5 -0
  471. package/dist/interface/gpu/record.js +6 -0
  472. package/dist/interface/gpu/record.js.map +1 -0
  473. package/dist/interface/gpu/wgsl.d.ts +8 -0
  474. package/dist/interface/gpu/wgsl.js +20 -0
  475. package/dist/interface/gpu/wgsl.js.map +1 -0
  476. package/dist/interface/index.d.ts +19 -0
  477. package/dist/interface/index.js +14 -0
  478. package/dist/interface/index.js.map +1 -0
  479. package/dist/interface/indexes/create.d.ts +30 -0
  480. package/dist/interface/indexes/create.js +79 -0
  481. package/dist/interface/indexes/create.js.map +1 -0
  482. package/dist/interface/indexes/created.d.ts +7 -0
  483. package/dist/interface/indexes/created.js +2 -0
  484. package/dist/interface/indexes/created.js.map +1 -0
  485. package/dist/interface/indexes/declaration.d.ts +13 -0
  486. package/dist/interface/indexes/declaration.js +2 -0
  487. package/dist/interface/indexes/declaration.js.map +1 -0
  488. package/dist/interface/indexes/index-type.d.ts +12 -0
  489. package/dist/interface/indexes/index-type.js +2 -0
  490. package/dist/interface/indexes/index-type.js.map +1 -0
  491. package/dist/interface/indexes/index.d.ts +1 -0
  492. package/dist/interface/indexes/index.js +2 -0
  493. package/dist/interface/indexes/index.js.map +1 -0
  494. package/dist/interface/indexes/name.d.ts +5 -0
  495. package/dist/interface/indexes/name.js +2 -0
  496. package/dist/interface/indexes/name.js.map +1 -0
  497. package/dist/interface/math/f32/index.d.ts +2 -0
  498. package/dist/interface/math/f32/index.js +2 -0
  499. package/dist/interface/math/f32/index.js.map +1 -0
  500. package/dist/interface/math/f32/public.d.ts +1 -0
  501. package/dist/interface/math/f32/public.js +2 -0
  502. package/dist/interface/math/f32/public.js.map +1 -0
  503. package/dist/interface/math/f32/round-half-even.d.ts +2 -0
  504. package/dist/interface/math/f32/round-half-even.js +6 -0
  505. package/dist/interface/math/f32/round-half-even.js.map +1 -0
  506. package/dist/interface/math/f32/schema.d.ts +4 -0
  507. package/dist/interface/math/f32/schema.js +2 -0
  508. package/dist/interface/math/f32/schema.js.map +1 -0
  509. package/dist/interface/math/i32/index.d.ts +3 -0
  510. package/dist/interface/math/i32/index.js +2 -0
  511. package/dist/interface/math/i32/index.js.map +1 -0
  512. package/dist/interface/math/i32/public.d.ts +2 -0
  513. package/dist/interface/math/i32/public.js +3 -0
  514. package/dist/interface/math/i32/public.js.map +1 -0
  515. package/dist/interface/math/i32/schema.d.ts +5 -0
  516. package/dist/interface/math/i32/schema.js +2 -0
  517. package/dist/interface/math/i32/schema.js.map +1 -0
  518. package/dist/interface/math/i32/shift-right.d.ts +2 -0
  519. package/dist/interface/math/i32/shift-right.js +2 -0
  520. package/dist/interface/math/i32/shift-right.js.map +1 -0
  521. package/dist/interface/math/index.d.ts +8 -0
  522. package/dist/interface/math/index.js +9 -0
  523. package/dist/interface/math/index.js.map +1 -0
  524. package/dist/interface/math/intrinsic.d.ts +13 -0
  525. package/dist/interface/math/intrinsic.js +10 -0
  526. package/dist/interface/math/intrinsic.js.map +1 -0
  527. package/dist/interface/math/mat4x4/add.d.ts +2 -0
  528. package/dist/interface/math/mat4x4/add.js +8 -0
  529. package/dist/interface/math/mat4x4/add.js.map +1 -0
  530. package/dist/interface/math/mat4x4/determinant.d.ts +2 -0
  531. package/dist/interface/math/mat4x4/determinant.js +18 -0
  532. package/dist/interface/math/mat4x4/determinant.js.map +1 -0
  533. package/dist/interface/math/mat4x4/identity.d.ts +2 -0
  534. package/dist/interface/math/mat4x4/identity.js +7 -0
  535. package/dist/interface/math/mat4x4/identity.js.map +1 -0
  536. package/dist/interface/math/mat4x4/index.d.ts +24 -0
  537. package/dist/interface/math/mat4x4/index.js +24 -0
  538. package/dist/interface/math/mat4x4/index.js.map +1 -0
  539. package/dist/interface/math/mat4x4/inverse.d.ts +2 -0
  540. package/dist/interface/math/mat4x4/inverse.js +40 -0
  541. package/dist/interface/math/mat4x4/inverse.js.map +1 -0
  542. package/dist/interface/math/mat4x4/look-at.d.ts +3 -0
  543. package/dist/interface/math/mat4x4/look-at.js +22 -0
  544. package/dist/interface/math/mat4x4/look-at.js.map +1 -0
  545. package/dist/interface/math/mat4x4/multiply-vec3.d.ts +3 -0
  546. package/dist/interface/math/mat4x4/multiply-vec3.js +6 -0
  547. package/dist/interface/math/mat4x4/multiply-vec3.js.map +1 -0
  548. package/dist/interface/math/mat4x4/multiply-vec4.d.ts +3 -0
  549. package/dist/interface/math/mat4x4/multiply-vec4.js +8 -0
  550. package/dist/interface/math/mat4x4/multiply-vec4.js.map +1 -0
  551. package/dist/interface/math/mat4x4/multiply.d.ts +3 -0
  552. package/dist/interface/math/mat4x4/multiply.js +21 -0
  553. package/dist/interface/math/mat4x4/multiply.js.map +1 -0
  554. package/dist/interface/math/mat4x4/orthographic.d.ts +2 -0
  555. package/dist/interface/math/mat4x4/orthographic.js +12 -0
  556. package/dist/interface/math/mat4x4/orthographic.js.map +1 -0
  557. package/dist/interface/math/mat4x4/perspective.d.ts +2 -0
  558. package/dist/interface/math/mat4x4/perspective.js +22 -0
  559. package/dist/interface/math/mat4x4/perspective.js.map +1 -0
  560. package/dist/interface/math/mat4x4/public.d.ts +20 -0
  561. package/dist/interface/math/mat4x4/public.js +21 -0
  562. package/dist/interface/math/mat4x4/public.js.map +1 -0
  563. package/dist/interface/math/mat4x4/rotation-x.d.ts +2 -0
  564. package/dist/interface/math/mat4x4/rotation-x.js +11 -0
  565. package/dist/interface/math/mat4x4/rotation-x.js.map +1 -0
  566. package/dist/interface/math/mat4x4/rotation-y.d.ts +2 -0
  567. package/dist/interface/math/mat4x4/rotation-y.js +11 -0
  568. package/dist/interface/math/mat4x4/rotation-y.js.map +1 -0
  569. package/dist/interface/math/mat4x4/rotation-z.d.ts +2 -0
  570. package/dist/interface/math/mat4x4/rotation-z.js +11 -0
  571. package/dist/interface/math/mat4x4/rotation-z.js.map +1 -0
  572. package/dist/interface/math/mat4x4/scale.d.ts +2 -0
  573. package/dist/interface/math/mat4x4/scale.js +8 -0
  574. package/dist/interface/math/mat4x4/scale.js.map +1 -0
  575. package/dist/interface/math/mat4x4/scaling.d.ts +2 -0
  576. package/dist/interface/math/mat4x4/scaling.js +7 -0
  577. package/dist/interface/math/mat4x4/scaling.js.map +1 -0
  578. package/dist/interface/math/mat4x4/schema.d.ts +9 -0
  579. package/dist/interface/math/mat4x4/schema.js +3 -0
  580. package/dist/interface/math/mat4x4/schema.js.map +1 -0
  581. package/dist/interface/math/mat4x4/subtract.d.ts +2 -0
  582. package/dist/interface/math/mat4x4/subtract.js +8 -0
  583. package/dist/interface/math/mat4x4/subtract.js.map +1 -0
  584. package/dist/interface/math/mat4x4/translation.d.ts +2 -0
  585. package/dist/interface/math/mat4x4/translation.js +7 -0
  586. package/dist/interface/math/mat4x4/translation.js.map +1 -0
  587. package/dist/interface/math/mat4x4/transpose.d.ts +2 -0
  588. package/dist/interface/math/mat4x4/transpose.js +8 -0
  589. package/dist/interface/math/mat4x4/transpose.js.map +1 -0
  590. package/dist/interface/math/mat4x4/zero.d.ts +2 -0
  591. package/dist/interface/math/mat4x4/zero.js +7 -0
  592. package/dist/interface/math/mat4x4/zero.js.map +1 -0
  593. package/dist/interface/math/quat/add.d.ts +2 -0
  594. package/dist/interface/math/quat/add.js +8 -0
  595. package/dist/interface/math/quat/add.js.map +1 -0
  596. package/dist/interface/math/quat/align-to.d.ts +12 -0
  597. package/dist/interface/math/quat/align-to.js +42 -0
  598. package/dist/interface/math/quat/align-to.js.map +1 -0
  599. package/dist/interface/math/quat/conjugate.d.ts +2 -0
  600. package/dist/interface/math/quat/conjugate.js +2 -0
  601. package/dist/interface/math/quat/conjugate.js.map +1 -0
  602. package/dist/interface/math/quat/distance.d.ts +2 -0
  603. package/dist/interface/math/quat/distance.js +4 -0
  604. package/dist/interface/math/quat/distance.js.map +1 -0
  605. package/dist/interface/math/quat/dot.d.ts +2 -0
  606. package/dist/interface/math/quat/dot.js +3 -0
  607. package/dist/interface/math/quat/dot.js.map +1 -0
  608. package/dist/interface/math/quat/from-axis-angle.d.ts +3 -0
  609. package/dist/interface/math/quat/from-axis-angle.js +13 -0
  610. package/dist/interface/math/quat/from-axis-angle.js.map +1 -0
  611. package/dist/interface/math/quat/from-euler.d.ts +2 -0
  612. package/dist/interface/math/quat/from-euler.js +15 -0
  613. package/dist/interface/math/quat/from-euler.js.map +1 -0
  614. package/dist/interface/math/quat/identity.d.ts +2 -0
  615. package/dist/interface/math/quat/identity.js +2 -0
  616. package/dist/interface/math/quat/identity.js.map +1 -0
  617. package/dist/interface/math/quat/index.d.ts +2 -0
  618. package/dist/interface/math/quat/index.js +2 -0
  619. package/dist/interface/math/quat/index.js.map +1 -0
  620. package/dist/interface/math/quat/inverse.d.ts +2 -0
  621. package/dist/interface/math/quat/inverse.js +10 -0
  622. package/dist/interface/math/quat/inverse.js.map +1 -0
  623. package/dist/interface/math/quat/length-squared.d.ts +2 -0
  624. package/dist/interface/math/quat/length-squared.js +2 -0
  625. package/dist/interface/math/quat/length-squared.js.map +1 -0
  626. package/dist/interface/math/quat/length.d.ts +2 -0
  627. package/dist/interface/math/quat/length.js +3 -0
  628. package/dist/interface/math/quat/length.js.map +1 -0
  629. package/dist/interface/math/quat/lerp.d.ts +2 -0
  630. package/dist/interface/math/quat/lerp.js +7 -0
  631. package/dist/interface/math/quat/lerp.js.map +1 -0
  632. package/dist/interface/math/quat/look-at.d.ts +3 -0
  633. package/dist/interface/math/quat/look-at.js +49 -0
  634. package/dist/interface/math/quat/look-at.js.map +1 -0
  635. package/dist/interface/math/quat/multiply.d.ts +2 -0
  636. package/dist/interface/math/quat/multiply.js +7 -0
  637. package/dist/interface/math/quat/multiply.js.map +1 -0
  638. package/dist/interface/math/quat/negate.d.ts +2 -0
  639. package/dist/interface/math/quat/negate.js +3 -0
  640. package/dist/interface/math/quat/negate.js.map +1 -0
  641. package/dist/interface/math/quat/normalize.d.ts +2 -0
  642. package/dist/interface/math/quat/normalize.js +7 -0
  643. package/dist/interface/math/quat/normalize.js.map +1 -0
  644. package/dist/interface/math/quat/public.d.ts +24 -0
  645. package/dist/interface/math/quat/public.js +25 -0
  646. package/dist/interface/math/quat/public.js.map +1 -0
  647. package/dist/interface/math/quat/rotate-vec3.d.ts +3 -0
  648. package/dist/interface/math/quat/rotate-vec3.js +14 -0
  649. package/dist/interface/math/quat/rotate-vec3.js.map +1 -0
  650. package/dist/interface/math/quat/scale.d.ts +2 -0
  651. package/dist/interface/math/quat/scale.js +3 -0
  652. package/dist/interface/math/quat/scale.js.map +1 -0
  653. package/dist/interface/math/quat/schema.d.ts +9 -0
  654. package/dist/interface/math/quat/schema.js +3 -0
  655. package/dist/interface/math/quat/schema.js.map +1 -0
  656. package/dist/interface/math/quat/slerp.d.ts +2 -0
  657. package/dist/interface/math/quat/slerp.js +21 -0
  658. package/dist/interface/math/quat/slerp.js.map +1 -0
  659. package/dist/interface/math/quat/subtract.d.ts +2 -0
  660. package/dist/interface/math/quat/subtract.js +8 -0
  661. package/dist/interface/math/quat/subtract.js.map +1 -0
  662. package/dist/interface/math/quat/to-axis-angle.d.ts +6 -0
  663. package/dist/interface/math/quat/to-axis-angle.js +12 -0
  664. package/dist/interface/math/quat/to-axis-angle.js.map +1 -0
  665. package/dist/interface/math/quat/to-euler.d.ts +3 -0
  666. package/dist/interface/math/quat/to-euler.js +21 -0
  667. package/dist/interface/math/quat/to-euler.js.map +1 -0
  668. package/dist/interface/math/quat/to-mat4.d.ts +8 -0
  669. package/dist/interface/math/quat/to-mat4.js +24 -0
  670. package/dist/interface/math/quat/to-mat4.js.map +1 -0
  671. package/dist/interface/math/u32/count-leading-zeros.d.ts +2 -0
  672. package/dist/interface/math/u32/count-leading-zeros.js +3 -0
  673. package/dist/interface/math/u32/count-leading-zeros.js.map +1 -0
  674. package/dist/interface/math/u32/count-one-bits.d.ts +2 -0
  675. package/dist/interface/math/u32/count-one-bits.js +9 -0
  676. package/dist/interface/math/u32/count-one-bits.js.map +1 -0
  677. package/dist/interface/math/u32/count-trailing-zeros.d.ts +2 -0
  678. package/dist/interface/math/u32/count-trailing-zeros.js +6 -0
  679. package/dist/interface/math/u32/count-trailing-zeros.js.map +1 -0
  680. package/dist/interface/math/u32/index.d.ts +3 -0
  681. package/dist/interface/math/u32/index.js +2 -0
  682. package/dist/interface/math/u32/index.js.map +1 -0
  683. package/dist/interface/math/u32/public.d.ts +6 -0
  684. package/dist/interface/math/u32/public.js +7 -0
  685. package/dist/interface/math/u32/public.js.map +1 -0
  686. package/dist/interface/math/u32/reverse-bits.d.ts +2 -0
  687. package/dist/interface/math/u32/reverse-bits.js +10 -0
  688. package/dist/interface/math/u32/reverse-bits.js.map +1 -0
  689. package/dist/interface/math/u32/schema.d.ts +5 -0
  690. package/dist/interface/math/u32/schema.js +2 -0
  691. package/dist/interface/math/u32/schema.js.map +1 -0
  692. package/dist/interface/math/u32/shift-right.d.ts +2 -0
  693. package/dist/interface/math/u32/shift-right.js +2 -0
  694. package/dist/interface/math/u32/shift-right.js.map +1 -0
  695. package/dist/interface/math/vec2/f32/abs.d.ts +2 -0
  696. package/dist/interface/math/vec2/f32/abs.js +3 -0
  697. package/dist/interface/math/vec2/f32/abs.js.map +1 -0
  698. package/dist/interface/math/vec2/f32/acos.d.ts +2 -0
  699. package/dist/interface/math/vec2/f32/acos.js +3 -0
  700. package/dist/interface/math/vec2/f32/acos.js.map +1 -0
  701. package/dist/interface/math/vec2/f32/acosh.d.ts +2 -0
  702. package/dist/interface/math/vec2/f32/acosh.js +3 -0
  703. package/dist/interface/math/vec2/f32/acosh.js.map +1 -0
  704. package/dist/interface/math/vec2/f32/add.d.ts +2 -0
  705. package/dist/interface/math/vec2/f32/add.js +3 -0
  706. package/dist/interface/math/vec2/f32/add.js.map +1 -0
  707. package/dist/interface/math/vec2/f32/asin.d.ts +2 -0
  708. package/dist/interface/math/vec2/f32/asin.js +3 -0
  709. package/dist/interface/math/vec2/f32/asin.js.map +1 -0
  710. package/dist/interface/math/vec2/f32/asinh.d.ts +2 -0
  711. package/dist/interface/math/vec2/f32/asinh.js +3 -0
  712. package/dist/interface/math/vec2/f32/asinh.js.map +1 -0
  713. package/dist/interface/math/vec2/f32/atan.d.ts +2 -0
  714. package/dist/interface/math/vec2/f32/atan.js +3 -0
  715. package/dist/interface/math/vec2/f32/atan.js.map +1 -0
  716. package/dist/interface/math/vec2/f32/atanh.d.ts +2 -0
  717. package/dist/interface/math/vec2/f32/atanh.js +3 -0
  718. package/dist/interface/math/vec2/f32/atanh.js.map +1 -0
  719. package/dist/interface/math/vec2/f32/ceil.d.ts +2 -0
  720. package/dist/interface/math/vec2/f32/ceil.js +3 -0
  721. package/dist/interface/math/vec2/f32/ceil.js.map +1 -0
  722. package/dist/interface/math/vec2/f32/clamp.d.ts +2 -0
  723. package/dist/interface/math/vec2/f32/clamp.js +5 -0
  724. package/dist/interface/math/vec2/f32/clamp.js.map +1 -0
  725. package/dist/interface/math/vec2/f32/cos.d.ts +2 -0
  726. package/dist/interface/math/vec2/f32/cos.js +3 -0
  727. package/dist/interface/math/vec2/f32/cos.js.map +1 -0
  728. package/dist/interface/math/vec2/f32/cosh.d.ts +2 -0
  729. package/dist/interface/math/vec2/f32/cosh.js +3 -0
  730. package/dist/interface/math/vec2/f32/cosh.js.map +1 -0
  731. package/dist/interface/math/vec2/f32/distance.d.ts +2 -0
  732. package/dist/interface/math/vec2/f32/distance.js +5 -0
  733. package/dist/interface/math/vec2/f32/distance.js.map +1 -0
  734. package/dist/interface/math/vec2/f32/dot.d.ts +2 -0
  735. package/dist/interface/math/vec2/f32/dot.js +3 -0
  736. package/dist/interface/math/vec2/f32/dot.js.map +1 -0
  737. package/dist/interface/math/vec2/f32/equals.d.ts +2 -0
  738. package/dist/interface/math/vec2/f32/equals.js +2 -0
  739. package/dist/interface/math/vec2/f32/equals.js.map +1 -0
  740. package/dist/interface/math/vec2/f32/exp.d.ts +2 -0
  741. package/dist/interface/math/vec2/f32/exp.js +3 -0
  742. package/dist/interface/math/vec2/f32/exp.js.map +1 -0
  743. package/dist/interface/math/vec2/f32/exp2.d.ts +2 -0
  744. package/dist/interface/math/vec2/f32/exp2.js +3 -0
  745. package/dist/interface/math/vec2/f32/exp2.js.map +1 -0
  746. package/dist/interface/math/vec2/f32/f32.d.ts +2 -0
  747. package/dist/interface/math/vec2/f32/f32.js +2 -0
  748. package/dist/interface/math/vec2/f32/f32.js.map +1 -0
  749. package/dist/interface/math/vec2/f32/faceforward.d.ts +2 -0
  750. package/dist/interface/math/vec2/f32/faceforward.js +5 -0
  751. package/dist/interface/math/vec2/f32/faceforward.js.map +1 -0
  752. package/dist/interface/math/vec2/f32/floor.d.ts +2 -0
  753. package/dist/interface/math/vec2/f32/floor.js +3 -0
  754. package/dist/interface/math/vec2/f32/floor.js.map +1 -0
  755. package/dist/interface/math/vec2/f32/fract.d.ts +2 -0
  756. package/dist/interface/math/vec2/f32/fract.js +3 -0
  757. package/dist/interface/math/vec2/f32/fract.js.map +1 -0
  758. package/dist/interface/math/vec2/f32/length.d.ts +2 -0
  759. package/dist/interface/math/vec2/f32/length.js +3 -0
  760. package/dist/interface/math/vec2/f32/length.js.map +1 -0
  761. package/dist/interface/math/vec2/f32/log.d.ts +2 -0
  762. package/dist/interface/math/vec2/f32/log.js +3 -0
  763. package/dist/interface/math/vec2/f32/log.js.map +1 -0
  764. package/dist/interface/math/vec2/f32/log2.d.ts +2 -0
  765. package/dist/interface/math/vec2/f32/log2.js +3 -0
  766. package/dist/interface/math/vec2/f32/log2.js.map +1 -0
  767. package/dist/interface/math/vec2/f32/max.d.ts +2 -0
  768. package/dist/interface/math/vec2/f32/max.js +3 -0
  769. package/dist/interface/math/vec2/f32/max.js.map +1 -0
  770. package/dist/interface/math/vec2/f32/min.d.ts +2 -0
  771. package/dist/interface/math/vec2/f32/min.js +3 -0
  772. package/dist/interface/math/vec2/f32/min.js.map +1 -0
  773. package/dist/interface/math/vec2/f32/mix.d.ts +2 -0
  774. package/dist/interface/math/vec2/f32/mix.js +6 -0
  775. package/dist/interface/math/vec2/f32/mix.js.map +1 -0
  776. package/dist/interface/math/vec2/f32/mod.d.ts +2 -0
  777. package/dist/interface/math/vec2/f32/mod.js +2 -0
  778. package/dist/interface/math/vec2/f32/mod.js.map +1 -0
  779. package/dist/interface/math/vec2/f32/modf.d.ts +5 -0
  780. package/dist/interface/math/vec2/f32/modf.js +5 -0
  781. package/dist/interface/math/vec2/f32/modf.js.map +1 -0
  782. package/dist/interface/math/vec2/f32/negate.d.ts +2 -0
  783. package/dist/interface/math/vec2/f32/negate.js +3 -0
  784. package/dist/interface/math/vec2/f32/negate.js.map +1 -0
  785. package/dist/interface/math/vec2/f32/normalize.d.ts +2 -0
  786. package/dist/interface/math/vec2/f32/normalize.js +5 -0
  787. package/dist/interface/math/vec2/f32/normalize.js.map +1 -0
  788. package/dist/interface/math/vec2/f32/pow.d.ts +3 -0
  789. package/dist/interface/math/vec2/f32/pow.js +7 -0
  790. package/dist/interface/math/vec2/f32/pow.js.map +1 -0
  791. package/dist/interface/math/vec2/f32/public.d.ts +47 -0
  792. package/dist/interface/math/vec2/f32/public.js +48 -0
  793. package/dist/interface/math/vec2/f32/public.js.map +1 -0
  794. package/dist/interface/math/vec2/f32/reflect.d.ts +2 -0
  795. package/dist/interface/math/vec2/f32/reflect.js +9 -0
  796. package/dist/interface/math/vec2/f32/reflect.js.map +1 -0
  797. package/dist/interface/math/vec2/f32/refract.d.ts +2 -0
  798. package/dist/interface/math/vec2/f32/refract.js +14 -0
  799. package/dist/interface/math/vec2/f32/refract.js.map +1 -0
  800. package/dist/interface/math/vec2/f32/round.d.ts +2 -0
  801. package/dist/interface/math/vec2/f32/round.js +4 -0
  802. package/dist/interface/math/vec2/f32/round.js.map +1 -0
  803. package/dist/interface/math/vec2/f32/scale.d.ts +2 -0
  804. package/dist/interface/math/vec2/f32/scale.js +3 -0
  805. package/dist/interface/math/vec2/f32/scale.js.map +1 -0
  806. package/dist/interface/math/vec2/f32/schema.d.ts +9 -0
  807. package/dist/interface/math/vec2/f32/schema.js +3 -0
  808. package/dist/interface/math/vec2/f32/schema.js.map +1 -0
  809. package/dist/interface/math/vec2/f32/sign.d.ts +2 -0
  810. package/dist/interface/math/vec2/f32/sign.js +3 -0
  811. package/dist/interface/math/vec2/f32/sign.js.map +1 -0
  812. package/dist/interface/math/vec2/f32/sin.d.ts +2 -0
  813. package/dist/interface/math/vec2/f32/sin.js +3 -0
  814. package/dist/interface/math/vec2/f32/sin.js.map +1 -0
  815. package/dist/interface/math/vec2/f32/sinh.d.ts +2 -0
  816. package/dist/interface/math/vec2/f32/sinh.js +3 -0
  817. package/dist/interface/math/vec2/f32/sinh.js.map +1 -0
  818. package/dist/interface/math/vec2/f32/smoothstep.d.ts +2 -0
  819. package/dist/interface/math/vec2/f32/smoothstep.js +7 -0
  820. package/dist/interface/math/vec2/f32/smoothstep.js.map +1 -0
  821. package/dist/interface/math/vec2/f32/sqrt.d.ts +2 -0
  822. package/dist/interface/math/vec2/f32/sqrt.js +3 -0
  823. package/dist/interface/math/vec2/f32/sqrt.js.map +1 -0
  824. package/dist/interface/math/vec2/f32/step.d.ts +2 -0
  825. package/dist/interface/math/vec2/f32/step.js +6 -0
  826. package/dist/interface/math/vec2/f32/step.js.map +1 -0
  827. package/dist/interface/math/vec2/f32/subtract.d.ts +2 -0
  828. package/dist/interface/math/vec2/f32/subtract.js +3 -0
  829. package/dist/interface/math/vec2/f32/subtract.js.map +1 -0
  830. package/dist/interface/math/vec2/f32/tan.d.ts +2 -0
  831. package/dist/interface/math/vec2/f32/tan.js +3 -0
  832. package/dist/interface/math/vec2/f32/tan.js.map +1 -0
  833. package/dist/interface/math/vec2/f32/tanh.d.ts +2 -0
  834. package/dist/interface/math/vec2/f32/tanh.js +3 -0
  835. package/dist/interface/math/vec2/f32/tanh.js.map +1 -0
  836. package/dist/interface/math/vec2/f32/trunc.d.ts +2 -0
  837. package/dist/interface/math/vec2/f32/trunc.js +3 -0
  838. package/dist/interface/math/vec2/f32/trunc.js.map +1 -0
  839. package/dist/interface/math/vec2/f32/zero.d.ts +2 -0
  840. package/dist/interface/math/vec2/f32/zero.js +2 -0
  841. package/dist/interface/math/vec2/f32/zero.js.map +1 -0
  842. package/dist/interface/math/vec2/i32/abs.d.ts +2 -0
  843. package/dist/interface/math/vec2/i32/abs.js +3 -0
  844. package/dist/interface/math/vec2/i32/abs.js.map +1 -0
  845. package/dist/interface/math/vec2/i32/add.d.ts +2 -0
  846. package/dist/interface/math/vec2/i32/add.js +3 -0
  847. package/dist/interface/math/vec2/i32/add.js.map +1 -0
  848. package/dist/interface/math/vec2/i32/bitwise-and.d.ts +2 -0
  849. package/dist/interface/math/vec2/i32/bitwise-and.js +3 -0
  850. package/dist/interface/math/vec2/i32/bitwise-and.js.map +1 -0
  851. package/dist/interface/math/vec2/i32/bitwise-not.d.ts +2 -0
  852. package/dist/interface/math/vec2/i32/bitwise-not.js +3 -0
  853. package/dist/interface/math/vec2/i32/bitwise-not.js.map +1 -0
  854. package/dist/interface/math/vec2/i32/bitwise-or.d.ts +2 -0
  855. package/dist/interface/math/vec2/i32/bitwise-or.js +3 -0
  856. package/dist/interface/math/vec2/i32/bitwise-or.js.map +1 -0
  857. package/dist/interface/math/vec2/i32/bitwise-xor.d.ts +2 -0
  858. package/dist/interface/math/vec2/i32/bitwise-xor.js +3 -0
  859. package/dist/interface/math/vec2/i32/bitwise-xor.js.map +1 -0
  860. package/dist/interface/math/vec2/i32/clamp.d.ts +2 -0
  861. package/dist/interface/math/vec2/i32/clamp.js +5 -0
  862. package/dist/interface/math/vec2/i32/clamp.js.map +1 -0
  863. package/dist/interface/math/vec2/i32/count-leading-zeros.d.ts +2 -0
  864. package/dist/interface/math/vec2/i32/count-leading-zeros.js +7 -0
  865. package/dist/interface/math/vec2/i32/count-leading-zeros.js.map +1 -0
  866. package/dist/interface/math/vec2/i32/count-one-bits.d.ts +2 -0
  867. package/dist/interface/math/vec2/i32/count-one-bits.js +7 -0
  868. package/dist/interface/math/vec2/i32/count-one-bits.js.map +1 -0
  869. package/dist/interface/math/vec2/i32/count-trailing-zeros.d.ts +2 -0
  870. package/dist/interface/math/vec2/i32/count-trailing-zeros.js +7 -0
  871. package/dist/interface/math/vec2/i32/count-trailing-zeros.js.map +1 -0
  872. package/dist/interface/math/vec2/i32/equals.d.ts +2 -0
  873. package/dist/interface/math/vec2/i32/equals.js +2 -0
  874. package/dist/interface/math/vec2/i32/equals.js.map +1 -0
  875. package/dist/interface/math/vec2/i32/i32.d.ts +3 -0
  876. package/dist/interface/math/vec2/i32/i32.js +2 -0
  877. package/dist/interface/math/vec2/i32/i32.js.map +1 -0
  878. package/dist/interface/math/vec2/i32/max.d.ts +2 -0
  879. package/dist/interface/math/vec2/i32/max.js +3 -0
  880. package/dist/interface/math/vec2/i32/max.js.map +1 -0
  881. package/dist/interface/math/vec2/i32/min.d.ts +2 -0
  882. package/dist/interface/math/vec2/i32/min.js +3 -0
  883. package/dist/interface/math/vec2/i32/min.js.map +1 -0
  884. package/dist/interface/math/vec2/i32/negate.d.ts +2 -0
  885. package/dist/interface/math/vec2/i32/negate.js +3 -0
  886. package/dist/interface/math/vec2/i32/negate.js.map +1 -0
  887. package/dist/interface/math/vec2/i32/public.d.ts +21 -0
  888. package/dist/interface/math/vec2/i32/public.js +22 -0
  889. package/dist/interface/math/vec2/i32/public.js.map +1 -0
  890. package/dist/interface/math/vec2/i32/reverse-bits.d.ts +2 -0
  891. package/dist/interface/math/vec2/i32/reverse-bits.js +4 -0
  892. package/dist/interface/math/vec2/i32/reverse-bits.js.map +1 -0
  893. package/dist/interface/math/vec2/i32/scale.d.ts +3 -0
  894. package/dist/interface/math/vec2/i32/scale.js +3 -0
  895. package/dist/interface/math/vec2/i32/scale.js.map +1 -0
  896. package/dist/interface/math/vec2/i32/schema.d.ts +10 -0
  897. package/dist/interface/math/vec2/i32/schema.js +3 -0
  898. package/dist/interface/math/vec2/i32/schema.js.map +1 -0
  899. package/dist/interface/math/vec2/i32/shift-left.d.ts +2 -0
  900. package/dist/interface/math/vec2/i32/shift-left.js +2 -0
  901. package/dist/interface/math/vec2/i32/shift-left.js.map +1 -0
  902. package/dist/interface/math/vec2/i32/shift-right.d.ts +2 -0
  903. package/dist/interface/math/vec2/i32/shift-right.js +6 -0
  904. package/dist/interface/math/vec2/i32/shift-right.js.map +1 -0
  905. package/dist/interface/math/vec2/i32/subtract.d.ts +2 -0
  906. package/dist/interface/math/vec2/i32/subtract.js +3 -0
  907. package/dist/interface/math/vec2/i32/subtract.js.map +1 -0
  908. package/dist/interface/math/vec2/i32/zero.d.ts +2 -0
  909. package/dist/interface/math/vec2/i32/zero.js +2 -0
  910. package/dist/interface/math/vec2/i32/zero.js.map +1 -0
  911. package/dist/interface/math/vec2/index.d.ts +4 -0
  912. package/dist/interface/math/vec2/index.js +2 -0
  913. package/dist/interface/math/vec2/index.js.map +1 -0
  914. package/dist/interface/math/vec2/public.d.ts +4 -0
  915. package/dist/interface/math/vec2/public.js +5 -0
  916. package/dist/interface/math/vec2/public.js.map +1 -0
  917. package/dist/interface/math/vec2/u32/add.d.ts +2 -0
  918. package/dist/interface/math/vec2/u32/add.js +6 -0
  919. package/dist/interface/math/vec2/u32/add.js.map +1 -0
  920. package/dist/interface/math/vec2/u32/bitwise-and.d.ts +2 -0
  921. package/dist/interface/math/vec2/u32/bitwise-and.js +6 -0
  922. package/dist/interface/math/vec2/u32/bitwise-and.js.map +1 -0
  923. package/dist/interface/math/vec2/u32/bitwise-not.d.ts +2 -0
  924. package/dist/interface/math/vec2/u32/bitwise-not.js +3 -0
  925. package/dist/interface/math/vec2/u32/bitwise-not.js.map +1 -0
  926. package/dist/interface/math/vec2/u32/bitwise-or.d.ts +2 -0
  927. package/dist/interface/math/vec2/u32/bitwise-or.js +6 -0
  928. package/dist/interface/math/vec2/u32/bitwise-or.js.map +1 -0
  929. package/dist/interface/math/vec2/u32/bitwise-xor.d.ts +2 -0
  930. package/dist/interface/math/vec2/u32/bitwise-xor.js +6 -0
  931. package/dist/interface/math/vec2/u32/bitwise-xor.js.map +1 -0
  932. package/dist/interface/math/vec2/u32/clamp.d.ts +2 -0
  933. package/dist/interface/math/vec2/u32/clamp.js +5 -0
  934. package/dist/interface/math/vec2/u32/clamp.js.map +1 -0
  935. package/dist/interface/math/vec2/u32/count-leading-zeros.d.ts +2 -0
  936. package/dist/interface/math/vec2/u32/count-leading-zeros.js +7 -0
  937. package/dist/interface/math/vec2/u32/count-leading-zeros.js.map +1 -0
  938. package/dist/interface/math/vec2/u32/count-one-bits.d.ts +2 -0
  939. package/dist/interface/math/vec2/u32/count-one-bits.js +7 -0
  940. package/dist/interface/math/vec2/u32/count-one-bits.js.map +1 -0
  941. package/dist/interface/math/vec2/u32/count-trailing-zeros.d.ts +2 -0
  942. package/dist/interface/math/vec2/u32/count-trailing-zeros.js +7 -0
  943. package/dist/interface/math/vec2/u32/count-trailing-zeros.js.map +1 -0
  944. package/dist/interface/math/vec2/u32/equals.d.ts +2 -0
  945. package/dist/interface/math/vec2/u32/equals.js +2 -0
  946. package/dist/interface/math/vec2/u32/equals.js.map +1 -0
  947. package/dist/interface/math/vec2/u32/max.d.ts +2 -0
  948. package/dist/interface/math/vec2/u32/max.js +6 -0
  949. package/dist/interface/math/vec2/u32/max.js.map +1 -0
  950. package/dist/interface/math/vec2/u32/min.d.ts +2 -0
  951. package/dist/interface/math/vec2/u32/min.js +6 -0
  952. package/dist/interface/math/vec2/u32/min.js.map +1 -0
  953. package/dist/interface/math/vec2/u32/negate.d.ts +2 -0
  954. package/dist/interface/math/vec2/u32/negate.js +2 -0
  955. package/dist/interface/math/vec2/u32/negate.js.map +1 -0
  956. package/dist/interface/math/vec2/u32/public.d.ts +20 -0
  957. package/dist/interface/math/vec2/u32/public.js +21 -0
  958. package/dist/interface/math/vec2/u32/public.js.map +1 -0
  959. package/dist/interface/math/vec2/u32/reverse-bits.d.ts +2 -0
  960. package/dist/interface/math/vec2/u32/reverse-bits.js +7 -0
  961. package/dist/interface/math/vec2/u32/reverse-bits.js.map +1 -0
  962. package/dist/interface/math/vec2/u32/scale.d.ts +3 -0
  963. package/dist/interface/math/vec2/u32/scale.js +3 -0
  964. package/dist/interface/math/vec2/u32/scale.js.map +1 -0
  965. package/dist/interface/math/vec2/u32/schema.d.ts +10 -0
  966. package/dist/interface/math/vec2/u32/schema.js +3 -0
  967. package/dist/interface/math/vec2/u32/schema.js.map +1 -0
  968. package/dist/interface/math/vec2/u32/shift-left.d.ts +2 -0
  969. package/dist/interface/math/vec2/u32/shift-left.js +2 -0
  970. package/dist/interface/math/vec2/u32/shift-left.js.map +1 -0
  971. package/dist/interface/math/vec2/u32/shift-right.d.ts +2 -0
  972. package/dist/interface/math/vec2/u32/shift-right.js +6 -0
  973. package/dist/interface/math/vec2/u32/shift-right.js.map +1 -0
  974. package/dist/interface/math/vec2/u32/subtract.d.ts +2 -0
  975. package/dist/interface/math/vec2/u32/subtract.js +6 -0
  976. package/dist/interface/math/vec2/u32/subtract.js.map +1 -0
  977. package/dist/interface/math/vec2/u32/u32.d.ts +3 -0
  978. package/dist/interface/math/vec2/u32/u32.js +2 -0
  979. package/dist/interface/math/vec2/u32/u32.js.map +1 -0
  980. package/dist/interface/math/vec2/u32/zero.d.ts +2 -0
  981. package/dist/interface/math/vec2/u32/zero.js +2 -0
  982. package/dist/interface/math/vec2/u32/zero.js.map +1 -0
  983. package/dist/interface/math/vec3/f32/abs.d.ts +2 -0
  984. package/dist/interface/math/vec3/f32/abs.js +3 -0
  985. package/dist/interface/math/vec3/f32/abs.js.map +1 -0
  986. package/dist/interface/math/vec3/f32/acos.d.ts +2 -0
  987. package/dist/interface/math/vec3/f32/acos.js +3 -0
  988. package/dist/interface/math/vec3/f32/acos.js.map +1 -0
  989. package/dist/interface/math/vec3/f32/acosh.d.ts +2 -0
  990. package/dist/interface/math/vec3/f32/acosh.js +3 -0
  991. package/dist/interface/math/vec3/f32/acosh.js.map +1 -0
  992. package/dist/interface/math/vec3/f32/add.d.ts +2 -0
  993. package/dist/interface/math/vec3/f32/add.js +7 -0
  994. package/dist/interface/math/vec3/f32/add.js.map +1 -0
  995. package/dist/interface/math/vec3/f32/asin.d.ts +2 -0
  996. package/dist/interface/math/vec3/f32/asin.js +3 -0
  997. package/dist/interface/math/vec3/f32/asin.js.map +1 -0
  998. package/dist/interface/math/vec3/f32/asinh.d.ts +2 -0
  999. package/dist/interface/math/vec3/f32/asinh.js +3 -0
  1000. package/dist/interface/math/vec3/f32/asinh.js.map +1 -0
  1001. package/dist/interface/math/vec3/f32/atan.d.ts +2 -0
  1002. package/dist/interface/math/vec3/f32/atan.js +3 -0
  1003. package/dist/interface/math/vec3/f32/atan.js.map +1 -0
  1004. package/dist/interface/math/vec3/f32/atanh.d.ts +2 -0
  1005. package/dist/interface/math/vec3/f32/atanh.js +3 -0
  1006. package/dist/interface/math/vec3/f32/atanh.js.map +1 -0
  1007. package/dist/interface/math/vec3/f32/ceil.d.ts +2 -0
  1008. package/dist/interface/math/vec3/f32/ceil.js +3 -0
  1009. package/dist/interface/math/vec3/f32/ceil.js.map +1 -0
  1010. package/dist/interface/math/vec3/f32/clamp.d.ts +2 -0
  1011. package/dist/interface/math/vec3/f32/clamp.js +5 -0
  1012. package/dist/interface/math/vec3/f32/clamp.js.map +1 -0
  1013. package/dist/interface/math/vec3/f32/cos.d.ts +2 -0
  1014. package/dist/interface/math/vec3/f32/cos.js +3 -0
  1015. package/dist/interface/math/vec3/f32/cos.js.map +1 -0
  1016. package/dist/interface/math/vec3/f32/cosh.d.ts +2 -0
  1017. package/dist/interface/math/vec3/f32/cosh.js +3 -0
  1018. package/dist/interface/math/vec3/f32/cosh.js.map +1 -0
  1019. package/dist/interface/math/vec3/f32/cross.d.ts +2 -0
  1020. package/dist/interface/math/vec3/f32/cross.js +7 -0
  1021. package/dist/interface/math/vec3/f32/cross.js.map +1 -0
  1022. package/dist/interface/math/vec3/f32/distance-squared.d.ts +2 -0
  1023. package/dist/interface/math/vec3/f32/distance-squared.js +7 -0
  1024. package/dist/interface/math/vec3/f32/distance-squared.js.map +1 -0
  1025. package/dist/interface/math/vec3/f32/distance.d.ts +2 -0
  1026. package/dist/interface/math/vec3/f32/distance.js +5 -0
  1027. package/dist/interface/math/vec3/f32/distance.js.map +1 -0
  1028. package/dist/interface/math/vec3/f32/dot.d.ts +2 -0
  1029. package/dist/interface/math/vec3/f32/dot.js +3 -0
  1030. package/dist/interface/math/vec3/f32/dot.js.map +1 -0
  1031. package/dist/interface/math/vec3/f32/equals.d.ts +2 -0
  1032. package/dist/interface/math/vec3/f32/equals.js +2 -0
  1033. package/dist/interface/math/vec3/f32/equals.js.map +1 -0
  1034. package/dist/interface/math/vec3/f32/exp.d.ts +2 -0
  1035. package/dist/interface/math/vec3/f32/exp.js +3 -0
  1036. package/dist/interface/math/vec3/f32/exp.js.map +1 -0
  1037. package/dist/interface/math/vec3/f32/exp2.d.ts +2 -0
  1038. package/dist/interface/math/vec3/f32/exp2.js +3 -0
  1039. package/dist/interface/math/vec3/f32/exp2.js.map +1 -0
  1040. package/dist/interface/math/vec3/f32/f32.d.ts +2 -0
  1041. package/dist/interface/math/vec3/f32/f32.js +2 -0
  1042. package/dist/interface/math/vec3/f32/f32.js.map +1 -0
  1043. package/dist/interface/math/vec3/f32/faceforward.d.ts +2 -0
  1044. package/dist/interface/math/vec3/f32/faceforward.js +5 -0
  1045. package/dist/interface/math/vec3/f32/faceforward.js.map +1 -0
  1046. package/dist/interface/math/vec3/f32/floor.d.ts +2 -0
  1047. package/dist/interface/math/vec3/f32/floor.js +3 -0
  1048. package/dist/interface/math/vec3/f32/floor.js.map +1 -0
  1049. package/dist/interface/math/vec3/f32/fract.d.ts +2 -0
  1050. package/dist/interface/math/vec3/f32/fract.js +7 -0
  1051. package/dist/interface/math/vec3/f32/fract.js.map +1 -0
  1052. package/dist/interface/math/vec3/f32/length-squared.d.ts +2 -0
  1053. package/dist/interface/math/vec3/f32/length-squared.js +3 -0
  1054. package/dist/interface/math/vec3/f32/length-squared.js.map +1 -0
  1055. package/dist/interface/math/vec3/f32/length.d.ts +2 -0
  1056. package/dist/interface/math/vec3/f32/length.js +3 -0
  1057. package/dist/interface/math/vec3/f32/length.js.map +1 -0
  1058. package/dist/interface/math/vec3/f32/log.d.ts +2 -0
  1059. package/dist/interface/math/vec3/f32/log.js +3 -0
  1060. package/dist/interface/math/vec3/f32/log.js.map +1 -0
  1061. package/dist/interface/math/vec3/f32/log2.d.ts +2 -0
  1062. package/dist/interface/math/vec3/f32/log2.js +3 -0
  1063. package/dist/interface/math/vec3/f32/log2.js.map +1 -0
  1064. package/dist/interface/math/vec3/f32/max.d.ts +2 -0
  1065. package/dist/interface/math/vec3/f32/max.js +7 -0
  1066. package/dist/interface/math/vec3/f32/max.js.map +1 -0
  1067. package/dist/interface/math/vec3/f32/min.d.ts +2 -0
  1068. package/dist/interface/math/vec3/f32/min.js +7 -0
  1069. package/dist/interface/math/vec3/f32/min.js.map +1 -0
  1070. package/dist/interface/math/vec3/f32/mix.d.ts +2 -0
  1071. package/dist/interface/math/vec3/f32/mix.js +7 -0
  1072. package/dist/interface/math/vec3/f32/mix.js.map +1 -0
  1073. package/dist/interface/math/vec3/f32/mod.d.ts +2 -0
  1074. package/dist/interface/math/vec3/f32/mod.js +6 -0
  1075. package/dist/interface/math/vec3/f32/mod.js.map +1 -0
  1076. package/dist/interface/math/vec3/f32/modf.d.ts +5 -0
  1077. package/dist/interface/math/vec3/f32/modf.js +5 -0
  1078. package/dist/interface/math/vec3/f32/modf.js.map +1 -0
  1079. package/dist/interface/math/vec3/f32/multiply.d.ts +5 -0
  1080. package/dist/interface/math/vec3/f32/multiply.js +10 -0
  1081. package/dist/interface/math/vec3/f32/multiply.js.map +1 -0
  1082. package/dist/interface/math/vec3/f32/negate.d.ts +2 -0
  1083. package/dist/interface/math/vec3/f32/negate.js +3 -0
  1084. package/dist/interface/math/vec3/f32/negate.js.map +1 -0
  1085. package/dist/interface/math/vec3/f32/normalize.d.ts +2 -0
  1086. package/dist/interface/math/vec3/f32/normalize.js +5 -0
  1087. package/dist/interface/math/vec3/f32/normalize.js.map +1 -0
  1088. package/dist/interface/math/vec3/f32/one.d.ts +2 -0
  1089. package/dist/interface/math/vec3/f32/one.js +2 -0
  1090. package/dist/interface/math/vec3/f32/one.js.map +1 -0
  1091. package/dist/interface/math/vec3/f32/pow.d.ts +3 -0
  1092. package/dist/interface/math/vec3/f32/pow.js +8 -0
  1093. package/dist/interface/math/vec3/f32/pow.js.map +1 -0
  1094. package/dist/interface/math/vec3/f32/public.d.ts +53 -0
  1095. package/dist/interface/math/vec3/f32/public.js +54 -0
  1096. package/dist/interface/math/vec3/f32/public.js.map +1 -0
  1097. package/dist/interface/math/vec3/f32/random.d.ts +2 -0
  1098. package/dist/interface/math/vec3/f32/random.js +4 -0
  1099. package/dist/interface/math/vec3/f32/random.js.map +1 -0
  1100. package/dist/interface/math/vec3/f32/reflect.d.ts +2 -0
  1101. package/dist/interface/math/vec3/f32/reflect.js +9 -0
  1102. package/dist/interface/math/vec3/f32/reflect.js.map +1 -0
  1103. package/dist/interface/math/vec3/f32/refract.d.ts +2 -0
  1104. package/dist/interface/math/vec3/f32/refract.js +14 -0
  1105. package/dist/interface/math/vec3/f32/refract.js.map +1 -0
  1106. package/dist/interface/math/vec3/f32/round.d.ts +2 -0
  1107. package/dist/interface/math/vec3/f32/round.js +8 -0
  1108. package/dist/interface/math/vec3/f32/round.js.map +1 -0
  1109. package/dist/interface/math/vec3/f32/scale.d.ts +2 -0
  1110. package/dist/interface/math/vec3/f32/scale.js +3 -0
  1111. package/dist/interface/math/vec3/f32/scale.js.map +1 -0
  1112. package/dist/interface/math/vec3/f32/schema.d.ts +9 -0
  1113. package/dist/interface/math/vec3/f32/schema.js +3 -0
  1114. package/dist/interface/math/vec3/f32/schema.js.map +1 -0
  1115. package/dist/interface/math/vec3/f32/sign.d.ts +2 -0
  1116. package/dist/interface/math/vec3/f32/sign.js +3 -0
  1117. package/dist/interface/math/vec3/f32/sign.js.map +1 -0
  1118. package/dist/interface/math/vec3/f32/sin.d.ts +2 -0
  1119. package/dist/interface/math/vec3/f32/sin.js +3 -0
  1120. package/dist/interface/math/vec3/f32/sin.js.map +1 -0
  1121. package/dist/interface/math/vec3/f32/sinh.d.ts +2 -0
  1122. package/dist/interface/math/vec3/f32/sinh.js +3 -0
  1123. package/dist/interface/math/vec3/f32/sinh.js.map +1 -0
  1124. package/dist/interface/math/vec3/f32/smoothstep.d.ts +2 -0
  1125. package/dist/interface/math/vec3/f32/smoothstep.js +12 -0
  1126. package/dist/interface/math/vec3/f32/smoothstep.js.map +1 -0
  1127. package/dist/interface/math/vec3/f32/sqrt.d.ts +2 -0
  1128. package/dist/interface/math/vec3/f32/sqrt.js +3 -0
  1129. package/dist/interface/math/vec3/f32/sqrt.js.map +1 -0
  1130. package/dist/interface/math/vec3/f32/step.d.ts +2 -0
  1131. package/dist/interface/math/vec3/f32/step.js +7 -0
  1132. package/dist/interface/math/vec3/f32/step.js.map +1 -0
  1133. package/dist/interface/math/vec3/f32/subtract.d.ts +2 -0
  1134. package/dist/interface/math/vec3/f32/subtract.js +7 -0
  1135. package/dist/interface/math/vec3/f32/subtract.js.map +1 -0
  1136. package/dist/interface/math/vec3/f32/tan.d.ts +2 -0
  1137. package/dist/interface/math/vec3/f32/tan.js +3 -0
  1138. package/dist/interface/math/vec3/f32/tan.js.map +1 -0
  1139. package/dist/interface/math/vec3/f32/tanh.d.ts +2 -0
  1140. package/dist/interface/math/vec3/f32/tanh.js +3 -0
  1141. package/dist/interface/math/vec3/f32/tanh.js.map +1 -0
  1142. package/dist/interface/math/vec3/f32/trunc.d.ts +2 -0
  1143. package/dist/interface/math/vec3/f32/trunc.js +3 -0
  1144. package/dist/interface/math/vec3/f32/trunc.js.map +1 -0
  1145. package/dist/interface/math/vec3/f32/zero.d.ts +2 -0
  1146. package/dist/interface/math/vec3/f32/zero.js +2 -0
  1147. package/dist/interface/math/vec3/f32/zero.js.map +1 -0
  1148. package/dist/interface/math/vec3/i32/abs.d.ts +2 -0
  1149. package/dist/interface/math/vec3/i32/abs.js +7 -0
  1150. package/dist/interface/math/vec3/i32/abs.js.map +1 -0
  1151. package/dist/interface/math/vec3/i32/add.d.ts +2 -0
  1152. package/dist/interface/math/vec3/i32/add.js +7 -0
  1153. package/dist/interface/math/vec3/i32/add.js.map +1 -0
  1154. package/dist/interface/math/vec3/i32/bitwise-and.d.ts +2 -0
  1155. package/dist/interface/math/vec3/i32/bitwise-and.js +7 -0
  1156. package/dist/interface/math/vec3/i32/bitwise-and.js.map +1 -0
  1157. package/dist/interface/math/vec3/i32/bitwise-not.d.ts +2 -0
  1158. package/dist/interface/math/vec3/i32/bitwise-not.js +3 -0
  1159. package/dist/interface/math/vec3/i32/bitwise-not.js.map +1 -0
  1160. package/dist/interface/math/vec3/i32/bitwise-or.d.ts +2 -0
  1161. package/dist/interface/math/vec3/i32/bitwise-or.js +7 -0
  1162. package/dist/interface/math/vec3/i32/bitwise-or.js.map +1 -0
  1163. package/dist/interface/math/vec3/i32/bitwise-xor.d.ts +2 -0
  1164. package/dist/interface/math/vec3/i32/bitwise-xor.js +7 -0
  1165. package/dist/interface/math/vec3/i32/bitwise-xor.js.map +1 -0
  1166. package/dist/interface/math/vec3/i32/clamp.d.ts +2 -0
  1167. package/dist/interface/math/vec3/i32/clamp.js +5 -0
  1168. package/dist/interface/math/vec3/i32/clamp.js.map +1 -0
  1169. package/dist/interface/math/vec3/i32/count-leading-zeros.d.ts +2 -0
  1170. package/dist/interface/math/vec3/i32/count-leading-zeros.js +8 -0
  1171. package/dist/interface/math/vec3/i32/count-leading-zeros.js.map +1 -0
  1172. package/dist/interface/math/vec3/i32/count-one-bits.d.ts +2 -0
  1173. package/dist/interface/math/vec3/i32/count-one-bits.js +8 -0
  1174. package/dist/interface/math/vec3/i32/count-one-bits.js.map +1 -0
  1175. package/dist/interface/math/vec3/i32/count-trailing-zeros.d.ts +2 -0
  1176. package/dist/interface/math/vec3/i32/count-trailing-zeros.js +8 -0
  1177. package/dist/interface/math/vec3/i32/count-trailing-zeros.js.map +1 -0
  1178. package/dist/interface/math/vec3/i32/equals.d.ts +2 -0
  1179. package/dist/interface/math/vec3/i32/equals.js +2 -0
  1180. package/dist/interface/math/vec3/i32/equals.js.map +1 -0
  1181. package/dist/interface/math/vec3/i32/i32.d.ts +3 -0
  1182. package/dist/interface/math/vec3/i32/i32.js +2 -0
  1183. package/dist/interface/math/vec3/i32/i32.js.map +1 -0
  1184. package/dist/interface/math/vec3/i32/max.d.ts +2 -0
  1185. package/dist/interface/math/vec3/i32/max.js +7 -0
  1186. package/dist/interface/math/vec3/i32/max.js.map +1 -0
  1187. package/dist/interface/math/vec3/i32/min.d.ts +2 -0
  1188. package/dist/interface/math/vec3/i32/min.js +7 -0
  1189. package/dist/interface/math/vec3/i32/min.js.map +1 -0
  1190. package/dist/interface/math/vec3/i32/multiply.d.ts +2 -0
  1191. package/dist/interface/math/vec3/i32/multiply.js +7 -0
  1192. package/dist/interface/math/vec3/i32/multiply.js.map +1 -0
  1193. package/dist/interface/math/vec3/i32/negate.d.ts +2 -0
  1194. package/dist/interface/math/vec3/i32/negate.js +7 -0
  1195. package/dist/interface/math/vec3/i32/negate.js.map +1 -0
  1196. package/dist/interface/math/vec3/i32/one.d.ts +2 -0
  1197. package/dist/interface/math/vec3/i32/one.js +2 -0
  1198. package/dist/interface/math/vec3/i32/one.js.map +1 -0
  1199. package/dist/interface/math/vec3/i32/public.d.ts +23 -0
  1200. package/dist/interface/math/vec3/i32/public.js +24 -0
  1201. package/dist/interface/math/vec3/i32/public.js.map +1 -0
  1202. package/dist/interface/math/vec3/i32/reverse-bits.d.ts +2 -0
  1203. package/dist/interface/math/vec3/i32/reverse-bits.js +8 -0
  1204. package/dist/interface/math/vec3/i32/reverse-bits.js.map +1 -0
  1205. package/dist/interface/math/vec3/i32/scale.d.ts +3 -0
  1206. package/dist/interface/math/vec3/i32/scale.js +7 -0
  1207. package/dist/interface/math/vec3/i32/scale.js.map +1 -0
  1208. package/dist/interface/math/vec3/i32/schema.d.ts +10 -0
  1209. package/dist/interface/math/vec3/i32/schema.js +3 -0
  1210. package/dist/interface/math/vec3/i32/schema.js.map +1 -0
  1211. package/dist/interface/math/vec3/i32/shift-left.d.ts +2 -0
  1212. package/dist/interface/math/vec3/i32/shift-left.js +2 -0
  1213. package/dist/interface/math/vec3/i32/shift-left.js.map +1 -0
  1214. package/dist/interface/math/vec3/i32/shift-right.d.ts +2 -0
  1215. package/dist/interface/math/vec3/i32/shift-right.js +7 -0
  1216. package/dist/interface/math/vec3/i32/shift-right.js.map +1 -0
  1217. package/dist/interface/math/vec3/i32/subtract.d.ts +2 -0
  1218. package/dist/interface/math/vec3/i32/subtract.js +7 -0
  1219. package/dist/interface/math/vec3/i32/subtract.js.map +1 -0
  1220. package/dist/interface/math/vec3/i32/zero.d.ts +2 -0
  1221. package/dist/interface/math/vec3/i32/zero.js +2 -0
  1222. package/dist/interface/math/vec3/i32/zero.js.map +1 -0
  1223. package/dist/interface/math/vec3/index.d.ts +4 -0
  1224. package/dist/interface/math/vec3/index.js +2 -0
  1225. package/dist/interface/math/vec3/index.js.map +1 -0
  1226. package/dist/interface/math/vec3/public.d.ts +4 -0
  1227. package/dist/interface/math/vec3/public.js +5 -0
  1228. package/dist/interface/math/vec3/public.js.map +1 -0
  1229. package/dist/interface/math/vec3/u32/add.d.ts +2 -0
  1230. package/dist/interface/math/vec3/u32/add.js +7 -0
  1231. package/dist/interface/math/vec3/u32/add.js.map +1 -0
  1232. package/dist/interface/math/vec3/u32/bitwise-and.d.ts +2 -0
  1233. package/dist/interface/math/vec3/u32/bitwise-and.js +7 -0
  1234. package/dist/interface/math/vec3/u32/bitwise-and.js.map +1 -0
  1235. package/dist/interface/math/vec3/u32/bitwise-not.d.ts +2 -0
  1236. package/dist/interface/math/vec3/u32/bitwise-not.js +3 -0
  1237. package/dist/interface/math/vec3/u32/bitwise-not.js.map +1 -0
  1238. package/dist/interface/math/vec3/u32/bitwise-or.d.ts +2 -0
  1239. package/dist/interface/math/vec3/u32/bitwise-or.js +7 -0
  1240. package/dist/interface/math/vec3/u32/bitwise-or.js.map +1 -0
  1241. package/dist/interface/math/vec3/u32/bitwise-xor.d.ts +2 -0
  1242. package/dist/interface/math/vec3/u32/bitwise-xor.js +7 -0
  1243. package/dist/interface/math/vec3/u32/bitwise-xor.js.map +1 -0
  1244. package/dist/interface/math/vec3/u32/clamp.d.ts +2 -0
  1245. package/dist/interface/math/vec3/u32/clamp.js +5 -0
  1246. package/dist/interface/math/vec3/u32/clamp.js.map +1 -0
  1247. package/dist/interface/math/vec3/u32/count-leading-zeros.d.ts +2 -0
  1248. package/dist/interface/math/vec3/u32/count-leading-zeros.js +8 -0
  1249. package/dist/interface/math/vec3/u32/count-leading-zeros.js.map +1 -0
  1250. package/dist/interface/math/vec3/u32/count-one-bits.d.ts +2 -0
  1251. package/dist/interface/math/vec3/u32/count-one-bits.js +8 -0
  1252. package/dist/interface/math/vec3/u32/count-one-bits.js.map +1 -0
  1253. package/dist/interface/math/vec3/u32/count-trailing-zeros.d.ts +2 -0
  1254. package/dist/interface/math/vec3/u32/count-trailing-zeros.js +8 -0
  1255. package/dist/interface/math/vec3/u32/count-trailing-zeros.js.map +1 -0
  1256. package/dist/interface/math/vec3/u32/equals.d.ts +2 -0
  1257. package/dist/interface/math/vec3/u32/equals.js +2 -0
  1258. package/dist/interface/math/vec3/u32/equals.js.map +1 -0
  1259. package/dist/interface/math/vec3/u32/max.d.ts +2 -0
  1260. package/dist/interface/math/vec3/u32/max.js +7 -0
  1261. package/dist/interface/math/vec3/u32/max.js.map +1 -0
  1262. package/dist/interface/math/vec3/u32/min.d.ts +2 -0
  1263. package/dist/interface/math/vec3/u32/min.js +7 -0
  1264. package/dist/interface/math/vec3/u32/min.js.map +1 -0
  1265. package/dist/interface/math/vec3/u32/multiply.d.ts +2 -0
  1266. package/dist/interface/math/vec3/u32/multiply.js +7 -0
  1267. package/dist/interface/math/vec3/u32/multiply.js.map +1 -0
  1268. package/dist/interface/math/vec3/u32/negate.d.ts +2 -0
  1269. package/dist/interface/math/vec3/u32/negate.js +2 -0
  1270. package/dist/interface/math/vec3/u32/negate.js.map +1 -0
  1271. package/dist/interface/math/vec3/u32/one.d.ts +2 -0
  1272. package/dist/interface/math/vec3/u32/one.js +2 -0
  1273. package/dist/interface/math/vec3/u32/one.js.map +1 -0
  1274. package/dist/interface/math/vec3/u32/public.d.ts +23 -0
  1275. package/dist/interface/math/vec3/u32/public.js +24 -0
  1276. package/dist/interface/math/vec3/u32/public.js.map +1 -0
  1277. package/dist/interface/math/vec3/u32/reverse-bits.d.ts +2 -0
  1278. package/dist/interface/math/vec3/u32/reverse-bits.js +8 -0
  1279. package/dist/interface/math/vec3/u32/reverse-bits.js.map +1 -0
  1280. package/dist/interface/math/vec3/u32/scale.d.ts +3 -0
  1281. package/dist/interface/math/vec3/u32/scale.js +7 -0
  1282. package/dist/interface/math/vec3/u32/scale.js.map +1 -0
  1283. package/dist/interface/math/vec3/u32/schema.d.ts +10 -0
  1284. package/dist/interface/math/vec3/u32/schema.js +3 -0
  1285. package/dist/interface/math/vec3/u32/schema.js.map +1 -0
  1286. package/dist/interface/math/vec3/u32/shift-left.d.ts +2 -0
  1287. package/dist/interface/math/vec3/u32/shift-left.js +6 -0
  1288. package/dist/interface/math/vec3/u32/shift-left.js.map +1 -0
  1289. package/dist/interface/math/vec3/u32/shift-right.d.ts +2 -0
  1290. package/dist/interface/math/vec3/u32/shift-right.js +7 -0
  1291. package/dist/interface/math/vec3/u32/shift-right.js.map +1 -0
  1292. package/dist/interface/math/vec3/u32/subtract.d.ts +2 -0
  1293. package/dist/interface/math/vec3/u32/subtract.js +7 -0
  1294. package/dist/interface/math/vec3/u32/subtract.js.map +1 -0
  1295. package/dist/interface/math/vec3/u32/u32.d.ts +3 -0
  1296. package/dist/interface/math/vec3/u32/u32.js +2 -0
  1297. package/dist/interface/math/vec3/u32/u32.js.map +1 -0
  1298. package/dist/interface/math/vec3/u32/volume.d.ts +2 -0
  1299. package/dist/interface/math/vec3/u32/volume.js +2 -0
  1300. package/dist/interface/math/vec3/u32/volume.js.map +1 -0
  1301. package/dist/interface/math/vec3/u32/zero.d.ts +2 -0
  1302. package/dist/interface/math/vec3/u32/zero.js +2 -0
  1303. package/dist/interface/math/vec3/u32/zero.js.map +1 -0
  1304. package/dist/interface/math/vec4/f32/abs.d.ts +2 -0
  1305. package/dist/interface/math/vec4/f32/abs.js +3 -0
  1306. package/dist/interface/math/vec4/f32/abs.js.map +1 -0
  1307. package/dist/interface/math/vec4/f32/acos.d.ts +2 -0
  1308. package/dist/interface/math/vec4/f32/acos.js +3 -0
  1309. package/dist/interface/math/vec4/f32/acos.js.map +1 -0
  1310. package/dist/interface/math/vec4/f32/acosh.d.ts +2 -0
  1311. package/dist/interface/math/vec4/f32/acosh.js +3 -0
  1312. package/dist/interface/math/vec4/f32/acosh.js.map +1 -0
  1313. package/dist/interface/math/vec4/f32/add.d.ts +2 -0
  1314. package/dist/interface/math/vec4/f32/add.js +8 -0
  1315. package/dist/interface/math/vec4/f32/add.js.map +1 -0
  1316. package/dist/interface/math/vec4/f32/asin.d.ts +2 -0
  1317. package/dist/interface/math/vec4/f32/asin.js +3 -0
  1318. package/dist/interface/math/vec4/f32/asin.js.map +1 -0
  1319. package/dist/interface/math/vec4/f32/asinh.d.ts +2 -0
  1320. package/dist/interface/math/vec4/f32/asinh.js +3 -0
  1321. package/dist/interface/math/vec4/f32/asinh.js.map +1 -0
  1322. package/dist/interface/math/vec4/f32/atan.d.ts +2 -0
  1323. package/dist/interface/math/vec4/f32/atan.js +3 -0
  1324. package/dist/interface/math/vec4/f32/atan.js.map +1 -0
  1325. package/dist/interface/math/vec4/f32/atanh.d.ts +2 -0
  1326. package/dist/interface/math/vec4/f32/atanh.js +3 -0
  1327. package/dist/interface/math/vec4/f32/atanh.js.map +1 -0
  1328. package/dist/interface/math/vec4/f32/ceil.d.ts +2 -0
  1329. package/dist/interface/math/vec4/f32/ceil.js +3 -0
  1330. package/dist/interface/math/vec4/f32/ceil.js.map +1 -0
  1331. package/dist/interface/math/vec4/f32/clamp.d.ts +2 -0
  1332. package/dist/interface/math/vec4/f32/clamp.js +5 -0
  1333. package/dist/interface/math/vec4/f32/clamp.js.map +1 -0
  1334. package/dist/interface/math/vec4/f32/cos.d.ts +2 -0
  1335. package/dist/interface/math/vec4/f32/cos.js +3 -0
  1336. package/dist/interface/math/vec4/f32/cos.js.map +1 -0
  1337. package/dist/interface/math/vec4/f32/cosh.d.ts +2 -0
  1338. package/dist/interface/math/vec4/f32/cosh.js +3 -0
  1339. package/dist/interface/math/vec4/f32/cosh.js.map +1 -0
  1340. package/dist/interface/math/vec4/f32/distance.d.ts +2 -0
  1341. package/dist/interface/math/vec4/f32/distance.js +5 -0
  1342. package/dist/interface/math/vec4/f32/distance.js.map +1 -0
  1343. package/dist/interface/math/vec4/f32/dot.d.ts +2 -0
  1344. package/dist/interface/math/vec4/f32/dot.js +3 -0
  1345. package/dist/interface/math/vec4/f32/dot.js.map +1 -0
  1346. package/dist/interface/math/vec4/f32/exp.d.ts +2 -0
  1347. package/dist/interface/math/vec4/f32/exp.js +3 -0
  1348. package/dist/interface/math/vec4/f32/exp.js.map +1 -0
  1349. package/dist/interface/math/vec4/f32/exp2.d.ts +2 -0
  1350. package/dist/interface/math/vec4/f32/exp2.js +3 -0
  1351. package/dist/interface/math/vec4/f32/exp2.js.map +1 -0
  1352. package/dist/interface/math/vec4/f32/f32.d.ts +2 -0
  1353. package/dist/interface/math/vec4/f32/f32.js +2 -0
  1354. package/dist/interface/math/vec4/f32/f32.js.map +1 -0
  1355. package/dist/interface/math/vec4/f32/faceforward.d.ts +2 -0
  1356. package/dist/interface/math/vec4/f32/faceforward.js +5 -0
  1357. package/dist/interface/math/vec4/f32/faceforward.js.map +1 -0
  1358. package/dist/interface/math/vec4/f32/floor.d.ts +2 -0
  1359. package/dist/interface/math/vec4/f32/floor.js +3 -0
  1360. package/dist/interface/math/vec4/f32/floor.js.map +1 -0
  1361. package/dist/interface/math/vec4/f32/fract.d.ts +2 -0
  1362. package/dist/interface/math/vec4/f32/fract.js +8 -0
  1363. package/dist/interface/math/vec4/f32/fract.js.map +1 -0
  1364. package/dist/interface/math/vec4/f32/length.d.ts +2 -0
  1365. package/dist/interface/math/vec4/f32/length.js +3 -0
  1366. package/dist/interface/math/vec4/f32/length.js.map +1 -0
  1367. package/dist/interface/math/vec4/f32/log.d.ts +2 -0
  1368. package/dist/interface/math/vec4/f32/log.js +3 -0
  1369. package/dist/interface/math/vec4/f32/log.js.map +1 -0
  1370. package/dist/interface/math/vec4/f32/log2.d.ts +2 -0
  1371. package/dist/interface/math/vec4/f32/log2.js +3 -0
  1372. package/dist/interface/math/vec4/f32/log2.js.map +1 -0
  1373. package/dist/interface/math/vec4/f32/max.d.ts +2 -0
  1374. package/dist/interface/math/vec4/f32/max.js +8 -0
  1375. package/dist/interface/math/vec4/f32/max.js.map +1 -0
  1376. package/dist/interface/math/vec4/f32/min.d.ts +2 -0
  1377. package/dist/interface/math/vec4/f32/min.js +8 -0
  1378. package/dist/interface/math/vec4/f32/min.js.map +1 -0
  1379. package/dist/interface/math/vec4/f32/mix.d.ts +2 -0
  1380. package/dist/interface/math/vec4/f32/mix.js +8 -0
  1381. package/dist/interface/math/vec4/f32/mix.js.map +1 -0
  1382. package/dist/interface/math/vec4/f32/mod.d.ts +2 -0
  1383. package/dist/interface/math/vec4/f32/mod.js +7 -0
  1384. package/dist/interface/math/vec4/f32/mod.js.map +1 -0
  1385. package/dist/interface/math/vec4/f32/modf.d.ts +5 -0
  1386. package/dist/interface/math/vec4/f32/modf.js +5 -0
  1387. package/dist/interface/math/vec4/f32/modf.js.map +1 -0
  1388. package/dist/interface/math/vec4/f32/multiply.d.ts +2 -0
  1389. package/dist/interface/math/vec4/f32/multiply.js +8 -0
  1390. package/dist/interface/math/vec4/f32/multiply.js.map +1 -0
  1391. package/dist/interface/math/vec4/f32/negate.d.ts +2 -0
  1392. package/dist/interface/math/vec4/f32/negate.js +3 -0
  1393. package/dist/interface/math/vec4/f32/negate.js.map +1 -0
  1394. package/dist/interface/math/vec4/f32/normalize.d.ts +2 -0
  1395. package/dist/interface/math/vec4/f32/normalize.js +5 -0
  1396. package/dist/interface/math/vec4/f32/normalize.js.map +1 -0
  1397. package/dist/interface/math/vec4/f32/pow.d.ts +3 -0
  1398. package/dist/interface/math/vec4/f32/pow.js +9 -0
  1399. package/dist/interface/math/vec4/f32/pow.js.map +1 -0
  1400. package/dist/interface/math/vec4/f32/public.d.ts +46 -0
  1401. package/dist/interface/math/vec4/f32/public.js +47 -0
  1402. package/dist/interface/math/vec4/f32/public.js.map +1 -0
  1403. package/dist/interface/math/vec4/f32/reflect.d.ts +2 -0
  1404. package/dist/interface/math/vec4/f32/reflect.js +9 -0
  1405. package/dist/interface/math/vec4/f32/reflect.js.map +1 -0
  1406. package/dist/interface/math/vec4/f32/refract.d.ts +2 -0
  1407. package/dist/interface/math/vec4/f32/refract.js +14 -0
  1408. package/dist/interface/math/vec4/f32/refract.js.map +1 -0
  1409. package/dist/interface/math/vec4/f32/round.d.ts +2 -0
  1410. package/dist/interface/math/vec4/f32/round.js +9 -0
  1411. package/dist/interface/math/vec4/f32/round.js.map +1 -0
  1412. package/dist/interface/math/vec4/f32/scale.d.ts +2 -0
  1413. package/dist/interface/math/vec4/f32/scale.js +3 -0
  1414. package/dist/interface/math/vec4/f32/scale.js.map +1 -0
  1415. package/dist/interface/math/vec4/f32/schema.d.ts +9 -0
  1416. package/dist/interface/math/vec4/f32/schema.js +3 -0
  1417. package/dist/interface/math/vec4/f32/schema.js.map +1 -0
  1418. package/dist/interface/math/vec4/f32/sign.d.ts +2 -0
  1419. package/dist/interface/math/vec4/f32/sign.js +3 -0
  1420. package/dist/interface/math/vec4/f32/sign.js.map +1 -0
  1421. package/dist/interface/math/vec4/f32/sin.d.ts +2 -0
  1422. package/dist/interface/math/vec4/f32/sin.js +3 -0
  1423. package/dist/interface/math/vec4/f32/sin.js.map +1 -0
  1424. package/dist/interface/math/vec4/f32/sinh.d.ts +2 -0
  1425. package/dist/interface/math/vec4/f32/sinh.js +3 -0
  1426. package/dist/interface/math/vec4/f32/sinh.js.map +1 -0
  1427. package/dist/interface/math/vec4/f32/smoothstep.d.ts +2 -0
  1428. package/dist/interface/math/vec4/f32/smoothstep.js +14 -0
  1429. package/dist/interface/math/vec4/f32/smoothstep.js.map +1 -0
  1430. package/dist/interface/math/vec4/f32/sqrt.d.ts +2 -0
  1431. package/dist/interface/math/vec4/f32/sqrt.js +3 -0
  1432. package/dist/interface/math/vec4/f32/sqrt.js.map +1 -0
  1433. package/dist/interface/math/vec4/f32/step.d.ts +2 -0
  1434. package/dist/interface/math/vec4/f32/step.js +8 -0
  1435. package/dist/interface/math/vec4/f32/step.js.map +1 -0
  1436. package/dist/interface/math/vec4/f32/subtract.d.ts +2 -0
  1437. package/dist/interface/math/vec4/f32/subtract.js +8 -0
  1438. package/dist/interface/math/vec4/f32/subtract.js.map +1 -0
  1439. package/dist/interface/math/vec4/f32/tan.d.ts +2 -0
  1440. package/dist/interface/math/vec4/f32/tan.js +3 -0
  1441. package/dist/interface/math/vec4/f32/tan.js.map +1 -0
  1442. package/dist/interface/math/vec4/f32/tanh.d.ts +2 -0
  1443. package/dist/interface/math/vec4/f32/tanh.js +3 -0
  1444. package/dist/interface/math/vec4/f32/tanh.js.map +1 -0
  1445. package/dist/interface/math/vec4/f32/trunc.d.ts +2 -0
  1446. package/dist/interface/math/vec4/f32/trunc.js +3 -0
  1447. package/dist/interface/math/vec4/f32/trunc.js.map +1 -0
  1448. package/dist/interface/math/vec4/i32/abs.d.ts +2 -0
  1449. package/dist/interface/math/vec4/i32/abs.js +8 -0
  1450. package/dist/interface/math/vec4/i32/abs.js.map +1 -0
  1451. package/dist/interface/math/vec4/i32/add.d.ts +2 -0
  1452. package/dist/interface/math/vec4/i32/add.js +8 -0
  1453. package/dist/interface/math/vec4/i32/add.js.map +1 -0
  1454. package/dist/interface/math/vec4/i32/bitwise-and.d.ts +2 -0
  1455. package/dist/interface/math/vec4/i32/bitwise-and.js +8 -0
  1456. package/dist/interface/math/vec4/i32/bitwise-and.js.map +1 -0
  1457. package/dist/interface/math/vec4/i32/bitwise-not.d.ts +2 -0
  1458. package/dist/interface/math/vec4/i32/bitwise-not.js +3 -0
  1459. package/dist/interface/math/vec4/i32/bitwise-not.js.map +1 -0
  1460. package/dist/interface/math/vec4/i32/bitwise-or.d.ts +2 -0
  1461. package/dist/interface/math/vec4/i32/bitwise-or.js +8 -0
  1462. package/dist/interface/math/vec4/i32/bitwise-or.js.map +1 -0
  1463. package/dist/interface/math/vec4/i32/bitwise-xor.d.ts +2 -0
  1464. package/dist/interface/math/vec4/i32/bitwise-xor.js +8 -0
  1465. package/dist/interface/math/vec4/i32/bitwise-xor.js.map +1 -0
  1466. package/dist/interface/math/vec4/i32/clamp.d.ts +2 -0
  1467. package/dist/interface/math/vec4/i32/clamp.js +5 -0
  1468. package/dist/interface/math/vec4/i32/clamp.js.map +1 -0
  1469. package/dist/interface/math/vec4/i32/count-leading-zeros.d.ts +2 -0
  1470. package/dist/interface/math/vec4/i32/count-leading-zeros.js +9 -0
  1471. package/dist/interface/math/vec4/i32/count-leading-zeros.js.map +1 -0
  1472. package/dist/interface/math/vec4/i32/count-one-bits.d.ts +2 -0
  1473. package/dist/interface/math/vec4/i32/count-one-bits.js +9 -0
  1474. package/dist/interface/math/vec4/i32/count-one-bits.js.map +1 -0
  1475. package/dist/interface/math/vec4/i32/count-trailing-zeros.d.ts +2 -0
  1476. package/dist/interface/math/vec4/i32/count-trailing-zeros.js +9 -0
  1477. package/dist/interface/math/vec4/i32/count-trailing-zeros.js.map +1 -0
  1478. package/dist/interface/math/vec4/i32/equals.d.ts +2 -0
  1479. package/dist/interface/math/vec4/i32/equals.js +2 -0
  1480. package/dist/interface/math/vec4/i32/equals.js.map +1 -0
  1481. package/dist/interface/math/vec4/i32/i32.d.ts +3 -0
  1482. package/dist/interface/math/vec4/i32/i32.js +2 -0
  1483. package/dist/interface/math/vec4/i32/i32.js.map +1 -0
  1484. package/dist/interface/math/vec4/i32/max.d.ts +2 -0
  1485. package/dist/interface/math/vec4/i32/max.js +8 -0
  1486. package/dist/interface/math/vec4/i32/max.js.map +1 -0
  1487. package/dist/interface/math/vec4/i32/min.d.ts +2 -0
  1488. package/dist/interface/math/vec4/i32/min.js +8 -0
  1489. package/dist/interface/math/vec4/i32/min.js.map +1 -0
  1490. package/dist/interface/math/vec4/i32/multiply.d.ts +2 -0
  1491. package/dist/interface/math/vec4/i32/multiply.js +8 -0
  1492. package/dist/interface/math/vec4/i32/multiply.js.map +1 -0
  1493. package/dist/interface/math/vec4/i32/negate.d.ts +2 -0
  1494. package/dist/interface/math/vec4/i32/negate.js +8 -0
  1495. package/dist/interface/math/vec4/i32/negate.js.map +1 -0
  1496. package/dist/interface/math/vec4/i32/one.d.ts +2 -0
  1497. package/dist/interface/math/vec4/i32/one.js +2 -0
  1498. package/dist/interface/math/vec4/i32/one.js.map +1 -0
  1499. package/dist/interface/math/vec4/i32/public.d.ts +23 -0
  1500. package/dist/interface/math/vec4/i32/public.js +24 -0
  1501. package/dist/interface/math/vec4/i32/public.js.map +1 -0
  1502. package/dist/interface/math/vec4/i32/reverse-bits.d.ts +2 -0
  1503. package/dist/interface/math/vec4/i32/reverse-bits.js +9 -0
  1504. package/dist/interface/math/vec4/i32/reverse-bits.js.map +1 -0
  1505. package/dist/interface/math/vec4/i32/scale.d.ts +3 -0
  1506. package/dist/interface/math/vec4/i32/scale.js +8 -0
  1507. package/dist/interface/math/vec4/i32/scale.js.map +1 -0
  1508. package/dist/interface/math/vec4/i32/schema.d.ts +10 -0
  1509. package/dist/interface/math/vec4/i32/schema.js +3 -0
  1510. package/dist/interface/math/vec4/i32/schema.js.map +1 -0
  1511. package/dist/interface/math/vec4/i32/shift-left.d.ts +2 -0
  1512. package/dist/interface/math/vec4/i32/shift-left.js +2 -0
  1513. package/dist/interface/math/vec4/i32/shift-left.js.map +1 -0
  1514. package/dist/interface/math/vec4/i32/shift-right.d.ts +2 -0
  1515. package/dist/interface/math/vec4/i32/shift-right.js +8 -0
  1516. package/dist/interface/math/vec4/i32/shift-right.js.map +1 -0
  1517. package/dist/interface/math/vec4/i32/subtract.d.ts +2 -0
  1518. package/dist/interface/math/vec4/i32/subtract.js +8 -0
  1519. package/dist/interface/math/vec4/i32/subtract.js.map +1 -0
  1520. package/dist/interface/math/vec4/i32/zero.d.ts +2 -0
  1521. package/dist/interface/math/vec4/i32/zero.js +2 -0
  1522. package/dist/interface/math/vec4/i32/zero.js.map +1 -0
  1523. package/dist/interface/math/vec4/index.d.ts +4 -0
  1524. package/dist/interface/math/vec4/index.js +2 -0
  1525. package/dist/interface/math/vec4/index.js.map +1 -0
  1526. package/dist/interface/math/vec4/public.d.ts +4 -0
  1527. package/dist/interface/math/vec4/public.js +5 -0
  1528. package/dist/interface/math/vec4/public.js.map +1 -0
  1529. package/dist/interface/math/vec4/u32/add.d.ts +2 -0
  1530. package/dist/interface/math/vec4/u32/add.js +8 -0
  1531. package/dist/interface/math/vec4/u32/add.js.map +1 -0
  1532. package/dist/interface/math/vec4/u32/bitwise-and.d.ts +2 -0
  1533. package/dist/interface/math/vec4/u32/bitwise-and.js +8 -0
  1534. package/dist/interface/math/vec4/u32/bitwise-and.js.map +1 -0
  1535. package/dist/interface/math/vec4/u32/bitwise-not.d.ts +2 -0
  1536. package/dist/interface/math/vec4/u32/bitwise-not.js +3 -0
  1537. package/dist/interface/math/vec4/u32/bitwise-not.js.map +1 -0
  1538. package/dist/interface/math/vec4/u32/bitwise-or.d.ts +2 -0
  1539. package/dist/interface/math/vec4/u32/bitwise-or.js +8 -0
  1540. package/dist/interface/math/vec4/u32/bitwise-or.js.map +1 -0
  1541. package/dist/interface/math/vec4/u32/bitwise-xor.d.ts +2 -0
  1542. package/dist/interface/math/vec4/u32/bitwise-xor.js +8 -0
  1543. package/dist/interface/math/vec4/u32/bitwise-xor.js.map +1 -0
  1544. package/dist/interface/math/vec4/u32/clamp.d.ts +2 -0
  1545. package/dist/interface/math/vec4/u32/clamp.js +5 -0
  1546. package/dist/interface/math/vec4/u32/clamp.js.map +1 -0
  1547. package/dist/interface/math/vec4/u32/count-leading-zeros.d.ts +2 -0
  1548. package/dist/interface/math/vec4/u32/count-leading-zeros.js +9 -0
  1549. package/dist/interface/math/vec4/u32/count-leading-zeros.js.map +1 -0
  1550. package/dist/interface/math/vec4/u32/count-one-bits.d.ts +2 -0
  1551. package/dist/interface/math/vec4/u32/count-one-bits.js +9 -0
  1552. package/dist/interface/math/vec4/u32/count-one-bits.js.map +1 -0
  1553. package/dist/interface/math/vec4/u32/count-trailing-zeros.d.ts +2 -0
  1554. package/dist/interface/math/vec4/u32/count-trailing-zeros.js +9 -0
  1555. package/dist/interface/math/vec4/u32/count-trailing-zeros.js.map +1 -0
  1556. package/dist/interface/math/vec4/u32/equals.d.ts +2 -0
  1557. package/dist/interface/math/vec4/u32/equals.js +2 -0
  1558. package/dist/interface/math/vec4/u32/equals.js.map +1 -0
  1559. package/dist/interface/math/vec4/u32/max.d.ts +2 -0
  1560. package/dist/interface/math/vec4/u32/max.js +8 -0
  1561. package/dist/interface/math/vec4/u32/max.js.map +1 -0
  1562. package/dist/interface/math/vec4/u32/min.d.ts +2 -0
  1563. package/dist/interface/math/vec4/u32/min.js +8 -0
  1564. package/dist/interface/math/vec4/u32/min.js.map +1 -0
  1565. package/dist/interface/math/vec4/u32/multiply.d.ts +2 -0
  1566. package/dist/interface/math/vec4/u32/multiply.js +8 -0
  1567. package/dist/interface/math/vec4/u32/multiply.js.map +1 -0
  1568. package/dist/interface/math/vec4/u32/negate.d.ts +2 -0
  1569. package/dist/interface/math/vec4/u32/negate.js +2 -0
  1570. package/dist/interface/math/vec4/u32/negate.js.map +1 -0
  1571. package/dist/interface/math/vec4/u32/one.d.ts +2 -0
  1572. package/dist/interface/math/vec4/u32/one.js +2 -0
  1573. package/dist/interface/math/vec4/u32/one.js.map +1 -0
  1574. package/dist/interface/math/vec4/u32/public.d.ts +22 -0
  1575. package/dist/interface/math/vec4/u32/public.js +23 -0
  1576. package/dist/interface/math/vec4/u32/public.js.map +1 -0
  1577. package/dist/interface/math/vec4/u32/reverse-bits.d.ts +2 -0
  1578. package/dist/interface/math/vec4/u32/reverse-bits.js +9 -0
  1579. package/dist/interface/math/vec4/u32/reverse-bits.js.map +1 -0
  1580. package/dist/interface/math/vec4/u32/scale.d.ts +3 -0
  1581. package/dist/interface/math/vec4/u32/scale.js +8 -0
  1582. package/dist/interface/math/vec4/u32/scale.js.map +1 -0
  1583. package/dist/interface/math/vec4/u32/schema.d.ts +10 -0
  1584. package/dist/interface/math/vec4/u32/schema.js +3 -0
  1585. package/dist/interface/math/vec4/u32/schema.js.map +1 -0
  1586. package/dist/interface/math/vec4/u32/shift-left.d.ts +2 -0
  1587. package/dist/interface/math/vec4/u32/shift-left.js +7 -0
  1588. package/dist/interface/math/vec4/u32/shift-left.js.map +1 -0
  1589. package/dist/interface/math/vec4/u32/shift-right.d.ts +2 -0
  1590. package/dist/interface/math/vec4/u32/shift-right.js +8 -0
  1591. package/dist/interface/math/vec4/u32/shift-right.js.map +1 -0
  1592. package/dist/interface/math/vec4/u32/subtract.d.ts +2 -0
  1593. package/dist/interface/math/vec4/u32/subtract.js +8 -0
  1594. package/dist/interface/math/vec4/u32/subtract.js.map +1 -0
  1595. package/dist/interface/math/vec4/u32/u32.d.ts +3 -0
  1596. package/dist/interface/math/vec4/u32/u32.js +2 -0
  1597. package/dist/interface/math/vec4/u32/u32.js.map +1 -0
  1598. package/dist/interface/math/vec4/u32/zero.d.ts +2 -0
  1599. package/dist/interface/math/vec4/u32/zero.js +2 -0
  1600. package/dist/interface/math/vec4/u32/zero.js.map +1 -0
  1601. package/dist/interface/platform/platform.d.ts +28 -0
  1602. package/dist/interface/platform/platform.js +2 -0
  1603. package/dist/interface/platform/platform.js.map +1 -0
  1604. package/dist/interface/registry/archetypes.d.ts +7 -0
  1605. package/dist/interface/registry/archetypes.js +22 -0
  1606. package/dist/interface/registry/archetypes.js.map +1 -0
  1607. package/dist/interface/registry/declarations.d.ts +25 -0
  1608. package/dist/interface/registry/declarations.js +107 -0
  1609. package/dist/interface/registry/declarations.js.map +1 -0
  1610. package/dist/interface/registry/finalizer-order.d.ts +6 -0
  1611. package/dist/interface/registry/finalizer-order.js +66 -0
  1612. package/dist/interface/registry/finalizer-order.js.map +1 -0
  1613. package/dist/interface/registry/ids.d.ts +12 -0
  1614. package/dist/interface/registry/ids.js +28 -0
  1615. package/dist/interface/registry/ids.js.map +1 -0
  1616. package/dist/interface/registry/index.d.ts +29 -0
  1617. package/dist/interface/registry/index.js +16 -0
  1618. package/dist/interface/registry/index.js.map +1 -0
  1619. package/dist/interface/registry/indexes.d.ts +38 -0
  1620. package/dist/interface/registry/indexes.js +63 -0
  1621. package/dist/interface/registry/indexes.js.map +1 -0
  1622. package/dist/interface/registry/items.d.ts +43 -0
  1623. package/dist/interface/registry/items.js +108 -0
  1624. package/dist/interface/registry/items.js.map +1 -0
  1625. package/dist/interface/registry/layout.d.ts +59 -0
  1626. package/dist/interface/registry/layout.js +312 -0
  1627. package/dist/interface/registry/layout.js.map +1 -0
  1628. package/dist/interface/registry/names.d.ts +38 -0
  1629. package/dist/interface/registry/names.js +136 -0
  1630. package/dist/interface/registry/names.js.map +1 -0
  1631. package/dist/interface/registry/program.d.ts +36 -0
  1632. package/dist/interface/registry/program.js +96 -0
  1633. package/dist/interface/registry/program.js.map +1 -0
  1634. package/dist/interface/registry/reduction.d.ts +5 -0
  1635. package/dist/interface/registry/reduction.js +5 -0
  1636. package/dist/interface/registry/reduction.js.map +1 -0
  1637. package/dist/interface/registry/schedule.d.ts +32 -0
  1638. package/dist/interface/registry/schedule.js +207 -0
  1639. package/dist/interface/registry/schedule.js.map +1 -0
  1640. package/dist/interface/registry/schemas.d.ts +13 -0
  1641. package/dist/interface/registry/schemas.js +57 -0
  1642. package/dist/interface/registry/schemas.js.map +1 -0
  1643. package/dist/interface/registry/strata.d.ts +29 -0
  1644. package/dist/interface/registry/strata.js +94 -0
  1645. package/dist/interface/registry/strata.js.map +1 -0
  1646. package/dist/interface/registry/threads.d.ts +34 -0
  1647. package/dist/interface/registry/threads.js +52 -0
  1648. package/dist/interface/registry/threads.js.map +1 -0
  1649. package/dist/interface/registry/traits.d.ts +4 -0
  1650. package/dist/interface/registry/traits.js +10 -0
  1651. package/dist/interface/registry/traits.js.map +1 -0
  1652. package/dist/interface/registry/written.d.ts +4 -0
  1653. package/dist/interface/registry/written.js +13 -0
  1654. package/dist/interface/registry/written.js.map +1 -0
  1655. package/dist/interface/report/components.d.ts +38 -0
  1656. package/dist/interface/report/components.js +48 -0
  1657. package/dist/interface/report/components.js.map +1 -0
  1658. package/dist/interface/report/failure.d.ts +29 -0
  1659. package/dist/interface/report/failure.js +2 -0
  1660. package/dist/interface/report/failure.js.map +1 -0
  1661. package/dist/interface/report/index.d.ts +5 -0
  1662. package/dist/interface/report/index.js +6 -0
  1663. package/dist/interface/report/index.js.map +1 -0
  1664. package/dist/interface/report/report.d.ts +12 -0
  1665. package/dist/interface/report/report.js +2 -0
  1666. package/dist/interface/report/report.js.map +1 -0
  1667. package/dist/interface/resource/condition.d.ts +8 -0
  1668. package/dist/interface/resource/condition.js +2 -0
  1669. package/dist/interface/resource/condition.js.map +1 -0
  1670. package/dist/interface/resource/declaration.d.ts +31 -0
  1671. package/dist/interface/resource/declaration.js +2 -0
  1672. package/dist/interface/resource/declaration.js.map +1 -0
  1673. package/dist/interface/resource/index.d.ts +3 -0
  1674. package/dist/interface/resource/index.js +2 -0
  1675. package/dist/interface/resource/index.js.map +1 -0
  1676. package/dist/interface/resource/key.d.ts +2 -0
  1677. package/dist/interface/resource/key.js +2 -0
  1678. package/dist/interface/resource/key.js.map +1 -0
  1679. package/dist/interface/resource/reduction.d.ts +14 -0
  1680. package/dist/interface/resource/reduction.js +2 -0
  1681. package/dist/interface/resource/reduction.js.map +1 -0
  1682. package/dist/interface/resource/register.d.ts +13 -0
  1683. package/dist/interface/resource/register.js +6 -0
  1684. package/dist/interface/resource/register.js.map +1 -0
  1685. package/dist/interface/resource/resource.d.ts +2 -0
  1686. package/dist/interface/resource/resource.js +2 -0
  1687. package/dist/interface/resource/resource.js.map +1 -0
  1688. package/dist/interface/resource/types.d.ts +3 -0
  1689. package/dist/interface/resource/types.js +2 -0
  1690. package/dist/interface/resource/types.js.map +1 -0
  1691. package/dist/interface/resource/value.d.ts +21 -0
  1692. package/dist/interface/resource/value.js +2 -0
  1693. package/dist/interface/resource/value.js.map +1 -0
  1694. package/dist/interface/resource/written.d.ts +3 -0
  1695. package/dist/interface/resource/written.js +2 -0
  1696. package/dist/interface/resource/written.js.map +1 -0
  1697. package/dist/interface/resources/always.d.ts +9 -0
  1698. package/dist/interface/resources/always.js +5 -0
  1699. package/dist/interface/resources/always.js.map +1 -0
  1700. package/dist/interface/resources/cadence.d.ts +21 -0
  1701. package/dist/interface/resources/cadence.js +17 -0
  1702. package/dist/interface/resources/cadence.js.map +1 -0
  1703. package/dist/interface/resources/clock.d.ts +16 -0
  1704. package/dist/interface/resources/clock.js +10 -0
  1705. package/dist/interface/resources/clock.js.map +1 -0
  1706. package/dist/interface/resources/gpu-device.d.ts +13 -0
  1707. package/dist/interface/resources/gpu-device.js +9 -0
  1708. package/dist/interface/resources/gpu-device.js.map +1 -0
  1709. package/dist/interface/resources/index.d.ts +6 -0
  1710. package/dist/interface/resources/index.js +7 -0
  1711. package/dist/interface/resources/index.js.map +1 -0
  1712. package/dist/interface/resources/wake.d.ts +13 -0
  1713. package/dist/interface/resources/wake.js +8 -0
  1714. package/dist/interface/resources/wake.js.map +1 -0
  1715. package/dist/interface/resources/workers.d.ts +9 -0
  1716. package/dist/interface/resources/workers.js +5 -0
  1717. package/dist/interface/resources/workers.js.map +1 -0
  1718. package/dist/interface/rule/create.d.ts +9 -0
  1719. package/dist/interface/rule/create.js +25 -0
  1720. package/dist/interface/rule/create.js.map +1 -0
  1721. package/dist/interface/rule/created.d.ts +7 -0
  1722. package/dist/interface/rule/created.js +2 -0
  1723. package/dist/interface/rule/created.js.map +1 -0
  1724. package/dist/interface/rule/declaration.d.ts +13 -0
  1725. package/dist/interface/rule/declaration.js +2 -0
  1726. package/dist/interface/rule/declaration.js.map +1 -0
  1727. package/dist/interface/rule/index.d.ts +1 -0
  1728. package/dist/interface/rule/index.js +2 -0
  1729. package/dist/interface/rule/index.js.map +1 -0
  1730. package/dist/interface/rule/name.d.ts +6 -0
  1731. package/dist/interface/rule/name.js +2 -0
  1732. package/dist/interface/rule/name.js.map +1 -0
  1733. package/dist/interface/rule/rule.d.ts +2 -0
  1734. package/dist/interface/rule/rule.js +2 -0
  1735. package/dist/interface/rule/rule.js.map +1 -0
  1736. package/dist/interface/schema/is-data.d.ts +19 -0
  1737. package/dist/interface/schema/is-data.js +2 -0
  1738. package/dist/interface/schema/is-data.js.map +1 -0
  1739. package/dist/interface/schema/is-struct.d.ts +28 -0
  1740. package/dist/interface/schema/is-struct.js +2 -0
  1741. package/dist/interface/schema/is-struct.js.map +1 -0
  1742. package/dist/interface/schema/schema.d.ts +151 -0
  1743. package/dist/interface/schema/schema.js +2 -0
  1744. package/dist/interface/schema/schema.js.map +1 -0
  1745. package/dist/interface/system/access.d.ts +71 -0
  1746. package/dist/interface/system/access.js +2 -0
  1747. package/dist/interface/system/access.js.map +1 -0
  1748. package/dist/interface/system/body.d.ts +56 -0
  1749. package/dist/interface/system/body.js +2 -0
  1750. package/dist/interface/system/body.js.map +1 -0
  1751. package/dist/interface/system/check.d.ts +14 -0
  1752. package/dist/interface/system/check.js +256 -0
  1753. package/dist/interface/system/check.js.map +1 -0
  1754. package/dist/interface/system/commands.d.ts +25 -0
  1755. package/dist/interface/system/commands.js +2 -0
  1756. package/dist/interface/system/commands.js.map +1 -0
  1757. package/dist/interface/system/composite-declaration.d.ts +13 -0
  1758. package/dist/interface/system/composite-declaration.js +2 -0
  1759. package/dist/interface/system/composite-declaration.js.map +1 -0
  1760. package/dist/interface/system/composite.d.ts +8 -0
  1761. package/dist/interface/system/composite.js +2 -0
  1762. package/dist/interface/system/composite.js.map +1 -0
  1763. package/dist/interface/system/create.d.ts +212 -0
  1764. package/dist/interface/system/create.js +29 -0
  1765. package/dist/interface/system/create.js.map +1 -0
  1766. package/dist/interface/system/declaration.d.ts +71 -0
  1767. package/dist/interface/system/declaration.js +2 -0
  1768. package/dist/interface/system/declaration.js.map +1 -0
  1769. package/dist/interface/system/definition.d.ts +4 -0
  1770. package/dist/interface/system/definition.js +2 -0
  1771. package/dist/interface/system/definition.js.map +1 -0
  1772. package/dist/interface/system/index.d.ts +3 -0
  1773. package/dist/interface/system/index.js +3 -0
  1774. package/dist/interface/system/index.js.map +1 -0
  1775. package/dist/interface/system/input.d.ts +28 -0
  1776. package/dist/interface/system/input.js +2 -0
  1777. package/dist/interface/system/input.js.map +1 -0
  1778. package/dist/interface/system/leaf.d.ts +12 -0
  1779. package/dist/interface/system/leaf.js +2 -0
  1780. package/dist/interface/system/leaf.js.map +1 -0
  1781. package/dist/interface/system/name.d.ts +6 -0
  1782. package/dist/interface/system/name.js +2 -0
  1783. package/dist/interface/system/name.js.map +1 -0
  1784. package/dist/interface/system/property.d.ts +4 -0
  1785. package/dist/interface/system/property.js +2 -0
  1786. package/dist/interface/system/property.js.map +1 -0
  1787. package/dist/interface/system/render.d.ts +65 -0
  1788. package/dist/interface/system/render.js +32 -0
  1789. package/dist/interface/system/render.js.map +1 -0
  1790. package/dist/interface/system/struct.d.ts +11 -0
  1791. package/dist/interface/system/struct.js +2 -0
  1792. package/dist/interface/system/struct.js.map +1 -0
  1793. package/dist/interface/system/system.d.ts +10 -0
  1794. package/dist/interface/system/system.js +2 -0
  1795. package/dist/interface/system/system.js.map +1 -0
  1796. package/dist/interface/system/threads.d.ts +46 -0
  1797. package/dist/interface/system/threads.js +2 -0
  1798. package/dist/interface/system/threads.js.map +1 -0
  1799. package/dist/interface/system/values.d.ts +73 -0
  1800. package/dist/interface/system/values.js +2 -0
  1801. package/dist/interface/system/values.js.map +1 -0
  1802. package/dist/interface/thread/of.d.ts +9 -0
  1803. package/dist/interface/thread/of.js +2 -0
  1804. package/dist/interface/thread/of.js.map +1 -0
  1805. package/dist/interface/thread/thread.d.ts +12 -0
  1806. package/dist/interface/thread/thread.js +2 -0
  1807. package/dist/interface/thread/thread.js.map +1 -0
  1808. package/dist/interface/trait/index.d.ts +1 -0
  1809. package/dist/interface/trait/index.js +2 -0
  1810. package/dist/interface/trait/index.js.map +1 -0
  1811. package/dist/interface/trait/key.d.ts +4 -0
  1812. package/dist/interface/trait/key.js +2 -0
  1813. package/dist/interface/trait/key.js.map +1 -0
  1814. package/dist/interface/trait/register.d.ts +7 -0
  1815. package/dist/interface/trait/register.js +8 -0
  1816. package/dist/interface/trait/register.js.map +1 -0
  1817. package/dist/interface/trait/required.d.ts +10 -0
  1818. package/dist/interface/trait/required.js +2 -0
  1819. package/dist/interface/trait/required.js.map +1 -0
  1820. package/dist/interface/trait/symbol-keys.d.ts +16 -0
  1821. package/dist/interface/trait/symbol-keys.js +2 -0
  1822. package/dist/interface/trait/symbol-keys.js.map +1 -0
  1823. package/dist/interface/trait/trait.d.ts +2 -0
  1824. package/dist/interface/trait/trait.js +2 -0
  1825. package/dist/interface/trait/trait.js.map +1 -0
  1826. package/dist/interface/trait/types.d.ts +56 -0
  1827. package/dist/interface/trait/types.js +2 -0
  1828. package/dist/interface/trait/types.js.map +1 -0
  1829. package/dist/interface/world/create.d.ts +15 -0
  1830. package/dist/interface/world/create.js +2 -0
  1831. package/dist/interface/world/create.js.map +1 -0
  1832. package/dist/interface/world/filter.d.ts +8 -0
  1833. package/dist/interface/world/filter.js +2 -0
  1834. package/dist/interface/world/filter.js.map +1 -0
  1835. package/dist/interface/world/index.d.ts +1 -0
  1836. package/dist/interface/world/index.js +2 -0
  1837. package/dist/interface/world/index.js.map +1 -0
  1838. package/dist/interface/world/join.d.ts +11 -0
  1839. package/dist/interface/world/join.js +2 -0
  1840. package/dist/interface/world/join.js.map +1 -0
  1841. package/dist/interface/world/world.d.ts +59 -0
  1842. package/dist/interface/world/world.js +2 -0
  1843. package/dist/interface/world/world.js.map +1 -0
  1844. package/package.json +66 -3
  1845. package/src/exports.test.ts +171 -0
  1846. package/src/guide/01-resources.test.ts +44 -0
  1847. package/src/guide/02-entities.test.ts +57 -0
  1848. package/src/guide/03-systems.test.ts +87 -0
  1849. package/src/guide/04-ticks.test.ts +73 -0
  1850. package/src/guide/05-scheduling.test.ts +60 -0
  1851. package/src/guide/06-sync-points.test.ts +59 -0
  1852. package/src/guide/07-change-filters.test.ts +87 -0
  1853. package/src/guide/08-input.test.ts +47 -0
  1854. package/src/guide/09-rules.test.ts +57 -0
  1855. package/src/guide/10-finalizers.test.ts +64 -0
  1856. package/src/guide/11-traits.test.ts +58 -0
  1857. package/src/guide/11-traits.type-test.ts +27 -0
  1858. package/src/guide/13-indexes.test.ts +95 -0
  1859. package/src/guide/CLAUDE.md +34 -0
  1860. package/src/guide/guide.md +551 -0
  1861. package/src/implementation/compiler/access.ts +143 -0
  1862. package/src/implementation/compiler/assign.ts +167 -0
  1863. package/src/implementation/compiler/bind.ts +87 -0
  1864. package/src/implementation/compiler/body-access.ts +332 -0
  1865. package/src/implementation/compiler/booleans.ts +38 -0
  1866. package/src/implementation/compiler/branches.ts +45 -0
  1867. package/src/implementation/compiler/calls.ts +384 -0
  1868. package/src/implementation/compiler/columns.ts +46 -0
  1869. package/src/implementation/compiler/compile-kernel.ts +139 -0
  1870. package/src/implementation/compiler/data.ts +94 -0
  1871. package/src/implementation/compiler/estree.ts +63 -0
  1872. package/src/implementation/compiler/exact.ts +77 -0
  1873. package/src/implementation/compiler/expression.ts +124 -0
  1874. package/src/implementation/compiler/failure.ts +37 -0
  1875. package/src/implementation/compiler/hygiene.test.ts +73 -0
  1876. package/src/implementation/compiler/identify.test.ts +155 -0
  1877. package/src/implementation/compiler/identify.ts +155 -0
  1878. package/src/implementation/compiler/index.ts +1 -0
  1879. package/src/implementation/compiler/ir.ts +101 -0
  1880. package/src/implementation/compiler/kernel-id.ts +33 -0
  1881. package/src/implementation/compiler/key.ts +32 -0
  1882. package/src/implementation/compiler/link.test.ts +70 -0
  1883. package/src/implementation/compiler/link.ts +202 -0
  1884. package/src/implementation/compiler/lists.ts +202 -0
  1885. package/src/implementation/compiler/lookups.ts +120 -0
  1886. package/src/implementation/compiler/math.ts +9 -0
  1887. package/src/implementation/compiler/module-scope.ts +140 -0
  1888. package/src/implementation/compiler/module-value.ts +121 -0
  1889. package/src/implementation/compiler/out.ts +6 -0
  1890. package/src/implementation/compiler/paths.ts +43 -0
  1891. package/src/implementation/compiler/plugin.test.ts +375 -0
  1892. package/src/implementation/compiler/plugin.ts +223 -0
  1893. package/src/implementation/compiler/print.ts +104 -0
  1894. package/src/implementation/compiler/program.ts +232 -0
  1895. package/src/implementation/compiler/scalar.ts +46 -0
  1896. package/src/implementation/compiler/scope.ts +27 -0
  1897. package/src/implementation/compiler/serialize.ts +10 -0
  1898. package/src/implementation/compiler/signature.ts +170 -0
  1899. package/src/implementation/compiler/snapshot.ts +34 -0
  1900. package/src/implementation/compiler/source-map.test.ts +40 -0
  1901. package/src/implementation/compiler/source-map.ts +134 -0
  1902. package/src/implementation/compiler/spawns.ts +114 -0
  1903. package/src/implementation/compiler/stamps.ts +24 -0
  1904. package/src/implementation/compiler/statement.ts +102 -0
  1905. package/src/implementation/compiler/subset.md +82 -0
  1906. package/src/implementation/compiler/terminal.ts +49 -0
  1907. package/src/implementation/compiler/transform.test.ts +1421 -0
  1908. package/src/implementation/compiler/transform.ts +239 -0
  1909. package/src/implementation/compiler/unit.ts +114 -0
  1910. package/src/implementation/compiler/value.ts +60 -0
  1911. package/src/implementation/index.ts +2 -0
  1912. package/src/implementation/world/activate.ts +127 -0
  1913. package/src/implementation/world/archetype.ts +387 -0
  1914. package/src/implementation/world/arrays.test.ts +24 -0
  1915. package/src/implementation/world/arrays.ts +43 -0
  1916. package/src/implementation/world/async-loading.test.ts +101 -0
  1917. package/src/implementation/world/attach-kernel.test.ts +9 -0
  1918. package/src/implementation/world/attach-kernel.ts +24 -0
  1919. package/src/implementation/world/batches.test.ts +129 -0
  1920. package/src/implementation/world/batches.ts +126 -0
  1921. package/src/implementation/world/buffer.ts +145 -0
  1922. package/src/implementation/world/builtins.test.ts +92 -0
  1923. package/src/implementation/world/cascade.ts +144 -0
  1924. package/src/implementation/world/cells.ts +24 -0
  1925. package/src/implementation/world/changes-finalizers.test.ts +40 -0
  1926. package/src/implementation/world/check-kernel.ts +86 -0
  1927. package/src/implementation/world/claims.test.ts +41 -0
  1928. package/src/implementation/world/claims.ts +50 -0
  1929. package/src/implementation/world/closure.test.ts +39 -0
  1930. package/src/implementation/world/closure.ts +40 -0
  1931. package/src/implementation/world/command-ring.ts +474 -0
  1932. package/src/implementation/world/command-rings.cases.ts +45 -0
  1933. package/src/implementation/world/command-rings.fixture.ts +189 -0
  1934. package/src/implementation/world/commands.test.ts +344 -0
  1935. package/src/implementation/world/commands.ts +78 -0
  1936. package/src/implementation/world/composite-input.test.ts +37 -0
  1937. package/src/implementation/world/conditions.test.ts +124 -0
  1938. package/src/implementation/world/create.test.ts +383 -0
  1939. package/src/implementation/world/create.ts +825 -0
  1940. package/src/implementation/world/directories.ts +86 -0
  1941. package/src/implementation/world/directory.test.ts +54 -0
  1942. package/src/implementation/world/dispatch.cases.ts +32 -0
  1943. package/src/implementation/world/dispatch.fixture.ts +172 -0
  1944. package/src/implementation/world/entities.ts +189 -0
  1945. package/src/implementation/world/entity-lookup-workers.cases.ts +18 -0
  1946. package/src/implementation/world/entity-lookup-workers.fixture.ts +109 -0
  1947. package/src/implementation/world/entity-lookups.browser.test.ts +57 -0
  1948. package/src/implementation/world/entity-lookups.test-helper.ts +201 -0
  1949. package/src/implementation/world/entity-lookups.test.ts +112 -0
  1950. package/src/implementation/world/execute.ts +609 -0
  1951. package/src/implementation/world/failures.ts +14 -0
  1952. package/src/implementation/world/finalizers.test.ts +318 -0
  1953. package/src/implementation/world/finalizers.ts +419 -0
  1954. package/src/implementation/world/fixtures.test-helper.ts +19 -0
  1955. package/src/implementation/world/generated-code.md +140 -0
  1956. package/src/implementation/world/gpu.browser.test.ts +693 -0
  1957. package/src/implementation/world/gpu.ts +393 -0
  1958. package/src/implementation/world/holders.ts +68 -0
  1959. package/src/implementation/world/ids.test.ts +68 -0
  1960. package/src/implementation/world/imported-lists.test-helper.ts +22 -0
  1961. package/src/implementation/world/imported-lists.test.ts +45 -0
  1962. package/src/implementation/world/index-build-csp.test.ts +59 -0
  1963. package/src/implementation/world/index-build.cases.ts +20 -0
  1964. package/src/implementation/world/index-build.fixture.ts +125 -0
  1965. package/src/implementation/world/index-build.ts +458 -0
  1966. package/src/implementation/world/index-changed.test.ts +242 -0
  1967. package/src/implementation/world/index-hash.ts +478 -0
  1968. package/src/implementation/world/index-joined.test.ts +293 -0
  1969. package/src/implementation/world/index-kernels.test.ts +204 -0
  1970. package/src/implementation/world/index-keyless.test.ts +278 -0
  1971. package/src/implementation/world/index-keys.ts +271 -0
  1972. package/src/implementation/world/index-lookups-csp.test.ts +44 -0
  1973. package/src/implementation/world/index-lookups.ts +623 -0
  1974. package/src/implementation/world/index-order.test.ts +154 -0
  1975. package/src/implementation/world/index-order.ts +182 -0
  1976. package/src/implementation/world/index-readers.ts +324 -0
  1977. package/src/implementation/world/index-sorted.test.ts +75 -0
  1978. package/src/implementation/world/index-sorted.ts +651 -0
  1979. package/src/implementation/world/index-workers.cases.ts +17 -0
  1980. package/src/implementation/world/index-workers.fixture.ts +191 -0
  1981. package/src/implementation/world/indexes.test.ts +731 -0
  1982. package/src/implementation/world/indexes.ts +1209 -0
  1983. package/src/implementation/world/input.ts +14 -0
  1984. package/src/implementation/world/intrinsics-coverage.test.ts +25 -0
  1985. package/src/implementation/world/intrinsics.browser.test.ts +584 -0
  1986. package/src/implementation/world/intrinsics.ts +40 -0
  1987. package/src/implementation/world/join.test.ts +170 -0
  1988. package/src/implementation/world/join.ts +676 -0
  1989. package/src/implementation/world/join.type-test.ts +27 -0
  1990. package/src/implementation/world/joined-observer.ts +809 -0
  1991. package/src/implementation/world/joining-worker.fixture.ts +69 -0
  1992. package/src/implementation/world/joining.cases.ts +52 -0
  1993. package/src/implementation/world/joining.fixture.ts +138 -0
  1994. package/src/implementation/world/joining.test-helper.ts +92 -0
  1995. package/src/implementation/world/joining.ts +309 -0
  1996. package/src/implementation/world/journal.ts +36 -0
  1997. package/src/implementation/world/kernel-imports-sparks.test-helper.ts +17 -0
  1998. package/src/implementation/world/kernel-imports-steer.test-helper.ts +9 -0
  1999. package/src/implementation/world/kernel-imports.test.ts +73 -0
  2000. package/src/implementation/world/kernel-indexes.ts +165 -0
  2001. package/src/implementation/world/kernel-lookup.test-helper.ts +30 -0
  2002. package/src/implementation/world/kernel-path.test-helper.ts +20 -0
  2003. package/src/implementation/world/kernel-spawns.test.ts +159 -0
  2004. package/src/implementation/world/kernel.ts +244 -0
  2005. package/src/implementation/world/kernels-csp.test.ts +42 -0
  2006. package/src/implementation/world/kernels.test.ts +78 -0
  2007. package/src/implementation/world/kernels.ts +329 -0
  2008. package/src/implementation/world/layout-directory.browser.test.ts +205 -0
  2009. package/src/implementation/world/layout-directory.cases.ts +37 -0
  2010. package/src/implementation/world/layout-directory.fixture.ts +186 -0
  2011. package/src/implementation/world/layout-directory.ts +230 -0
  2012. package/src/implementation/world/lifetime.cases.ts +18 -0
  2013. package/src/implementation/world/lifetime.fixture.ts +77 -0
  2014. package/src/implementation/world/lifetime.test-helper.ts +78 -0
  2015. package/src/implementation/world/lifetime.test.ts +87 -0
  2016. package/src/implementation/world/lists.ts +152 -0
  2017. package/src/implementation/world/lookup-keys.ts +48 -0
  2018. package/src/implementation/world/loop.test.ts +182 -0
  2019. package/src/implementation/world/loop.ts +295 -0
  2020. package/src/implementation/world/memory.test.ts +41 -0
  2021. package/src/implementation/world/memory.ts +89 -0
  2022. package/src/implementation/world/mirror.ts +603 -0
  2023. package/src/implementation/world/move-log.test.ts +326 -0
  2024. package/src/implementation/world/move-log.ts +215 -0
  2025. package/src/implementation/world/names.test.ts +80 -0
  2026. package/src/implementation/world/observe-cases.browser.test.ts +97 -0
  2027. package/src/implementation/world/observe-cases.test.ts +798 -0
  2028. package/src/implementation/world/observe-factories.test.ts +303 -0
  2029. package/src/implementation/world/observe-joined-cases.test.ts +232 -0
  2030. package/src/implementation/world/observe-ticks-cases.test.ts +213 -0
  2031. package/src/implementation/world/observe.test-helper.ts +13 -0
  2032. package/src/implementation/world/observed-workers.cases.ts +12 -0
  2033. package/src/implementation/world/observed-workers.fixture.ts +55 -0
  2034. package/src/implementation/world/observer-contained-worker.fixture.ts +40 -0
  2035. package/src/implementation/world/observer-contained.browser.test.ts +4 -0
  2036. package/src/implementation/world/observer-contained.cases.ts +16 -0
  2037. package/src/implementation/world/observer-contained.fixture.ts +125 -0
  2038. package/src/implementation/world/observer-contained.test-helper.ts +43 -0
  2039. package/src/implementation/world/observer-contained.test.ts +96 -0
  2040. package/src/implementation/world/observer-joined-worker.fixture.ts +80 -0
  2041. package/src/implementation/world/observer-joined.cases.ts +28 -0
  2042. package/src/implementation/world/observer-joined.fixture.ts +286 -0
  2043. package/src/implementation/world/observer-joined.test-helper.ts +180 -0
  2044. package/src/implementation/world/observer-joined.test.ts +350 -0
  2045. package/src/implementation/world/observer.browser.test.ts +73 -0
  2046. package/src/implementation/world/observer.test.ts +301 -0
  2047. package/src/implementation/world/observer.ts +139 -0
  2048. package/src/implementation/world/order.ts +351 -0
  2049. package/src/implementation/world/perf.md +356 -0
  2050. package/src/implementation/world/plan.md +81 -0
  2051. package/src/implementation/world/plan.ts +71 -0
  2052. package/src/implementation/world/platforms.test-helper.ts +67 -0
  2053. package/src/implementation/world/pool-size.cases.ts +23 -0
  2054. package/src/implementation/world/pool-size.fixture.ts +66 -0
  2055. package/src/implementation/world/pool.cases.ts +30 -0
  2056. package/src/implementation/world/pool.fixture.ts +54 -0
  2057. package/src/implementation/world/pool.ts +323 -0
  2058. package/src/implementation/world/port.ts +141 -0
  2059. package/src/implementation/world/ports.cases.ts +37 -0
  2060. package/src/implementation/world/ports.fixture.ts +107 -0
  2061. package/src/implementation/world/ports.type-test.ts +14 -0
  2062. package/src/implementation/world/prepared-lookup.ts +95 -0
  2063. package/src/implementation/world/prepared-spawn.ts +161 -0
  2064. package/src/implementation/world/program.ts +13 -0
  2065. package/src/implementation/world/protocol.ts +127 -0
  2066. package/src/implementation/world/publish.ts +28 -0
  2067. package/src/implementation/world/ranges.ts +44 -0
  2068. package/src/implementation/world/reads.test-helper.ts +29 -0
  2069. package/src/implementation/world/reductions.cases.ts +22 -0
  2070. package/src/implementation/world/reductions.fixture.ts +65 -0
  2071. package/src/implementation/world/reductions.test.ts +279 -0
  2072. package/src/implementation/world/reductions.ts +105 -0
  2073. package/src/implementation/world/reevaluation.test-helper.ts +16 -0
  2074. package/src/implementation/world/reevaluation.test.ts +32 -0
  2075. package/src/implementation/world/register.ts +412 -0
  2076. package/src/implementation/world/remote-finalizers-worker.fixture.ts +44 -0
  2077. package/src/implementation/world/remote-finalizers.cases.ts +24 -0
  2078. package/src/implementation/world/remote-finalizers.fixture.ts +140 -0
  2079. package/src/implementation/world/remote-finalizers.test-helper.ts +160 -0
  2080. package/src/implementation/world/remote-finalizers.test.ts +188 -0
  2081. package/src/implementation/world/remote-objects-worker.fixture.ts +20 -0
  2082. package/src/implementation/world/remote-objects.cases.ts +16 -0
  2083. package/src/implementation/world/remote-objects.fixture.ts +59 -0
  2084. package/src/implementation/world/remote-objects.test-helper.ts +107 -0
  2085. package/src/implementation/world/remote-systems.ts +627 -0
  2086. package/src/implementation/world/remote.test.ts +186 -0
  2087. package/src/implementation/world/remote.ts +125 -0
  2088. package/src/implementation/world/removal-worker.fixture.ts +20 -0
  2089. package/src/implementation/world/removal.cases.ts +16 -0
  2090. package/src/implementation/world/removal.fixture.ts +95 -0
  2091. package/src/implementation/world/remove-joined.test.ts +181 -0
  2092. package/src/implementation/world/remove.test-helper.ts +84 -0
  2093. package/src/implementation/world/remove.test.ts +194 -0
  2094. package/src/implementation/world/reports.test-helper.ts +117 -0
  2095. package/src/implementation/world/reports.test.ts +167 -0
  2096. package/src/implementation/world/reports.ts +203 -0
  2097. package/src/implementation/world/resources.ts +67 -0
  2098. package/src/implementation/world/rows.test.ts +78 -0
  2099. package/src/implementation/world/rows.ts +515 -0
  2100. package/src/implementation/world/rules.test.ts +243 -0
  2101. package/src/implementation/world/runner.ts +1073 -0
  2102. package/src/implementation/world/schedule.test.ts +124 -0
  2103. package/src/implementation/world/semantics.test.ts +100 -0
  2104. package/src/implementation/world/share.test.ts +17 -0
  2105. package/src/implementation/world/sharing.ts +588 -0
  2106. package/src/implementation/world/staging.ts +196 -0
  2107. package/src/implementation/world/state.ts +521 -0
  2108. package/src/implementation/world/stop-lists.ts +308 -0
  2109. package/src/implementation/world/strings.test.ts +200 -0
  2110. package/src/implementation/world/strings.ts +246 -0
  2111. package/src/implementation/world/structure.ts +70 -0
  2112. package/src/implementation/world/synchronize.test.ts +54 -0
  2113. package/src/implementation/world/synchronize.ts +762 -0
  2114. package/src/implementation/world/tail-blocks.ts +74 -0
  2115. package/src/implementation/world/tails-worker.fixture.ts +66 -0
  2116. package/src/implementation/world/tails.cases.ts +44 -0
  2117. package/src/implementation/world/tails.fixture.ts +254 -0
  2118. package/src/implementation/world/tails.test-helper.ts +166 -0
  2119. package/src/implementation/world/tails.test.ts +114 -0
  2120. package/src/implementation/world/tails.ts +477 -0
  2121. package/src/implementation/world/target.test.ts +73 -0
  2122. package/src/implementation/world/terminal.ts +13 -0
  2123. package/src/implementation/world/thread-directory.ts +210 -0
  2124. package/src/implementation/world/thread-finalizers.ts +318 -0
  2125. package/src/implementation/world/thread-indexes.ts +90 -0
  2126. package/src/implementation/world/thread-observer.ts +234 -0
  2127. package/src/implementation/world/thread-systems-worker.fixture.ts +70 -0
  2128. package/src/implementation/world/thread-systems.cases.ts +41 -0
  2129. package/src/implementation/world/thread-systems.fixture.ts +205 -0
  2130. package/src/implementation/world/thread-systems.test-helper.ts +325 -0
  2131. package/src/implementation/world/thread-systems.test.ts +120 -0
  2132. package/src/implementation/world/thread-systems.ts +1200 -0
  2133. package/src/implementation/world/thread-tasks.ts +75 -0
  2134. package/src/implementation/world/threads.browser.test.ts +46 -0
  2135. package/src/implementation/world/threads.test.ts +73 -0
  2136. package/src/implementation/world/ticks.browser.test.ts +44 -0
  2137. package/src/implementation/world/ticks.test.ts +34 -0
  2138. package/src/implementation/world/traits.test.ts +66 -0
  2139. package/src/implementation/world/transfers-worker.fixture.ts +114 -0
  2140. package/src/implementation/world/transfers.cases.ts +30 -0
  2141. package/src/implementation/world/transfers.fixture.ts +147 -0
  2142. package/src/implementation/world/transfers.test-helper.ts +111 -0
  2143. package/src/implementation/world/transfers.test.ts +157 -0
  2144. package/src/implementation/world/transfers.ts +104 -0
  2145. package/src/implementation/world/up-tree.test.ts +152 -0
  2146. package/src/implementation/world/up-workers.cases.ts +13 -0
  2147. package/src/implementation/world/up-workers.fixture.ts +67 -0
  2148. package/src/implementation/world/up.browser.test.ts +78 -0
  2149. package/src/implementation/world/up.test.ts +284 -0
  2150. package/src/implementation/world/up.ts +684 -0
  2151. package/src/implementation/world/wasm-kernels.test.ts +269 -0
  2152. package/src/implementation/world/wasm.test.ts +381 -0
  2153. package/src/implementation/world/wasm.ts +2093 -0
  2154. package/src/implementation/world/wgsl.test.ts +41 -0
  2155. package/src/implementation/world/wgsl.ts +464 -0
  2156. package/src/implementation/world/worker-platform.ts +105 -0
  2157. package/src/implementation/world/worker.ts +560 -0
  2158. package/src/implementation/world/workers.cases.ts +59 -0
  2159. package/src/implementation/world/workers.fixture.ts +261 -0
  2160. package/src/implementation/world/world-host.fixture.ts +10 -0
  2161. package/src/index.ts +16 -0
  2162. package/src/interface/CLAUDE.md +33 -0
  2163. package/src/interface/archetype/archetype.ts +3 -0
  2164. package/src/interface/archetype/archetype.type-test.ts +37 -0
  2165. package/src/interface/archetype/create.test.ts +40 -0
  2166. package/src/interface/archetype/create.ts +12 -0
  2167. package/src/interface/archetype/index.ts +1 -0
  2168. package/src/interface/archetype/values-of.ts +16 -0
  2169. package/src/interface/component/component.ts +4 -0
  2170. package/src/interface/component/declaration.ts +67 -0
  2171. package/src/interface/component/declaration.type-test.ts +87 -0
  2172. package/src/interface/component/index.ts +3 -0
  2173. package/src/interface/component/key.ts +3 -0
  2174. package/src/interface/component/key.type-test.ts +31 -0
  2175. package/src/interface/component/register.test.ts +124 -0
  2176. package/src/interface/component/register.ts +28 -0
  2177. package/src/interface/component/types.ts +6 -0
  2178. package/src/interface/component/value.ts +34 -0
  2179. package/src/interface/component/values.ts +5 -0
  2180. package/src/interface/entity/entity.ts +9 -0
  2181. package/src/interface/entity/index.ts +8 -0
  2182. package/src/interface/finalizer/body.ts +51 -0
  2183. package/src/interface/finalizer/create.test.ts +148 -0
  2184. package/src/interface/finalizer/create.ts +128 -0
  2185. package/src/interface/finalizer/created.ts +21 -0
  2186. package/src/interface/finalizer/declaration.ts +29 -0
  2187. package/src/interface/finalizer/finalizer.ts +7 -0
  2188. package/src/interface/finalizer/index.ts +1 -0
  2189. package/src/interface/finalizer/name.ts +6 -0
  2190. package/src/interface/gpu/accessors.ts +72 -0
  2191. package/src/interface/gpu/gpu.ts +4 -0
  2192. package/src/interface/gpu/gpu.type-test.ts +27 -0
  2193. package/src/interface/gpu/index.ts +2 -0
  2194. package/src/interface/gpu/layout.ts +22 -0
  2195. package/src/interface/gpu/record.ts +5 -0
  2196. package/src/interface/gpu/wgsl.ts +20 -0
  2197. package/src/interface/index.ts +19 -0
  2198. package/src/interface/index.type-test.ts +55 -0
  2199. package/src/interface/indexes/create.test.ts +145 -0
  2200. package/src/interface/indexes/create.ts +80 -0
  2201. package/src/interface/indexes/created.ts +4 -0
  2202. package/src/interface/indexes/declaration.ts +11 -0
  2203. package/src/interface/indexes/index-type.ts +12 -0
  2204. package/src/interface/indexes/index.ts +1 -0
  2205. package/src/interface/indexes/index.type-test.ts +293 -0
  2206. package/src/interface/indexes/name.ts +5 -0
  2207. package/src/interface/math/f32/index.ts +3 -0
  2208. package/src/interface/math/f32/public.ts +1 -0
  2209. package/src/interface/math/f32/round-half-even.ts +5 -0
  2210. package/src/interface/math/f32/schema.ts +3 -0
  2211. package/src/interface/math/i32/index.ts +4 -0
  2212. package/src/interface/math/i32/public.ts +2 -0
  2213. package/src/interface/math/i32/schema.ts +3 -0
  2214. package/src/interface/math/i32/shift-right.ts +3 -0
  2215. package/src/interface/math/index.ts +8 -0
  2216. package/src/interface/math/intrinsic.ts +18 -0
  2217. package/src/interface/math/mat4x4/add.ts +9 -0
  2218. package/src/interface/math/mat4x4/determinant.ts +26 -0
  2219. package/src/interface/math/mat4x4/identity.ts +8 -0
  2220. package/src/interface/math/mat4x4/index.ts +26 -0
  2221. package/src/interface/math/mat4x4/inverse.ts +49 -0
  2222. package/src/interface/math/mat4x4/look-at.test.ts +13 -0
  2223. package/src/interface/math/mat4x4/look-at.ts +26 -0
  2224. package/src/interface/math/mat4x4/multiply-vec3.ts +8 -0
  2225. package/src/interface/math/mat4x4/multiply-vec4.ts +10 -0
  2226. package/src/interface/math/mat4x4/multiply.ts +22 -0
  2227. package/src/interface/math/mat4x4/orthographic.ts +20 -0
  2228. package/src/interface/math/mat4x4/perspective.ts +20 -0
  2229. package/src/interface/math/mat4x4/public.ts +20 -0
  2230. package/src/interface/math/mat4x4/rotation-x.ts +12 -0
  2231. package/src/interface/math/mat4x4/rotation-y.ts +12 -0
  2232. package/src/interface/math/mat4x4/rotation-z.ts +12 -0
  2233. package/src/interface/math/mat4x4/rotation.test.ts +16 -0
  2234. package/src/interface/math/mat4x4/scale.ts +9 -0
  2235. package/src/interface/math/mat4x4/scaling.ts +8 -0
  2236. package/src/interface/math/mat4x4/schema.ts +4 -0
  2237. package/src/interface/math/mat4x4/subtract.ts +9 -0
  2238. package/src/interface/math/mat4x4/translation.ts +8 -0
  2239. package/src/interface/math/mat4x4/transpose.ts +9 -0
  2240. package/src/interface/math/mat4x4/zero.ts +8 -0
  2241. package/src/interface/math/math.type-test.ts +20 -0
  2242. package/src/interface/math/quat/add.ts +9 -0
  2243. package/src/interface/math/quat/align-to.ts +44 -0
  2244. package/src/interface/math/quat/conjugate.ts +3 -0
  2245. package/src/interface/math/quat/distance.ts +5 -0
  2246. package/src/interface/math/quat/dot.ts +5 -0
  2247. package/src/interface/math/quat/from-axis-angle.ts +14 -0
  2248. package/src/interface/math/quat/from-euler.ts +17 -0
  2249. package/src/interface/math/quat/identity.ts +3 -0
  2250. package/src/interface/math/quat/index.ts +3 -0
  2251. package/src/interface/math/quat/inverse.ts +10 -0
  2252. package/src/interface/math/quat/length-squared.ts +3 -0
  2253. package/src/interface/math/quat/length.ts +4 -0
  2254. package/src/interface/math/quat/lerp.ts +8 -0
  2255. package/src/interface/math/quat/look-at.ts +52 -0
  2256. package/src/interface/math/quat/multiply.ts +8 -0
  2257. package/src/interface/math/quat/negate.ts +4 -0
  2258. package/src/interface/math/quat/normalize.ts +8 -0
  2259. package/src/interface/math/quat/public.ts +24 -0
  2260. package/src/interface/math/quat/rotate-vec3.ts +16 -0
  2261. package/src/interface/math/quat/scale.ts +4 -0
  2262. package/src/interface/math/quat/schema.ts +4 -0
  2263. package/src/interface/math/quat/slerp.ts +26 -0
  2264. package/src/interface/math/quat/subtract.ts +9 -0
  2265. package/src/interface/math/quat/to-axis-angle.ts +14 -0
  2266. package/src/interface/math/quat/to-euler.ts +25 -0
  2267. package/src/interface/math/quat/to-mat4.ts +27 -0
  2268. package/src/interface/math/semantics.test.ts +50 -0
  2269. package/src/interface/math/u32/count-leading-zeros.ts +4 -0
  2270. package/src/interface/math/u32/count-one-bits.ts +10 -0
  2271. package/src/interface/math/u32/count-trailing-zeros.ts +7 -0
  2272. package/src/interface/math/u32/index.ts +4 -0
  2273. package/src/interface/math/u32/public.ts +6 -0
  2274. package/src/interface/math/u32/reverse-bits.ts +11 -0
  2275. package/src/interface/math/u32/schema.ts +3 -0
  2276. package/src/interface/math/u32/shift-right.ts +3 -0
  2277. package/src/interface/math/vec2/f32/abs.ts +4 -0
  2278. package/src/interface/math/vec2/f32/acos.ts +4 -0
  2279. package/src/interface/math/vec2/f32/acosh.ts +4 -0
  2280. package/src/interface/math/vec2/f32/add.ts +4 -0
  2281. package/src/interface/math/vec2/f32/asin.ts +4 -0
  2282. package/src/interface/math/vec2/f32/asinh.ts +4 -0
  2283. package/src/interface/math/vec2/f32/atan.ts +4 -0
  2284. package/src/interface/math/vec2/f32/atanh.ts +4 -0
  2285. package/src/interface/math/vec2/f32/ceil.ts +4 -0
  2286. package/src/interface/math/vec2/f32/clamp.ts +6 -0
  2287. package/src/interface/math/vec2/f32/cos.ts +4 -0
  2288. package/src/interface/math/vec2/f32/cosh.ts +4 -0
  2289. package/src/interface/math/vec2/f32/distance.ts +6 -0
  2290. package/src/interface/math/vec2/f32/dot.ts +4 -0
  2291. package/src/interface/math/vec2/f32/equals.ts +3 -0
  2292. package/src/interface/math/vec2/f32/exp.ts +4 -0
  2293. package/src/interface/math/vec2/f32/exp2.ts +4 -0
  2294. package/src/interface/math/vec2/f32/f32.ts +3 -0
  2295. package/src/interface/math/vec2/f32/faceforward.ts +7 -0
  2296. package/src/interface/math/vec2/f32/floor.ts +4 -0
  2297. package/src/interface/math/vec2/f32/fract.ts +4 -0
  2298. package/src/interface/math/vec2/f32/length.ts +4 -0
  2299. package/src/interface/math/vec2/f32/log.ts +4 -0
  2300. package/src/interface/math/vec2/f32/log2.ts +4 -0
  2301. package/src/interface/math/vec2/f32/max.ts +4 -0
  2302. package/src/interface/math/vec2/f32/min.ts +4 -0
  2303. package/src/interface/math/vec2/f32/mix.ts +7 -0
  2304. package/src/interface/math/vec2/f32/mod.ts +3 -0
  2305. package/src/interface/math/vec2/f32/modf.ts +7 -0
  2306. package/src/interface/math/vec2/f32/negate.ts +4 -0
  2307. package/src/interface/math/vec2/f32/normalize.ts +6 -0
  2308. package/src/interface/math/vec2/f32/pow.ts +8 -0
  2309. package/src/interface/math/vec2/f32/public.ts +47 -0
  2310. package/src/interface/math/vec2/f32/reflect.ts +10 -0
  2311. package/src/interface/math/vec2/f32/refract.ts +15 -0
  2312. package/src/interface/math/vec2/f32/round.ts +5 -0
  2313. package/src/interface/math/vec2/f32/scale.ts +4 -0
  2314. package/src/interface/math/vec2/f32/schema.ts +4 -0
  2315. package/src/interface/math/vec2/f32/sign.ts +4 -0
  2316. package/src/interface/math/vec2/f32/sin.ts +4 -0
  2317. package/src/interface/math/vec2/f32/sinh.ts +4 -0
  2318. package/src/interface/math/vec2/f32/smoothstep.ts +8 -0
  2319. package/src/interface/math/vec2/f32/sqrt.ts +4 -0
  2320. package/src/interface/math/vec2/f32/step.ts +7 -0
  2321. package/src/interface/math/vec2/f32/subtract.ts +4 -0
  2322. package/src/interface/math/vec2/f32/tan.ts +4 -0
  2323. package/src/interface/math/vec2/f32/tanh.ts +4 -0
  2324. package/src/interface/math/vec2/f32/trunc.ts +4 -0
  2325. package/src/interface/math/vec2/f32/zero.ts +3 -0
  2326. package/src/interface/math/vec2/i32/abs.ts +4 -0
  2327. package/src/interface/math/vec2/i32/add.ts +4 -0
  2328. package/src/interface/math/vec2/i32/bitwise-and.ts +4 -0
  2329. package/src/interface/math/vec2/i32/bitwise-not.ts +4 -0
  2330. package/src/interface/math/vec2/i32/bitwise-or.ts +4 -0
  2331. package/src/interface/math/vec2/i32/bitwise-xor.ts +4 -0
  2332. package/src/interface/math/vec2/i32/clamp.ts +6 -0
  2333. package/src/interface/math/vec2/i32/count-leading-zeros.ts +8 -0
  2334. package/src/interface/math/vec2/i32/count-one-bits.ts +8 -0
  2335. package/src/interface/math/vec2/i32/count-trailing-zeros.ts +8 -0
  2336. package/src/interface/math/vec2/i32/equals.ts +3 -0
  2337. package/src/interface/math/vec2/i32/i32.ts +4 -0
  2338. package/src/interface/math/vec2/i32/max.ts +4 -0
  2339. package/src/interface/math/vec2/i32/min.ts +4 -0
  2340. package/src/interface/math/vec2/i32/negate.ts +4 -0
  2341. package/src/interface/math/vec2/i32/public.ts +21 -0
  2342. package/src/interface/math/vec2/i32/reverse-bits.ts +5 -0
  2343. package/src/interface/math/vec2/i32/scale.ts +5 -0
  2344. package/src/interface/math/vec2/i32/schema.ts +4 -0
  2345. package/src/interface/math/vec2/i32/shift-left.ts +3 -0
  2346. package/src/interface/math/vec2/i32/shift-right.ts +7 -0
  2347. package/src/interface/math/vec2/i32/subtract.ts +4 -0
  2348. package/src/interface/math/vec2/i32/zero.ts +3 -0
  2349. package/src/interface/math/vec2/index.ts +6 -0
  2350. package/src/interface/math/vec2/public.ts +4 -0
  2351. package/src/interface/math/vec2/u32/add.ts +7 -0
  2352. package/src/interface/math/vec2/u32/bitwise-and.ts +7 -0
  2353. package/src/interface/math/vec2/u32/bitwise-not.ts +4 -0
  2354. package/src/interface/math/vec2/u32/bitwise-or.ts +7 -0
  2355. package/src/interface/math/vec2/u32/bitwise-xor.ts +7 -0
  2356. package/src/interface/math/vec2/u32/clamp.ts +6 -0
  2357. package/src/interface/math/vec2/u32/count-leading-zeros.ts +8 -0
  2358. package/src/interface/math/vec2/u32/count-one-bits.ts +8 -0
  2359. package/src/interface/math/vec2/u32/count-trailing-zeros.ts +8 -0
  2360. package/src/interface/math/vec2/u32/equals.ts +3 -0
  2361. package/src/interface/math/vec2/u32/max.ts +7 -0
  2362. package/src/interface/math/vec2/u32/min.ts +7 -0
  2363. package/src/interface/math/vec2/u32/negate.ts +3 -0
  2364. package/src/interface/math/vec2/u32/public.ts +20 -0
  2365. package/src/interface/math/vec2/u32/reverse-bits.ts +8 -0
  2366. package/src/interface/math/vec2/u32/scale.ts +5 -0
  2367. package/src/interface/math/vec2/u32/schema.ts +4 -0
  2368. package/src/interface/math/vec2/u32/shift-left.ts +3 -0
  2369. package/src/interface/math/vec2/u32/shift-right.ts +7 -0
  2370. package/src/interface/math/vec2/u32/subtract.ts +7 -0
  2371. package/src/interface/math/vec2/u32/u32.ts +4 -0
  2372. package/src/interface/math/vec2/u32/zero.ts +3 -0
  2373. package/src/interface/math/vec3/f32/abs.ts +4 -0
  2374. package/src/interface/math/vec3/f32/acos.ts +4 -0
  2375. package/src/interface/math/vec3/f32/acosh.ts +4 -0
  2376. package/src/interface/math/vec3/f32/add.ts +8 -0
  2377. package/src/interface/math/vec3/f32/asin.ts +4 -0
  2378. package/src/interface/math/vec3/f32/asinh.ts +4 -0
  2379. package/src/interface/math/vec3/f32/atan.ts +4 -0
  2380. package/src/interface/math/vec3/f32/atanh.ts +4 -0
  2381. package/src/interface/math/vec3/f32/ceil.ts +4 -0
  2382. package/src/interface/math/vec3/f32/clamp.ts +6 -0
  2383. package/src/interface/math/vec3/f32/cos.ts +4 -0
  2384. package/src/interface/math/vec3/f32/cosh.ts +4 -0
  2385. package/src/interface/math/vec3/f32/cross.ts +8 -0
  2386. package/src/interface/math/vec3/f32/distance-squared.ts +8 -0
  2387. package/src/interface/math/vec3/f32/distance.ts +6 -0
  2388. package/src/interface/math/vec3/f32/dot.ts +5 -0
  2389. package/src/interface/math/vec3/f32/equals.ts +3 -0
  2390. package/src/interface/math/vec3/f32/exp.ts +4 -0
  2391. package/src/interface/math/vec3/f32/exp2.ts +4 -0
  2392. package/src/interface/math/vec3/f32/f32.ts +3 -0
  2393. package/src/interface/math/vec3/f32/faceforward.ts +7 -0
  2394. package/src/interface/math/vec3/f32/floor.ts +4 -0
  2395. package/src/interface/math/vec3/f32/fract.ts +8 -0
  2396. package/src/interface/math/vec3/f32/length-squared.ts +4 -0
  2397. package/src/interface/math/vec3/f32/length.ts +4 -0
  2398. package/src/interface/math/vec3/f32/log.ts +4 -0
  2399. package/src/interface/math/vec3/f32/log2.ts +4 -0
  2400. package/src/interface/math/vec3/f32/max.ts +8 -0
  2401. package/src/interface/math/vec3/f32/min.ts +8 -0
  2402. package/src/interface/math/vec3/f32/mix.ts +8 -0
  2403. package/src/interface/math/vec3/f32/mod.ts +7 -0
  2404. package/src/interface/math/vec3/f32/modf.ts +7 -0
  2405. package/src/interface/math/vec3/f32/multiply.ts +11 -0
  2406. package/src/interface/math/vec3/f32/negate.ts +4 -0
  2407. package/src/interface/math/vec3/f32/normalize.ts +6 -0
  2408. package/src/interface/math/vec3/f32/one.ts +3 -0
  2409. package/src/interface/math/vec3/f32/pow.ts +9 -0
  2410. package/src/interface/math/vec3/f32/public.ts +53 -0
  2411. package/src/interface/math/vec3/f32/random.ts +5 -0
  2412. package/src/interface/math/vec3/f32/reflect.ts +10 -0
  2413. package/src/interface/math/vec3/f32/refract.ts +15 -0
  2414. package/src/interface/math/vec3/f32/round.ts +9 -0
  2415. package/src/interface/math/vec3/f32/scale.ts +4 -0
  2416. package/src/interface/math/vec3/f32/schema.ts +4 -0
  2417. package/src/interface/math/vec3/f32/sign.ts +4 -0
  2418. package/src/interface/math/vec3/f32/sin.ts +4 -0
  2419. package/src/interface/math/vec3/f32/sinh.ts +4 -0
  2420. package/src/interface/math/vec3/f32/smoothstep.ts +13 -0
  2421. package/src/interface/math/vec3/f32/sqrt.ts +4 -0
  2422. package/src/interface/math/vec3/f32/step.ts +8 -0
  2423. package/src/interface/math/vec3/f32/subtract.ts +8 -0
  2424. package/src/interface/math/vec3/f32/tan.ts +4 -0
  2425. package/src/interface/math/vec3/f32/tanh.ts +4 -0
  2426. package/src/interface/math/vec3/f32/trunc.ts +4 -0
  2427. package/src/interface/math/vec3/f32/zero.ts +3 -0
  2428. package/src/interface/math/vec3/i32/abs.ts +8 -0
  2429. package/src/interface/math/vec3/i32/add.ts +8 -0
  2430. package/src/interface/math/vec3/i32/bitwise-and.ts +8 -0
  2431. package/src/interface/math/vec3/i32/bitwise-not.ts +4 -0
  2432. package/src/interface/math/vec3/i32/bitwise-or.ts +8 -0
  2433. package/src/interface/math/vec3/i32/bitwise-xor.ts +8 -0
  2434. package/src/interface/math/vec3/i32/clamp.ts +6 -0
  2435. package/src/interface/math/vec3/i32/count-leading-zeros.ts +9 -0
  2436. package/src/interface/math/vec3/i32/count-one-bits.ts +9 -0
  2437. package/src/interface/math/vec3/i32/count-trailing-zeros.ts +9 -0
  2438. package/src/interface/math/vec3/i32/equals.ts +3 -0
  2439. package/src/interface/math/vec3/i32/i32.ts +4 -0
  2440. package/src/interface/math/vec3/i32/max.ts +8 -0
  2441. package/src/interface/math/vec3/i32/min.ts +8 -0
  2442. package/src/interface/math/vec3/i32/multiply.ts +8 -0
  2443. package/src/interface/math/vec3/i32/negate.ts +8 -0
  2444. package/src/interface/math/vec3/i32/one.ts +3 -0
  2445. package/src/interface/math/vec3/i32/public.ts +23 -0
  2446. package/src/interface/math/vec3/i32/reverse-bits.ts +9 -0
  2447. package/src/interface/math/vec3/i32/scale.ts +9 -0
  2448. package/src/interface/math/vec3/i32/schema.ts +4 -0
  2449. package/src/interface/math/vec3/i32/shift-left.ts +3 -0
  2450. package/src/interface/math/vec3/i32/shift-right.ts +8 -0
  2451. package/src/interface/math/vec3/i32/subtract.ts +8 -0
  2452. package/src/interface/math/vec3/i32/zero.ts +3 -0
  2453. package/src/interface/math/vec3/index.ts +6 -0
  2454. package/src/interface/math/vec3/public.ts +4 -0
  2455. package/src/interface/math/vec3/u32/add.ts +8 -0
  2456. package/src/interface/math/vec3/u32/bitwise-and.ts +8 -0
  2457. package/src/interface/math/vec3/u32/bitwise-not.ts +4 -0
  2458. package/src/interface/math/vec3/u32/bitwise-or.ts +8 -0
  2459. package/src/interface/math/vec3/u32/bitwise-xor.ts +8 -0
  2460. package/src/interface/math/vec3/u32/clamp.ts +6 -0
  2461. package/src/interface/math/vec3/u32/count-leading-zeros.ts +9 -0
  2462. package/src/interface/math/vec3/u32/count-one-bits.ts +9 -0
  2463. package/src/interface/math/vec3/u32/count-trailing-zeros.ts +9 -0
  2464. package/src/interface/math/vec3/u32/equals.ts +3 -0
  2465. package/src/interface/math/vec3/u32/max.ts +8 -0
  2466. package/src/interface/math/vec3/u32/min.ts +8 -0
  2467. package/src/interface/math/vec3/u32/multiply.ts +8 -0
  2468. package/src/interface/math/vec3/u32/negate.ts +3 -0
  2469. package/src/interface/math/vec3/u32/one.ts +3 -0
  2470. package/src/interface/math/vec3/u32/public.ts +23 -0
  2471. package/src/interface/math/vec3/u32/reverse-bits.ts +9 -0
  2472. package/src/interface/math/vec3/u32/scale.ts +9 -0
  2473. package/src/interface/math/vec3/u32/schema.ts +4 -0
  2474. package/src/interface/math/vec3/u32/shift-left.ts +7 -0
  2475. package/src/interface/math/vec3/u32/shift-right.ts +8 -0
  2476. package/src/interface/math/vec3/u32/subtract.ts +8 -0
  2477. package/src/interface/math/vec3/u32/u32.ts +4 -0
  2478. package/src/interface/math/vec3/u32/volume.ts +3 -0
  2479. package/src/interface/math/vec3/u32/zero.ts +3 -0
  2480. package/src/interface/math/vec4/f32/abs.ts +4 -0
  2481. package/src/interface/math/vec4/f32/acos.ts +4 -0
  2482. package/src/interface/math/vec4/f32/acosh.ts +4 -0
  2483. package/src/interface/math/vec4/f32/add.ts +9 -0
  2484. package/src/interface/math/vec4/f32/asin.ts +4 -0
  2485. package/src/interface/math/vec4/f32/asinh.ts +4 -0
  2486. package/src/interface/math/vec4/f32/atan.ts +4 -0
  2487. package/src/interface/math/vec4/f32/atanh.ts +4 -0
  2488. package/src/interface/math/vec4/f32/ceil.ts +4 -0
  2489. package/src/interface/math/vec4/f32/clamp.ts +6 -0
  2490. package/src/interface/math/vec4/f32/cos.ts +4 -0
  2491. package/src/interface/math/vec4/f32/cosh.ts +4 -0
  2492. package/src/interface/math/vec4/f32/distance.ts +6 -0
  2493. package/src/interface/math/vec4/f32/dot.ts +5 -0
  2494. package/src/interface/math/vec4/f32/exp.ts +4 -0
  2495. package/src/interface/math/vec4/f32/exp2.ts +4 -0
  2496. package/src/interface/math/vec4/f32/f32.ts +3 -0
  2497. package/src/interface/math/vec4/f32/faceforward.ts +7 -0
  2498. package/src/interface/math/vec4/f32/floor.ts +4 -0
  2499. package/src/interface/math/vec4/f32/fract.ts +9 -0
  2500. package/src/interface/math/vec4/f32/length.ts +4 -0
  2501. package/src/interface/math/vec4/f32/log.ts +4 -0
  2502. package/src/interface/math/vec4/f32/log2.ts +4 -0
  2503. package/src/interface/math/vec4/f32/max.ts +9 -0
  2504. package/src/interface/math/vec4/f32/min.ts +9 -0
  2505. package/src/interface/math/vec4/f32/mix.ts +9 -0
  2506. package/src/interface/math/vec4/f32/mod.ts +8 -0
  2507. package/src/interface/math/vec4/f32/modf.ts +7 -0
  2508. package/src/interface/math/vec4/f32/multiply.ts +9 -0
  2509. package/src/interface/math/vec4/f32/negate.ts +4 -0
  2510. package/src/interface/math/vec4/f32/normalize.ts +6 -0
  2511. package/src/interface/math/vec4/f32/pow.ts +10 -0
  2512. package/src/interface/math/vec4/f32/public.ts +46 -0
  2513. package/src/interface/math/vec4/f32/reflect.ts +10 -0
  2514. package/src/interface/math/vec4/f32/refract.ts +15 -0
  2515. package/src/interface/math/vec4/f32/round.ts +10 -0
  2516. package/src/interface/math/vec4/f32/scale.ts +4 -0
  2517. package/src/interface/math/vec4/f32/schema.ts +4 -0
  2518. package/src/interface/math/vec4/f32/sign.ts +4 -0
  2519. package/src/interface/math/vec4/f32/sin.ts +4 -0
  2520. package/src/interface/math/vec4/f32/sinh.ts +4 -0
  2521. package/src/interface/math/vec4/f32/smoothstep.ts +15 -0
  2522. package/src/interface/math/vec4/f32/sqrt.ts +4 -0
  2523. package/src/interface/math/vec4/f32/step.ts +9 -0
  2524. package/src/interface/math/vec4/f32/subtract.ts +9 -0
  2525. package/src/interface/math/vec4/f32/tan.ts +4 -0
  2526. package/src/interface/math/vec4/f32/tanh.ts +4 -0
  2527. package/src/interface/math/vec4/f32/trunc.ts +4 -0
  2528. package/src/interface/math/vec4/i32/abs.ts +9 -0
  2529. package/src/interface/math/vec4/i32/add.ts +9 -0
  2530. package/src/interface/math/vec4/i32/bitwise-and.ts +9 -0
  2531. package/src/interface/math/vec4/i32/bitwise-not.ts +4 -0
  2532. package/src/interface/math/vec4/i32/bitwise-or.ts +9 -0
  2533. package/src/interface/math/vec4/i32/bitwise-xor.ts +9 -0
  2534. package/src/interface/math/vec4/i32/clamp.ts +6 -0
  2535. package/src/interface/math/vec4/i32/count-leading-zeros.ts +10 -0
  2536. package/src/interface/math/vec4/i32/count-one-bits.ts +10 -0
  2537. package/src/interface/math/vec4/i32/count-trailing-zeros.ts +10 -0
  2538. package/src/interface/math/vec4/i32/equals.ts +4 -0
  2539. package/src/interface/math/vec4/i32/i32.ts +4 -0
  2540. package/src/interface/math/vec4/i32/max.ts +9 -0
  2541. package/src/interface/math/vec4/i32/min.ts +9 -0
  2542. package/src/interface/math/vec4/i32/multiply.ts +9 -0
  2543. package/src/interface/math/vec4/i32/negate.ts +9 -0
  2544. package/src/interface/math/vec4/i32/one.ts +3 -0
  2545. package/src/interface/math/vec4/i32/public.ts +23 -0
  2546. package/src/interface/math/vec4/i32/reverse-bits.ts +10 -0
  2547. package/src/interface/math/vec4/i32/scale.ts +10 -0
  2548. package/src/interface/math/vec4/i32/schema.ts +4 -0
  2549. package/src/interface/math/vec4/i32/shift-left.ts +3 -0
  2550. package/src/interface/math/vec4/i32/shift-right.ts +9 -0
  2551. package/src/interface/math/vec4/i32/subtract.ts +9 -0
  2552. package/src/interface/math/vec4/i32/zero.ts +3 -0
  2553. package/src/interface/math/vec4/index.ts +6 -0
  2554. package/src/interface/math/vec4/public.ts +4 -0
  2555. package/src/interface/math/vec4/u32/add.ts +9 -0
  2556. package/src/interface/math/vec4/u32/bitwise-and.ts +9 -0
  2557. package/src/interface/math/vec4/u32/bitwise-not.ts +4 -0
  2558. package/src/interface/math/vec4/u32/bitwise-or.ts +9 -0
  2559. package/src/interface/math/vec4/u32/bitwise-xor.ts +9 -0
  2560. package/src/interface/math/vec4/u32/clamp.ts +6 -0
  2561. package/src/interface/math/vec4/u32/count-leading-zeros.ts +10 -0
  2562. package/src/interface/math/vec4/u32/count-one-bits.ts +10 -0
  2563. package/src/interface/math/vec4/u32/count-trailing-zeros.ts +10 -0
  2564. package/src/interface/math/vec4/u32/equals.ts +4 -0
  2565. package/src/interface/math/vec4/u32/max.ts +9 -0
  2566. package/src/interface/math/vec4/u32/min.ts +9 -0
  2567. package/src/interface/math/vec4/u32/multiply.ts +9 -0
  2568. package/src/interface/math/vec4/u32/negate.ts +3 -0
  2569. package/src/interface/math/vec4/u32/one.ts +3 -0
  2570. package/src/interface/math/vec4/u32/public.ts +22 -0
  2571. package/src/interface/math/vec4/u32/reverse-bits.ts +10 -0
  2572. package/src/interface/math/vec4/u32/scale.ts +10 -0
  2573. package/src/interface/math/vec4/u32/schema.ts +4 -0
  2574. package/src/interface/math/vec4/u32/shift-left.ts +8 -0
  2575. package/src/interface/math/vec4/u32/shift-right.ts +9 -0
  2576. package/src/interface/math/vec4/u32/subtract.ts +9 -0
  2577. package/src/interface/math/vec4/u32/u32.ts +4 -0
  2578. package/src/interface/math/vec4/u32/zero.ts +3 -0
  2579. package/src/interface/platform/platform.ts +35 -0
  2580. package/src/interface/registry/archetypes.ts +23 -0
  2581. package/src/interface/registry/declarations.ts +102 -0
  2582. package/src/interface/registry/finalizer-order.ts +52 -0
  2583. package/src/interface/registry/ids.test-helper.ts +14 -0
  2584. package/src/interface/registry/ids.test.ts +124 -0
  2585. package/src/interface/registry/ids.ts +30 -0
  2586. package/src/interface/registry/index.ts +29 -0
  2587. package/src/interface/registry/indexes.ts +73 -0
  2588. package/src/interface/registry/items.ts +125 -0
  2589. package/src/interface/registry/layout.test.ts +86 -0
  2590. package/src/interface/registry/layout.ts +364 -0
  2591. package/src/interface/registry/names.test.ts +75 -0
  2592. package/src/interface/registry/names.ts +154 -0
  2593. package/src/interface/registry/program.ts +111 -0
  2594. package/src/interface/registry/reduction.ts +7 -0
  2595. package/src/interface/registry/schedule.ts +215 -0
  2596. package/src/interface/registry/schemas.ts +61 -0
  2597. package/src/interface/registry/strata.ts +93 -0
  2598. package/src/interface/registry/threads.ts +73 -0
  2599. package/src/interface/registry/traits.ts +12 -0
  2600. package/src/interface/registry/written.ts +14 -0
  2601. package/src/interface/report/components.ts +69 -0
  2602. package/src/interface/report/failure.ts +26 -0
  2603. package/src/interface/report/index.ts +8 -0
  2604. package/src/interface/report/report.ts +11 -0
  2605. package/src/interface/report/report.type-test.ts +63 -0
  2606. package/src/interface/resource/condition.ts +8 -0
  2607. package/src/interface/resource/declaration.ts +29 -0
  2608. package/src/interface/resource/declaration.type-test.ts +89 -0
  2609. package/src/interface/resource/index.ts +3 -0
  2610. package/src/interface/resource/key.ts +3 -0
  2611. package/src/interface/resource/reduction.ts +11 -0
  2612. package/src/interface/resource/register.test.ts +107 -0
  2613. package/src/interface/resource/register.ts +18 -0
  2614. package/src/interface/resource/resource.ts +4 -0
  2615. package/src/interface/resource/types.ts +3 -0
  2616. package/src/interface/resource/value.ts +20 -0
  2617. package/src/interface/resource/written.ts +4 -0
  2618. package/src/interface/resources/always.ts +12 -0
  2619. package/src/interface/resources/cadence.ts +27 -0
  2620. package/src/interface/resources/clock.ts +17 -0
  2621. package/src/interface/resources/gpu-device.ts +16 -0
  2622. package/src/interface/resources/index.ts +6 -0
  2623. package/src/interface/resources/wake.ts +15 -0
  2624. package/src/interface/resources/workers.ts +12 -0
  2625. package/src/interface/rule/create.ts +25 -0
  2626. package/src/interface/rule/created.ts +4 -0
  2627. package/src/interface/rule/declaration.ts +11 -0
  2628. package/src/interface/rule/index.ts +1 -0
  2629. package/src/interface/rule/name.ts +6 -0
  2630. package/src/interface/rule/rule.ts +3 -0
  2631. package/src/interface/rule/rule.type-test.ts +117 -0
  2632. package/src/interface/schema/is-data.ts +25 -0
  2633. package/src/interface/schema/is-struct.ts +24 -0
  2634. package/src/interface/schema/schema.ts +168 -0
  2635. package/src/interface/schema/schema.type-test.ts +153 -0
  2636. package/src/interface/schema/schemas.type-test.ts +12 -0
  2637. package/src/interface/system/access.ts +67 -0
  2638. package/src/interface/system/body.ts +49 -0
  2639. package/src/interface/system/check.ts +227 -0
  2640. package/src/interface/system/commands.ts +26 -0
  2641. package/src/interface/system/commands.type-test.ts +93 -0
  2642. package/src/interface/system/composite-declaration.ts +14 -0
  2643. package/src/interface/system/composite-input.type-test.ts +63 -0
  2644. package/src/interface/system/composite.ts +5 -0
  2645. package/src/interface/system/conditions.type-test.ts +68 -0
  2646. package/src/interface/system/create.test.ts +230 -0
  2647. package/src/interface/system/create.ts +181 -0
  2648. package/src/interface/system/declaration.ts +65 -0
  2649. package/src/interface/system/definition.ts +5 -0
  2650. package/src/interface/system/index.ts +3 -0
  2651. package/src/interface/system/input.ts +28 -0
  2652. package/src/interface/system/leaf.ts +13 -0
  2653. package/src/interface/system/name.ts +6 -0
  2654. package/src/interface/system/property.ts +4 -0
  2655. package/src/interface/system/render.ts +81 -0
  2656. package/src/interface/system/struct.ts +9 -0
  2657. package/src/interface/system/system.ts +9 -0
  2658. package/src/interface/system/system.type-test.ts +460 -0
  2659. package/src/interface/system/threads.ts +46 -0
  2660. package/src/interface/system/threads.type-test.ts +114 -0
  2661. package/src/interface/system/up.type-test.ts +80 -0
  2662. package/src/interface/system/values.ts +70 -0
  2663. package/src/interface/thread/of.ts +8 -0
  2664. package/src/interface/thread/thread.ts +13 -0
  2665. package/src/interface/thread/thread.type-test.ts +140 -0
  2666. package/src/interface/trait/index.ts +1 -0
  2667. package/src/interface/trait/key.ts +6 -0
  2668. package/src/interface/trait/register.ts +9 -0
  2669. package/src/interface/trait/required.ts +7 -0
  2670. package/src/interface/trait/symbol-keys.ts +19 -0
  2671. package/src/interface/trait/symbol-keys.type-test.ts +14 -0
  2672. package/src/interface/trait/trait.ts +3 -0
  2673. package/src/interface/trait/trait.type-test.ts +158 -0
  2674. package/src/interface/trait/types.ts +56 -0
  2675. package/src/interface/tsconfig.json +28 -0
  2676. package/src/interface/world/create.ts +15 -0
  2677. package/src/interface/world/filter.ts +9 -0
  2678. package/src/interface/world/index.ts +2 -0
  2679. package/src/interface/world/join.ts +10 -0
  2680. package/src/interface/world/loop.type-test.ts +67 -0
  2681. package/src/interface/world/share.type-test.ts +25 -0
  2682. package/src/interface/world/world.ts +58 -0
  2683. package/src/interface/world/world.type-test.ts +81 -0
  2684. package/src/observe/compare.ts +86 -0
  2685. package/src/observe/entity.ts +224 -0
  2686. package/src/observe/index.ts +1 -0
  2687. package/src/observe/members.ts +42 -0
  2688. package/src/observe/observe.ts +24 -0
  2689. package/src/observe/observe.type-test.ts +88 -0
  2690. package/src/observe/plans.ts +272 -0
  2691. package/src/observe/query.ts +26 -0
  2692. package/src/observe/resource.ts +80 -0
  2693. package/src/observe/select.ts +648 -0
  2694. package/src/observe/to-promise.ts +22 -0
  2695. package/src/observe/tsconfig.json +31 -0
  2696. package/src/observe/values.ts +9 -0
  2697. package/src/observe/world-state.ts +414 -0
  2698. package/src/observe-imports.test.ts +48 -0
  2699. package/src/perftest/benchmark.ts +106 -0
  2700. package/src/perftest/benchmarks.ts +692 -0
  2701. package/src/perftest/finalized.ts +122 -0
  2702. package/src/perftest/flat.ts +67 -0
  2703. package/src/perftest/growth.ts +55 -0
  2704. package/src/perftest/handoff.ts +154 -0
  2705. package/src/perftest/hierarchy.ts +132 -0
  2706. package/src/perftest/indexes.ts +691 -0
  2707. package/src/perftest/joined.ts +95 -0
  2708. package/src/perftest/keys.ts +100 -0
  2709. package/src/perftest/log.ts +126 -0
  2710. package/src/perftest/loop.ts +49 -0
  2711. package/src/perftest/observed-gpu.ts +58 -0
  2712. package/src/perftest/observed.ts +298 -0
  2713. package/src/perftest/observer.ts +57 -0
  2714. package/src/perftest/particles.ts +76 -0
  2715. package/src/perftest/placed.ts +177 -0
  2716. package/src/perftest/reads.ts +210 -0
  2717. package/src/perftest/remote.ts +364 -0
  2718. package/src/perftest/run.ts +43 -0
  2719. package/src/perftest/strings.ts +133 -0
  2720. package/src/perftest/structural.ts +164 -0
  2721. package/src/perftest/suite.perf-browser-test.ts +133 -0
  2722. package/src/perftest/suite.perf-test.ts +7 -0
  2723. package/src/perftest/suite.ts +232 -0
  2724. package/src/perftest/systems.ts +134 -0
  2725. package/src/perftest/tails.ts +306 -0
  2726. package/src/perftest/transfers.ts +93 -0
  2727. package/src/perftest/uploads.ts +82 -0
  2728. package/src/perftest/values.ts +111 -0
  2729. package/src/perftest/wake.ts +40 -0
  2730. package/src/samples/particles/build.test.ts +23 -0
  2731. package/src/samples/particles/gpu/main.ts +96 -0
  2732. package/src/samples/particles/gpu/particles.ts +138 -0
  2733. package/src/samples/particles/index.html +22 -0
  2734. package/src/samples/particles/particles.test.ts +31 -0
  2735. package/src/samples/particles/particles.ts +85 -0
  2736. package/src/samples/particles/particles.type-test.ts +7 -0
  2737. package/src/samples/todo/README.md +174 -0
  2738. package/src/samples/todo/app/app.browser.test.ts +215 -0
  2739. package/src/samples/todo/app/app.ts +30 -0
  2740. package/src/samples/todo/app/log-failures.test.ts +28 -0
  2741. package/src/samples/todo/app/log-failures.ts +7 -0
  2742. package/src/samples/todo/app/main.ts +4 -0
  2743. package/src/samples/todo/app/profile.perf-browser-test.ts +100 -0
  2744. package/src/samples/todo/app/proportional.browser.test.ts +157 -0
  2745. package/src/samples/todo/app/todo.perf-browser-test.ts +207 -0
  2746. package/src/samples/todo/build.test.ts +23 -0
  2747. package/src/samples/todo/features/completion/data.ts +5 -0
  2748. package/src/samples/todo/features/completion/dom.browser.test.ts +53 -0
  2749. package/src/samples/todo/features/completion/dom.ts +39 -0
  2750. package/src/samples/todo/features/completion/elements/elements.browser.test.ts +68 -0
  2751. package/src/samples/todo/features/completion/elements/todo-summary.ts +82 -0
  2752. package/src/samples/todo/features/completion/elements/todo-toggle-all.ts +69 -0
  2753. package/src/samples/todo/features/completion/events.ts +7 -0
  2754. package/src/samples/todo/features/completion/feature.ts +13 -0
  2755. package/src/samples/todo/features/completion/model.test.ts +40 -0
  2756. package/src/samples/todo/features/completion/model.ts +21 -0
  2757. package/src/samples/todo/features/filter/data.ts +16 -0
  2758. package/src/samples/todo/features/filter/dom.browser.test.ts +84 -0
  2759. package/src/samples/todo/features/filter/dom.ts +63 -0
  2760. package/src/samples/todo/features/filter/elements/elements.browser.test.ts +43 -0
  2761. package/src/samples/todo/features/filter/elements/todo-filters.ts +70 -0
  2762. package/src/samples/todo/features/filter/events.ts +4 -0
  2763. package/src/samples/todo/features/filter/feature.ts +12 -0
  2764. package/src/samples/todo/features/filter/model.test.ts +18 -0
  2765. package/src/samples/todo/features/filter/model.ts +10 -0
  2766. package/src/samples/todo/features/generate/elements/elements.browser.test.ts +18 -0
  2767. package/src/samples/todo/features/generate/elements/todo-generate.ts +36 -0
  2768. package/src/samples/todo/features/generate/events.ts +4 -0
  2769. package/src/samples/todo/features/generate/feature.ts +11 -0
  2770. package/src/samples/todo/features/generate/model.test.ts +13 -0
  2771. package/src/samples/todo/features/generate/model.ts +19 -0
  2772. package/src/samples/todo/features/index.ts +4 -0
  2773. package/src/samples/todo/features/todos/data.ts +31 -0
  2774. package/src/samples/todo/features/todos/dom.browser.test.ts +205 -0
  2775. package/src/samples/todo/features/todos/dom.ts +90 -0
  2776. package/src/samples/todo/features/todos/elements/elements.browser.test.ts +211 -0
  2777. package/src/samples/todo/features/todos/elements/todo-entry.ts +45 -0
  2778. package/src/samples/todo/features/todos/elements/todo-list.ts +93 -0
  2779. package/src/samples/todo/features/todos/elements/todo-row.ts +138 -0
  2780. package/src/samples/todo/features/todos/events.ts +11 -0
  2781. package/src/samples/todo/features/todos/feature.ts +14 -0
  2782. package/src/samples/todo/features/todos/model.test.ts +77 -0
  2783. package/src/samples/todo/features/todos/model.ts +80 -0
  2784. package/src/samples/todo/features/todos/todos.test-helper.ts +34 -0
  2785. package/src/samples/todo/imports.test.ts +113 -0
  2786. package/src/samples/todo/index.html +51 -0
  2787. package/src/samples/todo/shared/attach.browser.test.ts +73 -0
  2788. package/src/samples/todo/shared/attach.ts +32 -0
  2789. package/src/samples/todo/shared/connect.ts +21 -0
  2790. package/src/samples/todo/shared/elements/define.ts +7 -0
  2791. package/src/samples/todo/shared/elements/elements.test-helper.ts +28 -0
  2792. package/src/samples/todo/shared/feature.ts +20 -0
  2793. package/src/samples/todo/shared/ticks.test-helper.ts +25 -0
  2794. package/src/samples/transfers/build.test.ts +22 -0
  2795. package/src/samples/transfers/index.html +18 -0
  2796. package/src/samples/transfers/loader.ts +42 -0
  2797. package/src/samples/transfers/main.ts +46 -0
  2798. package/src/samples/transfers/sprites.ts +96 -0
  2799. package/src/samples/transfers/world.ts +11 -0
  2800. package/src/world.test.ts +46 -0
  2801. package/README.md +0 -3
@@ -0,0 +1,356 @@
1
+ # Performance
2
+
3
+ Measured on an Apple M1 Max (8 performance cores, 2 efficiency cores). Node numbers come from `pnpm perf`, a Vite bundle run on plain node; vitest's node transform turns imported bindings into getters and roughly doubles JS-heavy costs, so it is not used for comparisons. Browser numbers come from `pnpm test:perf` in chromium with real workers, where timers are quantized to 5 µs; "framed" numbers run once per animation frame and report the median and 90th percentile, which vary up to 2× between sessions. Every number is the fastest run within a time budget.
4
+
5
+ ## Results
6
+
7
+ Baseline is commit `a28ba8cb`, before the optimization pass.
8
+
9
+ | Benchmark | Baseline | Now | Gain |
10
+ |---|---|---|---|
11
+ | create 100K (spawn plus sync point) | 170 ms | 27.6 ms | 6.2× |
12
+ | churn 100K (despawn and respawn 10%) | 17.0 ms | 5.05 ms | 3.4× |
13
+ | retag 100K (archetype moves for 20%) | 18.0 ms | 7.04 ms | 2.6× |
14
+ | emit 100K (commands from a kernel) | 6.65 ms | 0.97 ms | 6.9× |
15
+ | sparse changed 1M, uniform 1% | 3.48 ms | 1.15 ms | 3.0× |
16
+ | sparse changed 1M, clustered 1% | 3.13 ms | 0.021 ms | ~150× |
17
+ | follow 100K (a lookup per row) | 10.6 ms | 0.38 ms | 28× |
18
+ | move 1M (250K rows processed) | 0.259 ms | 0.095 ms | 2.7× |
19
+ | chain, 6 dependent kernels over 100K | 0.476 ms | 0.343 ms | 1.4× |
20
+ | main thread, 50 systems over 1K | 2.89 ms | 1.64 ms | 1.8× |
21
+ | select 100K (`where` plus reads) | 18.1 ms | 3.1–4.5 ms | ~5× |
22
+
23
+ Chromium:
24
+
25
+ | Benchmark | Main thread | Workers (default pool) |
26
+ |---|---|---|
27
+ | move 1M | 0.305 → 0.105 ms | 0.105 → 0.020 ms |
28
+ | follow 100K | 8.76 → 0.44 ms | 1.02 → 0.075 ms |
29
+ | chain 6×100K | 0.67 → 0.405 ms | 0.455 → 0.115 ms |
30
+ | sparse changed 1M | 4.78 → 1.095 ms | 0.74 → 0.19–0.25 ms |
31
+
32
+ At 1M entities, against commit `d6373560` (claimed splits in place):
33
+
34
+ | Benchmark | Before | Now |
35
+ |---|---|---|
36
+ | create 1M | 325 ms | 88 ms |
37
+ | create flat 1M (ecs2's test: 8 scalars per entity) | | 70 ms; 223 ms with value objects built first |
38
+ | churn 1M | 54 ms | 17 ms |
39
+ | retag 1M | 79 ms | 42 ms |
40
+ | emit 1M | 11.2 ms | 10.6 ms |
41
+ | move 1M | 0.177 ms | 0.091 ms |
42
+ | chain 6×1M | 3.42 ms | 1.51 ms |
43
+ | main thread 50×1K | 1.65 ms | 0.48 ms |
44
+ | select 1M | 37.5 ms | 24 ms |
45
+ | follow 1M, sparse changed 1M | | unchanged |
46
+ | chromium move 1M, main / workers | 0.20 / 0.030 ms | 0.095 / 0.015 ms |
47
+ | chromium chain 6×1M, main / workers | 4.47 / 0.725 ms | 1.72 / 0.275 ms |
48
+
49
+ Moving the code into `src/interface` and `src/implementation`, with ticks added, measured within noise of the record before it (`f9e8d10a`) on every node and chromium benchmark: run idle 333 ns, run 50 idle 109 ns per system, sync point one spawn 1.04 µs, create 1M 91 ms, churn 19.5 ms, retag 35.7 ms, move 1M 0.090 ms, chain 1.54 ms, select 8.27 ms; in chromium, move on workers 0.015 ms and chain on workers 0.29 ms. A run checks the `workers` resource by its changed tick, allocating nothing, and makes the loop due only while systems are added.
50
+
51
+ Components, resources and traits are keyed by symbols, and the benchmarks moved to symbol keys with them (record `d4256133`, against `4aa829f4` on string keys): every benchmark is within noise but two. `create flat dynamic`, which builds value objects first and spreads them, went 224 → 434 ns per spawn, since V8 lists an object's symbol keys without the enumeration cache `Object.keys` has for strings. `retag` went 35.8 → 33.6 ms, since its literal `commands.add(entity, { [tag]: true })` is now a prepared site; through value objects it measured 43.9 ms. `create`, whose spawns are prepared sites, stayed at 90–94 ms.
52
+
53
+ **Key reading** (`perftest/keys.ts`, `node dist/perf/run.js --keys`): nanoseconds per values object built and read, for 1 to 6 keys. Listing dominates: reading the same values by keys known in advance costs 58–73 ns, mostly the reads themselves.
54
+
55
+ | Method | 1 | 2 | 3 | 4 | 5 | 6 |
56
+ |---|---|---|---|---|---|---|
57
+ | `Object.getOwnPropertySymbols` (kept) | 98.7 | 119 | 141 | 168 | 190 | 214 |
58
+ | `Object.keys`, then `Object.getOwnPropertySymbols` | 106 | 123 | 145 | 175 | 196 | 217 |
59
+ | `Reflect.ownKeys`, symbols only | 104 | 124 | 146 | 171 | 195 | 219 |
60
+ | string keys with `Object.keys`, for comparison | 22.8 | 31.6 | 41.0 | 49.3 | 58.3 | 65.2 |
61
+
62
+ So literal spawns and adds in main-thread systems are prepared sites, which list no keys and build no object; only values objects built at runtime pay for listing.
63
+
64
+ Archetypes and commands that name their components first (record `bd0dabcc`, against the baseline `4e63c933`, which added a benchmark per kind of structural change): every benchmark is within noise or faster but `spawn bulk kernel` (120 → 131 ns, +9%, every component a kernel's list names now gets a value, its tag's start included) and `spawn singles` (458 → 490 ns, +7%). Faster: `create` 90.6 → 58.1 ns per spawn, `create flat dynamic` 434 → 93.7 ns (beating string keys' 224 ns), `spawn sixteen archetypes` 757 → 57.6 ns, `spawn bulk` 49.8 → 40.7 ns, `despawn bulk` 65.2 → 44.2 ns, `remove tag` 107 → 72.4 ns, `remove several` 152 → 79.2 ns, `add tag kernel` 104 → 85 ns, `add value` 109 → 96 ns; `create flat` 69.8 → 66.8 ns, `add tag` 107 → 100 ns, `add several` 140 → 142 ns, `retag` 35.6 → 33.9 ms. Chromium is unchanged.
65
+
66
+ - **Spawners are generated per shape:** one read by key and one store per value, so each read sees one object shape. Against a loop over the shape's columns, which is what runs where `'unsafe-eval'` is forbidden: `create` 58 against 126 ns, `create flat` 66 against 127 ns, `create flat dynamic` 94 against 172 ns, `spawn bulk` 41 against 59 ns.
67
+ - **Literal spawns and adds stay prepared:** without the plugin's per-site functions, the values object costs about 25 ns for eight keys, so `create flat` measured 86 ns against 66 ns, and `add several` 169 against 142 ns.
68
+ - **Archetypes are found by their index:** with only the eight-entry cache, sixteen archetypes from one site resolved their list on every spawn, 523–561 ns; the per-world table by archetype index, and a site's plans by index, take it to 57.6 ns.
69
+ - **Moves are grouped by pair of archetypes,** copying shared columns for a block of rows, and rows left are removed last entry first, so an archetype that moves out whole drops its rows without copies; list adds and removes resolve their target once per source archetype.
70
+
71
+ Sync point fixes for spawns (record `ebde4c9b`, against `bd0dabcc`): `spawn bulk kernel` 131 → 121 ns, back to the baseline's 120, and `spawn singles` 500 → 292 ns, below the baseline's 458; every other node and chromium benchmark within noise (`run idle` reads 333 or 375 ns from one record to the next, as timer steps; `bd0dabcc` measures 375 ns beside this one). Kernels reading lists from other modules changed only what the compiler emits. Each step, measured on its own:
72
+
73
+ - **A pair whose entries are consecutive needs no ordering pass,** as a system's spawns or moves from one archetype are, and rows are removed only when some entry leaves one: `spawn bulk kernel` 130 → 127 ns. Reading entries through a branch per row instead of an identity order cost `retag` +3%, so the order is still written, in one sequential pass.
74
+ - **The plan grows once per buffer,** since each command adds at most one entry, rather than checking capacity at every entry: `spawn bulk kernel` 127 → 120 ns; `retag` 34.5 → 33.5 ms.
75
+ - **A spawn batch keeps its archetype,** rather than finding it by its joined ids at every sync point: `spawn singles` 489 → 396 ns.
76
+ - **A batch of at most eight rows commits element by element,** since a subarray to copy from costs more than the rows: `spawn singles` 396 → 292 ns.
77
+
78
+ Kernel spawns staged as main-thread spawns are (record `2b07c576`, against `ebde4c9b`): `spawn bulk kernel` 121 → 10.3 ns, now below `spawn bulk` from a main-thread system, which went 40.4 → 25.4 ns with it; `spawn sixteen archetypes` 56.5 → 41.1 ns. In chromium, the new `spawn bulk kernel main` and `spawn bulk kernel workers`, measured on `ebde4c9b`'s implementation first: 128 → 11 ns on the main thread, 177 → 7.65 ns on workers. Every other node and chromium benchmark is within noise (`create` reads 58–62 ns from one run to the next on either side, and node `sparse changed` 0.32–0.37 ms, as in records since `c234c41a`). Each step, measured on its own:
79
+
80
+ - **Kernel spawns are staged in batches,** through a spawner per spawn list generated as main-thread spawners are, rather than issued as commands the sync point plans and writes value by value: 120 → 34 ns; in chromium 128 → 18 ns on the main thread and 177 → 54 ns on workers. A main-thread runner's batches and each chunk's buffer naming the rows it staged keep the row order the same whichever thread ran each chunk.
81
+ - **The reused indexes a sync point reserved are copied as a typed array,** not an array of numbers: `spawn bulk kernel` 34 → 18 ns, `spawn bulk` 41 → 25 ns, `spawn sixteen archetypes` 58 → 41 ns.
82
+ - **Kernel spawners reserve entities in blocks,** so workers spawning together don't contend for one atomic cursor, and the sync point returns the positions a block left unused to the free list: on workers 54 → 7.5 ns, on the main thread 18 → 10.5 ns.
83
+ - **Runners stage only when their kernel spawns:** without the check, `run 50 idle` measured 120 against 110–112 ns per system.
84
+
85
+ The shared layout directory (threads.md, phase 1), against `1a18c6a7`: workers find archetypes and the entity table through records in shared memory, so a sync point that grows archetypes posts no message and leaves workers' windows open. In chromium, `sync point grow 100 archetypes workers` (one spawn into each of 100 full archetypes, then a kernel over them) 1.43 → 0.62–0.68 ms and `spawn bulk kernel workers` 7.7–7.95 → 7.15–7.5 ns; `sync point grow 100 archetypes main`, `loop tick idle` and every node benchmark are within noise.
86
+
87
+ Command rings for the pool (threads.md, phase 3), against `efedcd21`: worker kernels write their commands into a ring in shared memory as the columns of a `CommandBuffer`, and the world drains a segment by taking views of them, its structs' values staying bytes in the ring, rather than receiving buffers by message. The new `emit workers`, alternating against `efedcd21`'s message path: in node 6.35–6.48 against 6.94–7.03 ms, in chromium 7.76–7.8 against 8.13–8.22 ms. In chromium the run splits into the tiers, 1.15 against 1.9 ms, and the sync point, 6.05 against 5.85 ms: planning reads the columns where workers wrote them, 2.63 against 2.36 ms for freshly deserialized ones, about 3 ns more per command. `emit main` and every must-not-regress benchmark are within noise of `efedcd21` on both.
88
+
89
+ The adobe/data ECS runs move 1M in 0.09 ms, single threaded with WASM SIMD, and creates 100K in 5.8 ms by inserting directly, with no command buffer or sync point.
90
+
91
+ Observer systems (P1 of the observers plan), alternating against `af4c72f4`: every node benchmark within noise but `run 50 idle` 110 → 73 ns a system, from three changes to a runner's start that every run takes; `run idle` 416 → 375–416 ns, `loop tick idle` 1.84 → 1.81 µs, `read run` 10.9 → 10.5 µs. New: `run observer` 208 ns against 375–416 for `run idle`, `read run observer` 7.9–9.3 µs against 10.5–11.8 for `read run`, `observer idle 100` 81–85 ns an observer system a tick, about 19 of it the tick's own cost shared over a hundred. Each step, measured on its own:
92
+
93
+ - **A run's chunks get their length set only when it differs:** writing an array's length is a runtime call even when it's unchanged: `observer idle 100` 122 → 94 ns, `run 50 idle` 112 → 88 ns.
94
+ - **Conditions are checked only by a runner that has some:** `observer idle 100` 94 → 86 ns, `run 50 idle` 90 → 80 ns.
95
+ - **A run starts on the runner's first buffer and chunk directly,** with nothing staged yet to stage: `observer idle 100` 86 → 78–83 ns, `run 50 idle` 80 → 73 ns.
96
+ - **Each list of observer systems keeps its runners,** read again only once runners change, with whether any looks up through an index, rather than finding each runner by its system twice a pass: `observer idle 100` 144 → 122 ns.
97
+
98
+ Observer systems on joined threads (P3 of the observers plan), alternating against `ffea07de`: every node benchmark touched within noise (`run idle`, `run 50 idle`, `run observer`, `observer idle 100`, `loop tick idle`, `sync point one spawn`, `remote run`, `handoff`, `fused tiers`, `tail prompt`, `read run`, `read run observer`, `loop tick add remove`, `create`, `follow`), and in chromium `loop tick idle` and `remote run`. New: `joined observer resource` 6.4–6.8 µs a tick in node, 9.3 in chromium; `joined observer 10K` 0.30 ms in node, 0.28 in chromium. Back to back, the world outruns the thread's wake-up, so most posts are cancelled before the thread claims them and the 10K sort runs about one tick in five there; the world's cost is the sync points and writers waiting for posts in progress, and the waited-for post after four cancelled ones.
99
+ - **A run of observer systems alone skips its sync point** while nothing is queued and there's no GPU, joined thread or tail: `run observer` 375 → 208 ns, `read run observer` 8.8 → 7.7 µs.
100
+
101
+ Observer factories, alternating against `799a0e1a`, every other node benchmark touched within noise (`run idle`, `run 50 idle`, `run observer`, `observer idle 100`, `loop tick idle`, `sync point one spawn`, `follow`, `create`, `remote run`, `joined observer resource`, `read run`, `read run observer`, `loop tick add remove`), and in chromium `loop tick idle`, `remote run` and `observe gpu entity factory`:
102
+ - **An observer system added again registers at once with the runner it had,** restarted from tick 0, once the run that removed it is done: `read observe factory cold` 5.8 µs (14.1 at the old 300 rounds) → 0.88 µs. What's left is the reader's run with the maintenance system and the notifier in its pass, the notifier's add, and the promise and flush around them.
103
+ - **Runs read resources without allocating:** a context binds each resource's storage and the resource entity's row, `changed` filters on resources read stamps by id, and the device check reads its cell directly. With one pass kept for the list of added observer systems rather than one per list (each add or remove makes a new list), a cold read 958 → 833 ns.
104
+ - **A scan of one entry with at most one test, every entity or a count, gathers in the scanner's body,** without a call per row through an acceptance and a gather, and each scan's value is made at its length rather than grown: `select factory` 10.2 → 7.5 ms. An observer row system testing and writing a typed array alone takes 2.0 ms over the same 1M rows: the gap is the row body's calls.
105
+ - `observe 1K entities one changed factory` (29.5 µs) and chromium `observe gpu entity factory` (450–468 µs) cost each entity's lookup by entity, and entity observers are mainly for debugging.
106
+
107
+ Observer factories on a joined thread's world (C2 of the observers plan), and the fixes to observer posts it found, alternating against `320260b0`, node; every touched benchmark within noise but `joined observer 10K` (`joined observer resource` 6.8–8.4 µs a tick there against 7.2–7.6, `remote run`):
108
+ - **New:** `joined resource factory` 6.5–7.8 µs a tick back to back, about a plain observer system's (`joined observer resource`); at a display's cadence, frames 2 ms apart, `joined resource factory cadence` 21–32 µs of the world's thread a tick, a plain observer system's the same: what's left is posting an observer system there (the writer's copy of what a post reads, settling posts at the sync point, waking the thread). `joined select 10K factory` 0.51–0.55 ms a tick: an unpaged ordered selection sorts on the joined thread through an index without a key, where the sorted index the world's thread keeps for one cost 0.74–0.95 ms. In chromium, three rounds: `joined resource factory` 9.4–11.3 µs (`joined observer resource` 9.0–10.7), at the cadence 24–30 µs, `joined select 10K factory` 0.43–0.65 ms.
109
+ - **`joined observer 10K` 0.35–0.54 ms → 0.52–0.69 ms a tick:** posts are now claimed only once written and marked handled by the post claimed, so the world waits, past four cancels, for a post the thread really runs; before, a thread claimed a half-written post, ran it again once it saw its posted word, and the world, settled by the first run's done word, went on without waiting (and once in 13 runs waited for good on a post the thread had marked handled unclaimed).
110
+
111
+ Observer posts on joined threads holding copies, alternating against `e3f51fb3`, node, three rounds on a machine loaded by other work; every other touched benchmark within noise (`joined observer 10K` and `joined select 10K factory` over six rounds, `remote run`, `run idle`, `run observer`, `observer idle 100`, `read run observer`, `read observe factory cold`, `loop tick idle`, `handoff`, `tail prompt`), and in chromium `remote run` and both 10K benchmarks over five rounds:
112
+ - **An observer system reading only struct resources posts copies of them,** its head's flags and its resources' values, so writers and sync points leave its posts alone; the next post cancels one no claim reached, takes the outcome of one that ran, and goes into a second block while the thread runs one, its outcome taken as its flags say. Back to back, `joined resource factory` 6.9–8.2 → 4.3–5.3 µs a tick and `joined observer resource` 6.9–9.9 → 4.3–5.0; in chromium 10.0–10.4 → 7.0–8.1 and 9.3–10.5 → 7.2–7.5. Before, back to back, the world copied each post's resource for its next writer (0.54 µs a call through the tail snapshot), settled it at the sync point, and waited, past four cancels, for the thread's wake-up and run (2,746 waits in 20,000 ticks).
113
+ - **At a display's cadence the cost is cache lines and cold code,** not work: frames 2 ms apart, a post's writes take 0.13–0.29 µs on its first line, which the thread's claim last wrote, and its whole pass 3.3–4.3 µs a tick at the median. So a post writes only its block's first and last lines: its snapshot's words once, its flags when they change, its resources in its last line up to 80 bytes, and an end new each post, so the thread's done word needs no reset; its head is worked out once, and with nothing the GPU wrote to read back it's written at once, without a list of posts. Two worlds in one process, a frame each in turn, 500 ticks each over six rounds, three processes: `joined resource factory`'s world 9.0–9.8 µs a tick at the 10th percentile and 17.5–20.9 the mean of the middle half; at `e3f51fb3`, 2.3–4.6 µs more at the 10th percentile. The cadence benchmarks, a process each, still vary up to twofold with the machine's load: `joined resource factory cadence` 34–41 → 18–35 µs.
114
+ - **An observer pass whose systems all run on joined threads** skips the world's own pass over them.
115
+ - **The cadence benchmarks give the mean of the middle half of 1,000 ticks,** after 1,000 to warm up, rather than the least of eight stretches of 100: a few ticks take many times the rest.
116
+
117
+ Benchmarks read through observer systems and the factories (E of the observers plan), alternating against `e3f51fb3`, 3 to 5 rounds in node and 2 in chromium, and the joined, cadence, `remote run`, `tail` and `handoff` ones again against `8ce1ea60` (observer posts holding copies, the cadence benchmarks' mean of the middle half), 4 rounds in node. Ticks back to back are counted by an observer system filtering on the clock's `changed`, reading nothing (`perftest/observer.ts`); what's read before the timed runs is read by observer runs, which leave nothing added, and results are checked through the factories once nothing more is timed, as they keep their maintenance system added; the cadence benchmarks time each frame until the loop asks for the next, its tick done, rather than until an observer of the clock was notified. Every touched benchmark is within noise in node (`loop tick idle`, `observer idle 100`, the `loop tick add remove` ones, `tail prompt`, `tail late snapshot 10K`, `tail overlap`, `tail overlap waiting`, `handoff`, `fused tiers`, `remote run`, the joined ones, `joined resource factory cadence`, `create flat`, `create flat dynamic`, `move`, `churn`, `retag`, `emit`, `emit main`, `reduce`, the `up` ones, the `lookup 1K entities` ones) and in chromium, two rounds of the suite each side on a busy machine (`loop tick idle` 4.4–4.6 µs both, `tail prompt`, `handoff`, `remote run`, the joined ones, `transfer`, the placed ones), but one:
118
+ - **A tick's clock can't tell a tick from the last in chromium:** its timer is coarse enough that back-to-back ticks share a `now`, so a counter skipping a clock whose `now` it had seen counted too few ticks there: `loop tick idle` 4.3 → 6.0 µs. The counter filters on `changed` instead; a tick-count wait (`ticksAfter`) tells ticks by their count and `now` together, as the first tick's count is 0, as before it.
119
+ - **The order modules load in matters:** imports added at the top of `benchmarks.ts`, or `src/observe` and a module reading the clock imported where they weren't, reordered the bundle's shared chunk or which keys register first: `tail prompt` took 26 µs a tick against 21 in node, `remote run` 16.5 against 12.4 in chromium. New imports come last, or where the clock's was.
120
+
121
+ The built-in observers and mailboxes removed (F of the observers plan), alternating against `87a81495`, node, four rounds and six for the closest: runs and ticks no longer start, read back for or deliver to observers. `run observer` 208 → 166–167 ns, `run idle` 375 → 334–375 ns, `joined resource factory` 5.0–5.3 → 4.3–5.0 µs a tick, `joined observer resource` 4.4–5.6 → 4.1–4.6 µs; within noise: `run 50 idle`, `observer idle 100`, `loop tick idle` (1.72–1.85 against 1.71–1.79 µs), `sync point one spawn`, `remote run`, `handoff`, `fused tiers`, `tail prompt`, `tail late snapshot 10K`, `tail overlap`, `joined observer 10K` (0.40–0.49 against 0.40–0.47 ms), `joined select 10K factory`, `read run observer`, and `read run`, 9.5–11.4 against 10.1–11.8 µs, a new system each read.
122
+
123
+ A report for every run and tick, `Report.run` written in place and `Report.errors` only with errors, alternating against `76f4670e`, node, six rounds, medians: `run idle` 333 → 458 ns, `run observer` 166 → 291, `run 50 idle` 3.63 → 3.75 µs a run, `loop tick idle` 1.70 → 1.92 µs a tick, `sync point one spawn` 875 → 1,000 ns, `read run observer` 7.9 → 9.1 µs, `remote run` 10.0 → 10.6 µs, and `run failing` 12.0 → 9.9 µs, its errors joining its own sync point rather than one of their own.
124
+ - **About 125 ns a run:** two `performance.now()` calls for `elapsed`, 31 ns each, then locating the report, writing its struct and stamping it.
125
+ - **`Report.run` is written field by field** through its layout's leaves, not the general struct writer: `run idle` 583 → 500 ns, and `run observer` 375 → 291.
126
+ - **What a tier ran is worked out once per list of runners:** counting each runner every run took `run 50 idle` to 4.08 µs a run.
127
+ - **A reused report keeps its errors and takes new ones in place,** so a run with a blocking tier every tick changes no archetype, and its sync point isn't one tails wait for.
128
+
129
+ Strings in shared memory, alternating against `c6bb3c83`, node, five and six rounds, medians: every touched benchmark within noise (`run idle` a mean over 20,000 runs 626–644 against 622–660 ns, `run 50 idle`, `run observer`, `loop tick idle`, `sync point one spawn`, `move 1K`, `main thread 1K`, `spawn bulk`, `despawn bulk`, `despawn one`, `add tag`, `add value`, `remote run`, `joined observer resource`, `joined observer 10K`, `handoff`, `tail prompt`, `tail late snapshot 10K`, `despawn objects 10K` 97.5 against 97.7 ns).
130
+ - **The world's thread holds strings as values,** as it does objects, and reads and writes them there: `string read 10K` 2.78 ns a row, as `object read 10K`; `string write 10K` 19.5 ns, `object write 10K` 20.5.
131
+ - **Records only while a joined thread may read them:** `string write 10K joined` 126 ns a row, a new record each and the old one let go. Most of it is copying the code units out of a string just made, which flattens it first: in a microbenchmark, 106 ns a 30-character label made and copied against 37 copied once flat.
132
+ - **A joined thread reads a string out of its record, decoded once per record:** `joined observer strings 10K` 358 µs a tick, an observer system there reading every caption after each sync point while the world rewrites 1% of them, against 309 µs for `joined observer numbers 10K` reading numbers.
133
+ - **Records up to 512 bytes are carved from slabs** by power-of-two size class: `string write 10K joined` 142 → 127 ns against the arena's blocks, whose size class costs a `Math.log2` per record.
134
+ - **A removed row lets go only of its archetype's string storages,** listed once per archetype: `despawn objects 10K` 104 → 97.7 ns against a check of every storage.
135
+
136
+ Sync points waiting only for tails that read the world's memory, against `c21e8e1e`, node: `tail late snapshot 10K` 474–484 → 9.0–9.5 ns a row copied, against 8.9 for `e3c30aa1` measured beside it (its record 8.2), and in chromium 450 → 6.0 ns (its record 5.0, one or two 5 µs timer steps); within noise in both: `tail prompt`, `tail overlap`, `tail overlap waiting`. Since every run spawns its report, until 256 are, almost every sync point has something to apply, and each one settled every tail, so the run waited out the whole body of the benchmark's 4 ms tail ahead of the late one, whose head it had claimed.
137
+ - **A tail reading only its own thread's objects isn't settled at a sync point,** having nothing there a sync point writes: 474 → 12.8 ns.
138
+ - **The benchmark times the run alone,** reading its report after: 12.8 → 9.0 ns. Reading it through `runReported` timed a second run as well.
139
+
140
+ GPU copies uploading only the chunks CPU writes changed, against `a4eef10e`, chromium, three runs each: new `gpu upload one row 100K`, a target system writing one of 100K 12-byte positions a render system draws, as a drag does, 0.44–0.47 → 0.048–0.058 ms a run; the upload writes the row's chunk of 1,024 rows, 12 KB, rather than the whole 1.2 MB column. New `gpu upload all rows 100K`, a CPU kernel writing every row before the draw, within noise: 5.35–5.55 → 5.24–5.47 ns a row; `observe gpu entity factory` within noise, 0.44–0.51 ms both.
141
+ - **Components a GPU kernel or render system uses keep ticks,** and kernels writing them keep their chunk stamps, though not their row stamps unless a change filter observes them: once per call for a kernel writing every row, a chunk stamp per written row otherwise.
142
+ - **An upload writes each run of adjacent chunks stamped since its last upload** or holding rows a sync point appended or disturbed, clamped to the row count; a column with GPU writes the CPU hasn't read back writes only those rows. A whole-column stamp (`columnChanged`) uploads nothing: only GPU kernels make one, and their writes are on the GPU already.
143
+ - **A WASM kernel's column addresses are kept per load as well as per archetype version:** a kernel loaded again to stamp a component that already kept ticks went on passing the muted column's address, 0, and wrote its stamps over the entity table there.
144
+
145
+ ## Where the gains came from
146
+
147
+ Step figures marked (vitest) are from the node vitest lane: read them as relative.
148
+
149
+ **Structural changes.**
150
+ - Commands as parallel typed arrays, a reusable typed plan, and cached archetype edges: create 198 → 68 ms, churn 22 → 10 ms, retag 24 → 11.7 ms, emit 7.3 → 3.1 ms (vitest).
151
+ - `Object.keys` instead of `for…in`, and buffers reused across runs: small gains.
152
+ - Allocation-free kernel commands (`begin`/`value`/`component`/`spawn`): emit 3.2 → 1.98 ms (vitest).
153
+ - Inline value writes instead of closures, an 8-shape spawn cache, edges indexed by component id, archetypes grown once per sync point: create 38 → 27.6 ms.
154
+
155
+ **Change filters.**
156
+ - Chunk ticks, the newest tick per 1024 rows, so filters skip unchanged chunks: clustered sparse to ~0.09 ms.
157
+ - Filters inside WASM kernels, one call per archetype instead of one per passing range: uniform sparse 3.5 → 1.15 ms, clustered to 0.02 ms.
158
+
159
+ **Lookups.**
160
+ - Precompiled matchers with component ids resolved once: follow 10.4 → 4.8 ms.
161
+ - Lookups in WASM through a directory per lookup in shared memory: follow 4.8 → 0.37 ms. Exact entity decoding costs about 0.07 ms, partly recovered by an integer fast path.
162
+
163
+ **Kernel hot path.**
164
+ - Full 16-byte loads for three-lane rows: move 0.262 → 0.204 ms.
165
+ - Four rows of whole interleaved elements as full vectors (three for tight vec3) instead of one partial vector per row: move 0.177 → 0.095 ms, chain 6×1M 3.5 → 1.55 ms, chromium main thread move 0.200 → 0.105 ms.
166
+ - `changed` stamps only for observed components: move 0.204 → 0.175 ms, chain 0.47 → 0.344 ms.
167
+ - Tick columns only for components some system filters on, started at the current tick when the first one registers: create 1M 325 → 296 ms, retag 1M 79 → 68 ms, churn 1M 54 → 50 ms. For the particle fixture, ticks were 80 of 112 bytes per entity.
168
+ - Exact integer `%` in WASM instead of a JS import.
169
+
170
+ **Dispatch.** A task ring per worker in shared memory with `Atomics.notify`, and fast kernels split at half the minimum chunk: chain on workers 0.485 → 0.255 ms, then 0.16 ms with the kernel gains.
171
+
172
+ **Claimed splits.** Workers claim pieces of a WASM kernel's rows from a shared counter instead of taking even shares, so the slowest core no longer sets the finish time: on the default pool, move 0.055 → 0.030 ms, follow 0.15 → 0.075 ms, chain 0.16 → 0.115 ms, sparse changed 0.30 → ~0.22 ms.
173
+
174
+ **Affinity claims.** Each worker owns a home range of a split's pieces, the same one every run, takes them from the front, and steals from the back of the fullest other range once its own is empty. Pieces stay on the same worker from one tier to the next 75% of the time instead of 13% (no better than chance), so tier N+1 finds its rows in the cache tier N warmed: chain 6×1M on workers 0.79–0.87 → 0.275 ms, per tier 230 → 170 µs in traced medians; move 1M on workers 0.020 → 0.015 ms. Control words, claim words and status slots each take whole 128-byte cache lines, so a store by one thread doesn't invalidate the line another polls.
175
+
176
+ **Staged spawns.** A main-thread `commands.spawn` writes its values into a private batch per component set, in the target archetype's layout, and the sync point block-copies each batch into its archetype before the plan, placing entities and stamping ticks with the sync tick. The issuer's tuples are read while fresh and die young, and the plan, shape match and per-component writes at the sync point go away: create 1M 300 → 153 ms, churn 29 → 21 ms. The plugin rewrites each `commands.spawn({ ... })` with literal keys in a main-thread system into a per-site function taking one parameter per value, so no value object is built, nothing is looked up by key, and each value goes through a writer specialized once per shape to its column's layout, called only from that site: create 1M 153 → 88 ms, flat 181 → 70 ms, with no code generated at runtime. adobe/data's ecs2 inserts the flat particles at about 57 ns each, immediately and without deferral, after building each value object. Spawns of objects built beforehand read values by key in a loop, about 3× slower.
177
+
178
+ **Structs.** A struct's read and write, and a nested tuple's, are generated per layout as straight-line code: one literal of its leaves' loads, and one store per leaf, where a closure per leaf built the object a property at a time and read each member through `Reflect.get`. Where `'unsafe-eval'` is forbidden the closures run. `struct copy 100K`, a main-thread row system copying a five-number struct, 147 → 17.6 ns a row in node and 20.4 in chromium; `struct replace kernel main`, a struct and a vec2 added per row as commands, 144 → 118 ns a command. A command of an entity following its previous one in the same buffer, as a body's adds to one row do, extends that one's range of values rather than listing another range in a map: 118 → 60.9 ns, 70 in chromium, 61 on chromium's workers.
179
+
180
+ **Change sets.** An entry between the same archetypes as the one before it, whose one range of values names the same components, joins that one's group without listing its replaced components or building a group key, as one system's commands over one archetype make: `struct replace kernel watched`, a changes finalizer watching 200K replacing adds, 187 → 76.8 ns a command, against 63.6 unwatched.
181
+
182
+ **Joined threads.** A wake notifies only a joined thread that has read every earlier one, by a word the thread clears before it reads what's new, so back-to-back ticks don't notify a thread still busy with the last. A wake landing between the thread's clearing the word and its wait notified no one, and the word then kept later wakes from notifying, so a reader there fell behind and stopped being woken (4,412 of some 6,000 values seen); with the thread reading again while the word is set, it sees every value.
183
+
184
+ **Structure epoch.** Kept only while a joined thread holds claims, turned even by a store and notifying only a reader that waits: `sync point one spawn` 916 → 833–875 ns in node, measured alternating with `c4ecbd8d`, from before phase 4, at 833–875 ns. Two atomic adds and a notify cost about 35 ns a sync point, an add and a store about 24 ns.
185
+
186
+ **Joined threads' objects.** A rebuild fills each column with its start first and indexes the old rows by entity only for a value the thread gave and kept: `log rebuild 100K` 9.7 → 4.1–4.8 ns a row in node. Their ticks are the world's storages' alone, which the thread's systems stamp, rather than copies the mirror kept beside its columns: `log replay` 24 → 20.6 ns a move and `log rebuild 100K` 4.31 → 3.21 ns a row in node, 5.3 → 3.45 in chromium.
187
+
188
+ **Systems on joined threads.** A tier, or consecutive tiers, on a joined thread is a task through its task block. The world spins about 20 µs for it before it waits, and the thread that finished one spins as long for the next, each about one wake-up's latency: `handoff` (five tasks a tick) 68 → 11.5 µs a tick and `fused tiers` (one) 19.3 → 7.5 µs in node, 13.2 and 9.4 µs in chromium. Ten tiers fused into one task cost about what one tier's does.
189
+
190
+ **Finalizers on joined threads.** Stop lists are written a column at a time, the linear structs copied by 32-bit word and each column's storage found once per run of an archetype, and despawned entities' held indexes counted in an array by index: `despawn objects 10K` 176 → 83 ns a despawn in node, against 77 ns with the same finalizer run inline on the world's thread. A `Map` of holds, and a `copyWithin` per stop and struct, cost most of the difference.
191
+
192
+ **Tails.** A tail's snapshot is laid out for the rows it found passing and copied a run of consecutive rows at a time, its entities and each linear read one `set` each, its positions, archetypes and rows written in place, and tags marked only for a tail that writes objects: `tail late snapshot 10K` 29.8 → 6.7 ns a row in node, from a row at a time through a scratch list, whose tag pass alone cost 3.3 ns a row for a tail that writes nothing. The copy is what lets the world's work after its writer overlap a late tail: `tail overlap` 2.53 ms a tick against 4.70 for `tail overlap waiting` in node (below).
193
+
194
+ **Indexes.** Node numbers, `pnpm perf`.
195
+ - Keeping one current costs nothing while its entities rest: a refresh checks its journal position and its key parts' last writes, which systems' writes and sync points' values mark per component, `index idle` 9 ns an index. Moving 1% of 1M entities to other keys, `index refresh 1M 1%`, 4.3 → 1.56 ms: rows listed with their archetype and row, without marks when one key part's scan is all a refresh reads, short buckets' operations applied as they come and long ones merged once, ordered by a counting sort by bucket; a refresh whose changed chunks' rows pass an eighth counts the rows' own ticks before building again, so a few writes spread over every chunk patch: `rekey 1M`, 1M particles 6% of which cross into another cell a frame, 46.9 → 14.1 ms, against 4.8 ms for the same frame without the index.
196
+ - Lookups: a call site's encoding, hash and probe generated for its shape and the index's layout, buckets as records of hash, segment and key beside two-word slots of hash and bucket, and a row bound only when its archetype changed: `unique lookup 1M` 86 → 45–50 ns. A microbenchmark of the same probes over the same table reads 29 ns sequential and 85 random a lookup; an identity hash for integer keys is under "Tried and not kept". `children lookup` 32 ns a child, `grid neighbors 100K main` 10.5 µs a row of 27 probes.
197
+ - Sorted ranges: a search over a compact array of each block's last key and entity, comparing words only for keys of words, and `at` walking blocks through a cursor: `sorted range 1M` 1.08 → 0.76 µs a range of ten; `sorted page 100K` 22 µs a change against 1.12 ms for `select page 100K`.
198
+ - Kernels: probes in straight-line WASM over the index's arrays, `grid neighbors 100K workers` 179 ns a row across nine workers.
199
+ - Building again in phases over fixed pieces and partitions, the listing generated for the key's leaves: `index rebuild 1M main` 37 → 27.3 ms on the world's thread alone, and 6.7 ms across nine workers, the four phases about 1.3, 1.9, 1.3 and 1.8 ms. One worker takes 29 ms, so nine scale it 4.3×: each phase scatters or gathers by partition, and a single-threaded microbenchmark of grouping alone runs at 4.8 ns an entry, branch and memory bound.
200
+ - `order run 100K` 31.4 ns a row against 28.3 for the same body in storage order: main-thread bodies walk the index's entries, bound again where the archetype changes, rather than listing rows first (34.5 ns). `order filtered 100K 1%` 180 ns a changed row.
201
+ - Lists and their rows of one hidden class: lists defined their accessors as an object literal's, new closures each, so every list after a site's first had dictionary properties, and each pooled row had a map of its own, so a body reading a bucket was megamorphic. Lists and rows now define shared functions in the same order and read their state through `this`; a lookup makes its pool's rows ahead of `at`, the first 256 positions and, for sorted lists, the last 256, so one-time work stays out of what a body inlines and the row getters fit its budget; on the world's thread a row checks one count of replaced arrays, not its archetype's version. `grid neighbors 100K main` 10.6 → 3.66 µs a row, `children lookup` 32 → 13.1 ns a child, `sorted page 100K` 22 → 5.0 µs a change, `sorted range 1M` 760 → 563 ns a range. What's left in `grid neighbors 100K main`, against about 1.6 µs for the kernel on one worker: its 27 probes, 24 of which miss, about 0.7 µs at a half-full table (2.4 slots a probe; a JS microbenchmark of the same probes takes 0.51 µs), and about 6 ns an `at` and 4 a read for each of its 260 neighbors, the loads of the list's state, the pool and the row's slots that TurboFan doesn't hoist out of the loop.
202
+ - Refreshes: a refresh lists changed rows once, building again when they pass an eighth, rather than counting their ticks first and scanning again; entries shift an entry a step; whether a key holds objects is kept, not scanned for per entity: `index refresh 1M 1%` 165 → 141 ns a moved entity, `rekey 1M` 14.5 → 12.3 ms. With 100K entities, all in cache, a move still takes 145 ns, so it isn't memory bound: two ordered edits, a binary search and a shift in the old bucket and the new, take 57 ns in a microbenchmark, and finding the key's bucket and the per-entity bookkeeping the rest.
203
+ - Indexes without a key, kept as sorted tables with no key words: `keyless refresh 1M 1%`, 1% of 1M entities spread through entity order leaving or entering again, 343 → 187 ns an entity, from padding entries to four words, so a block's shift moves 8-byte words, which a copy within shared memory moves about five times faster than 4-byte ones (a 1.8 KB shift 622 ns by 12 bytes, 128 by 16; a loop is no faster), and binary searches by entity within a block; what's left is a shift of about half a block and a search over 10K fences each way. `keyless spawn 1M 1%`, 1% despawned and spawned again at the end of entity order, 22.4 → 2.1 ms: a split or dropped block refreshed every position, fence, Fenwick node and segment tree, and now those from its position on. `keyless length` 60 → 4.8 ns a lookup reading `length` and `changed`: a site without arguments copies no values, the plugin's count-0 site calls it directly, and a whole index's `changed` reads its tree's root rather than two Fenwick descents. `keyless write 1M`, a refresh after a kernel wrote a component all 1M hold, 3.6 µs, as `keyless index idle`'s 7 ns an index: it reads no key ticks.
204
+ - `unique lookup 1M` stays at 44 ns: a build numbers buckets by slot partition, so a lookup in key order reads its slot, record and entry at three unrelated places; a JS microbenchmark of that chain takes 58 ns, and of the slot probe alone 17.8.
205
+
206
+ **Hot helpers kept small.** TurboFan inlines what a system's body calls into its runner's loop up to a cumulative bytecode budget, so what's left for the row getters depends on everything else the body reaches. `pushCommand`'s growth, a prepared spawn site's plan lookup past the one kept by archetype index, and a list's shape and spawner past the cached ones are outlined: churn 15 → 18 ms in node had come from code elsewhere in the bundle, a dead function placed before `finalizers.ts`'s runner reproducing it on `fe36a99f`, and with `--max-inlined-bytecode-size-cumulative=2000` both measured 14 ms; outlined, churn is 14.9 ms on `fe36a99f` and 15.0 ms here.
207
+
208
+ **Archetype moves.** Each storage knows its element size in 32-bit words, so a cell copy doesn't dispatch on the layout, and move lists are cached in an array by target archetype id rather than a map: retag 1M 46.5–48.8 → 41.8–44.2 ms.
209
+
210
+ **Main thread.** Row getters chosen once, and tuple reads and writes in one loop: 50 systems 3.2 → 1.63 ms (vitest).
211
+ - Accessor rows each get their own prototype. Built from `{}`, every row after the first that defines an accessor with another getter went to V8 dictionary properties. One row per set of reads and writes, shared across systems and archetypes and rebound per pass, so a body sees one shape; f32-lane tuples read as array literals, and scalars and f32 lanes written directly. Resource cells in a context are resolved once per run. On node: 50 systems 1.1 → 0.45 ms, churn 55 → 32 ms, retag 74 → 59 ms; 50 distinct bodies over three row shapes 1.75 → 0.53 ms; two writing systems over 100K 19.5 → 1.9 ms; 20 systems reading a resource per row 1.26 → 0.22 ms.
212
+
213
+ ## GPU particles
214
+
215
+ The sample (`pnpm sample`, which opens `/particles/`) draws the visible and enabled quarter of the perf particles as points, wrapping positions in the vertex shader, and moves them with the perf `move` kernel: on the GPU (`?mode=gpu`, positions never come back), on workers with the positions uploaded for drawing each frame (`?mode=cpu`), or not at all (`?mode=static`). Headless chromium on Apple silicon at 60 fps, 10 s per sample after warmup, CPU time per frame by process from `ps`, main-thread task time from the DevTools protocol. Four rounds at 1M (250K drawn), two at 4M (1M drawn):
216
+
217
+ | Per frame, ms | draw only | CPU move + upload | GPU move |
218
+ |---|---|---|---|
219
+ | `run`, median (p95), 1M | 0.28 (0.6) | 0.75 (3.9) | 0.39 (0.75) |
220
+ | main thread busy, 1M | 0.95 | 1.9 | 1.02 |
221
+ | renderer process CPU, main thread and workers, 1M | 2.2 | 4.9 | 2.3 |
222
+ | GPU process CPU, 1M | 2.9–3.0 | 2.2 | 3.1 |
223
+ | `run`, median (p95), 4M | 0.2–0.45 | 0.97 (1.9) | 0.40–0.46 (0.87) |
224
+ | renderer process CPU, 4M | 1.5–2.7 | 5.55 | 2.6 |
225
+ | GPU process CPU, 4M | 2.0–3.3 | 4.2 | 3.2–3.3 |
226
+
227
+ - **The GPU move costs about what drawing alone does:** about 0.1 ms more `run` and 0.1 ms more renderer CPU, the same at 250K and 1M drawn: one record write and one dispatch per archetype.
228
+ - **The CPU move costs about 2.7 ms more renderer CPU per frame and twice the main-thread time,** though the move itself is 0.015–0.03 ms on workers. The rest is waking workers inside a frame loop and the 3 MB (12 MB at 4M) upload, copied on the main thread by `writeBuffer` and again in the GPU process, whose CPU rises at 4M.
229
+ - **The GPU process uses less CPU in the CPU mode at 1M** than with nothing moving at all; not understood yet.
230
+
231
+ ## Worker scaling
232
+
233
+ move, chromium, by worker count and entity count (a quarter of the entities move), with even shares:
234
+
235
+ | Workers | 1M | 4M | 10M |
236
+ |---|---|---|---|
237
+ | 0 (main thread) | 0.200 ms | 0.785 ms | 1.98 ms |
238
+ | 1 | 0.195 ms | 0.785 ms | 1.97 ms |
239
+ | 2 | 0.100 ms | 0.410 ms | 1.01 ms |
240
+ | 4 | 0.045 ms | 0.215 ms | 0.535 ms |
241
+ | 6 | 0.030 ms | | 0.500 ms |
242
+ | 7 | 0.025 ms | 0.150 ms | 0.56 ms |
243
+ | 8 | 0.060 ms | | 0.555 ms |
244
+ | 9 (default) | 0.055 ms | | 0.575 ms |
245
+
246
+ - **Dispatch overhead is not the limit.** Scaling is linear up to 7 workers at 1M: 0.025 ms is 8× the main thread and 3.6× the adobe/data ECS.
247
+ - **Even shares wait for the slowest core.** The default pool is `hardwareConcurrency − 1`, which is 9 here. Past 7 workers, shares land on efficiency cores or share a core with the main thread, so 1M more than doubles. Browsers expose no core types or thread placement, so claimed splits fix this instead: with them, 1M takes 0.030 ms at 7, 8 and the default 9 workers. Pieces per worker (4, 8 or 16) made no measurable difference.
248
+ - **At 10M the work is memory bound.** 2.5M rows read 24 bytes and write 12, about 90 MB per run; 0.5 ms is about 180 GB/s, near the chip's CPU bandwidth. It stops improving after 4 to 6 workers, and more entities would not change that.
249
+ - **Single-threaded move matches the adobe/data ECS** (0.095 ms against 0.09 ms): four tight vec3 rows are three full vectors, as its separate x, y and z arrays are.
250
+
251
+ ## Tried and not kept
252
+
253
+ - **Observer posts without allocating per post** (a reused list of chosen posts, no closure for posting, the block's cleared words a constant list, settling over reused scratch rather than a copy of the posts): `joined observer resource` 7.2–7.6 µs a tick against 6.4–8.3 without, `joined observer 10K` 0.52–0.69 ms against 0.51–0.76, within noise. Worth revisiting once posting shows in a profile of a world with many observer systems on joined threads.
254
+ - **Observer factories: a count or selection with `where` tracked through an index without a key,** every row read through `at` and tested after any change: `count 1M changed factory` 23.2 ms; a sorted index on the `where` key, each entry looking up its range, takes 42 µs. Kept for selections with a page and no `order`, which stop at the page's end in entity order.
255
+ - **Observer factories: descending pages finding each run of equal keys by galloping back from its last row,** three reads of most rows: `select page 100K factory` 23 µs a change; reading each row once, holding a run until its key changes, 16 µs.
256
+ - **Observer factories: a scan's result copied out of scratch,** `select factory` 14.3 ms; gathered into the value itself, with the test inline for one entry and entity indexes by `>>> 0`, 10.3 ms. What's left is a row body a row; worth revisiting with a way to read columns in an observer system without a body call per row.
257
+ - **Observer factories: keeping a resource's notifier added once idle,** a cold read 2.6 µs (a run of the reader alone) against 14.0 µs adding it again, nearly all of it registering its runner; kept removing it after three idle passes, since each added notifier costs every pass. Adding an observer system again now reuses its runner (0.1 µs of a 0.88 µs cold read), so removing stays.
258
+ - **Observer factories: a direct scan's numeric condition tested inline,** its range's bounds compared in the body rather than through the condition's test: `select factory` 8.55 ms against 7.55, the larger body costing more than the call it saves.
259
+ - **Observer factories: gathering every entity into a plain array, its value a slice,** 9.5–9.65 ms against 9.1 for typed scratch copied into an array made at its length.
260
+ - **One block for posts holding copies, the next post waiting for one in progress:** back to back the world waited for the thread's run in 1,696 of 20,000 ticks, about 10 µs each after a 5.6 µs spin, 1.3 µs a tick; a second block, which the next post goes into while the thread runs one, removes the waits. Worth revisiting only if a block's memory mattered.
261
+ - **The cadence benchmarks giving the median tick, or the median of ten stretches of 100:** chromium's timer steps are as long as a tick, so its median tick was 20, 25 or 30 µs; a stretch's mean holds its slowest ticks, 25–113 µs a tick on a loaded machine against 18–40 for the mean of the middle half of the ticks.
262
+ - **An observer system on a joined thread whose unclaimed post a writer cancels rather than copies:** `joined observer resource` 6.0–6.3 µs a tick against 6.2–6.6 copying, within noise; kept copying, since a thread that claims between the writer and the sync point then still runs. Worth revisiting if copying a large read set per tick shows in a profile.
263
+ - **Waiting for the post after one cancelled (`cancelsBeforeWaiting` 1), or after sixteen:** at 1 the thread runs at least every other sync point, but the world waits for its wake-up nearly every other tick back to back: `joined observer resource` 11.4–15.8 µs in chromium against 9.3 at 4, `joined observer 10K` 0.50 ms in node against 0.30. At 16, 6.4 µs and 0.11 ms in node, 9.2 µs and 0.12 ms in chromium, the thread up to 17 sync points behind. Without waiting at all, `joined observer 10K` never ran in chromium in 3,000 back-to-back ticks: every post was cancelled first. Kept 4. Worth revisiting with a cadence-aware limit, such as milliseconds behind rather than posts.
264
+
265
+ - **A loop spawner as the only spawner:** about twice the generated one (numbers above). Kept only where code can't be generated. Worth revisiting if engines specialize a shared loop's keyed reads per shape.
266
+ - **Prepared spawn sites calling the shape's column writers:** one site spawning into four archetypes made each writer call see four closures, `create` 103 ns and `create flat` 76 ns, against 58 and 66 ns through a positional spawner generated per site key order and shape.
267
+ - **Removing the prepared sites,** as the plan for curried spawns proposed once they no longer won: they still win by the values object's cost (above).
268
+ - **A spawn site remembering the last archetype and world it spawned into,** checked before the plans by index: `spawn singles` 390 → 380 ns, within noise, but `create` 58 → 61.5 ns and `create flat` 64 → 70.5 ns. Worth revisiting if a site's plan lookup shows up in a profile again.
269
+ - **Removing rows last first without grouping moves by pair:** `add tag` 114 ns and `retag` +10%; grouping the arrivals by pair took them to 100 ns and −5%.
270
+ - **Main-thread kernels spawning into the world's batches,** as main-thread systems do, rather than their runner's: `spawn bulk kernel` 17.8–18.6 ns against 17.8–19.3 ns, no gain, and the rows of chunks run on workers would land after every main-thread chunk's, so row order would depend on the worker count.
271
+ - **Blocks of reservations whose unused positions the leak scan finds,** rather than returned by position: `spawn bulk kernel` 15.5 against 10.3 ns, and the scan bumps the generations of indexes never handed out, which wears them toward wrapping. Kept for chunks that fail.
272
+ - **A first block of 64 positions:** 10.3 ns against 10.4 ns starting at 8; 8 is kept, since a kernel spawning a few entities a run returns fewer.
273
+ - **Kernel adds and removes staged as spawns are:** not built. A profile of `add tag kernel` (81.5 ns, below `add tag`'s 96 ns) puts issuing in the kernel at 12% and the sync point at the rest: plan 29%, arrive 19%, sort 12%, writes 7%. Staging would have to bypass the plan, which orders adds against despawns and other commands. Worth revisiting with bulk moves in the plan (design.md).
274
+
275
+ - **Listing symbol keys with `Reflect.ownKeys`, or with `Object.keys` first:** 1–5% slower than `Object.getOwnPropertySymbols` for 1 to 6 keys (table above), and `Object.keys` finds nothing, since keys are symbols. Worth revisiting if engines give symbol keys an enumeration cache.
276
+ - **U32 ticks:** no measurable gain on the non-sparse 1M benchmarks, 10% on uniformly sparse filters, and change filters go wrong past 2³² ticks unless a clamp pass is added. With ticks kept only where observed, it would help only observed components.
277
+ - **Commands encoded from WASM:** emit 1M 11.2 → 9.2 ms on the main thread and no gain on workers, for about 800 lines across the compiler, code generation, runner, pool, worker and sync point. The sync point is most of emit's time.
278
+ - **Workers spinning 0.15 ms instead of 0.05 ms before waiting:** chain 6×1M on workers 0.83 → 0.525 ms back to back, but only because it bridges the gap between consecutive benchmark runs; per frame it measured the same.
279
+ - **Holding workers spinning while a later tier of the run has kernels,** with no time constant: per frame the same, and move's best case on workers 0.020 → 0.040 ms. Traces showed the 0.05 ms spin already keeps workers awake across tiers (each tier is seen within about 5 µs).
280
+ - **Home ranges sized by each worker's recent share of pieces:** no gain (chain 0.275 → 0.29 ms). Shares never settle: apart from the slowest few workers, each swings by about 40% between rounds, so the sizing chases noise and moves range boundaries, which costs affinity.
281
+ - **Copying numbers and f32 tuples out of command values when issued,** into a typed array the sync point reads, so the issuer's arrays die young: the sync point got 27 ms faster and garbage collection 12 ms, but issuing got 96 ms slower per million spawns (create 1M 294 → ~357 ms). Reading the tuples costs as much at issue time as later, and the extra bookkeeping is more than the sync point saved.
282
+ - **Segments of records, a command at a time, decoded into the world's buffers:** the decode cost 0.9–0.98 ms per run of chromium `emit workers` (100K commands), as much again on a second pass over the same bytes, so instruction-bound, not memory-bound, which put `emit workers` at 8.6–8.8 ms against `efedcd21`'s 8.2–8.4 ms; in node 6.83–6.93 ms against 6.94–7.03. Decoding command by command through `pushCommand` and a per-component push, rather than into arrays fitted once per segment, was slower still: node 7.24–7.49 ms. Columns copied in by the worker, which the world takes views of, took it to 7.76–7.8 ms.
283
+ - **Copying a segment out of the shared ring before decoding it:** chromium drain 0.98 → 1.49 ms; the decode didn't get faster, and the copy cost 0.5 ms.
284
+ - **Inlining the one-word copy of a struct value in `writeRange`, and a views sentinel in place of `null` for buffers without bytes:** no change, sync point 6.1–6.2 ms either way.
285
+ - **Copying drained columns into fresh, exactly sized arrays:** planning 2.60 → 2.45 ms in chromium, but the copies cost more than that.
286
+ - **The main thread claiming pieces too:** no gain; workers that wake late are slow at first, so the main thread does about what it would alone.
287
+ - **A loop per main-thread system** (eval or emitted by the plugin): 5–10% on top of fast-property rows; a micro-benchmark of 50 systems with one loop literal each measured 16%. The tuple each `row[component]` read allocates stays, and it costs more than the shared call site. Worth revisiting with compiled main-thread bodies, where reads become column loads.
288
+ - **Removing a sync point's rows after all its entries, each archetype's from the highest,** so every row that stays moves at most once: churn 1M +13%, retag +6%. Sorting, the map of rows and a second pass over scattered rows cost more than the copies saved, and copying cells is only about 12% of retag; planning, the system's body and per-entry work make up the rest. Worth revisiting only with column-major moves per pair of archetypes, where removals are batched too.
289
+ - **Unrolled f32 lane writers for staged spawns:** create 1M −5% for 30 more lines. Profiles attribute the caller's tuple allocations to the writer, which inflates it. Worth revisiting if spawns stop allocating tuples.
290
+ - **Faster value-object spawns** (`create flat dynamic`): `Object.keys` and the caller's own spreads dominate, on a path the plugin already avoids for literal keys. Worth revisiting only if spawns from data objects matter to real workloads.
291
+ - **SIMD reductions:** lanes compute in f32 at storage precision, which would round sums into f64 partials. Four rotating scalar lanes took reduce 1M 0.93 → 0.50 ms instead. Worth revisiting with an f64x2 path in the across-rows mode.
292
+ - **Faster WASM lookups** (`follow`): the generated find is already an entity-table check, a directory record and column loads, about 3.8 ns per row of dependent loads. Worth revisiting with a measured breakdown of where those cycles go, such as with lookups batched per archetype.
293
+ - **Positional `commands.add` and `commands.remove` for literal keys,** as the plugin does for spawns: not built. Issuing them, with their key lookups, is about 8% of retag 1M; planning and applying the moves are the rest. Worth revisiting once the sync point's own cost per move is much lower.
294
+ - **Fixed costs per run, measured rather than tried:** a run of a system no entity matches costs about 0.8 µs, fifty of them 0.39 µs each, and a run whose sync point applies one spawn 1.5 µs. Kernels at 1K and 10K rows stay within 2–5× of their best, as at 1M, so small systems hide no large cost.
295
+ - **The world's thread spinning up to 50 µs for a joined thread's next run** before waiting on its posted word: `remote run` 12.4 → 66 µs in node, since the spin holds the world's thread and the run it just started waits behind it.
296
+ - **Runs from joined threads, measured rather than tried:** two node threads waking each other through `Atomics.waitAsync` take 9.7 µs a round trip, so `remote run`, 12.4 µs, spends about 2.7 µs beyond the platform's floor; spinning instead would block the joined thread, which is often the window's. A mailbox adds about 20 µs a tick to `mailbox select 10K`, whose 0.75 ms is the ordered selection the world's thread recomputes, as it would for its own observer.
297
+ - **Checking commands' values for a joined thread's objects as they're issued,** in `commands.add` and prepared add sites, behind a check of whether any thread holds claims: `add value` 95–97 → 100–104 ns in node, measured alternating, with the sync point's own additions about 2% of it. Checked when a system's commands are queued instead, dropping the command and failing its system, where the issuing paths stay as they were; spawns are checked as they're issued, in the object columns' writers, which only objects reach.
298
+ - **The structure epoch turned even by a store, notifying only waiting readers, kept at every sync point:** about 24 ns a sync point against 35 ns, and `sync point one spawn` still a timer step (41 ns) above `c4ecbd8d`; kept only while a joined thread holds claims instead.
299
+ - **Replay finding a pair of archetypes' source columns once per run of its moves:** `log replay` 23.7–24 → 24.7 ns a move, no gain; a mirror's archetypes hold few columns. Worth revisiting with many objects per archetype.
300
+ - **Finding reports to retire through `Report.byRun`,** the sorted index on their run, oldest first: `run failing` 165–196 µs in node acquiring the index for each report and releasing it after, so each rebuilt it, and 87 µs holding it once the first report was spawned, which also keeps the journal recording every later sync point's moves, against 11.7–12.6 µs for the world's own list of the reports it spawned, in run order, with a liveness check per despawn; a failing run without reports, at `3775940d`, is 9.2–9.5 µs, so a report costs about 2.5 µs. Clean runs are unchanged, measured alternating with `3775940d` (`run idle` 333 / 333 ns, `run observer` 166 / 166, `loop tick idle` 1,737 / 1,698, `run 50 idle` 72 / 74 per system, `sync point one spawn` 875 / 833, `remote run` 9.8 / 9.9 µs, medians of six). Worth revisiting only if lookups through a sorted index get far cheaper to set up.
301
+ - **Emptying a run's list of warnings by setting its length to 0** each run: `run idle` 375 → 416 ns in node, measured alternating; the list is counted instead, and the report of warnings alone reused while they're the same.
302
+ - **Moving `placeFinalizer`,** to the end of `finalizers.ts` or into `activate.ts`, its one caller: churn 17.6–18.6 ms either way, since the budget above, not that function, set it.
303
+ - **Writers waiting for a tail to finish instead of snapshotting it,** and **choosing between the two by the tail's rate** (rows read over time since posted, waiting when finishing looked cheaper than copying the rest). Ticks of a world writing every row's place, then working W ms, while the last tick's tail on a joined worker spends T ms on 10,000 rows of a place and a pose, after B ms of other work there; ms a tick, snapshot / waiting / by rate, node then chromium (node's frame is a timer set after each tick):
304
+
305
+ | Case | node | chromium |
306
+ |---|---|---|
307
+ | frame, typical: T 2.5, W 2 | 20.1 / 20.2 / 20.2 | 16.7 / 16.7 / 16.7 |
308
+ | frame, B 8 + T 2.5 and W 9: together over a frame | 26.5 / 26.8 / 26.9 | 16.7 / 20.7 (p95 25.5) / 16.7 |
309
+ | the same, W before the writer | 26.7 / 26.8 / 26.8 | 16.7 / 16.7 / 16.7 |
310
+ | frame, B 20 + T 2.5, W 3: tail longer than a frame | 23.3 / 26.2 / 22.7 | 22.6 / 26.2 / 22.7 |
311
+ | fixed 16.7 ms, B 8 + T 2.5, W 9 | 16.7 / 20.2 / 16.7 | 16.7 / 20.2 / 16.7 |
312
+ | the same, W before the writer | 16.7 / 16.7 / 16.7 | 16.7 / 16.7 / 16.7 |
313
+ | fixed 4 ms, T 2.5, W 3 | 4.0 / 6.1 / 4.0 | 4.0 / 6.1 / 4.0 |
314
+ | the same, W before the writer | 4.0 / 4.0 / 4.0 | 4.0 / 4.0 / 4.0 |
315
+
316
+ A writer arriving as the tail of 2.6 ms had read 0, about half, 85% and 95% of its rows, chromium, its run in ms: snapshot 0.175 / 0.165 / 0.115 / 0.125, waiting 2.72 / 1.56 / 0.42 / 0.23, by rate 0.2 / 0.205 / 0.155 / 0.13; node alike. The snapshot holds the world's thread 20–72 µs a writer for the copy, waiting 22–27 µs for its spin; the joined thread's time is the same either way, but for one body (Next). By rate never chose to wait in any tick case: a row copies in 6–8 ns, less than any tail's work on it, so finishing is cheaper only within about the last chunk, which the writer waits for anyway. Waiting is worth revisiting if a tick could no longer run ahead of its last tail at all, and by rate if copies grew costly against tails' work per row, as with wide struct reads and light bodies.
317
+ - **Dropping a component's kernel stamps as soon as nothing watches it,** reloading the kernels that write it then, rather than at their next load for another reason: ticks that alternately add and remove a system filtering on `changed` of what a kernel writes, 100 rows, took 216 µs a tick against 13.9 µs, in node, since each removal and each add reloads the kernel, its import and WASM compile on every thread, while a stamp kept costs a store per chunk. Worth revisiting only if stamps of components nothing watches showed up in a kernel's profile.
318
+ - **Checking eight rows' ticks at every row,** rather than at rows aligned to eight: clustered changes 0.023 → 0.108 ms, since each passing row checked a block again. Aligned checks cost clustered changes about 3 µs.
319
+
320
+ - **Records of every string, kept whether or not a joined thread reads them,** read on the world's thread out of a cache by handle: `string read 10K` 23.1 ns a row against 2.79 for an object, and `string write 10K` 154 ns against 21. Values on the world's thread, and records only while a joined thread may read them, put both at an object's cost.
321
+ - **Encoding through `TextEncoder.encodeInto`,** into shared memory or a scratch buffer copied in, and decoding through `TextDecoder` from a scratch copy: 96–118 ns a 30-character label made and encoded, against 98 for `charCodeAt` into the record; 98 ns a decode against 124 for `String.fromCharCode` over a view, where a joined thread decodes each record once. Both flatten the string first, which most of the time is; `TextDecoder` rejects shared views in browsers.
322
+ - **Copies of strings' records in tail snapshots and observer posts,** let go with the snapshot: not needed, so not kept, since a tick posts its tails once the last tick's are done, a run waits for its tails, and a sync point for every post its thread claimed, so neither outlives the second sync point after the one it read. A tail stalled while runs rewrite what it reads six times sees its tick's strings without them. A post of a system reading only struct resources, which nothing waits for, would need them, so a system reading a string resource doesn't post that way. A joined thread's finalizers, which run whenever the thread replays, read copies in the stop lists.
323
+
324
+ - **Index builds across the pool as messages,** a message to each worker per phase in five phases: `index rebuild 1M workers` 9.5 ms on nine workers; each phase paid about 0.4 ms of round trips (counting, trivial work, took 0.5 ms). Phases go through the workers' task rings as tasks of a reserved kernel number, their plan in the memory, instead.
325
+ - **A separate scatter phase,** copying listed entries into partition order: 8.35 ms. Counting computes each piece's partition counts and listing writes straight into partition order: 6.7 ms.
326
+ - **A loop over the key's leaves for listing:** 14 ns an entity single-threaded in a microbenchmark, of which the member check costs 2.6 ns, the hash call 2 and the loop over leaves 5. Generated code for the plan's leaves runs about 6 ns; the loop is kept where code can't be generated.
327
+ - **Grouping with each slot's hash beside its bucket in thread scratch:** 7.4 ms single-worker either way; kept, since it reads less.
328
+ - **Building again whenever changed chunks' rows pass an eighth:** `rekey 1M` 46.9 ms, built every frame, since 6% of rows crossing touch every chunk. Counting the rows' own ticks then: 25.9 ms.
329
+ - **Merging a refresh's operations sorted by `Array.prototype.sort` with a comparator:** 25% of `rekey 1M`'s profile. A counting sort by bucket and an insertion sort within each: 14.1 ms.
330
+ - **Schedule depths as an `Int32Array`,** after `loop tick add remove` grew 234–241 → 260–272 ms with indexes (85b434cb, measured alternating against 2898bf26 and at each later commit): `createSchedule`'s 223 eager deopts on the depths array's map went to 3, but the benchmark didn't move, and timing its sections shows a schedule costs the same, about 2.9 µs, before and after. A larger inlining budget, and runners not making `order`'s closures, didn't move it either. Timed in the benchmark, `System.create` takes about 1 µs more a tick and `add` 0.9 µs more, and a micro-benchmark of `System.create` alone collects garbage half again as long; not found yet (Next).
331
+ - **Ordered bodies listing their rows before running them,** as kernels' runs do: `order run 100K` 34.5 ns a row against 31.4 walking the entries.
332
+
333
+ - **An index without a key as one hash bucket,** zero key words hashing to one bucket in entity order, which every path already read: `keyless refresh 1M 1%` 6.73 ms against 3.43 for a sorted table then, since a long bucket merges its whole length once any entity enters or leaves, and a spawn per frame into 1M would cost an O(1M) merge. `keyless length` was 5.8 ns, against 4.8 for the sorted table's site once it took no arguments.
334
+ - **`copyWithin` for shifts of 3-word entries:** no faster than the loop (`keyless refresh 1M 1%` 3.43 ms either way): a copy within shared memory by 12 bytes moves 4-byte words. Kept only with entries padded to an even number of words (above). Smaller blocks for indexes without a key would halve the shift again, but the 128-entry block is in every reader, WASM included.
335
+ - **Index tables at most a quarter full:** `grid neighbors 100K main` 3.93 → 3.73 µs a row, its misses mostly stopping at the first slot, but `unique lookup 1M` 44 → 53 ns, its slots twice as large and less cached. Half full is kept. Worth revisiting for non-unique indexes only, where slots are small next to entries, if misses dominate a real workload.
336
+ - **An identity or locality-preserving hash for integer keys:** in a microbenchmark of the slot probe over 1M keys, identity takes dense keys in order from 17.8 to 11.4 ns but scattered keys from 18 to 31 ns, and a miss for a key past a dense range scans the whole run of filled slots, 660 µs; keeping a key's high bits and mixing its low ones packs dense keys into slots side by side, 21 µs a lookup. Linear probing needs the hash to spread keys whatever their distribution; a dense direct table beside the hash would be the way to get the 9 ns, at the cost of keeping a second structure and teaching kernels to read it.
337
+ - **Reading a patch's keys, hashes and buckets ahead in batches of 64,** so their misses overlap: `index refresh 1M 1%` 165 → 173 ns and `rekey 1M` 14.7 → 23.7 ms. A move in cache costs the same, so there was little latency to hide.
338
+ - **A list's pool in three banks, its first, last and middle positions,** for hash lists too: `grid neighbors 100K main` 3.63 → 3.84 µs a row from choosing the bank in `at`. Only sorted lists keep a second pool for their last positions.
339
+ - **Making a pool's rows for every position a list holds:** a 100K-row sorted list made 100K rows for a page of 20; rows are made ahead for the first and last 256 positions only.
340
+
341
+ ## Next
342
+
343
+ - `grid neighbors 100K main`, 3.66 µs a row against about 1.6 µs for the kernel on one worker: each neighbor costs about 10 ns in loads of the list's state, the pool and the row's slots; rows whose values carry their index and views as their own fields would save a few of them.
344
+ - Index refreshes, 141 ns a moved entity: two ordered bucket edits and a probe, in cache.
345
+
346
+ - `loop tick add remove`, a new system each tick: about 2 µs more a tick since indexes (above), in `System.create` and `add`, as more garbage; the paths a run of an existing system takes measure as before.
347
+ - Index rebuilds across the pool: `index rebuild 1M workers` 6.7 ms, nine workers 4.3× one, every phase scattering or gathering by partition; an estimated 2–3 ms if the scatters reached memory bandwidth. Rebuilds are rare, a refresh moving more than an eighth of an index.
348
+ - Single-tier runs on workers: workers asleep at the start of a run take 60–135 µs to see the task, and 2–4 of 9 find nothing left to claim.
349
+ - Idle cores clock down: after 5 ms idle, even the main thread runs move 2–4× slower per frame, and keeping one other core busy removes most of it, at 10M too. That's the OS's power policy, not something dispatch can avoid without spending power.
350
+ - Emit and other command-heavy kernels: the sync point dominates.
351
+ - Kernels taking `%` of an f64: a conditional on `resources[clock].tick % 2` costs about 33 ns a row in node, 10K rows 333 µs against 8.5 µs without it.
352
+ - Replaying the move log: `log replay` takes 24 ns a move in node and 36.5 ns in chromium, two entries each, against about 1 ns to move the bytes; the cost is the per-entry dispatch and the scattered rows a swap reads.
353
+ - Ordered selections recomputed every tick: `joined observer 10K` spends most of its 0.4–0.5 ms a tick sorting 10K entities.
354
+ - `joined observer 10K`, back to back: lookups read the rows in place, so the world's writer waits for each run the thread claimed, about 1.07 ms, in 1,451 of 3,000 ticks; the thread's run is about 60% the benchmark's own sort, and of the rest `at` through the index without a key (14%) and a load of the archetype's version per row (12%), which a check of versions once a post would save.
355
+ - A tail's body reading from a snapshot ran slower in one case: a loop counted down from an unbounded integer resource (an f64) took 13.6 ms against 11.2 in place over 10,000 rows of 200 steps, in node, while counted as an i32 it took 10.8 against 11.2; deopts didn't account for it.
356
+ - Main-thread spawns reserving in blocks too: `spawn bulk` still takes one atomic add per spawn. Finalizers spawn during the sync point, after it materializes the run's reservations, so a world's block would have to end before each materialization.
@@ -0,0 +1,81 @@
1
+ # World.create implementation plan
2
+
3
+ All of the runtime lives here. The only export is `create`, which moves here from `world/create.ts`. Rules:
4
+
5
+ - No dependency on `@adobe/data`. Its code can be read for reference: `typed-buffer/`, `cache/memory-allocator.ts`, `ecs/store/core/`, and `ecs/database/calculate-system-order.ts`.
6
+ - Performance comes first, then code size.
7
+ - Kernels are compiled from the start. The compiler and Vite plugin run at build time, so they live beside this folder under `src/implementation/compiler/`, with their own package entry. Generated code reaches the runtime through one internal hook, `attachKernel(system, url)`.
8
+ - Every module gets unit tests. The particle sample becomes a real end-to-end test.
9
+
10
+ ## 1.1 Main thread
11
+
12
+ 1. **Memory.** A shared `WebAssembly.Memory` from the start, so 1.2 and 1.3 don't change how data is stored.
13
+ - Columns are typed-array views into an arena allocator.
14
+ - Memory grows only at sync points, and views are refreshed afterwards.
15
+ 2. **Storage.**
16
+ - Archetypes are tables keyed by component set.
17
+ - Each linear component is a column in the arena. Each non-linear component is a JS array.
18
+ - The entity table maps each index to its archetype, row and generation. The free list holds a freed index back until the next flush.
19
+ - Each row stores `added` and `changed` ticks per component, as f64 so they never wrap. U32 ticks come in phase 2.
20
+ 3. **Registration.**
21
+ - Flatten composites.
22
+ - Check for duplicate system names and for missing schemas.
23
+ - Check unordered conflicts, including a lookup that reads a component its own system writes.
24
+ - Sort into tiers from `before`/`after`/`during`.
25
+ - Build each system's archetype matches lazily, and extend them as archetypes are created.
26
+ 4. **Running.**
27
+ - Run tiers in order.
28
+ - Change filters compare against each system's `lastRun`.
29
+ - Non-kernel systems get accessor rows: `defineProperty` getters and setters for the declared keys, with copy-on-read and whole-value writes. Values are immutable, so a copy is never edited.
30
+ - Resource-only systems run once per run.
31
+ - A system that throws rejects `run`.
32
+ 5. **Commands and sync points.**
33
+ - Each system has its own buffer, merged in tier order.
34
+ - Plan: compute each entity's net move from one archetype to another, and skip it when nothing is pending.
35
+ - Apply: swap-remove, insert spawned rows, then free indexes.
36
+ - `spawn` reserves a real entity through the atomic cursor.
37
+ 6. **Reads.**
38
+ - `query.select` and `count`, with `not`, `where` and `order`.
39
+ - `read.entity`, `read.component` and `read.resource`.
40
+ - Resources are stored as components on a single entity, with their initial values taken from the schema `default`.
41
+ 7. **Compiler** (`src/implementation/compiler/`):
42
+ - The bundler's parser (`this.parse`), plus a validator for the kernel subset.
43
+ - Maps each component, resource and lookup access to its slot by binding.
44
+ - Emits a JS kernel `(columns, start, end, resources, lookups, keys, args, commands, tick)` that records the shapes it assumed (`world/create/kernel.ts`). The runtime applies change filters and passes only passing row ranges. Kernel code references no module bindings, so it can move to a worker chunk.
45
+ - Registration checks those shapes against the schemas.
46
+ - In 1.1, kernels run on the main thread.
47
+ 8. **`dispose`,** and the particle sample as an end-to-end test.
48
+
49
+ ## 1.2 Workers
50
+
51
+ - **Pool:** sized from `navigator.hardwareConcurrency` minus the main thread, and only with shared memory. The worker entry script (`worker.ts`) lives in this folder. Without cross-origin isolation, arrays use plain `ArrayBuffer`s and everything runs on the main thread, since growing unshared memory would detach every view.
52
+ - **Kernel modules:** the plugin emits each kernel's `create` as its own module, an emitted chunk in builds and a virtual module in dev. The description carries its `url`, and the main thread and every worker `import()` it.
53
+ - **Registration:**
54
+ - Post the shared `Memory` to each worker once.
55
+ - Each worker imports the kernel URLs and keeps the kernels by index, along with their column sources, lookups and keys as component ids.
56
+ - Registration resolves once every worker has finished loading.
57
+ - **Shared state:**
58
+ - The spawn cursor and free list live in shared memory, and `reserve` is atomic, so workers spawn real entities.
59
+ - After each sync point, workers receive what changed in the layout: new schemas, new or grown archetypes, and the entity table. Messages are ordered, so a worker always has the layout before the tasks that use it. Shared memory doesn't detach as it grows, so nothing else is reposted.
60
+ - **Dispatch:**
61
+ - Within a tier, kernels start first: an archetype of at least `minimumChunk` rows is split across workers, and smaller ones run on the main thread. WASM kernels claim pieces of about an eighth of a worker's share from a counter in shared memory, so performance and efficiency cores finish together; JS kernels take even shares. Then non-kernel systems run on the main thread while the workers work.
62
+ - Each worker applies the change filter to its own chunk.
63
+ - Each system has its own command buffer per run. A worker returns its chunk's commands with its reply, naming components by id. Buffers merge in (tier order, chunk order), so results don't depend on timing. Encoding commands into shared memory is phase 2.
64
+ - A failing system or chunk rejects the run after its tier finishes. Later tiers are skipped, and the commands so far still apply.
65
+ - **Tests:** a world with zero workers and with three gives identical results, including commands and lookups issued from workers (`workers.browser.test.ts`, chromium). `dispose` terminates every worker.
66
+
67
+ ## 1.3 WASM
68
+
69
+ - **Layout:** a linear component is one interleaved column per archetype, in its schema's layout: `storage` (WGSL storage-buffer rules), `vertex` (tight, 4-byte aligned), or by default tight for the CPU. A GPU layout is checked at registration. Kernels address a field as `row * stride + offset`.
70
+ - **The compiler lowers each kernel once** and prints both the JS kernel and a `Program` IR from it. The IR is `null` for kernels with commands or lookups, which keep the JS kernel.
71
+ - **Registration generates WASM** from the IR and the schemas' storage types: f64 arithmetic with typed-array store conversion, so scalar WASM is bit-identical to JS. It compiles once, and every worker instantiates the module against the shared `Memory`.
72
+ - **SIMD**, in f32 lanes at storage precision:
73
+ - *Across rows*, four at a time, when every column is a dense f32 scalar.
74
+ - *Across rows of whole elements*, four at a time as `stride / 4` full vectors, when every store fuses into whole-element writes of components that read only same-stride components lane for lane (`p = p + v` on tight vec2 or vec3). The per-row loop takes the tail.
75
+ - *Within a row* otherwise: consecutive snapshot loads of a component's leaves become one vector load, and stores to its leaves whose values match lane for lane become one f32x4 operation and store. Loads and stores cover only the element's lanes.
76
+ - Anything else runs as scalar WASM, in the same row.
77
+ - **Tests:** scalar WASM is bit-identical to JS; SIMD is within storage precision of JS; 0 and N workers stay identical with SIMD, since chunks start on 16-row boundaries.
78
+
79
+ ## Deferred
80
+
81
+ Builtins, finalizers, rules, the ESLint rule, and GPU.
@@ -0,0 +1,71 @@
1
+ /**
2
+ * A sync point's plan: each touched entity's net change, as reusable parallel arrays rather than an object per entity.
3
+ * `to` is where it ends up; its values are command ranges, applied in issue order so later values win. Each world has
4
+ * its own, since a sync point can wait for the GPU between planning and applying.
5
+ */
6
+ export type Plan = {
7
+ count: number;
8
+ /** Entries made by spawns; each consumed one reservation. */
9
+ spawned: number;
10
+ /** Commands that did nothing, since their entity wasn't alive. */
11
+ dropped: number;
12
+ entity: Float64Array<ArrayBuffer>;
13
+ /** Archetype id, or -1 for an entity spawned in this sync point. */
14
+ from: Int32Array<ArrayBuffer>;
15
+ to: Int32Array<ArrayBuffer>;
16
+ despawned: Uint8Array<ArrayBuffer>;
17
+ /** While applying: the row an entity leaves in `from`, kept current as rows swap into holes; -1 for none. */
18
+ row: Int32Array<ArrayBuffer>;
19
+ /** While applying: the pair of archetypes a moving entry is in, by index into the pairs; -1 for one staying. */
20
+ pair: Int32Array<ArrayBuffer>;
21
+ /** While applying: the pairs of source and target archetype entries move between, by key, with their entries in order. */
22
+ readonly pairs: Pairs;
23
+ /** The first command range: queued buffer, start and end. Most entities have one. */
24
+ buffer: Int32Array<ArrayBuffer>;
25
+ start: Int32Array<ArrayBuffer>;
26
+ end: Int32Array<ArrayBuffer>;
27
+ /** Further ranges, as buffer, start, end triples. */
28
+ readonly more: Map<number, number[]>;
29
+ /** Components removed and added again here, so their `added` tick is new although `from` had them. */
30
+ readonly fresh: Map<number, number[]>;
31
+ /** Where each entity index's entry is, or -1; reset after each sync point. */
32
+ slots: Int32Array;
33
+ };
34
+
35
+ /**
36
+ * Source and target archetype pairs, reused across sync points: `from[p]` (-1 for spawns) and `to[p]`, the number of
37
+ * entries moving between them, and where they start in `order`, which lists every moving entry by pair, in entry order.
38
+ * When each pair's entries are consecutive entries, as a system's spawns or moves from one archetype are, each pair
39
+ * starts at its first entry and `order` lists entries in order.
40
+ */
41
+ export type Pairs = {
42
+ readonly byKey: Map<number, number>;
43
+ readonly from: number[];
44
+ readonly to: number[];
45
+ readonly count: number[];
46
+ readonly start: number[];
47
+ /** Entries that leave a row, which is removed after the pairs arrive. */
48
+ leaving: number;
49
+ order: Int32Array<ArrayBuffer>;
50
+ };
51
+
52
+ const initialEntries = 64;
53
+
54
+ export const createPlan = (): Plan => ({
55
+ count: 0,
56
+ spawned: 0,
57
+ dropped: 0,
58
+ entity: new Float64Array(initialEntries),
59
+ from: new Int32Array(initialEntries),
60
+ to: new Int32Array(initialEntries),
61
+ despawned: new Uint8Array(initialEntries),
62
+ row: new Int32Array(initialEntries),
63
+ pair: new Int32Array(initialEntries),
64
+ pairs: { byKey: new Map(), from: [], to: [], count: [], start: [], leaving: 0, order: new Int32Array(initialEntries) },
65
+ buffer: new Int32Array(initialEntries),
66
+ start: new Int32Array(initialEntries),
67
+ end: new Int32Array(initialEntries),
68
+ more: new Map(),
69
+ fresh: new Map(),
70
+ slots: new Int32Array(0),
71
+ });