@aztec/bb.js 0.0.1-commit.24de95ac → 0.0.1-commit.5daedc8

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 (572) hide show
  1. package/build/amd64-linux/bb +0 -0
  2. package/build/amd64-linux/nodejs_module.node +0 -0
  3. package/build/amd64-macos/bb +0 -0
  4. package/build/amd64-macos/nodejs_module.node +0 -0
  5. package/build/arm64-linux/bb +0 -0
  6. package/build/arm64-linux/nodejs_module.node +0 -0
  7. package/build/arm64-macos/bb +0 -0
  8. package/build/arm64-macos/nodejs_module.node +0 -0
  9. package/dest/browser/async_map/index.d.ts +1 -1
  10. package/dest/browser/async_map/index.js +1 -1
  11. package/dest/browser/barretenberg/backend.d.ts +10 -24
  12. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  13. package/dest/browser/barretenberg/backend.js +33 -84
  14. package/dest/browser/barretenberg/index.d.ts +2 -4
  15. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg/index.js +18 -27
  17. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts +17 -0
  18. package/dest/browser/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  19. package/dest/browser/barretenberg/testing/bigint-buffer.js +37 -0
  20. package/dest/browser/barretenberg/testing/fields.d.ts +16 -0
  21. package/dest/browser/barretenberg/testing/fields.d.ts.map +1 -0
  22. package/dest/browser/barretenberg/testing/fields.js +47 -0
  23. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  24. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  25. package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  26. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  27. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  28. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  29. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  30. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  31. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  32. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  33. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  34. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  35. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  36. package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  37. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  38. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  39. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  40. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  41. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  42. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  43. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  44. package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  45. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  46. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  47. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  48. package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  49. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  50. package/dest/browser/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  51. package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  52. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  53. package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  54. package/dest/browser/barretenberg_wasm/helpers/browser/index.js +9 -2
  55. package/dest/browser/barretenberg_wasm/helpers/index.d.ts +1 -1
  56. package/dest/browser/barretenberg_wasm/index.d.ts +1 -1
  57. package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
  58. package/dest/browser/barretenberg_wasm/index.js +2 -3
  59. package/dest/browser/bb_backends/browser/index.d.ts +1 -1
  60. package/dest/browser/bb_backends/browser/index.js +1 -1
  61. package/dest/browser/bb_backends/browser/platform.d.ts +4 -0
  62. package/dest/browser/bb_backends/browser/platform.d.ts.map +1 -0
  63. package/dest/browser/bb_backends/browser/platform.js +10 -0
  64. package/dest/browser/bb_backends/index.d.ts +10 -7
  65. package/dest/browser/bb_backends/index.d.ts.map +1 -1
  66. package/dest/browser/bb_backends/index.js +8 -7
  67. package/dest/browser/bb_backends/interface.d.ts +1 -1
  68. package/dest/browser/bb_backends/wasm.d.ts +1 -1
  69. package/dest/browser/bb_backends/wasm.d.ts.map +1 -1
  70. package/dest/browser/bb_backends/wasm.js +5 -3
  71. package/dest/browser/bbapi_exception.d.ts +1 -1
  72. package/dest/browser/bbapi_exception.d.ts.map +1 -1
  73. package/dest/browser/bbapi_exception.js +1 -1
  74. package/dest/browser/bin/index.d.ts +3 -0
  75. package/dest/browser/bin/index.d.ts.map +1 -0
  76. package/dest/browser/bin/index.js +11 -0
  77. package/dest/browser/cbind/generate.d.ts +1 -1
  78. package/dest/browser/cbind/generate.js +1 -1
  79. package/dest/browser/cbind/generated/api_types.d.ts +1 -1
  80. package/dest/browser/cbind/generated/api_types.js +1 -1
  81. package/dest/browser/cbind/generated/async.d.ts +1 -1
  82. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  83. package/dest/browser/cbind/generated/async.js +2 -1
  84. package/dest/browser/cbind/generated/curve_constants.d.ts +1 -1
  85. package/dest/browser/cbind/generated/sync.d.ts +1 -1
  86. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  87. package/dest/browser/cbind/generated/sync.js +2 -1
  88. package/dest/browser/cbind/schema_compiler.d.ts +1 -1
  89. package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
  90. package/dest/browser/cbind/schema_compiler.js +6 -5
  91. package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
  92. package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
  93. package/dest/browser/crs/browser/cached_net_crs.js +6 -1
  94. package/dest/browser/crs/browser/index.d.ts +1 -1
  95. package/dest/browser/crs/index.d.ts +1 -1
  96. package/dest/browser/crs/net_crs.d.ts +1 -16
  97. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  98. package/dest/browser/crs/net_crs.js +6 -1
  99. package/dest/browser/index.d.ts +2 -1
  100. package/dest/browser/index.d.ts.map +1 -1
  101. package/dest/browser/index.js +2 -1
  102. package/dest/browser/proof/index.d.ts +1 -1
  103. package/dest/browser/proof/index.js +1 -1
  104. package/dest/browser/random/browser/index.d.ts +1 -1
  105. package/dest/browser/random/browser/index.d.ts.map +1 -1
  106. package/dest/browser/random/browser/index.js +1 -1
  107. package/dest/browser/random/index.d.ts +1 -1
  108. package/dest/browser/retry/index.d.ts +1 -1
  109. package/dest/browser/retry/index.js +1 -1
  110. package/dest/node/async_map/index.d.ts +1 -1
  111. package/dest/node/async_map/index.js +1 -1
  112. package/dest/node/barretenberg/backend.d.ts +10 -24
  113. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  114. package/dest/node/barretenberg/backend.js +33 -84
  115. package/dest/node/barretenberg/blake2s.test.d.ts +1 -1
  116. package/dest/node/barretenberg/blake2s.test.js +2 -2
  117. package/dest/node/barretenberg/index.d.ts +2 -4
  118. package/dest/node/barretenberg/index.d.ts.map +1 -1
  119. package/dest/node/barretenberg/index.js +18 -27
  120. package/dest/node/barretenberg/pedersen.test.d.ts +1 -1
  121. package/dest/node/barretenberg/pedersen.test.js +2 -2
  122. package/dest/node/barretenberg/poseidon.bench.test.d.ts +1 -1
  123. package/dest/node/barretenberg/poseidon.bench.test.js +80 -79
  124. package/dest/node/barretenberg/poseidon.test.d.ts +1 -1
  125. package/dest/node/barretenberg/poseidon.test.js +2 -2
  126. package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
  127. package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  128. package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
  129. package/dest/node/barretenberg/testing/fields.d.ts +16 -0
  130. package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
  131. package/dest/node/barretenberg/testing/fields.js +47 -0
  132. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  133. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  134. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  135. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  136. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  137. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  138. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  139. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  140. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  141. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  142. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  143. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  144. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  145. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  146. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  147. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  148. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  149. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  150. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  151. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  152. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  153. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  154. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  155. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  156. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  157. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  158. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  159. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  160. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  161. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  162. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  163. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  164. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  165. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  166. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  167. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  168. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  169. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  170. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  171. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +1 -1
  172. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  173. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  174. package/dest/node/barretenberg_wasm/helpers/browser/index.js +9 -2
  175. package/dest/node/barretenberg_wasm/helpers/index.d.ts +1 -1
  176. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  177. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  178. package/dest/node/barretenberg_wasm/helpers/node/index.js +14 -6
  179. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  180. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  181. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  182. package/dest/node/barretenberg_wasm/index.d.ts +1 -1
  183. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
  184. package/dest/node/barretenberg_wasm/index.js +2 -3
  185. package/dest/node/barretenberg_wasm/index.test.d.ts +1 -1
  186. package/dest/node/barretenberg_wasm/index.test.js +1 -1
  187. package/dest/node/bb_backends/browser/index.d.ts +1 -1
  188. package/dest/node/bb_backends/browser/index.js +1 -1
  189. package/dest/node/bb_backends/browser/platform.d.ts +4 -0
  190. package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
  191. package/dest/node/bb_backends/browser/platform.js +10 -0
  192. package/dest/node/bb_backends/index.d.ts +10 -7
  193. package/dest/node/bb_backends/index.d.ts.map +1 -1
  194. package/dest/node/bb_backends/index.js +8 -7
  195. package/dest/node/bb_backends/interface.d.ts +1 -1
  196. package/dest/node/bb_backends/node/index.d.ts +1 -1
  197. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  198. package/dest/node/bb_backends/node/index.js +15 -9
  199. package/dest/node/bb_backends/node/native_pipe.d.ts +1 -1
  200. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -1
  201. package/dest/node/bb_backends/node/native_pipe.js +11 -10
  202. package/dest/node/bb_backends/node/native_shm.d.ts +3 -3
  203. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  204. package/dest/node/bb_backends/node/native_shm.js +49 -22
  205. package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
  206. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
  207. package/dest/node/bb_backends/node/native_shm_async.js +237 -0
  208. package/dest/node/bb_backends/node/native_socket.d.ts +2 -2
  209. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  210. package/dest/node/bb_backends/node/native_socket.js +43 -31
  211. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  212. package/dest/node/bb_backends/node/platform.js +1 -1
  213. package/dest/node/bb_backends/wasm.d.ts +1 -1
  214. package/dest/node/bb_backends/wasm.d.ts.map +1 -1
  215. package/dest/node/bb_backends/wasm.js +5 -3
  216. package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
  217. package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
  218. package/dest/node/bbapi/exception_handling.test.js +48 -0
  219. package/dest/node/bbapi_exception.d.ts +1 -1
  220. package/dest/node/bbapi_exception.d.ts.map +1 -1
  221. package/dest/node/bbapi_exception.js +1 -1
  222. package/dest/node/benchmark/index.d.ts +1 -1
  223. package/dest/node/benchmark/index.js +1 -1
  224. package/dest/node/benchmark/timer.d.ts +1 -1
  225. package/dest/node/benchmark/timer.d.ts.map +1 -1
  226. package/dest/node/benchmark/timer.js +2 -1
  227. package/dest/node/bin/index.d.ts +3 -0
  228. package/dest/node/bin/index.d.ts.map +1 -0
  229. package/dest/node/bin/index.js +11 -0
  230. package/dest/node/cbind/generate.d.ts +1 -1
  231. package/dest/node/cbind/generate.js +1 -1
  232. package/dest/node/cbind/generated/api_types.d.ts +1 -1
  233. package/dest/node/cbind/generated/api_types.js +1 -1
  234. package/dest/node/cbind/generated/async.d.ts +1 -1
  235. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  236. package/dest/node/cbind/generated/async.js +2 -1
  237. package/dest/node/cbind/generated/curve_constants.d.ts +1 -1
  238. package/dest/node/cbind/generated/sync.d.ts +1 -1
  239. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  240. package/dest/node/cbind/generated/sync.js +2 -1
  241. package/dest/node/cbind/schema_compiler.d.ts +1 -1
  242. package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
  243. package/dest/node/cbind/schema_compiler.js +6 -5
  244. package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
  245. package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
  246. package/dest/node/crs/browser/cached_net_crs.js +6 -1
  247. package/dest/node/crs/browser/index.d.ts +1 -1
  248. package/dest/node/crs/index.d.ts +1 -1
  249. package/dest/node/crs/net_crs.d.ts +1 -16
  250. package/dest/node/crs/net_crs.d.ts.map +1 -1
  251. package/dest/node/crs/net_crs.js +6 -1
  252. package/dest/node/crs/node/index.d.ts +1 -1
  253. package/dest/node/crs/node/index.d.ts.map +1 -1
  254. package/dest/node/crs/node/index.js +11 -6
  255. package/dest/node/index.d.ts +2 -1
  256. package/dest/node/index.d.ts.map +1 -1
  257. package/dest/node/index.js +2 -1
  258. package/dest/node/proof/index.d.ts +1 -1
  259. package/dest/node/proof/index.js +1 -1
  260. package/dest/node/random/browser/index.d.ts +1 -1
  261. package/dest/node/random/browser/index.d.ts.map +1 -1
  262. package/dest/node/random/browser/index.js +1 -1
  263. package/dest/node/random/index.d.ts +1 -1
  264. package/dest/node/random/node/index.d.ts +1 -1
  265. package/dest/node/random/node/index.js +1 -1
  266. package/dest/node/retry/index.d.ts +1 -1
  267. package/dest/node/retry/index.js +1 -1
  268. package/dest/node-cjs/async_map/index.d.ts +1 -1
  269. package/dest/node-cjs/async_map/index.js +1 -1
  270. package/dest/node-cjs/barretenberg/backend.d.ts +10 -24
  271. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  272. package/dest/node-cjs/barretenberg/backend.js +39 -90
  273. package/dest/node-cjs/barretenberg/blake2s.test.d.ts +1 -1
  274. package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
  275. package/dest/node-cjs/barretenberg/index.d.ts +2 -4
  276. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  277. package/dest/node-cjs/barretenberg/index.js +24 -33
  278. package/dest/node-cjs/barretenberg/pedersen.test.d.ts +1 -1
  279. package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
  280. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +1 -1
  281. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +89 -88
  282. package/dest/node-cjs/barretenberg/poseidon.test.d.ts +1 -1
  283. package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
  284. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
  285. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  286. package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
  287. package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
  288. package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
  289. package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
  290. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  291. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  292. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  293. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +7 -8
  294. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  295. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  296. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +3 -5
  297. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  298. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  299. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  300. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  301. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  302. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  303. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  304. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  305. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  306. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  307. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  308. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  309. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  310. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  311. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  312. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +3 -5
  313. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  314. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  315. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  316. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  317. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  318. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  319. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  320. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  321. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  322. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  323. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  324. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  325. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  326. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  327. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  328. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +2 -2
  329. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  330. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  331. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
  332. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  333. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  334. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +9 -2
  335. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +1 -1
  336. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  337. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  338. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +15 -7
  339. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  340. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  341. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  342. package/dest/node-cjs/barretenberg_wasm/index.d.ts +1 -1
  343. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
  344. package/dest/node-cjs/barretenberg_wasm/index.js +2 -3
  345. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +1 -1
  346. package/dest/node-cjs/barretenberg_wasm/index.test.js +1 -1
  347. package/dest/node-cjs/bb_backends/browser/index.d.ts +1 -1
  348. package/dest/node-cjs/bb_backends/browser/index.js +1 -1
  349. package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
  350. package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
  351. package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
  352. package/dest/node-cjs/bb_backends/index.d.ts +10 -7
  353. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  354. package/dest/node-cjs/bb_backends/index.js +6 -6
  355. package/dest/node-cjs/bb_backends/interface.d.ts +1 -1
  356. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  357. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  358. package/dest/node-cjs/bb_backends/node/index.js +15 -9
  359. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +1 -1
  360. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -1
  361. package/dest/node-cjs/bb_backends/node/native_pipe.js +11 -10
  362. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -3
  363. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  364. package/dest/node-cjs/bb_backends/node/native_shm.js +49 -22
  365. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
  366. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
  367. package/dest/node-cjs/bb_backends/node/native_shm_async.js +241 -0
  368. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +2 -2
  369. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  370. package/dest/node-cjs/bb_backends/node/native_socket.js +43 -31
  371. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  372. package/dest/node-cjs/bb_backends/node/platform.js +2 -2
  373. package/dest/node-cjs/bb_backends/wasm.d.ts +1 -1
  374. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -1
  375. package/dest/node-cjs/bb_backends/wasm.js +5 -3
  376. package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
  377. package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
  378. package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
  379. package/dest/node-cjs/bbapi_exception.d.ts +1 -1
  380. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -1
  381. package/dest/node-cjs/bbapi_exception.js +1 -1
  382. package/dest/node-cjs/benchmark/index.d.ts +1 -1
  383. package/dest/node-cjs/benchmark/index.js +2 -2
  384. package/dest/node-cjs/benchmark/timer.d.ts +1 -1
  385. package/dest/node-cjs/benchmark/timer.d.ts.map +1 -1
  386. package/dest/node-cjs/benchmark/timer.js +2 -1
  387. package/dest/node-cjs/bin/index.d.ts +3 -0
  388. package/dest/node-cjs/bin/index.d.ts.map +1 -0
  389. package/dest/node-cjs/bin/index.js +13 -0
  390. package/dest/node-cjs/cbind/generate.d.ts +1 -1
  391. package/dest/node-cjs/cbind/generate.js +1 -1
  392. package/dest/node-cjs/cbind/generated/api_types.d.ts +1 -1
  393. package/dest/node-cjs/cbind/generated/api_types.js +1 -1
  394. package/dest/node-cjs/cbind/generated/async.d.ts +1 -1
  395. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  396. package/dest/node-cjs/cbind/generated/async.js +2 -1
  397. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +1 -1
  398. package/dest/node-cjs/cbind/generated/sync.d.ts +1 -1
  399. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  400. package/dest/node-cjs/cbind/generated/sync.js +2 -1
  401. package/dest/node-cjs/cbind/schema_compiler.d.ts +1 -1
  402. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
  403. package/dest/node-cjs/cbind/schema_compiler.js +6 -5
  404. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +1 -1
  405. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -1
  406. package/dest/node-cjs/crs/browser/cached_net_crs.js +6 -1
  407. package/dest/node-cjs/crs/browser/index.d.ts +1 -1
  408. package/dest/node-cjs/crs/browser/index.js +2 -2
  409. package/dest/node-cjs/crs/index.d.ts +1 -1
  410. package/dest/node-cjs/crs/index.js +2 -2
  411. package/dest/node-cjs/crs/net_crs.d.ts +1 -16
  412. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  413. package/dest/node-cjs/crs/net_crs.js +6 -1
  414. package/dest/node-cjs/crs/node/index.d.ts +1 -1
  415. package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
  416. package/dest/node-cjs/crs/node/index.js +11 -6
  417. package/dest/node-cjs/index.d.ts +2 -1
  418. package/dest/node-cjs/index.d.ts.map +1 -1
  419. package/dest/node-cjs/index.js +10 -8
  420. package/dest/node-cjs/proof/index.d.ts +1 -1
  421. package/dest/node-cjs/proof/index.js +1 -1
  422. package/dest/node-cjs/random/browser/index.d.ts +1 -1
  423. package/dest/node-cjs/random/browser/index.d.ts.map +1 -1
  424. package/dest/node-cjs/random/browser/index.js +1 -1
  425. package/dest/node-cjs/random/index.d.ts +1 -1
  426. package/dest/node-cjs/random/node/index.d.ts +1 -1
  427. package/dest/node-cjs/random/node/index.js +1 -1
  428. package/dest/node-cjs/retry/index.d.ts +1 -1
  429. package/dest/node-cjs/retry/index.js +1 -1
  430. package/package.json +8 -6
  431. package/src/barretenberg/backend.ts +19 -97
  432. package/src/barretenberg/blake2s.test.ts +1 -1
  433. package/src/barretenberg/index.ts +16 -27
  434. package/src/barretenberg/pedersen.test.ts +1 -1
  435. package/src/barretenberg/poseidon.bench.test.ts +160 -157
  436. package/src/barretenberg/poseidon.test.ts +1 -1
  437. package/src/{types → barretenberg/testing}/fields.ts +12 -26
  438. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +1 -2
  439. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +0 -2
  440. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +0 -7
  441. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +0 -2
  442. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +0 -9
  443. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +37 -4
  444. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +0 -2
  445. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +0 -7
  446. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +0 -2
  447. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +0 -7
  448. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +3 -2
  449. package/src/barretenberg_wasm/helpers/browser/index.ts +8 -1
  450. package/src/barretenberg_wasm/helpers/node/index.ts +13 -6
  451. package/src/barretenberg_wasm/index.ts +1 -2
  452. package/src/bb_backends/browser/platform.ts +11 -0
  453. package/src/bb_backends/index.ts +9 -6
  454. package/src/bb_backends/node/index.ts +16 -8
  455. package/src/bb_backends/node/native_shm.ts +48 -24
  456. package/src/bb_backends/node/native_shm_async.ts +266 -0
  457. package/src/bb_backends/node/native_socket.ts +31 -17
  458. package/src/bb_backends/wasm.ts +1 -2
  459. package/src/bbapi/exception_handling.test.ts +54 -0
  460. package/src/bin/index.ts +14 -0
  461. package/src/crs/node/index.ts +4 -5
  462. package/src/index.ts +2 -0
  463. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +0 -15
  464. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  465. package/dest/browser/bb_backends/sync_to_async_adapter.js +0 -20
  466. package/dest/browser/bigint-array/index.d.ts +0 -17
  467. package/dest/browser/bigint-array/index.d.ts.map +0 -1
  468. package/dest/browser/bigint-array/index.js +0 -37
  469. package/dest/browser/log/browser/index.d.ts +0 -6
  470. package/dest/browser/log/browser/index.d.ts.map +0 -1
  471. package/dest/browser/log/browser/index.js +0 -28
  472. package/dest/browser/log/index.d.ts +0 -2
  473. package/dest/browser/log/index.d.ts.map +0 -1
  474. package/dest/browser/log/index.js +0 -2
  475. package/dest/browser/log/types.d.ts +0 -6
  476. package/dest/browser/log/types.d.ts.map +0 -1
  477. package/dest/browser/log/types.js +0 -2
  478. package/dest/browser/serialize/index.d.ts +0 -2
  479. package/dest/browser/serialize/index.d.ts.map +0 -1
  480. package/dest/browser/serialize/index.js +0 -2
  481. package/dest/browser/serialize/serialize.d.ts +0 -18
  482. package/dest/browser/serialize/serialize.d.ts.map +0 -1
  483. package/dest/browser/serialize/serialize.js +0 -72
  484. package/dest/browser/types/fields.d.ts +0 -23
  485. package/dest/browser/types/fields.d.ts.map +0 -1
  486. package/dest/browser/types/fields.js +0 -61
  487. package/dest/browser/types/index.d.ts +0 -3
  488. package/dest/browser/types/index.d.ts.map +0 -1
  489. package/dest/browser/types/index.js +0 -3
  490. package/dest/browser/types/point.d.ts +0 -18
  491. package/dest/browser/types/point.d.ts.map +0 -1
  492. package/dest/browser/types/point.js +0 -28
  493. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +0 -15
  494. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  495. package/dest/node/bb_backends/sync_to_async_adapter.js +0 -20
  496. package/dest/node/bigint-array/index.d.ts +0 -17
  497. package/dest/node/bigint-array/index.d.ts.map +0 -1
  498. package/dest/node/bigint-array/index.js +0 -37
  499. package/dest/node/log/browser/index.d.ts +0 -6
  500. package/dest/node/log/browser/index.d.ts.map +0 -1
  501. package/dest/node/log/browser/index.js +0 -28
  502. package/dest/node/log/index.d.ts +0 -2
  503. package/dest/node/log/index.d.ts.map +0 -1
  504. package/dest/node/log/index.js +0 -2
  505. package/dest/node/log/node/index.d.ts +0 -6
  506. package/dest/node/log/node/index.d.ts.map +0 -1
  507. package/dest/node/log/node/index.js +0 -40
  508. package/dest/node/log/types.d.ts +0 -6
  509. package/dest/node/log/types.d.ts.map +0 -1
  510. package/dest/node/log/types.js +0 -2
  511. package/dest/node/serialize/index.d.ts +0 -2
  512. package/dest/node/serialize/index.d.ts.map +0 -1
  513. package/dest/node/serialize/index.js +0 -2
  514. package/dest/node/serialize/serialize.d.ts +0 -18
  515. package/dest/node/serialize/serialize.d.ts.map +0 -1
  516. package/dest/node/serialize/serialize.js +0 -72
  517. package/dest/node/types/fields.d.ts +0 -23
  518. package/dest/node/types/fields.d.ts.map +0 -1
  519. package/dest/node/types/fields.js +0 -61
  520. package/dest/node/types/index.d.ts +0 -3
  521. package/dest/node/types/index.d.ts.map +0 -1
  522. package/dest/node/types/index.js +0 -3
  523. package/dest/node/types/point.d.ts +0 -18
  524. package/dest/node/types/point.d.ts.map +0 -1
  525. package/dest/node/types/point.js +0 -28
  526. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +0 -15
  527. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  528. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +0 -24
  529. package/dest/node-cjs/bigint-array/index.d.ts +0 -17
  530. package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
  531. package/dest/node-cjs/bigint-array/index.js +0 -43
  532. package/dest/node-cjs/log/browser/index.d.ts +0 -6
  533. package/dest/node-cjs/log/browser/index.d.ts.map +0 -1
  534. package/dest/node-cjs/log/browser/index.js +0 -30
  535. package/dest/node-cjs/log/index.d.ts +0 -2
  536. package/dest/node-cjs/log/index.d.ts.map +0 -1
  537. package/dest/node-cjs/log/index.js +0 -8
  538. package/dest/node-cjs/log/node/index.d.ts +0 -6
  539. package/dest/node-cjs/log/node/index.d.ts.map +0 -1
  540. package/dest/node-cjs/log/node/index.js +0 -42
  541. package/dest/node-cjs/log/types.d.ts +0 -6
  542. package/dest/node-cjs/log/types.d.ts.map +0 -1
  543. package/dest/node-cjs/log/types.js +0 -3
  544. package/dest/node-cjs/serialize/index.d.ts +0 -2
  545. package/dest/node-cjs/serialize/index.d.ts.map +0 -1
  546. package/dest/node-cjs/serialize/index.js +0 -5
  547. package/dest/node-cjs/serialize/serialize.d.ts +0 -18
  548. package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
  549. package/dest/node-cjs/serialize/serialize.js +0 -82
  550. package/dest/node-cjs/types/fields.d.ts +0 -23
  551. package/dest/node-cjs/types/fields.d.ts.map +0 -1
  552. package/dest/node-cjs/types/fields.js +0 -65
  553. package/dest/node-cjs/types/index.d.ts +0 -3
  554. package/dest/node-cjs/types/index.d.ts.map +0 -1
  555. package/dest/node-cjs/types/index.js +0 -6
  556. package/dest/node-cjs/types/point.d.ts +0 -18
  557. package/dest/node-cjs/types/point.d.ts.map +0 -1
  558. package/dest/node-cjs/types/point.js +0 -32
  559. package/src/bb_backends/sync_to_async_adapter.ts +0 -21
  560. package/src/cbind/generated/api_types.ts +0 -4271
  561. package/src/cbind/generated/async.ts +0 -717
  562. package/src/cbind/generated/curve_constants.ts +0 -53
  563. package/src/cbind/generated/sync.ts +0 -663
  564. package/src/log/browser/index.ts +0 -35
  565. package/src/log/index.ts +0 -1
  566. package/src/log/node/index.ts +0 -52
  567. package/src/log/types.ts +0 -6
  568. package/src/serialize/index.ts +0 -1
  569. package/src/serialize/serialize.ts +0 -75
  570. package/src/types/index.ts +0 -2
  571. package/src/types/point.ts +0 -32
  572. /package/src/{bigint-array/index.ts → barretenberg/testing/bigint-buffer.ts} +0 -0
