@aztec/bb.js 0.0.1-commit.24de95ac → 0.0.1-commit.2ed92850

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 (630) 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 +58 -40
  12. package/dest/browser/barretenberg/backend.d.ts.map +1 -1
  13. package/dest/browser/barretenberg/backend.js +143 -94
  14. package/dest/browser/barretenberg/index.d.ts +3 -5
  15. package/dest/browser/barretenberg/index.d.ts.map +1 -1
  16. package/dest/browser/barretenberg/index.js +19 -28
  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 +12 -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 +5 -2
  78. package/dest/browser/cbind/generate.d.ts.map +1 -1
  79. package/dest/browser/cbind/generate.js +47 -25
  80. package/dest/browser/cbind/generated/api_types.d.ts +766 -1687
  81. package/dest/browser/cbind/generated/api_types.d.ts.map +1 -1
  82. package/dest/browser/cbind/generated/api_types.js +1465 -1555
  83. package/dest/browser/cbind/generated/async.d.ts +3 -5
  84. package/dest/browser/cbind/generated/async.d.ts.map +1 -1
  85. package/dest/browser/cbind/generated/async.js +14 -33
  86. package/dest/browser/cbind/generated/curve_constants.d.ts +1 -1
  87. package/dest/browser/cbind/generated/sync.d.ts +3 -5
  88. package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
  89. package/dest/browser/cbind/generated/sync.js +14 -31
  90. package/dest/browser/cbind/naming.d.ts +16 -0
  91. package/dest/browser/cbind/naming.d.ts.map +1 -0
  92. package/dest/browser/cbind/naming.js +24 -0
  93. package/dest/browser/cbind/rust_codegen.d.ts +26 -0
  94. package/dest/browser/cbind/rust_codegen.d.ts.map +1 -0
  95. package/dest/browser/cbind/rust_codegen.js +461 -0
  96. package/dest/browser/cbind/schema_visitor.d.ts +47 -0
  97. package/dest/browser/cbind/schema_visitor.d.ts.map +1 -0
  98. package/dest/browser/cbind/schema_visitor.js +158 -0
  99. package/dest/browser/cbind/typescript_codegen.d.ts +30 -0
  100. package/dest/browser/cbind/typescript_codegen.d.ts.map +1 -0
  101. package/dest/browser/cbind/typescript_codegen.js +365 -0
  102. package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
  103. package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
  104. package/dest/browser/crs/browser/cached_net_crs.js +6 -1
  105. package/dest/browser/crs/browser/index.d.ts +1 -1
  106. package/dest/browser/crs/index.d.ts +1 -1
  107. package/dest/browser/crs/net_crs.d.ts +1 -16
  108. package/dest/browser/crs/net_crs.d.ts.map +1 -1
  109. package/dest/browser/crs/net_crs.js +6 -1
  110. package/dest/browser/index.d.ts +3 -2
  111. package/dest/browser/index.d.ts.map +1 -1
  112. package/dest/browser/index.js +3 -2
  113. package/dest/browser/proof/index.d.ts +1 -1
  114. package/dest/browser/proof/index.js +1 -1
  115. package/dest/browser/random/browser/index.d.ts +1 -1
  116. package/dest/browser/random/browser/index.d.ts.map +1 -1
  117. package/dest/browser/random/browser/index.js +1 -1
  118. package/dest/browser/random/index.d.ts +1 -1
  119. package/dest/browser/retry/index.d.ts +1 -1
  120. package/dest/browser/retry/index.js +1 -1
  121. package/dest/node/async_map/index.d.ts +1 -1
  122. package/dest/node/async_map/index.js +1 -1
  123. package/dest/node/barretenberg/backend.d.ts +58 -40
  124. package/dest/node/barretenberg/backend.d.ts.map +1 -1
  125. package/dest/node/barretenberg/backend.js +143 -94
  126. package/dest/node/barretenberg/backend.test.d.ts +2 -0
  127. package/dest/node/barretenberg/backend.test.d.ts.map +1 -0
  128. package/dest/node/barretenberg/backend.test.js +103 -0
  129. package/dest/node/barretenberg/blake2s.test.d.ts +1 -1
  130. package/dest/node/barretenberg/blake2s.test.js +2 -2
  131. package/dest/node/barretenberg/index.d.ts +3 -5
  132. package/dest/node/barretenberg/index.d.ts.map +1 -1
  133. package/dest/node/barretenberg/index.js +19 -28
  134. package/dest/node/barretenberg/pedersen.test.d.ts +1 -1
  135. package/dest/node/barretenberg/pedersen.test.js +2 -2
  136. package/dest/node/barretenberg/poseidon.bench.test.d.ts +1 -1
  137. package/dest/node/barretenberg/poseidon.bench.test.js +80 -79
  138. package/dest/node/barretenberg/poseidon.test.d.ts +1 -1
  139. package/dest/node/barretenberg/poseidon.test.js +2 -2
  140. package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
  141. package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  142. package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
  143. package/dest/node/barretenberg/testing/fields.d.ts +16 -0
  144. package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
  145. package/dest/node/barretenberg/testing/fields.js +47 -0
  146. package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  147. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  148. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  149. package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
  150. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  151. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  152. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
  153. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  154. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  155. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  156. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  157. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  158. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  159. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  160. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  161. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  162. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  163. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  164. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  165. package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  166. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  167. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  168. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
  169. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  170. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  171. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  172. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  173. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  174. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  175. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  176. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  177. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  178. package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  179. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  180. package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  181. package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  182. package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +1 -1
  183. package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  184. package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  185. package/dest/node/barretenberg_wasm/fetch_code/node/index.js +1 -1
  186. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  187. package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  188. package/dest/node/barretenberg_wasm/helpers/browser/index.js +9 -2
  189. package/dest/node/barretenberg_wasm/helpers/index.d.ts +1 -1
  190. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  191. package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  192. package/dest/node/barretenberg_wasm/helpers/node/index.js +14 -6
  193. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  194. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  195. package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  196. package/dest/node/barretenberg_wasm/index.d.ts +1 -1
  197. package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
  198. package/dest/node/barretenberg_wasm/index.js +2 -3
  199. package/dest/node/barretenberg_wasm/index.test.d.ts +1 -1
  200. package/dest/node/barretenberg_wasm/index.test.js +1 -1
  201. package/dest/node/bb_backends/browser/index.d.ts +1 -1
  202. package/dest/node/bb_backends/browser/index.js +1 -1
  203. package/dest/node/bb_backends/browser/platform.d.ts +4 -0
  204. package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
  205. package/dest/node/bb_backends/browser/platform.js +10 -0
  206. package/dest/node/bb_backends/index.d.ts +12 -7
  207. package/dest/node/bb_backends/index.d.ts.map +1 -1
  208. package/dest/node/bb_backends/index.js +8 -7
  209. package/dest/node/bb_backends/interface.d.ts +1 -1
  210. package/dest/node/bb_backends/node/index.d.ts +1 -1
  211. package/dest/node/bb_backends/node/index.d.ts.map +1 -1
  212. package/dest/node/bb_backends/node/index.js +17 -11
  213. package/dest/node/bb_backends/node/native_pipe.d.ts +1 -1
  214. package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -1
  215. package/dest/node/bb_backends/node/native_pipe.js +11 -10
  216. package/dest/node/bb_backends/node/native_shm.d.ts +4 -3
  217. package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
  218. package/dest/node/bb_backends/node/native_shm.js +85 -39
  219. package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
  220. package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
  221. package/dest/node/bb_backends/node/native_shm_async.js +233 -0
  222. package/dest/node/bb_backends/node/native_socket.d.ts +2 -2
  223. package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
  224. package/dest/node/bb_backends/node/native_socket.js +46 -32
  225. package/dest/node/bb_backends/node/platform.d.ts +1 -1
  226. package/dest/node/bb_backends/node/platform.d.ts.map +1 -1
  227. package/dest/node/bb_backends/node/platform.js +7 -2
  228. package/dest/node/bb_backends/wasm.d.ts +1 -1
  229. package/dest/node/bb_backends/wasm.d.ts.map +1 -1
  230. package/dest/node/bb_backends/wasm.js +5 -3
  231. package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
  232. package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
  233. package/dest/node/bbapi/exception_handling.test.js +48 -0
  234. package/dest/node/bbapi_exception.d.ts +1 -1
  235. package/dest/node/bbapi_exception.d.ts.map +1 -1
  236. package/dest/node/bbapi_exception.js +1 -1
  237. package/dest/node/benchmark/index.d.ts +1 -1
  238. package/dest/node/benchmark/index.js +1 -1
  239. package/dest/node/benchmark/timer.d.ts +1 -1
  240. package/dest/node/benchmark/timer.d.ts.map +1 -1
  241. package/dest/node/benchmark/timer.js +2 -1
  242. package/dest/node/bin/index.d.ts +3 -0
  243. package/dest/node/bin/index.d.ts.map +1 -0
  244. package/dest/node/bin/index.js +11 -0
  245. package/dest/node/cbind/generate.d.ts +5 -2
  246. package/dest/node/cbind/generate.d.ts.map +1 -1
  247. package/dest/node/cbind/generate.js +47 -25
  248. package/dest/node/cbind/generated/api_types.d.ts +766 -1687
  249. package/dest/node/cbind/generated/api_types.d.ts.map +1 -1
  250. package/dest/node/cbind/generated/api_types.js +1465 -1555
  251. package/dest/node/cbind/generated/async.d.ts +3 -5
  252. package/dest/node/cbind/generated/async.d.ts.map +1 -1
  253. package/dest/node/cbind/generated/async.js +14 -33
  254. package/dest/node/cbind/generated/curve_constants.d.ts +1 -1
  255. package/dest/node/cbind/generated/sync.d.ts +3 -5
  256. package/dest/node/cbind/generated/sync.d.ts.map +1 -1
  257. package/dest/node/cbind/generated/sync.js +14 -31
  258. package/dest/node/cbind/naming.d.ts +16 -0
  259. package/dest/node/cbind/naming.d.ts.map +1 -0
  260. package/dest/node/cbind/naming.js +24 -0
  261. package/dest/node/cbind/rust_codegen.d.ts +26 -0
  262. package/dest/node/cbind/rust_codegen.d.ts.map +1 -0
  263. package/dest/node/cbind/rust_codegen.js +461 -0
  264. package/dest/node/cbind/schema_visitor.d.ts +47 -0
  265. package/dest/node/cbind/schema_visitor.d.ts.map +1 -0
  266. package/dest/node/cbind/schema_visitor.js +158 -0
  267. package/dest/node/cbind/typescript_codegen.d.ts +30 -0
  268. package/dest/node/cbind/typescript_codegen.d.ts.map +1 -0
  269. package/dest/node/cbind/typescript_codegen.js +365 -0
  270. package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
  271. package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
  272. package/dest/node/crs/browser/cached_net_crs.js +6 -1
  273. package/dest/node/crs/browser/index.d.ts +1 -1
  274. package/dest/node/crs/index.d.ts +1 -1
  275. package/dest/node/crs/net_crs.d.ts +1 -16
  276. package/dest/node/crs/net_crs.d.ts.map +1 -1
  277. package/dest/node/crs/net_crs.js +6 -1
  278. package/dest/node/crs/node/index.d.ts +1 -1
  279. package/dest/node/crs/node/index.d.ts.map +1 -1
  280. package/dest/node/crs/node/index.js +11 -6
  281. package/dest/node/index.d.ts +3 -2
  282. package/dest/node/index.d.ts.map +1 -1
  283. package/dest/node/index.js +3 -2
  284. package/dest/node/proof/index.d.ts +1 -1
  285. package/dest/node/proof/index.js +1 -1
  286. package/dest/node/random/browser/index.d.ts +1 -1
  287. package/dest/node/random/browser/index.d.ts.map +1 -1
  288. package/dest/node/random/browser/index.js +1 -1
  289. package/dest/node/random/index.d.ts +1 -1
  290. package/dest/node/random/node/index.d.ts +1 -1
  291. package/dest/node/random/node/index.js +1 -1
  292. package/dest/node/retry/index.d.ts +1 -1
  293. package/dest/node/retry/index.js +1 -1
  294. package/dest/node-cjs/async_map/index.d.ts +1 -1
  295. package/dest/node-cjs/async_map/index.js +1 -1
  296. package/dest/node-cjs/barretenberg/backend.d.ts +58 -40
  297. package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
  298. package/dest/node-cjs/barretenberg/backend.js +151 -100
  299. package/dest/node-cjs/barretenberg/backend.test.d.ts +2 -0
  300. package/dest/node-cjs/barretenberg/backend.test.d.ts.map +1 -0
  301. package/dest/node-cjs/barretenberg/backend.test.js +105 -0
  302. package/dest/node-cjs/barretenberg/blake2s.test.d.ts +1 -1
  303. package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
  304. package/dest/node-cjs/barretenberg/index.d.ts +3 -5
  305. package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
  306. package/dest/node-cjs/barretenberg/index.js +27 -34
  307. package/dest/node-cjs/barretenberg/pedersen.test.d.ts +1 -1
  308. package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
  309. package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +1 -1
  310. package/dest/node-cjs/barretenberg/poseidon.bench.test.js +89 -88
  311. package/dest/node-cjs/barretenberg/poseidon.test.d.ts +1 -1
  312. package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
  313. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
  314. package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
  315. package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
  316. package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
  317. package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
  318. package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
  319. package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
  320. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
  321. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
  322. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +7 -8
  323. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
  324. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
  325. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +3 -5
  326. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
  327. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
  328. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
  329. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
  330. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
  331. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
  332. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
  333. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
  334. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
  335. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
  336. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
  337. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
  338. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
  339. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
  340. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
  341. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +3 -5
  342. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
  343. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
  344. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
  345. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
  346. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
  347. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
  348. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
  349. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
  350. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
  351. package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
  352. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
  353. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
  354. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
  355. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
  356. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
  357. package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +2 -2
  358. package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +1 -1
  359. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
  360. package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
  361. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
  362. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
  363. package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +9 -2
  364. package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +1 -1
  365. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +5 -6
  366. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
  367. package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +15 -7
  368. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
  369. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
  370. package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
  371. package/dest/node-cjs/barretenberg_wasm/index.d.ts +1 -1
  372. package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
  373. package/dest/node-cjs/barretenberg_wasm/index.js +2 -3
  374. package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +1 -1
  375. package/dest/node-cjs/barretenberg_wasm/index.test.js +1 -1
  376. package/dest/node-cjs/bb_backends/browser/index.d.ts +1 -1
  377. package/dest/node-cjs/bb_backends/browser/index.js +1 -1
  378. package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
  379. package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
  380. package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
  381. package/dest/node-cjs/bb_backends/index.d.ts +12 -7
  382. package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
  383. package/dest/node-cjs/bb_backends/index.js +6 -6
  384. package/dest/node-cjs/bb_backends/interface.d.ts +1 -1
  385. package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
  386. package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
  387. package/dest/node-cjs/bb_backends/node/index.js +17 -11
  388. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +1 -1
  389. package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -1
  390. package/dest/node-cjs/bb_backends/node/native_pipe.js +11 -10
  391. package/dest/node-cjs/bb_backends/node/native_shm.d.ts +4 -3
  392. package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
  393. package/dest/node-cjs/bb_backends/node/native_shm.js +85 -39
  394. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
  395. package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
  396. package/dest/node-cjs/bb_backends/node/native_shm_async.js +237 -0
  397. package/dest/node-cjs/bb_backends/node/native_socket.d.ts +2 -2
  398. package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
  399. package/dest/node-cjs/bb_backends/node/native_socket.js +46 -32
  400. package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
  401. package/dest/node-cjs/bb_backends/node/platform.d.ts.map +1 -1
  402. package/dest/node-cjs/bb_backends/node/platform.js +8 -3
  403. package/dest/node-cjs/bb_backends/wasm.d.ts +1 -1
  404. package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -1
  405. package/dest/node-cjs/bb_backends/wasm.js +5 -3
  406. package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
  407. package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
  408. package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
  409. package/dest/node-cjs/bbapi_exception.d.ts +1 -1
  410. package/dest/node-cjs/bbapi_exception.d.ts.map +1 -1
  411. package/dest/node-cjs/bbapi_exception.js +1 -1
  412. package/dest/node-cjs/benchmark/index.d.ts +1 -1
  413. package/dest/node-cjs/benchmark/index.js +2 -2
  414. package/dest/node-cjs/benchmark/timer.d.ts +1 -1
  415. package/dest/node-cjs/benchmark/timer.d.ts.map +1 -1
  416. package/dest/node-cjs/benchmark/timer.js +2 -1
  417. package/dest/node-cjs/bin/index.d.ts +3 -0
  418. package/dest/node-cjs/bin/index.d.ts.map +1 -0
  419. package/dest/node-cjs/bin/index.js +13 -0
  420. package/dest/node-cjs/cbind/generate.d.ts +5 -2
  421. package/dest/node-cjs/cbind/generate.d.ts.map +1 -1
  422. package/dest/node-cjs/cbind/generate.js +47 -25
  423. package/dest/node-cjs/cbind/generated/api_types.d.ts +766 -1687
  424. package/dest/node-cjs/cbind/generated/api_types.d.ts.map +1 -1
  425. package/dest/node-cjs/cbind/generated/api_types.js +1671 -1771
  426. package/dest/node-cjs/cbind/generated/async.d.ts +3 -5
  427. package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
  428. package/dest/node-cjs/cbind/generated/async.js +13 -32
  429. package/dest/node-cjs/cbind/generated/curve_constants.d.ts +1 -1
  430. package/dest/node-cjs/cbind/generated/sync.d.ts +3 -5
  431. package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
  432. package/dest/node-cjs/cbind/generated/sync.js +13 -30
  433. package/dest/node-cjs/cbind/naming.d.ts +16 -0
  434. package/dest/node-cjs/cbind/naming.d.ts.map +1 -0
  435. package/dest/node-cjs/cbind/naming.js +28 -0
  436. package/dest/node-cjs/cbind/rust_codegen.d.ts +26 -0
  437. package/dest/node-cjs/cbind/rust_codegen.d.ts.map +1 -0
  438. package/dest/node-cjs/cbind/rust_codegen.js +465 -0
  439. package/dest/node-cjs/cbind/schema_visitor.d.ts +47 -0
  440. package/dest/node-cjs/cbind/schema_visitor.d.ts.map +1 -0
  441. package/dest/node-cjs/cbind/schema_visitor.js +162 -0
  442. package/dest/node-cjs/cbind/typescript_codegen.d.ts +30 -0
  443. package/dest/node-cjs/cbind/typescript_codegen.d.ts.map +1 -0
  444. package/dest/node-cjs/cbind/typescript_codegen.js +369 -0
  445. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +1 -1
  446. package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -1
  447. package/dest/node-cjs/crs/browser/cached_net_crs.js +6 -1
  448. package/dest/node-cjs/crs/browser/index.d.ts +1 -1
  449. package/dest/node-cjs/crs/browser/index.js +2 -2
  450. package/dest/node-cjs/crs/index.d.ts +1 -1
  451. package/dest/node-cjs/crs/index.js +2 -2
  452. package/dest/node-cjs/crs/net_crs.d.ts +1 -16
  453. package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
  454. package/dest/node-cjs/crs/net_crs.js +6 -1
  455. package/dest/node-cjs/crs/node/index.d.ts +1 -1
  456. package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
  457. package/dest/node-cjs/crs/node/index.js +11 -6
  458. package/dest/node-cjs/index.d.ts +3 -2
  459. package/dest/node-cjs/index.d.ts.map +1 -1
  460. package/dest/node-cjs/index.js +12 -8
  461. package/dest/node-cjs/proof/index.d.ts +1 -1
  462. package/dest/node-cjs/proof/index.js +1 -1
  463. package/dest/node-cjs/random/browser/index.d.ts +1 -1
  464. package/dest/node-cjs/random/browser/index.d.ts.map +1 -1
  465. package/dest/node-cjs/random/browser/index.js +1 -1
  466. package/dest/node-cjs/random/index.d.ts +1 -1
  467. package/dest/node-cjs/random/node/index.d.ts +1 -1
  468. package/dest/node-cjs/random/node/index.js +1 -1
  469. package/dest/node-cjs/retry/index.d.ts +1 -1
  470. package/dest/node-cjs/retry/index.js +1 -1
  471. package/package.json +8 -6
  472. package/src/barretenberg/backend.test.ts +122 -0
  473. package/src/barretenberg/backend.ts +170 -122
  474. package/src/barretenberg/blake2s.test.ts +1 -1
  475. package/src/barretenberg/index.ts +25 -28
  476. package/src/barretenberg/pedersen.test.ts +1 -1
  477. package/src/barretenberg/poseidon.bench.test.ts +160 -157
  478. package/src/barretenberg/poseidon.test.ts +1 -1
  479. package/src/{types → barretenberg/testing}/fields.ts +12 -26
  480. package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +1 -2
  481. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +0 -2
  482. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +0 -7
  483. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +0 -2
  484. package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +0 -9
  485. package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +38 -5
  486. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +0 -2
  487. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +0 -7
  488. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +0 -2
  489. package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +0 -7
  490. package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +3 -2
  491. package/src/barretenberg_wasm/helpers/browser/index.ts +8 -1
  492. package/src/barretenberg_wasm/helpers/node/index.ts +13 -6
  493. package/src/barretenberg_wasm/index.ts +1 -2
  494. package/src/bb_backends/browser/platform.ts +11 -0
  495. package/src/bb_backends/index.ts +12 -6
  496. package/src/bb_backends/node/index.ts +23 -10
  497. package/src/bb_backends/node/native_shm.ts +81 -38
  498. package/src/bb_backends/node/native_shm_async.ts +262 -0
  499. package/src/bb_backends/node/native_socket.ts +35 -19
  500. package/src/bb_backends/node/platform.ts +6 -1
  501. package/src/bb_backends/wasm.ts +1 -2
  502. package/src/bbapi/exception_handling.test.ts +54 -0
  503. package/src/bin/index.ts +14 -0
  504. package/src/cbind/generate.ts +51 -32
  505. package/src/cbind/naming.ts +27 -0
  506. package/src/cbind/rust_codegen.ts +504 -0
  507. package/src/cbind/schema_visitor.ts +219 -0
  508. package/src/cbind/typescript_codegen.ts +419 -0
  509. package/src/crs/node/index.ts +4 -5
  510. package/src/index.ts +6 -0
  511. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +0 -15
  512. package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  513. package/dest/browser/bb_backends/sync_to_async_adapter.js +0 -20
  514. package/dest/browser/bigint-array/index.d.ts +0 -17
  515. package/dest/browser/bigint-array/index.d.ts.map +0 -1
  516. package/dest/browser/bigint-array/index.js +0 -37
  517. package/dest/browser/cbind/schema_compiler.d.ts +0 -68
  518. package/dest/browser/cbind/schema_compiler.d.ts.map +0 -1
  519. package/dest/browser/cbind/schema_compiler.js +0 -599
  520. package/dest/browser/log/browser/index.d.ts +0 -6
  521. package/dest/browser/log/browser/index.d.ts.map +0 -1
  522. package/dest/browser/log/browser/index.js +0 -28
  523. package/dest/browser/log/index.d.ts +0 -2
  524. package/dest/browser/log/index.d.ts.map +0 -1
  525. package/dest/browser/log/index.js +0 -2
  526. package/dest/browser/log/types.d.ts +0 -6
  527. package/dest/browser/log/types.d.ts.map +0 -1
  528. package/dest/browser/log/types.js +0 -2
  529. package/dest/browser/serialize/index.d.ts +0 -2
  530. package/dest/browser/serialize/index.d.ts.map +0 -1
  531. package/dest/browser/serialize/index.js +0 -2
  532. package/dest/browser/serialize/serialize.d.ts +0 -18
  533. package/dest/browser/serialize/serialize.d.ts.map +0 -1
  534. package/dest/browser/serialize/serialize.js +0 -72
  535. package/dest/browser/types/fields.d.ts +0 -23
  536. package/dest/browser/types/fields.d.ts.map +0 -1
  537. package/dest/browser/types/fields.js +0 -61
  538. package/dest/browser/types/index.d.ts +0 -3
  539. package/dest/browser/types/index.d.ts.map +0 -1
  540. package/dest/browser/types/index.js +0 -3
  541. package/dest/browser/types/point.d.ts +0 -18
  542. package/dest/browser/types/point.d.ts.map +0 -1
  543. package/dest/browser/types/point.js +0 -28
  544. package/dest/node/bb_backends/sync_to_async_adapter.d.ts +0 -15
  545. package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  546. package/dest/node/bb_backends/sync_to_async_adapter.js +0 -20
  547. package/dest/node/bigint-array/index.d.ts +0 -17
  548. package/dest/node/bigint-array/index.d.ts.map +0 -1
  549. package/dest/node/bigint-array/index.js +0 -37
  550. package/dest/node/cbind/schema_compiler.d.ts +0 -68
  551. package/dest/node/cbind/schema_compiler.d.ts.map +0 -1
  552. package/dest/node/cbind/schema_compiler.js +0 -599
  553. package/dest/node/log/browser/index.d.ts +0 -6
  554. package/dest/node/log/browser/index.d.ts.map +0 -1
  555. package/dest/node/log/browser/index.js +0 -28
  556. package/dest/node/log/index.d.ts +0 -2
  557. package/dest/node/log/index.d.ts.map +0 -1
  558. package/dest/node/log/index.js +0 -2
  559. package/dest/node/log/node/index.d.ts +0 -6
  560. package/dest/node/log/node/index.d.ts.map +0 -1
  561. package/dest/node/log/node/index.js +0 -40
  562. package/dest/node/log/types.d.ts +0 -6
  563. package/dest/node/log/types.d.ts.map +0 -1
  564. package/dest/node/log/types.js +0 -2
  565. package/dest/node/serialize/index.d.ts +0 -2
  566. package/dest/node/serialize/index.d.ts.map +0 -1
  567. package/dest/node/serialize/index.js +0 -2
  568. package/dest/node/serialize/serialize.d.ts +0 -18
  569. package/dest/node/serialize/serialize.d.ts.map +0 -1
  570. package/dest/node/serialize/serialize.js +0 -72
  571. package/dest/node/types/fields.d.ts +0 -23
  572. package/dest/node/types/fields.d.ts.map +0 -1
  573. package/dest/node/types/fields.js +0 -61
  574. package/dest/node/types/index.d.ts +0 -3
  575. package/dest/node/types/index.d.ts.map +0 -1
  576. package/dest/node/types/index.js +0 -3
  577. package/dest/node/types/point.d.ts +0 -18
  578. package/dest/node/types/point.d.ts.map +0 -1
  579. package/dest/node/types/point.js +0 -28
  580. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +0 -15
  581. package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
  582. package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +0 -24
  583. package/dest/node-cjs/bigint-array/index.d.ts +0 -17
  584. package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
  585. package/dest/node-cjs/bigint-array/index.js +0 -43
  586. package/dest/node-cjs/cbind/schema_compiler.d.ts +0 -68
  587. package/dest/node-cjs/cbind/schema_compiler.d.ts.map +0 -1
  588. package/dest/node-cjs/cbind/schema_compiler.js +0 -606
  589. package/dest/node-cjs/log/browser/index.d.ts +0 -6
  590. package/dest/node-cjs/log/browser/index.d.ts.map +0 -1
  591. package/dest/node-cjs/log/browser/index.js +0 -30
  592. package/dest/node-cjs/log/index.d.ts +0 -2
  593. package/dest/node-cjs/log/index.d.ts.map +0 -1
  594. package/dest/node-cjs/log/index.js +0 -8
  595. package/dest/node-cjs/log/node/index.d.ts +0 -6
  596. package/dest/node-cjs/log/node/index.d.ts.map +0 -1
  597. package/dest/node-cjs/log/node/index.js +0 -42
  598. package/dest/node-cjs/log/types.d.ts +0 -6
  599. package/dest/node-cjs/log/types.d.ts.map +0 -1
  600. package/dest/node-cjs/log/types.js +0 -3
  601. package/dest/node-cjs/serialize/index.d.ts +0 -2
  602. package/dest/node-cjs/serialize/index.d.ts.map +0 -1
  603. package/dest/node-cjs/serialize/index.js +0 -5
  604. package/dest/node-cjs/serialize/serialize.d.ts +0 -18
  605. package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
  606. package/dest/node-cjs/serialize/serialize.js +0 -82
  607. package/dest/node-cjs/types/fields.d.ts +0 -23
  608. package/dest/node-cjs/types/fields.d.ts.map +0 -1
  609. package/dest/node-cjs/types/fields.js +0 -65
  610. package/dest/node-cjs/types/index.d.ts +0 -3
  611. package/dest/node-cjs/types/index.d.ts.map +0 -1
  612. package/dest/node-cjs/types/index.js +0 -6
  613. package/dest/node-cjs/types/point.d.ts +0 -18
  614. package/dest/node-cjs/types/point.d.ts.map +0 -1
  615. package/dest/node-cjs/types/point.js +0 -32
  616. package/src/bb_backends/sync_to_async_adapter.ts +0 -21
  617. package/src/cbind/generated/api_types.ts +0 -4271
  618. package/src/cbind/generated/async.ts +0 -717
  619. package/src/cbind/generated/curve_constants.ts +0 -53
  620. package/src/cbind/generated/sync.ts +0 -663
  621. package/src/cbind/schema_compiler.ts +0 -745
  622. package/src/log/browser/index.ts +0 -35
  623. package/src/log/index.ts +0 -1
  624. package/src/log/node/index.ts +0 -52
  625. package/src/log/types.ts +0 -6
  626. package/src/serialize/index.ts +0 -1
  627. package/src/serialize/serialize.ts +0 -75
  628. package/src/types/index.ts +0 -2
  629. package/src/types/point.ts +0 -32
  630. /package/src/{bigint-array/index.ts → barretenberg/testing/bigint-buffer.ts} +0 -0
@@ -2,7 +2,6 @@ import { parentPort } from 'worker_threads';
2
2
  import { expose } from 'comlink';
3
3
  import { BarretenbergWasmThread } 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');
@@ -10,10 +9,4 @@ if (!parentPort) {
10
9
 
11
10
  const endpoint = nodeEndpoint(parentPort);
12
11
 
13
- endpoint.addEventListener('message', (e: any) => {
14
- if (e.data.log) {
15
- initLogger(e.data.log);
16
- }
17
- });
18
-
19
12
  expose(new BarretenbergWasmThread(), endpoint);
@@ -5,9 +5,10 @@ import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
5
5
  export class BarretenbergWasmThread extends BarretenbergWasmBase {
6
6
  /**
7
7
  * Init as worker thread.
8
+ * @param useCustomLogger - If true, logs will be posted back to main thread for custom logger routing
8
9
  */
9
- public async initThread(module: WebAssembly.Module, memory: WebAssembly.Memory) {
10
- this.logger = threadLogger() || this.logger;
10
+ public async initThread(module: WebAssembly.Module, memory: WebAssembly.Memory, useCustomLogger = false) {
11
+ this.logger = threadLogger(useCustomLogger) || this.logger;
11
12
  this.memory = memory;
12
13
  this.instance = await WebAssembly.instantiate(module, this.getImportObj(this.memory));
13
14
  }
@@ -13,7 +13,14 @@ export function getNumCpu() {
13
13
  return navigator.hardwareConcurrency;
14
14
  }
15
15
 
16
- export function threadLogger(): ((msg: string) => void) | undefined {
16
+ export function threadLogger(useCustomLogger: boolean): ((msg: string) => void) | undefined {
17
+ if (useCustomLogger) {
18
+ // Post log messages back to main thread for routing through user-provided logger
19
+ return (msg: string) => {
20
+ postMessage({ type: 'log', msg });
21
+ };
22
+ }
23
+ // Use console.log directly when no custom logger is provided
17
24
  return console.log;
18
25
  }
19
26
 
@@ -1,4 +1,4 @@
1
- import { Worker } from 'worker_threads';
1
+ import { Worker, parentPort } from 'worker_threads';
2
2
  import os from 'os';
3
3
  import { wrap } from 'comlink';
4
4
  import { nodeEndpoint } from './node_endpoint.js';
@@ -25,12 +25,19 @@ export function getNumCpu() {
25
25
  }
26
26
 
27
27
  /**
28
- * In node, the message passing is different to the browser. When using 'debug' in the browser, we seemingly always
29
- * get our logs, but in node it looks like it's dependent on the chain of workers from child to main thread be
30
- * unblocked. If one of our threads aborts, we can't see it as the parent is blocked waiting on threads to join.
31
- * To work around this in node, threads will by default write directly to stdout.
28
+ * Returns a logger function for worker threads.
29
+ * When a custom logger is provided, posts messages back to the main thread.
30
+ * Otherwise, writes directly to stdout.
32
31
  */
33
- export function threadLogger(): ((msg: string) => void) | undefined {
32
+ export function threadLogger(useCustomLogger: boolean): ((msg: string) => void) | undefined {
33
+ if (useCustomLogger) {
34
+ return (msg: string) => {
35
+ if (parentPort) {
36
+ parentPort.postMessage({ type: 'log', msg });
37
+ }
38
+ };
39
+ }
40
+ // Write directly to stdout when no custom logger is provided
34
41
  return (msg: string) => {
35
42
  writeSync(1, msg + '\n');
36
43
  };
@@ -1,11 +1,10 @@
1
1
  import { getSharedMemoryAvailable, getAvailableThreads } from './helpers/node/index.js';
2
2
  import { fetchCode } from './fetch_code/index.js';
3
- import { createDebugLogger } from '../log/index.js';
4
3
 
5
4
  export async function fetchModuleAndThreads(
6
5
  desiredThreads = 32,
7
6
  wasmPath?: string,
8
- logger: (msg: string) => void = createDebugLogger('fetch_mat'),
7
+ logger: (msg: string) => void = () => {},
9
8
  ) {
10
9
  const shared = getSharedMemoryAvailable();
11
10
 
@@ -0,0 +1,11 @@
1
+ export function findPackageRoot(): string | null {
2
+ throw new Error('Not implemented in browser environment.');
3
+ }
4
+
5
+ export function findBbBinary(customPath?: string): string | null {
6
+ throw new Error('Not implemented in browser environment.');
7
+ }
8
+
9
+ export function findNapiBinary(customPath?: string): string | null {
10
+ throw new Error('Not implemented in browser environment.');
11
+ }
@@ -3,13 +3,13 @@
3
3
  */
4
4
  export enum BackendType {
5
5
  /** WASM direct execution (no worker) */
6
- Wasm = 'wasm',
6
+ Wasm = 'Wasm',
7
7
  /** WASM with worker threads */
8
- WasmWorker = 'wasm-worker',
8
+ WasmWorker = 'WasmWorker',
9
9
  /** Native via Unix domain socket (async only) */
10
- NativeUnixSocket = 'native-unix-socket',
11
- /** Native via shared memory (sync only currently) */
12
- NativeSharedMemory = 'native-shared-mem',
10
+ NativeUnixSocket = 'NativeUnixSocket',
11
+ /** Native via shared memory */
12
+ NativeSharedMemory = 'NativeSharedMemory',
13
13
  }
14
14
 
15
15
  export type BackendOptions = {
@@ -28,7 +28,13 @@ export type BackendOptions = {
28
28
  /** @description Custom path to bb binary for native backend (overrides automatic detection) */
29
29
  bbPath?: string;
30
30
 
31
- /** @description Logging function */
31
+ /** @description Custom path to bb NAPI module for native backend (overrides automatic detection) */
32
+ napiPath?: string;
33
+
34
+ /**
35
+ * @description Logging function
36
+ * Warning: Attaching a logger can prevent nodejs from exiting without explicitly destroying the backend.
37
+ */
32
38
  logger?: (msg: string) => void;
33
39
 
34
40
  /**
@@ -1,7 +1,7 @@
1
1
  import { BarretenbergNativeSocketAsyncBackend } from './native_socket.js';
2
2
  import { BarretenbergWasmSyncBackend, BarretenbergWasmAsyncBackend } from '../wasm.js';
3
3
  import { BarretenbergNativeShmSyncBackend } from './native_shm.js';
4
- import { SyncToAsyncAdapter } from '../sync_to_async_adapter.js';
4
+ import { BarretenbergNativeShmAsyncBackend } from './native_shm_async.js';
5
5
  import { findBbBinary, findNapiBinary } from './platform.js';
6
6
  import { Barretenberg, BarretenbergSync } from '../../barretenberg/index.js';
7
7
  import { BackendOptions, BackendType } from '../index.js';
@@ -14,6 +14,11 @@ export async function createAsyncBackend(
14
14
  options: BackendOptions,
15
15
  logger: (msg: string) => void,
16
16
  ): Promise<Barretenberg> {
17
+ options = {
18
+ ...options,
19
+ wasmPath: options.wasmPath ?? process.env.BB_WASM_PATH,
20
+ };
21
+
17
22
  switch (type) {
18
23
  case BackendType.NativeUnixSocket: {
19
24
  const bbPath = findBbBinary(options.bbPath);
@@ -21,7 +26,7 @@ export async function createAsyncBackend(
21
26
  throw new Error('Native backend requires bb binary.');
22
27
  }
23
28
  logger(`Using native Unix socket backend: ${bbPath}`);
24
- const socket = new BarretenbergNativeSocketAsyncBackend(bbPath, options.threads);
29
+ const socket = new BarretenbergNativeSocketAsyncBackend(bbPath, options.threads, options.logger);
25
30
  return new Barretenberg(socket, options);
26
31
  }
27
32
 
@@ -30,14 +35,17 @@ export async function createAsyncBackend(
30
35
  if (!bbPath) {
31
36
  throw new Error('Native backend requires bb binary.');
32
37
  }
33
- const napiPath = findNapiBinary();
38
+ const napiPath = findNapiBinary(options.napiPath);
34
39
  if (!napiPath) {
35
- throw new Error('Native sync backend requires napi client stub.');
40
+ throw new Error('Native async backend requires napi client stub.');
36
41
  }
37
- logger(`Using native shared memory backend (via sync adapter): ${bbPath}`);
38
- // Use sync backend with adapter to provide async interface
39
- const syncBackend = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients);
40
- const asyncBackend = new SyncToAsyncAdapter(syncBackend);
42
+ logger(`Using native shared memory async backend: ${bbPath}`);
43
+ const asyncBackend = await BarretenbergNativeShmAsyncBackend.new(
44
+ bbPath,
45
+ napiPath,
46
+ options.threads,
47
+ options.logger,
48
+ );
41
49
  return new Barretenberg(asyncBackend, options);
42
50
  }
43
51
 
@@ -68,18 +76,23 @@ export async function createSyncBackend(
68
76
  options: BackendOptions,
69
77
  logger: (msg: string) => void,
70
78
  ): Promise<BarretenbergSync> {
79
+ options = {
80
+ ...options,
81
+ wasmPath: options.wasmPath ?? process.env.BB_WASM_PATH,
82
+ };
83
+
71
84
  switch (type) {
72
85
  case BackendType.NativeSharedMemory: {
73
86
  const bbPath = findBbBinary(options.bbPath);
74
87
  if (!bbPath) {
75
88
  throw new Error('Native backend requires bb binary.');
76
89
  }
77
- const napiPath = findNapiBinary();
90
+ const napiPath = findNapiBinary(options.napiPath);
78
91
  if (!napiPath) {
79
92
  throw new Error('Native sync backend requires napi client stub.');
80
93
  }
81
94
  logger(`Using native shared memory backend: ${bbPath}`);
82
- const shm = await BarretenbergNativeShmSyncBackend.new(bbPath, options.threads, options.maxClients);
95
+ const shm = await BarretenbergNativeShmSyncBackend.new(bbPath, napiPath, options.threads, options.logger);
83
96
  return new BarretenbergSync(shm);
84
97
  }
85
98
 
@@ -1,22 +1,11 @@
1
1
  import { createRequire } from 'module';
2
2
  import { spawn, ChildProcess } from 'child_process';
3
+ import { openSync, closeSync, unlinkSync } from 'fs';
3
4
  import { IMsgpackBackendSync } from '../interface.js';
4
5
  import { findNapiBinary, findPackageRoot } from './platform.js';
6
+ import { threadId } from 'worker_threads';
5
7
 
6
- // Import the NAPI module
7
- // The addon is built to the nodejs_module directory
8
- const addonPath = findNapiBinary();
9
- // Try loading, but don't throw if it doesn't exist (will be caught in constructor)
10
- let addon: any = null;
11
- try {
12
- if (addonPath) {
13
- const require = createRequire(findPackageRoot()!);
14
- addon = require(addonPath);
15
- }
16
- } catch (err) {
17
- // Addon not built yet or not available
18
- addon = null;
19
- }
8
+ let instanceCounter = 0;
20
9
 
21
10
  /**
22
11
  * Synchronous shared memory backend that communicates with bb binary via shared memory.
@@ -32,49 +21,89 @@ try {
32
21
  export class BarretenbergNativeShmSyncBackend implements IMsgpackBackendSync {
33
22
  private process: ChildProcess;
34
23
  private client: any; // NAPI MsgpackClient instance
24
+ private logFd?: number; // File descriptor for logs
35
25
 
36
- private constructor(process: ChildProcess, client: any) {
26
+ private constructor(process: ChildProcess, client: any, logFd?: number) {
37
27
  this.process = process;
38
28
  this.client = client;
29
+ this.logFd = logFd;
39
30
  }
40
31
 
41
32
  /**
42
33
  * Create and initialize a shared memory backend.
43
34
  * @param bbBinaryPath Path to bb binary
35
+ * @param napiPath Path to NAPI binary
44
36
  * @param threads Optional number of threads
45
- * @param maxClients Optional maximum concurrent clients (default: 1)
46
37
  */
47
38
  static async new(
48
39
  bbBinaryPath: string,
40
+ napiPath: string,
49
41
  threads?: number,
50
- maxClients?: number,
42
+ logger?: (msg: string) => void,
51
43
  ): Promise<BarretenbergNativeShmSyncBackend> {
52
- if (!addon || !addon.MsgpackClient) {
53
- throw new Error('Shared memory NAPI not available.');
44
+ // Import the NAPI module
45
+ // The addon is built to the nodejs_module directory
46
+ const addonPath = findNapiBinary(napiPath);
47
+ // Try loading
48
+ let addon: any = null;
49
+ try {
50
+ const require = createRequire(findPackageRoot()!);
51
+ addon = require(addonPath!);
52
+ } catch (err) {
53
+ // Addon not built yet or not available
54
+ throw new Error('Shared memory sync NAPI not available.');
54
55
  }
55
56
 
56
57
  // Create a unique shared memory name
57
- const shmName = `bb-${process.pid}-${Date.now()}`;
58
+ const shmName = `bb-sync-${process.pid}-${threadId}-${instanceCounter++}`;
59
+
60
+ // If threads not set use 1 thread. We're not expected to do long lived work on sync backends.
61
+ const hwc = threads ? threads.toString() : '1';
62
+ const env = { ...process.env, HARDWARE_CONCURRENCY: hwc };
63
+
64
+ // Set up file logging if logger is provided.
65
+ // Direct file redirection bypasses Node event loop - logs are written even if process hangs.
66
+ let logFd: number | undefined;
67
+ let logPath: string | undefined;
68
+ if (logger) {
69
+ logPath = `/tmp/${shmName}.log`;
70
+ logFd = openSync(logPath, 'w');
71
+ logger(`BB process logs redirected to: ${logPath}`);
72
+ }
58
73
 
59
- // Default maxClients to 1 if not specified
60
- const clientCount = maxClients ?? 1;
74
+ // Clean up any stale shared memory files from previous runs
75
+ // This handles the case where a previous process crashed without cleanup
76
+ const shmRequestPath = `/dev/shm/${shmName}_request`;
77
+ const shmResponsePath = `/dev/shm/${shmName}_response`;
78
+ try {
79
+ unlinkSync(shmRequestPath);
80
+ } catch (err) {
81
+ const isNotFound = err && typeof err === 'object' && 'code' in err && err.code === 'ENOENT';
82
+ if (!isNotFound) {
83
+ throw new Error(`Failed to clean up stale shared memory file ${shmRequestPath}: ${err}`);
84
+ }
85
+ }
61
86
 
62
- // Set HARDWARE_CONCURRENCY if threads specified
63
- const env = threads !== undefined ? { ...process.env, HARDWARE_CONCURRENCY: threads.toString() } : process.env;
87
+ try {
88
+ unlinkSync(shmResponsePath);
89
+ } catch (err) {
90
+ const isNotFound = err && typeof err === 'object' && 'code' in err && err.code === 'ENOENT';
91
+ if (!isNotFound) {
92
+ throw new Error(`Failed to clean up stale shared memory file ${shmResponsePath}: ${err}`);
93
+ }
94
+ }
64
95
 
65
- // Spawn bb process with shared memory mode
66
- const args = [bbBinaryPath, 'msgpack', 'run', '--input', `${shmName}.shm`, '--max-clients', clientCount.toString()];
67
- const bbProcess = spawn(findPackageRoot() + '/scripts/kill_wrapper.sh', args, {
68
- stdio: ['ignore', 'ignore', 'ignore'],
96
+ // Spawn bb process with shared memory mode (SPSC-only, no max-clients needed)
97
+ const args = ['msgpack', 'run', '--input', `${shmName}.shm`, '--request-ring-size', `${1024 * 1024 * 4}`];
98
+ const bbProcess = spawn(bbBinaryPath, args, {
99
+ stdio: ['ignore', logFd ?? 'ignore', logFd ?? 'ignore'],
69
100
  env,
70
101
  });
71
- // Disconnect from event loop so process can exit. The kill wrapper will reap bb once parent (node) dies.
72
- bbProcess.unref();
73
102
 
74
- // Capture stderr for error diagnostics
75
- // bbProcess.stderr?.on('data', (data: Buffer) => {
76
- // stderrOutput += data.toString();
77
- // });
103
+ // Disconnect from event loop so process can exit without waiting for bb
104
+ // The bb process has parent death monitoring (prctl on Linux, kqueue on macOS)
105
+ // so it will automatically exit when Node.js exits
106
+ bbProcess.unref();
78
107
 
79
108
  // Track if process has exited
80
109
  let processExited = false;
@@ -114,8 +143,8 @@ export class BarretenbergNativeShmSyncBackend implements IMsgpackBackendSync {
114
143
  }
115
144
 
116
145
  try {
117
- // Create NAPI client with matching max_clients value
118
- client = new addon.MsgpackClient(shmName, clientCount);
146
+ // Create NAPI client (SPSC-only, no max_clients needed)
147
+ client = new addon.MsgpackClient(shmName);
119
148
  break; // Success!
120
149
  } catch (err: any) {
121
150
  // Connection failed, will retry
@@ -133,12 +162,19 @@ export class BarretenbergNativeShmSyncBackend implements IMsgpackBackendSync {
133
162
  throw new Error('Failed to create client connection');
134
163
  }
135
164
 
136
- return new BarretenbergNativeShmSyncBackend(bbProcess, client);
165
+ return new BarretenbergNativeShmSyncBackend(bbProcess, client, logFd);
137
166
  } finally {
138
- // If we failed to connect, ensure the process is killed
167
+ // If we failed to connect, ensure the process is killed and log file closed
139
168
  // kill() returns false if process already exited, but doesn't throw
140
169
  if (!client) {
141
170
  bbProcess.kill('SIGKILL');
171
+ if (logFd !== undefined) {
172
+ try {
173
+ closeSync(logFd);
174
+ } catch (e) {
175
+ // Ignore errors during cleanup
176
+ }
177
+ }
142
178
  }
143
179
  }
144
180
  }
@@ -160,6 +196,13 @@ export class BarretenbergNativeShmSyncBackend implements IMsgpackBackendSync {
160
196
  // Ignore errors during cleanup
161
197
  }
162
198
  }
199
+ if (this.logFd !== undefined) {
200
+ try {
201
+ closeSync(this.logFd);
202
+ } catch (e) {
203
+ // Ignore errors during cleanup
204
+ }
205
+ }
163
206
  }
164
207
 
165
208
  destroy(): void {
@@ -0,0 +1,262 @@
1
+ import { createRequire } from 'module';
2
+ import { spawn, ChildProcess } from 'child_process';
3
+ import { openSync, closeSync } from 'fs';
4
+ import { IMsgpackBackendAsync } from '../interface.js';
5
+ import { findNapiBinary, findPackageRoot } from './platform.js';
6
+ import { threadId } from 'worker_threads';
7
+
8
+ let instanceCounter = 0;
9
+
10
+ /**
11
+ * Asynchronous shared memory backend that communicates with bb binary via shared memory.
12
+ * Uses NAPI module with background thread polling for async operations.
13
+ * Supports request pipelining - multiple requests can be in flight simultaneously.
14
+ *
15
+ * Architecture (matches socket backend pattern):
16
+ * - bb acts as the SERVER, TypeScript is the CLIENT
17
+ * - bb creates the shared memory region
18
+ * - TypeScript connects via NAPI wrapper (MsgpackClientAsync)
19
+ * - TypeScript manages promise queue (single-threaded, no mutex needed)
20
+ * - C++ background thread polls for responses, calls JavaScript callback
21
+ * - JavaScript callback pops queue and resolves promises in FIFO order
22
+ */
23
+ export class BarretenbergNativeShmAsyncBackend implements IMsgpackBackendAsync {
24
+ private process: ChildProcess;
25
+ private client: any; // NAPI MsgpackClientAsync instance
26
+ private logFd?: number; // File descriptor for logs
27
+
28
+ // Queue of pending callbacks for pipelined requests
29
+ // Responses come back in FIFO order, so we match them with queued callbacks
30
+ private pendingCallbacks: Array<{
31
+ resolve: (data: Uint8Array) => void;
32
+ reject: (error: Error) => void;
33
+ }> = [];
34
+
35
+ private constructor(process: ChildProcess, client: any, logFd?: number) {
36
+ this.process = process;
37
+ this.client = client;
38
+ this.logFd = logFd;
39
+
40
+ // Register our response handler with the C++ client
41
+ // This callback will be invoked from the background thread via ThreadSafeFunction
42
+ this.client.setResponseCallback((responseBuffer: Buffer) => {
43
+ this.handleResponse(responseBuffer);
44
+ });
45
+ }
46
+
47
+ /**
48
+ * Handle response from C++ background thread
49
+ * Dequeues the next pending callback and resolves it (FIFO order)
50
+ */
51
+ private handleResponse(responseBuffer: Buffer): void {
52
+ // Response is complete - dequeue the next pending callback (FIFO)
53
+ const callback = this.pendingCallbacks.shift();
54
+ if (callback) {
55
+ callback.resolve(new Uint8Array(responseBuffer));
56
+ } else {
57
+ // This shouldn't happen - response without a pending request
58
+ console.warn('Received response but no pending callback');
59
+ }
60
+
61
+ // If no more pending callbacks, release ref to allow process to exit
62
+ if (this.pendingCallbacks.length === 0) {
63
+ this.client.release();
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Create and initialize an async shared memory backend.
69
+ * @param bbBinaryPath Path to bb binary
70
+ * @param threads Optional number of threads (defaults to min(32, num_cpus))
71
+ * @param logger Optional logger function for bb output
72
+ */
73
+ static async new(
74
+ bbBinaryPath: string,
75
+ napiPath: string,
76
+ threads?: number,
77
+ logger?: (msg: string) => void,
78
+ ): Promise<BarretenbergNativeShmAsyncBackend> {
79
+ // Import the NAPI module
80
+ // The addon is built to the nodejs_module directory
81
+ const addonPath = findNapiBinary(napiPath);
82
+ // Try loading
83
+ let addon: any = null;
84
+ try {
85
+ const require = createRequire(findPackageRoot()!);
86
+ addon = require(addonPath!);
87
+ } catch (err) {
88
+ // Addon not built yet or not available
89
+ throw new Error('Shared memory async NAPI not available.');
90
+ }
91
+
92
+ // Create a unique shared memory name
93
+ const shmName = `bb-async-${process.pid}-${threadId}-${instanceCounter++}`;
94
+
95
+ // If threads not set use num cpu cores, max 16 (same as socket backend)
96
+ const hwc = threads ? threads.toString() : '16';
97
+ const env = { ...process.env, HARDWARE_CONCURRENCY: hwc };
98
+
99
+ // Set up file logging if logger is provided
100
+ // Direct file redirection bypasses Node event loop - logs are written even if process hangs
101
+ let logFd: number | undefined;
102
+ let logPath: string | undefined;
103
+ if (logger) {
104
+ logPath = `/tmp/${shmName}.log`;
105
+ logFd = openSync(logPath, 'w');
106
+ logger(`BB process logs redirected to: ${logPath}`);
107
+ }
108
+
109
+ // Spawn bb process with shared memory mode
110
+ // Use larger ring buffers for async mode to support pipelining
111
+ const args = [
112
+ 'msgpack',
113
+ 'run',
114
+ '--input',
115
+ `${shmName}.shm`,
116
+ '--request-ring-size',
117
+ `${1024 * 1024 * 4}`,
118
+ '--response-ring-size',
119
+ `${1024 * 1024 * 4}`,
120
+ ];
121
+ const bbProcess = spawn(bbBinaryPath, args, {
122
+ stdio: ['ignore', logFd ?? 'ignore', logFd ?? 'ignore'],
123
+ env,
124
+ });
125
+
126
+ // Disconnect from event loop so process can exit without waiting for bb
127
+ // The bb process has parent death monitoring (prctl on Linux, kqueue on macOS)
128
+ // so it will automatically exit when Node.js exits
129
+ bbProcess.unref();
130
+
131
+ // Track if process has exited
132
+ let processExited = false;
133
+ let exitError: Error | null = null;
134
+
135
+ bbProcess.on('error', err => {
136
+ processExited = true;
137
+ exitError = new Error(`Native backend process error: ${err.message}`);
138
+ });
139
+
140
+ bbProcess.on('exit', (code, signal) => {
141
+ processExited = true;
142
+ if (code !== null && code !== 0) {
143
+ exitError = new Error(`Native backend process exited with code ${code}`);
144
+ } else if (signal && signal !== 'SIGTERM') {
145
+ exitError = new Error(`Native backend process killed with signal ${signal}`);
146
+ }
147
+ });
148
+
149
+ // Wait for bb to create shared memory
150
+ // Retry connection every 100ms for up to 5 seconds (longer than sync for thread startup)
151
+ const retryInterval = 100; // ms
152
+ const timeout = 5000; // ms
153
+ const maxAttempts = Math.floor(timeout / retryInterval);
154
+ let client: any = null;
155
+
156
+ try {
157
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
158
+ // Check if bb process has exited before attempting connection
159
+ if (processExited) {
160
+ throw exitError || new Error('Native backend process exited unexpectedly during startup');
161
+ }
162
+
163
+ // Wait before attempting connection (except first attempt)
164
+ if (attempt > 0) {
165
+ await new Promise(resolve => setTimeout(resolve, retryInterval));
166
+ }
167
+
168
+ try {
169
+ // Create NAPI async client
170
+ client = new addon.MsgpackClientAsync(shmName);
171
+ break; // Success!
172
+ } catch (err: any) {
173
+ // Connection failed, will retry
174
+ if (attempt === maxAttempts - 1) {
175
+ // Last attempt failed - check one more time if process exited
176
+ if (processExited && exitError) {
177
+ throw exitError;
178
+ }
179
+ throw new Error(`Failed to connect to shared memory after ${timeout}ms: ${err.message}`);
180
+ }
181
+ }
182
+ }
183
+
184
+ if (!client) {
185
+ throw new Error('Failed to create client connection');
186
+ }
187
+
188
+ return new BarretenbergNativeShmAsyncBackend(bbProcess, client, logFd);
189
+ } finally {
190
+ // If we failed to connect, ensure the process is killed and log file closed
191
+ if (!client) {
192
+ bbProcess.kill('SIGKILL');
193
+ if (logFd !== undefined) {
194
+ try {
195
+ closeSync(logFd);
196
+ } catch (e) {
197
+ // Ignore errors during cleanup
198
+ }
199
+ }
200
+ }
201
+ }
202
+ }
203
+
204
+ /**
205
+ * Send a msgpack request asynchronously.
206
+ * Supports pipelining - can be called multiple times before awaiting responses.
207
+ * Use Promise.all() to send multiple requests concurrently.
208
+ *
209
+ * Example:
210
+ * const results = await Promise.all([
211
+ * backend.call(buf1),
212
+ * backend.call(buf2),
213
+ * backend.call(buf3)
214
+ * ]);
215
+ *
216
+ * @param inputBuffer The msgpack-encoded request
217
+ * @returns Promise resolving to msgpack-encoded response
218
+ */
219
+ async call(inputBuffer: Uint8Array): Promise<Uint8Array> {
220
+ return new Promise((resolve, reject) => {
221
+ // If this is the first pending callback, acquire ref to keep event loop alive
222
+ if (this.pendingCallbacks.length === 0) {
223
+ this.client.acquire();
224
+ }
225
+
226
+ // Enqueue this promise's callbacks (FIFO order)
227
+ this.pendingCallbacks.push({ resolve, reject });
228
+
229
+ try {
230
+ // Send request to shared memory (synchronous write)
231
+ // C++ call() no longer returns a promise - we manage them here
232
+ this.client.call(Buffer.from(inputBuffer));
233
+ } catch (err: any) {
234
+ // Send failed - dequeue the callback we just added and reject
235
+ this.pendingCallbacks.pop();
236
+
237
+ // If queue is now empty, release ref to allow exit
238
+ if (this.pendingCallbacks.length === 0) {
239
+ this.client.release();
240
+ }
241
+
242
+ reject(new Error(`Shared memory async call failed: ${err.message}`));
243
+ }
244
+ });
245
+ }
246
+
247
+ async destroy(): Promise<void> {
248
+ // Kill the bb process
249
+ // Background thread and callbacks will be cleaned up by OS on process exit
250
+ this.process.kill('SIGTERM');
251
+ this.process.removeAllListeners();
252
+
253
+ // Close log file if open
254
+ if (this.logFd !== undefined) {
255
+ try {
256
+ closeSync(this.logFd);
257
+ } catch (e) {
258
+ // Ignore errors during cleanup
259
+ }
260
+ }
261
+ }
262
+ }