@@ -1,9 +1,8 @@
1
1
  import { Barretenberg, BarretenbergSync } from '../index.js';
2
- import { Fr } from '../types/fields.js';
3
- import { serializeBufferable } from '../serialize/index.js';
4
2
  import { BarretenbergWasmMain } from '../barretenberg_wasm/barretenberg_wasm_main/index.js';
5
3
  import { fetchModuleAndThreads } from '../barretenberg_wasm/index.js';
6
4
  import { BackendType } from './index.js';
5
+ import { Fr } from './testing/fields.js';
7
6
 
8
7
  /**
9
8
  * Async API benchmark test: WASM vs Native backends with proper non-blocking I/O
@@ -67,170 +66,179 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
67
66
  }
68
67
  }, 20000);
69
68
 
70
- afterAll(async () => {
71
- await wasm.destroy();
72
- if (wasmApi) {
73
- await wasmApi.destroy();
74
- }
75
- if (nativeSocketApi) {
76
- await nativeSocketApi.destroy();
77
- }
78
- if (nativeShmApi) {
79
- await nativeShmApi.destroy();
80
- }
81
- if (nativeShmSyncApi) {
82
- nativeShmSyncApi.destroy();
83
- }
84
- });
69
+ it.each(SIZES)(
70
+ 'benchmark with %p field elements',
71
+ async size => {
72
+ // Generate random inputs
73
+ const inputs = Array(size)
74
+ .fill(0)
75
+ .map(() => Fr.random().toBuffer());
85
76
 
86
- async function directPoseidon2Hash(inputsBuffer: Fr[]): Promise<Fr> {
87
- const inArgs = [inputsBuffer].map(serializeBufferable);
88
- const outTypes = [Fr];
89
- const result = wasm.callWasmExport(
90
- 'poseidon2_hash',
91
- inArgs,
92
- outTypes.map(t => t.SIZE_IN_BYTES),
93
- );
94
- const out = result.map((r, i) => outTypes[i].fromBuffer(r));
95
- return Promise.resolve(out[0]);
96
- }
97
-
98
- it.each(SIZES)('benchmark with %p field elements', async size => {
99
- // Generate random inputs
100
- const inputs = Array(size)
101
- .fill(0)
102
- .map(() => Fr.random());
103
-
104
- // Benchmark 1: Direct WASM (baseline - always available)
105
- const directStart = performance.now();
106
- for (let i = 0; i < ITERATIONS; i++) {
107
- await directPoseidon2Hash(inputs);
108
- }
109
- const directTime = performance.now() - directStart;
110
-
111
- // Benchmark 2: WASM (async)
112
- let wasmTime = 0;
113
- if (wasmApi) {
114
- const wasmStart = performance.now();
115
- for (let i = 0; i < ITERATIONS; i++) {
116
- await wasmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
77
+ // Benchmark 1: WASM (async)
78
+ let wasmTime = 0;
79
+ if (wasmApi) {
80
+ const wasmStart = performance.now();
81
+ for (let i = 0; i < ITERATIONS; i++) {
82
+ await wasmApi.poseidon2Hash({ inputs });
83
+ }
84
+ wasmTime = performance.now() - wasmStart;
117
85
  }
118
- wasmTime = performance.now() - wasmStart;
119
- }
120
86
 
121
- // Benchmark 3: Native Socket (async with non-blocking I/O)
122
- let nativeSocketTime = 0;
123
- if (nativeSocketApi) {
124
- const nativeSocketStart = performance.now();
125
- for (let i = 0; i < ITERATIONS; i++) {
126
- await nativeSocketApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
87
+ // Benchmark 2: Native Socket (async with non-blocking I/O)
88
+ let nativeSocketTime = 0;
89
+ if (nativeSocketApi) {
90
+ const nativeSocketStart = performance.now();
91
+ for (let i = 0; i < ITERATIONS; i++) {
92
+ await nativeSocketApi.poseidon2Hash({ inputs });
93
+ }
94
+ nativeSocketTime = performance.now() - nativeSocketStart;
127
95
  }
128
- nativeSocketTime = performance.now() - nativeSocketStart;
129
- }
130
96
 
131
- // Benchmark 4: Native Shared Memory (async)
132
- let nativeShmTime = 0;
133
- if (nativeShmApi) {
134
- const nativeShmStart = performance.now();
135
- for (let i = 0; i < ITERATIONS; i++) {
136
- await nativeShmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
97
+ // Benchmark 3: Native Socket (async, request pipelined)
98
+ let nativeSocketPipelinedTime = 0;
99
+ if (nativeSocketApi) {
100
+ const nativeSocketPipelinedStart = performance.now();
101
+ // Use promise.all to pipeline requests
102
+ const promises = [];
103
+ for (let i = 0; i < ITERATIONS; i++) {
104
+ promises.push(nativeSocketApi.poseidon2Hash({ inputs }));
105
+ }
106
+ await Promise.all(promises);
107
+ nativeSocketPipelinedTime = performance.now() - nativeSocketPipelinedStart;
137
108
  }
138
- nativeShmTime = performance.now() - nativeShmStart;
139
- }
140
109
 
141
- // Benchmark 5: Native Shared Memory (sync)
142
- let nativeShmSyncTime = 0;
143
- if (nativeShmSyncApi) {
144
- const nativeShmSyncStart = performance.now();
145
- for (let i = 0; i < ITERATIONS; i++) {
146
- nativeShmSyncApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
110
+ // Benchmark 4: Native Shared Memory (async)
111
+ let nativeShmTime = 0;
112
+ if (nativeShmApi) {
113
+ const nativeShmStart = performance.now();
114
+ for (let i = 0; i < ITERATIONS; i++) {
115
+ await nativeShmApi.poseidon2Hash({ inputs });
116
+ }
117
+ nativeShmTime = performance.now() - nativeShmStart;
147
118
  }
148
- nativeShmSyncTime = performance.now() - nativeShmSyncStart;
149
- }
150
119
 
151
- // Calculate metrics (all relative to WASM baseline)
152
- const directOverhead = ((directTime - wasmTime) / wasmTime) * 100;
153
- const nativeSocketOverhead = ((nativeSocketTime - wasmTime) / wasmTime) * 100;
154
- const nativeShmOverhead = ((nativeShmTime - wasmTime) / wasmTime) * 100;
155
- const nativeShmSyncOverhead = ((nativeShmSyncTime - wasmTime) / wasmTime) * 100;
156
-
157
- const avgDirectTimeUs = (directTime / ITERATIONS) * 1000; // microseconds
158
- const avgWasmTimeUs = (wasmTime / ITERATIONS) * 1000;
159
- const avgNativeSocketTimeUs = (nativeSocketTime / ITERATIONS) * 1000;
160
- const avgNativeShmTimeUs = (nativeShmTime / ITERATIONS) * 1000;
161
- const avgNativeShmSyncTimeUs = (nativeShmSyncTime / ITERATIONS) * 1000;
162
-
163
- process.stdout.write(`┌─ Size ${size.toString().padStart(3)} field elements ──────────────────────────────────┐\n`);
164
- const formatOverhead = (overhead: number): string => {
165
- const sign = overhead >= 0 ? '+' : '-';
166
- const value = Math.abs(overhead).toFixed(1).padStart(6);
167
- return `${sign}${value}%`;
168
- };
169
-
170
- if (wasmApi) {
171
- process.stdout.write(
172
- `│ WASM: ${wasmTime.toFixed(2).padStart(8)}ms (${avgWasmTimeUs.toFixed(2).padStart(7)}µs/call) [baseline] │\n`,
173
- );
174
- } else {
175
- process.stdout.write(`│ WASM: unavailable │\n`);
176
- }
120
+ // Benchmark 5: Native Shared Memory (async, request pipelined)
121
+ let nativeShmPipelinedTime = 0;
122
+ if (nativeShmApi) {
123
+ const nativeShmPipelinedStart = performance.now();
124
+ // Use promise.all to pipeline requests
125
+ const promises = [];
126
+ for (let i = 0; i < ITERATIONS; i++) {
127
+ promises.push(nativeShmApi.poseidon2Hash({ inputs }));
128
+ }
129
+ await Promise.all(promises);
130
+ nativeShmPipelinedTime = performance.now() - nativeShmPipelinedStart;
131
+ }
177
132
 
178
- process.stdout.write(
179
- `│ Direct WASM: ${directTime.toFixed(2).padStart(8)}ms (${avgDirectTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(directOverhead)} │\n`,
180
- );
133
+ // Benchmark 6: Native Shared Memory (sync)
134
+ let nativeShmSyncTime = 0;
135
+ if (nativeShmSyncApi) {
136
+ const nativeShmSyncStart = performance.now();
137
+ for (let i = 0; i < ITERATIONS; i++) {
138
+ nativeShmSyncApi.poseidon2Hash({ inputs });
139
+ }
140
+ nativeShmSyncTime = performance.now() - nativeShmSyncStart;
141
+ }
181
142
 
182
- if (nativeSocketApi) {
183
- process.stdout.write(
184
- `│ Native Socket: ${nativeSocketTime.toFixed(2).padStart(8)}ms (${avgNativeSocketTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeSocketOverhead)} │\n`,
185
- );
186
- } else {
187
- process.stdout.write(`│ Native Socket: unavailable │\n`);
188
- }
143
+ // Calculate metrics (all relative to WASM baseline)
144
+ const nativeSocketOverhead = ((nativeSocketTime - wasmTime) / wasmTime) * 100;
145
+ const nativeSocketPipelinedOverhead = ((nativeSocketPipelinedTime - wasmTime) / wasmTime) * 100;
146
+ const nativeShmOverhead = ((nativeShmTime - wasmTime) / wasmTime) * 100;
147
+ const nativeShmPipelinedOverhead = ((nativeShmPipelinedTime - wasmTime) / wasmTime) * 100;
148
+ const nativeShmSyncOverhead = ((nativeShmSyncTime - wasmTime) / wasmTime) * 100;
189
149
 
190
- if (nativeShmApi) {
191
- process.stdout.write(
192
- `│ Native Shared: ${nativeShmTime.toFixed(2).padStart(8)}ms (${avgNativeShmTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeShmOverhead)} │\n`,
193
- );
194
- } else {
195
- process.stdout.write(`│ Native Shared: unavailable │\n`);
196
- }
150
+ const avgWasmTimeUs = (wasmTime / ITERATIONS) * 1000;
151
+ const avgNativeSocketTimeUs = (nativeSocketTime / ITERATIONS) * 1000;
152
+ const avgNativeSocketPipelinedTimeUs = (nativeSocketPipelinedTime / ITERATIONS) * 1000;
153
+ const avgNativeShmTimeUs = (nativeShmTime / ITERATIONS) * 1000;
154
+ const avgNativeShmPipelinedTimeUs = (nativeShmPipelinedTime / ITERATIONS) * 1000;
155
+ const avgNativeShmSyncTimeUs = (nativeShmSyncTime / ITERATIONS) * 1000;
197
156
 
198
- if (nativeShmSyncApi) {
199
157
  process.stdout.write(
200
- `│ Native Shared Sync: ${nativeShmSyncTime.toFixed(2).padStart(8)}ms (${avgNativeShmSyncTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeShmSyncOverhead)} │\n`,
158
+ `┌─ Size ${size.toString().padStart(3)} field elements ───────────────────────────────────────┐\n`,
201
159
  );
202
- } else {
203
- process.stdout.write(`│ Native Shared Sync: unavailable │\n`);
204
- }
160
+ const formatOverhead = (overhead: number): string => {
161
+ const sign = overhead >= 0 ? '+' : '-';
162
+ const value = Math.abs(overhead).toFixed(1).padStart(6);
163
+ return `${sign}${value}%`;
164
+ };
205
165
 
206
- process.stdout.write(`└────────────────────────────────────────────────────────────┘\n`);
166
+ if (wasmApi) {
167
+ process.stdout.write(
168
+ `│ WASM: ${wasmTime.toFixed(2).padStart(8)}ms (${avgWasmTimeUs.toFixed(2).padStart(7)}µs/call) [baseline] │\n`,
169
+ );
170
+ } else {
171
+ process.stdout.write(`│ WASM: unavailable │\n`);
172
+ }
207
173
 
208
- // Sanity check: verify all backends produce same result as direct WASM
209
- const directResult = await directPoseidon2Hash(inputs);
174
+ if (nativeSocketApi) {
175
+ process.stdout.write(
176
+ `│ Native Socket: ${nativeSocketTime.toFixed(2).padStart(8)}ms (${avgNativeSocketTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeSocketOverhead)} │\n`,
177
+ );
178
+ } else {
179
+ process.stdout.write(`│ Native Socket: unavailable │\n`);
180
+ }
210
181
 
211
- if (wasmApi) {
212
- const wasmResult = await wasmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
213
- expect(Buffer.from(wasmResult.hash)).toEqual(directResult.toBuffer());
214
- }
182
+ if (nativeSocketApi) {
183
+ process.stdout.write(
184
+ `│ Native Socket Pipelined: ${nativeSocketPipelinedTime
185
+ .toFixed(2)
186
+ .padStart(8)}ms (${avgNativeSocketPipelinedTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(
187
+ nativeSocketPipelinedOverhead,
188
+ )} │\n`,
189
+ );
190
+ } else {
191
+ process.stdout.write(`│ Native Socket Pipelined: unavailable │\n`);
192
+ }
215
193
 
216
- if (nativeSocketApi) {
217
- const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
218
- expect(Buffer.from(nativeSocketResult.hash)).toEqual(directResult.toBuffer());
219
- }
194
+ if (nativeShmApi) {
195
+ process.stdout.write(
196
+ `│ Native Shared: ${nativeShmTime.toFixed(2).padStart(8)}ms (${avgNativeShmTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeShmOverhead)} │\n`,
197
+ );
198
+ } else {
199
+ process.stdout.write(`│ Native Shared: unavailable │\n`);
200
+ }
220
201
 
221
- if (nativeShmApi) {
222
- const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
223
- expect(Buffer.from(nativeShmResult.hash)).toEqual(directResult.toBuffer());
224
- }
202
+ if (nativeShmApi) {
203
+ process.stdout.write(
204
+ `│ Native Shared Pipelined: ${nativeShmPipelinedTime.toFixed(2).padStart(8)}ms (${avgNativeShmPipelinedTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeShmPipelinedOverhead)} │\n`,
205
+ );
206
+ } else {
207
+ process.stdout.write(`│ Native Shared Pipelined: unavailable │\n`);
208
+ }
225
209
 
226
- if (nativeShmSyncApi) {
227
- const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
228
- expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(directResult.toBuffer());
229
- }
210
+ if (nativeShmSyncApi) {
211
+ process.stdout.write(
212
+ `│ Native Shared Sync: ${nativeShmSyncTime.toFixed(2).padStart(8)}ms (${avgNativeShmSyncTimeUs.toFixed(2).padStart(7)}µs/call) ${formatOverhead(nativeShmSyncOverhead)} │\n`,
213
+ );
214
+ } else {
215
+ process.stdout.write(`│ Native Shared Sync: unavailable │\n`);
216
+ }
230
217
 
231
- // Test always passes, this is just for measuring performance
232
- expect(true).toBe(true);
233
- });
218
+ process.stdout.write(`└─────────────────────────────────────────────────────────────────┘\n`);
219
+
220
+ const wasmResult = await wasmApi!.poseidon2Hash({ inputs });
221
+
222
+ if (nativeSocketApi) {
223
+ const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs });
224
+ expect(Buffer.from(nativeSocketResult.hash)).toEqual(wasmResult.hash);
225
+ }
226
+
227
+ if (nativeShmApi) {
228
+ const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs });
229
+ expect(Buffer.from(nativeShmResult.hash)).toEqual(wasmResult.hash);
230
+ }
231
+
232
+ if (nativeShmSyncApi) {
233
+ const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs });
234
+ expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(wasmResult.hash);
235
+ }
236
+
237
+ // Test always passes, this is just for measuring performance
238
+ expect(true).toBe(true);
239
+ },
240
+ 10000,
241
+ );
234
242
 
235
243
  const TEST_VECTORS = [1, 2, 3, 5, 10, 50, 100];
236
244
  const NUM_RANDOM_TESTS = 10;
@@ -240,28 +248,23 @@ describe('poseidon2Hash benchmark (Async API): WASM vs Native', () => {
240
248
  for (let test = 0; test < NUM_RANDOM_TESTS; test++) {
241
249
  const inputs = Array(size)
242
250
  .fill(0)
243
- .map(() => Fr.random());
251
+ .map(() => Fr.random().toBuffer());
244
252
 
245
- const directResult = await directPoseidon2Hash(inputs);
246
-
247
- if (wasmApi) {
248
- const wasmResult = await wasmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
249
- expect(Buffer.from(wasmResult.hash)).toEqual(directResult.toBuffer());
250
- }
253
+ const wasmResult = await wasmApi!.poseidon2Hash({ inputs });
251
254
 
252
255
  if (nativeSocketApi) {
253
- const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
254
- expect(Buffer.from(nativeSocketResult.hash)).toEqual(directResult.toBuffer());
256
+ const nativeSocketResult = await nativeSocketApi.poseidon2Hash({ inputs });
257
+ expect(Buffer.from(nativeSocketResult.hash)).toEqual(wasmResult.hash);
255
258
  }
256
259
 
257
260
  if (nativeShmApi) {
258
- const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
259
- expect(Buffer.from(nativeShmResult.hash)).toEqual(directResult.toBuffer());
261
+ const nativeShmResult = await nativeShmApi.poseidon2Hash({ inputs });
262
+ expect(Buffer.from(nativeShmResult.hash)).toEqual(wasmResult.hash);
260
263
  }
261
264
 
262
265
  if (nativeShmSyncApi) {
263
- const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs: inputs.map(fr => fr.toBuffer()) });
264
- expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(directResult.toBuffer());
266
+ const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs });
267
+ expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(wasmResult.hash);
265
268
  }
266
269
  }
267
270
  });
@@ -1,6 +1,6 @@
1
1
  import { BarretenbergSync } from './index.js';
2
2
  import { Timer } from '../benchmark/timer.js';
3
- import { Fr } from '../types/index.js';
3
+ import { Fr } from './testing/fields.js';
4
4
 
5
5
  describe('poseidon sync', () => {
6
6
  let api: BarretenbergSync;
@@ -1,17 +1,11 @@
1
- import { randomBytes } from '../random/index.js';
1
+ import { randomBytes } from '../../random/index.js';
2
2
  import {
3
3
  buffer32BytesToBigIntBE,
4
4
  uint8ArrayToBigIntBE,
5
5
  bigIntToBufferBE,
6
6
  bigIntToUint8ArrayBE,
7
- } from '../bigint-array/index.js';
7
+ } from './bigint-buffer.js';
8
8
 
9
- /**
10
- * Internal Fr field class for tests.
11
- * @dev This minimal implementation is provided for testing barretenberg directly.
12
- * Projects using bb.js should create their own field abstraction using the curve constants
13
- * exported from the barretenberg binary (see CurveConstants generation).
14
- */
15
9
  export class Fr {
16
10
  static ZERO = new Fr(0n);
17
11
  static MODULUS = 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001n;
@@ -41,24 +35,6 @@ export class Fr {
41
35
  return new this(r);
42
36
  }
43
37
 
44
- static fromBuffer(buffer: Uint8Array | Buffer) {
45
- if (buffer.length !== this.SIZE_IN_BYTES) {
46
- throw new Error(`Expected ${this.SIZE_IN_BYTES} bytes, got ${buffer.length}`);
47
- }
48
- return new this(buffer);
49
- }
50
-
51
- static fromBufferReduce(buffer: Uint8Array | Buffer) {
52
- if (buffer.length !== this.SIZE_IN_BYTES) {
53
- throw new Error(`Expected ${this.SIZE_IN_BYTES} bytes, got ${buffer.length}`);
54
- }
55
- return new this(uint8ArrayToBigIntBE(buffer instanceof Buffer ? new Uint8Array(buffer) : buffer) % Fr.MODULUS);
56
- }
57
-
58
- static fromString(str: string) {
59
- return this.fromBuffer(Buffer.from(str.replace(/^0x/i, ''), 'hex'));
60
- }
61
-
62
38
  toBuffer() {
63
39
  return this.value;
64
40
  }
@@ -74,4 +50,14 @@ export class Fr {
74
50
  isZero() {
75
51
  return this.value.every(v => v === 0);
76
52
  }
53
+
54
+ static fromBuffer(value: Uint8Array): Fr {
55
+ return Fr.fromBufferReduce(value);
56
+ }
57
+
58
+ static fromBufferReduce(value: Uint8Array): Fr {
59
+ const valueBigInt = uint8ArrayToBigIntBE(value);
60
+ const reducedValue = valueBigInt % Fr.MODULUS;
61
+ return new Fr(reducedValue);
62
+ }
77
63
  }
@@ -1,4 +1,3 @@
1
- import { createDebugLogger } from '../../log/index.js';
2
1
  import { randomBytes } from '../../random/index.js';
3
2
 
4
3
  /**
@@ -9,7 +8,7 @@ export class BarretenbergWasmBase {
9
8
  protected memStore: { [key: string]: Uint8Array } = {};
10
9
  protected memory!: WebAssembly.Memory;
11
10
  protected instance!: WebAssembly.Instance;
12
- protected logger: (msg: string) => void = createDebugLogger('bb_wasm_base');
11
+ protected logger: (msg: string) => void = () => {};
13
12
 
14
13
  protected getImportObj(memory: WebAssembly.Memory) {
15
14
  /* eslint-disable camelcase */
@@ -1,11 +1,9 @@
1
- import { logOptions } from '../../../../log/index.js';
2
1
  import { readinessListener } from '../../../helpers/browser/index.js';
3
2
 
4
3
  export async function createMainWorker() {
5
4
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
5
  // @ts-ignore
7
6
  const worker = new Worker(new URL('./main.worker.js', import.meta.url), { type: 'module' });
8
- worker.postMessage({ log: logOptions });
9
7
  await new Promise<void>(resolve => readinessListener(worker, resolve));
10
8
  return worker;
11
9
  }
@@ -1,13 +1,6 @@
1
1
  import { expose } from 'comlink';
2
2
  import { BarretenbergWasmMain } from '../../index.js';
3
3
  import { Ready } from '../../../helpers/browser/index.js';
4
- import { initLogger } from '../../../../log/browser/index.js';
5
-
6
- addEventListener('message', e => {
7
- if (e.data.log) {
8
- initLogger(e.data.log);
9
- }
10
- });
11
4
 
12
5
  expose(new BarretenbergWasmMain());
13
6
  postMessage(Ready);
@@ -1,7 +1,6 @@
1
1
  import { Worker } from 'worker_threads';
2
2
  import { dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
- import { logOptions } from '../../../../log/index.js';
5
4
 
6
5
  function getCurrentDir() {
7
6
  if (typeof __dirname !== 'undefined') {
@@ -16,6 +15,5 @@ function getCurrentDir() {
16
15
  export function createMainWorker() {
17
16
  const __dirname = getCurrentDir();
18
17
  const worker = new Worker(__dirname + `/main.worker.js`);
19
- worker.postMessage({ log: logOptions });
20
18
  return Promise.resolve(worker);
21
19
  }
@@ -2,18 +2,9 @@ import { parentPort } from 'worker_threads';
2
2
  import { expose } from 'comlink';
3
3
  import { BarretenbergWasmMain } from '../../index.js';
4
4
  import { nodeEndpoint } from '../../../helpers/node/node_endpoint.js';
5
- import { initLogger } from '../../../../log/node/index.js';
6
5
 
7
6
  if (!parentPort) {
8
7
  throw new Error('No parentPort');
9
8
  }
10
9
 
11
- const endpoint = nodeEndpoint(parentPort);
12
-
13
- endpoint.addEventListener('message', (e: any) => {
14
- if (e.data.log) {
15
- initLogger(e.data.log);
16
- }
17
- });
18
-
19
10
  expose(new BarretenbergWasmMain(), nodeEndpoint(parentPort));
@@ -5,7 +5,6 @@ import { createThreadWorker } from '../barretenberg_wasm_thread/factory/node/ind
5
5
  import { type BarretenbergWasmThreadWorker } from '../barretenberg_wasm_thread/index.js';
6
6
  import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
7
7
  import { HeapAllocator } from './heap_allocator.js';
8
- import { createDebugLogger } from '../../log/index.js';
9
8
 
10
9
  /**
11
10
  * This is the "main thread" implementation of BarretenbergWasm.
@@ -18,6 +17,7 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
18
17
  private remoteWasms: BarretenbergWasmThreadWorker[] = [];
19
18
  private nextWorker = 0;
20
19
  private nextThreadId = 1;
20
+ private useCustomLogger = false;
21
21
 
22
22
  // Pre-allocated scratch buffers for msgpack I/O to avoid malloc/free overhead
23
23
  private msgpackInputScratch: number = 0; // 8MB input buffer
@@ -34,11 +34,13 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
34
34
  public async init(
35
35
  module: WebAssembly.Module,
36
36
  threads = Math.min(getNumCpu(), BarretenbergWasmMain.MAX_THREADS),
37
- logger: (msg: string) => void = createDebugLogger('bb_wasm'),
37
+ logger?: (msg: string) => void,
38
38
  initial = 33,
39
39
  maximum = this.getDefaultMaximumMemoryPages(),
40
40
  ) {
41
- this.logger = logger;
41
+ // Track whether a custom logger was provided so workers know whether to postMessage logs
42
+ this.useCustomLogger = logger !== undefined;
43
+ this.logger = logger ?? (() => {});
42
44
 
43
45
  const initialMb = (initial * 2 ** 16) / (1024 * 1024);
44
46
  const maxMb = (maximum * 2 ** 16) / (1024 * 1024);
@@ -71,8 +73,14 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
71
73
  if (threads > 1) {
72
74
  this.logger(`Creating ${threads} worker threads`);
73
75
  this.workers = await Promise.all(Array.from({ length: threads - 1 }).map(createThreadWorker));
76
+
77
+ // Set up log message forwarding from workers to our logger (only if custom logger provided)
78
+ if (this.useCustomLogger) {
79
+ this.workers.forEach(worker => this.setupWorkerLogForwarding(worker));
80
+ }
81
+
74
82
  this.remoteWasms = await Promise.all(this.workers.map(getRemoteBarretenbergWasm<BarretenbergWasmThreadWorker>));
75
- await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory)));
83
+ await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory, this.useCustomLogger)));
76
84
  }
77
85
  }
78
86
 
@@ -85,6 +93,31 @@ export class BarretenbergWasmMain extends BarretenbergWasmBase {
85
93
  return 2 ** 16;
86
94
  }
87
95
 
96
+ /**
97
+ * Set up forwarding of log messages from worker threads to our logger.
98
+ * Workers post messages with { type: 'log', msg: string } which we intercept here.
99
+ */
100
+ private setupWorkerLogForwarding(worker: Worker) {
101
+ const handler = (data: unknown) => {
102
+ if (data && typeof data === 'object' && 'type' in data && data.type === 'log' && 'msg' in data) {
103
+ this.logger(data.msg as string);
104
+ }
105
+ };
106
+
107
+ // Node Workers use 'on' method, browser Workers use 'addEventListener'
108
+ // The 'worker' variable is typed as Node's Worker, but at runtime in browser
109
+ // it will be a browser Worker (due to browser_postprocess.sh import rewriting)
110
+ if ('on' in worker && typeof worker.on === 'function') {
111
+ // Node.js worker_threads Worker
112
+ worker.on('message', handler);
113
+ } else if ('addEventListener' in worker) {
114
+ // Browser Web Worker
115
+ (worker as unknown as globalThis.Worker).addEventListener('message', (event: MessageEvent) => {
116
+ handler(event.data);
117
+ });
118
+ }
119
+ }
120
+
88
121
  /**
89
122
  * Called on main thread. Signals child threads to gracefully exit.
90
123
  */
@@ -1,11 +1,9 @@
1
- import { logOptions } from '../../../../log/index.js';
2
1
  import { readinessListener } from '../../../helpers/browser/index.js';
3
2
 
4
3
  export async function createThreadWorker() {
5
4
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
6
5
  // @ts-ignore
7
6
  const worker = new Worker(new URL('./thread.worker.js', import.meta.url), { type: 'module' });
8
- worker.postMessage({ log: logOptions });
9
7
  await new Promise<void>(resolve => readinessListener(worker, resolve));
10
8
  return worker;
11
9
  }
@@ -1,13 +1,6 @@
1
1
  import { expose } from 'comlink';
2
2
  import { BarretenbergWasmThread } from '../../index.js';
3
3
  import { Ready } from '../../../helpers/browser/index.js';
4
- import { initLogger } from '../../../../log/browser/index.js';
5
-
6
- addEventListener('message', e => {
7
- if (e.data.log) {
8
- initLogger(e.data.log);
9
- }
10
- });
11
4
 
12
5
  expose(new BarretenbergWasmThread());
13
6
  postMessage(Ready);
@@ -1,7 +1,6 @@
1
1
  import { Worker } from 'worker_threads';
2
2
  import { dirname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
- import { logOptions } from '../../../../log/index.js';
5
4
 
6
5
  function getCurrentDir() {
7
6
  if (typeof __dirname !== 'undefined') {
@@ -16,6 +15,5 @@ function getCurrentDir() {
16
15
  export function createThreadWorker() {
17
16
  const __dirname = getCurrentDir();
18
17
  const worker = new Worker(__dirname + `/thread.worker.js`);
19
- worker.postMessage({ log: logOptions });
20
18
  return Promise.resolve(worker);
21
19
  }