@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.
- package/build/amd64-linux/bb +0 -0
- package/build/amd64-linux/nodejs_module.node +0 -0
- package/build/amd64-macos/bb +0 -0
- package/build/amd64-macos/nodejs_module.node +0 -0
- package/build/arm64-linux/bb +0 -0
- package/build/arm64-linux/nodejs_module.node +0 -0
- package/build/arm64-macos/bb +0 -0
- package/build/arm64-macos/nodejs_module.node +0 -0
- package/dest/browser/async_map/index.d.ts +1 -1
- package/dest/browser/async_map/index.js +1 -1
- package/dest/browser/barretenberg/backend.d.ts +10 -24
- package/dest/browser/barretenberg/backend.d.ts.map +1 -1
- package/dest/browser/barretenberg/backend.js +33 -84
- package/dest/browser/barretenberg/index.d.ts +2 -4
- package/dest/browser/barretenberg/index.d.ts.map +1 -1
- package/dest/browser/barretenberg/index.js +18 -27
- package/dest/browser/barretenberg/testing/bigint-buffer.d.ts +17 -0
- package/dest/browser/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/browser/barretenberg/testing/bigint-buffer.js +37 -0
- package/dest/browser/barretenberg/testing/fields.d.ts +16 -0
- package/dest/browser/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/browser/barretenberg/testing/fields.js +47 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.js +1 -1
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/helpers/browser/index.js +9 -2
- package/dest/browser/barretenberg_wasm/helpers/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/index.d.ts +1 -1
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/browser/barretenberg_wasm/index.js +2 -3
- package/dest/browser/bb_backends/browser/index.d.ts +1 -1
- package/dest/browser/bb_backends/browser/index.js +1 -1
- package/dest/browser/bb_backends/browser/platform.d.ts +4 -0
- package/dest/browser/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/browser/bb_backends/browser/platform.js +10 -0
- package/dest/browser/bb_backends/index.d.ts +10 -7
- package/dest/browser/bb_backends/index.d.ts.map +1 -1
- package/dest/browser/bb_backends/index.js +8 -7
- package/dest/browser/bb_backends/interface.d.ts +1 -1
- package/dest/browser/bb_backends/wasm.d.ts +1 -1
- package/dest/browser/bb_backends/wasm.d.ts.map +1 -1
- package/dest/browser/bb_backends/wasm.js +5 -3
- package/dest/browser/bbapi_exception.d.ts +1 -1
- package/dest/browser/bbapi_exception.d.ts.map +1 -1
- package/dest/browser/bbapi_exception.js +1 -1
- package/dest/browser/bin/index.d.ts +3 -0
- package/dest/browser/bin/index.d.ts.map +1 -0
- package/dest/browser/bin/index.js +11 -0
- package/dest/browser/cbind/generate.d.ts +1 -1
- package/dest/browser/cbind/generate.js +1 -1
- package/dest/browser/cbind/generated/api_types.d.ts +1 -1
- package/dest/browser/cbind/generated/api_types.js +1 -1
- package/dest/browser/cbind/generated/async.d.ts +1 -1
- package/dest/browser/cbind/generated/async.d.ts.map +1 -1
- package/dest/browser/cbind/generated/async.js +2 -1
- package/dest/browser/cbind/generated/curve_constants.d.ts +1 -1
- package/dest/browser/cbind/generated/sync.d.ts +1 -1
- package/dest/browser/cbind/generated/sync.d.ts.map +1 -1
- package/dest/browser/cbind/generated/sync.js +2 -1
- package/dest/browser/cbind/schema_compiler.d.ts +1 -1
- package/dest/browser/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/browser/cbind/schema_compiler.js +6 -5
- package/dest/browser/crs/browser/cached_net_crs.d.ts +1 -1
- package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -1
- package/dest/browser/crs/browser/cached_net_crs.js +6 -1
- package/dest/browser/crs/browser/index.d.ts +1 -1
- package/dest/browser/crs/index.d.ts +1 -1
- package/dest/browser/crs/net_crs.d.ts +1 -16
- package/dest/browser/crs/net_crs.d.ts.map +1 -1
- package/dest/browser/crs/net_crs.js +6 -1
- package/dest/browser/index.d.ts +2 -1
- package/dest/browser/index.d.ts.map +1 -1
- package/dest/browser/index.js +2 -1
- package/dest/browser/proof/index.d.ts +1 -1
- package/dest/browser/proof/index.js +1 -1
- package/dest/browser/random/browser/index.d.ts +1 -1
- package/dest/browser/random/browser/index.d.ts.map +1 -1
- package/dest/browser/random/browser/index.js +1 -1
- package/dest/browser/random/index.d.ts +1 -1
- package/dest/browser/retry/index.d.ts +1 -1
- package/dest/browser/retry/index.js +1 -1
- package/dest/node/async_map/index.d.ts +1 -1
- package/dest/node/async_map/index.js +1 -1
- package/dest/node/barretenberg/backend.d.ts +10 -24
- package/dest/node/barretenberg/backend.d.ts.map +1 -1
- package/dest/node/barretenberg/backend.js +33 -84
- package/dest/node/barretenberg/blake2s.test.d.ts +1 -1
- package/dest/node/barretenberg/blake2s.test.js +2 -2
- package/dest/node/barretenberg/index.d.ts +2 -4
- package/dest/node/barretenberg/index.d.ts.map +1 -1
- package/dest/node/barretenberg/index.js +18 -27
- package/dest/node/barretenberg/pedersen.test.d.ts +1 -1
- package/dest/node/barretenberg/pedersen.test.js +2 -2
- package/dest/node/barretenberg/poseidon.bench.test.d.ts +1 -1
- package/dest/node/barretenberg/poseidon.bench.test.js +80 -79
- package/dest/node/barretenberg/poseidon.test.d.ts +1 -1
- package/dest/node/barretenberg/poseidon.test.js +2 -2
- package/dest/node/barretenberg/testing/bigint-buffer.d.ts +17 -0
- package/dest/node/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/node/barretenberg/testing/bigint-buffer.js +37 -0
- package/dest/node/barretenberg/testing/fields.d.ts +16 -0
- package/dest/node/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/node/barretenberg/testing/fields.js +47 -0
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +5 -6
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +1 -3
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +1 -3
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/fetch_code/node/index.js +1 -1
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/helpers/browser/index.js +9 -2
- package/dest/node/barretenberg_wasm/helpers/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +5 -6
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/helpers/node/index.js +14 -6
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
- package/dest/node/barretenberg_wasm/index.d.ts +1 -1
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/node/barretenberg_wasm/index.js +2 -3
- package/dest/node/barretenberg_wasm/index.test.d.ts +1 -1
- package/dest/node/barretenberg_wasm/index.test.js +1 -1
- package/dest/node/bb_backends/browser/index.d.ts +1 -1
- package/dest/node/bb_backends/browser/index.js +1 -1
- package/dest/node/bb_backends/browser/platform.d.ts +4 -0
- package/dest/node/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/node/bb_backends/browser/platform.js +10 -0
- package/dest/node/bb_backends/index.d.ts +10 -7
- package/dest/node/bb_backends/index.d.ts.map +1 -1
- package/dest/node/bb_backends/index.js +8 -7
- package/dest/node/bb_backends/interface.d.ts +1 -1
- package/dest/node/bb_backends/node/index.d.ts +1 -1
- package/dest/node/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node/bb_backends/node/index.js +15 -9
- package/dest/node/bb_backends/node/native_pipe.d.ts +1 -1
- package/dest/node/bb_backends/node/native_pipe.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_pipe.js +11 -10
- package/dest/node/bb_backends/node/native_shm.d.ts +3 -3
- package/dest/node/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_shm.js +49 -22
- package/dest/node/bb_backends/node/native_shm_async.d.ts +51 -0
- package/dest/node/bb_backends/node/native_shm_async.d.ts.map +1 -0
- package/dest/node/bb_backends/node/native_shm_async.js +237 -0
- package/dest/node/bb_backends/node/native_socket.d.ts +2 -2
- package/dest/node/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node/bb_backends/node/native_socket.js +43 -31
- package/dest/node/bb_backends/node/platform.d.ts +1 -1
- package/dest/node/bb_backends/node/platform.js +1 -1
- package/dest/node/bb_backends/wasm.d.ts +1 -1
- package/dest/node/bb_backends/wasm.d.ts.map +1 -1
- package/dest/node/bb_backends/wasm.js +5 -3
- package/dest/node/bbapi/exception_handling.test.d.ts +2 -0
- package/dest/node/bbapi/exception_handling.test.d.ts.map +1 -0
- package/dest/node/bbapi/exception_handling.test.js +48 -0
- package/dest/node/bbapi_exception.d.ts +1 -1
- package/dest/node/bbapi_exception.d.ts.map +1 -1
- package/dest/node/bbapi_exception.js +1 -1
- package/dest/node/benchmark/index.d.ts +1 -1
- package/dest/node/benchmark/index.js +1 -1
- package/dest/node/benchmark/timer.d.ts +1 -1
- package/dest/node/benchmark/timer.d.ts.map +1 -1
- package/dest/node/benchmark/timer.js +2 -1
- package/dest/node/bin/index.d.ts +3 -0
- package/dest/node/bin/index.d.ts.map +1 -0
- package/dest/node/bin/index.js +11 -0
- package/dest/node/cbind/generate.d.ts +1 -1
- package/dest/node/cbind/generate.js +1 -1
- package/dest/node/cbind/generated/api_types.d.ts +1 -1
- package/dest/node/cbind/generated/api_types.js +1 -1
- package/dest/node/cbind/generated/async.d.ts +1 -1
- package/dest/node/cbind/generated/async.d.ts.map +1 -1
- package/dest/node/cbind/generated/async.js +2 -1
- package/dest/node/cbind/generated/curve_constants.d.ts +1 -1
- package/dest/node/cbind/generated/sync.d.ts +1 -1
- package/dest/node/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node/cbind/generated/sync.js +2 -1
- package/dest/node/cbind/schema_compiler.d.ts +1 -1
- package/dest/node/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node/cbind/schema_compiler.js +6 -5
- package/dest/node/crs/browser/cached_net_crs.d.ts +1 -1
- package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -1
- package/dest/node/crs/browser/cached_net_crs.js +6 -1
- package/dest/node/crs/browser/index.d.ts +1 -1
- package/dest/node/crs/index.d.ts +1 -1
- package/dest/node/crs/net_crs.d.ts +1 -16
- package/dest/node/crs/net_crs.d.ts.map +1 -1
- package/dest/node/crs/net_crs.js +6 -1
- package/dest/node/crs/node/index.d.ts +1 -1
- package/dest/node/crs/node/index.d.ts.map +1 -1
- package/dest/node/crs/node/index.js +11 -6
- package/dest/node/index.d.ts +2 -1
- package/dest/node/index.d.ts.map +1 -1
- package/dest/node/index.js +2 -1
- package/dest/node/proof/index.d.ts +1 -1
- package/dest/node/proof/index.js +1 -1
- package/dest/node/random/browser/index.d.ts +1 -1
- package/dest/node/random/browser/index.d.ts.map +1 -1
- package/dest/node/random/browser/index.js +1 -1
- package/dest/node/random/index.d.ts +1 -1
- package/dest/node/random/node/index.d.ts +1 -1
- package/dest/node/random/node/index.js +1 -1
- package/dest/node/retry/index.d.ts +1 -1
- package/dest/node/retry/index.js +1 -1
- package/dest/node-cjs/async_map/index.d.ts +1 -1
- package/dest/node-cjs/async_map/index.js +1 -1
- package/dest/node-cjs/barretenberg/backend.d.ts +10 -24
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/backend.js +39 -90
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts +1 -1
- package/dest/node-cjs/barretenberg/blake2s.test.js +6 -6
- package/dest/node-cjs/barretenberg/index.d.ts +2 -4
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg/index.js +24 -33
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts +1 -1
- package/dest/node-cjs/barretenberg/pedersen.test.js +9 -9
- package/dest/node-cjs/barretenberg/poseidon.bench.test.d.ts +1 -1
- package/dest/node-cjs/barretenberg/poseidon.bench.test.js +89 -88
- package/dest/node-cjs/barretenberg/poseidon.test.d.ts +1 -1
- package/dest/node-cjs/barretenberg/poseidon.test.js +4 -4
- package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts +17 -0
- package/dest/node-cjs/barretenberg/testing/bigint-buffer.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/testing/bigint-buffer.js +43 -0
- package/dest/node-cjs/barretenberg/testing/fields.d.ts +16 -0
- package/dest/node-cjs/barretenberg/testing/fields.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/testing/fields.js +51 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +7 -8
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +3 -5
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +1 -7
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +1 -3
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +1 -8
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +5 -4
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +13 -7
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +45 -18
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +3 -5
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +1 -7
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +1 -3
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +1 -7
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +9 -8
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +4 -3
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg-threads.js +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/barretenberg.js +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +2 -2
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +2 -2
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +2 -2
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +9 -2
- package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +5 -6
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +15 -7
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +2 -2
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +1 -1
- package/dest/node-cjs/barretenberg_wasm/index.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -1
- package/dest/node-cjs/barretenberg_wasm/index.js +2 -3
- package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +1 -1
- package/dest/node-cjs/barretenberg_wasm/index.test.js +1 -1
- package/dest/node-cjs/bb_backends/browser/index.d.ts +1 -1
- package/dest/node-cjs/bb_backends/browser/index.js +1 -1
- package/dest/node-cjs/bb_backends/browser/platform.d.ts +4 -0
- package/dest/node-cjs/bb_backends/browser/platform.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/browser/platform.js +15 -0
- package/dest/node-cjs/bb_backends/index.d.ts +10 -7
- package/dest/node-cjs/bb_backends/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/index.js +6 -6
- package/dest/node-cjs/bb_backends/interface.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/index.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/index.js +15 -9
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/native_pipe.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_pipe.js +11 -10
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts +3 -3
- package/dest/node-cjs/bb_backends/node/native_shm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_shm.js +49 -22
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts +51 -0
- package/dest/node-cjs/bb_backends/node/native_shm_async.d.ts.map +1 -0
- package/dest/node-cjs/bb_backends/node/native_shm_async.js +241 -0
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts +2 -2
- package/dest/node-cjs/bb_backends/node/native_socket.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/node/native_socket.js +43 -31
- package/dest/node-cjs/bb_backends/node/platform.d.ts +1 -1
- package/dest/node-cjs/bb_backends/node/platform.js +2 -2
- package/dest/node-cjs/bb_backends/wasm.d.ts +1 -1
- package/dest/node-cjs/bb_backends/wasm.d.ts.map +1 -1
- package/dest/node-cjs/bb_backends/wasm.js +5 -3
- package/dest/node-cjs/bbapi/exception_handling.test.d.ts +2 -0
- package/dest/node-cjs/bbapi/exception_handling.test.d.ts.map +1 -0
- package/dest/node-cjs/bbapi/exception_handling.test.js +50 -0
- package/dest/node-cjs/bbapi_exception.d.ts +1 -1
- package/dest/node-cjs/bbapi_exception.d.ts.map +1 -1
- package/dest/node-cjs/bbapi_exception.js +1 -1
- package/dest/node-cjs/benchmark/index.d.ts +1 -1
- package/dest/node-cjs/benchmark/index.js +2 -2
- package/dest/node-cjs/benchmark/timer.d.ts +1 -1
- package/dest/node-cjs/benchmark/timer.d.ts.map +1 -1
- package/dest/node-cjs/benchmark/timer.js +2 -1
- package/dest/node-cjs/bin/index.d.ts +3 -0
- package/dest/node-cjs/bin/index.d.ts.map +1 -0
- package/dest/node-cjs/bin/index.js +13 -0
- package/dest/node-cjs/cbind/generate.d.ts +1 -1
- package/dest/node-cjs/cbind/generate.js +1 -1
- package/dest/node-cjs/cbind/generated/api_types.d.ts +1 -1
- package/dest/node-cjs/cbind/generated/api_types.js +1 -1
- package/dest/node-cjs/cbind/generated/async.d.ts +1 -1
- package/dest/node-cjs/cbind/generated/async.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/async.js +2 -1
- package/dest/node-cjs/cbind/generated/curve_constants.d.ts +1 -1
- package/dest/node-cjs/cbind/generated/sync.d.ts +1 -1
- package/dest/node-cjs/cbind/generated/sync.d.ts.map +1 -1
- package/dest/node-cjs/cbind/generated/sync.js +2 -1
- package/dest/node-cjs/cbind/schema_compiler.d.ts +1 -1
- package/dest/node-cjs/cbind/schema_compiler.d.ts.map +1 -1
- package/dest/node-cjs/cbind/schema_compiler.js +6 -5
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +1 -1
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/browser/cached_net_crs.js +6 -1
- package/dest/node-cjs/crs/browser/index.d.ts +1 -1
- package/dest/node-cjs/crs/browser/index.js +2 -2
- package/dest/node-cjs/crs/index.d.ts +1 -1
- package/dest/node-cjs/crs/index.js +2 -2
- package/dest/node-cjs/crs/net_crs.d.ts +1 -16
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -1
- package/dest/node-cjs/crs/net_crs.js +6 -1
- package/dest/node-cjs/crs/node/index.d.ts +1 -1
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -1
- package/dest/node-cjs/crs/node/index.js +11 -6
- package/dest/node-cjs/index.d.ts +2 -1
- package/dest/node-cjs/index.d.ts.map +1 -1
- package/dest/node-cjs/index.js +10 -8
- package/dest/node-cjs/proof/index.d.ts +1 -1
- package/dest/node-cjs/proof/index.js +1 -1
- package/dest/node-cjs/random/browser/index.d.ts +1 -1
- package/dest/node-cjs/random/browser/index.d.ts.map +1 -1
- package/dest/node-cjs/random/browser/index.js +1 -1
- package/dest/node-cjs/random/index.d.ts +1 -1
- package/dest/node-cjs/random/node/index.d.ts +1 -1
- package/dest/node-cjs/random/node/index.js +1 -1
- package/dest/node-cjs/retry/index.d.ts +1 -1
- package/dest/node-cjs/retry/index.js +1 -1
- package/package.json +8 -6
- package/src/barretenberg/backend.ts +19 -97
- package/src/barretenberg/blake2s.test.ts +1 -1
- package/src/barretenberg/index.ts +16 -27
- package/src/barretenberg/pedersen.test.ts +1 -1
- package/src/barretenberg/poseidon.bench.test.ts +160 -157
- package/src/barretenberg/poseidon.test.ts +1 -1
- package/src/{types → barretenberg/testing}/fields.ts +12 -26
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +1 -2
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +0 -2
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +0 -7
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +0 -2
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +0 -9
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +37 -4
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +0 -2
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +0 -7
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +0 -2
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +0 -7
- package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +3 -2
- package/src/barretenberg_wasm/helpers/browser/index.ts +8 -1
- package/src/barretenberg_wasm/helpers/node/index.ts +13 -6
- package/src/barretenberg_wasm/index.ts +1 -2
- package/src/bb_backends/browser/platform.ts +11 -0
- package/src/bb_backends/index.ts +9 -6
- package/src/bb_backends/node/index.ts +16 -8
- package/src/bb_backends/node/native_shm.ts +48 -24
- package/src/bb_backends/node/native_shm_async.ts +266 -0
- package/src/bb_backends/node/native_socket.ts +31 -17
- package/src/bb_backends/wasm.ts +1 -2
- package/src/bbapi/exception_handling.test.ts +54 -0
- package/src/bin/index.ts +14 -0
- package/src/crs/node/index.ts +4 -5
- package/src/index.ts +2 -0
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts +0 -15
- package/dest/browser/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
- package/dest/browser/bb_backends/sync_to_async_adapter.js +0 -20
- package/dest/browser/bigint-array/index.d.ts +0 -17
- package/dest/browser/bigint-array/index.d.ts.map +0 -1
- package/dest/browser/bigint-array/index.js +0 -37
- package/dest/browser/log/browser/index.d.ts +0 -6
- package/dest/browser/log/browser/index.d.ts.map +0 -1
- package/dest/browser/log/browser/index.js +0 -28
- package/dest/browser/log/index.d.ts +0 -2
- package/dest/browser/log/index.d.ts.map +0 -1
- package/dest/browser/log/index.js +0 -2
- package/dest/browser/log/types.d.ts +0 -6
- package/dest/browser/log/types.d.ts.map +0 -1
- package/dest/browser/log/types.js +0 -2
- package/dest/browser/serialize/index.d.ts +0 -2
- package/dest/browser/serialize/index.d.ts.map +0 -1
- package/dest/browser/serialize/index.js +0 -2
- package/dest/browser/serialize/serialize.d.ts +0 -18
- package/dest/browser/serialize/serialize.d.ts.map +0 -1
- package/dest/browser/serialize/serialize.js +0 -72
- package/dest/browser/types/fields.d.ts +0 -23
- package/dest/browser/types/fields.d.ts.map +0 -1
- package/dest/browser/types/fields.js +0 -61
- package/dest/browser/types/index.d.ts +0 -3
- package/dest/browser/types/index.d.ts.map +0 -1
- package/dest/browser/types/index.js +0 -3
- package/dest/browser/types/point.d.ts +0 -18
- package/dest/browser/types/point.d.ts.map +0 -1
- package/dest/browser/types/point.js +0 -28
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts +0 -15
- package/dest/node/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
- package/dest/node/bb_backends/sync_to_async_adapter.js +0 -20
- package/dest/node/bigint-array/index.d.ts +0 -17
- package/dest/node/bigint-array/index.d.ts.map +0 -1
- package/dest/node/bigint-array/index.js +0 -37
- package/dest/node/log/browser/index.d.ts +0 -6
- package/dest/node/log/browser/index.d.ts.map +0 -1
- package/dest/node/log/browser/index.js +0 -28
- package/dest/node/log/index.d.ts +0 -2
- package/dest/node/log/index.d.ts.map +0 -1
- package/dest/node/log/index.js +0 -2
- package/dest/node/log/node/index.d.ts +0 -6
- package/dest/node/log/node/index.d.ts.map +0 -1
- package/dest/node/log/node/index.js +0 -40
- package/dest/node/log/types.d.ts +0 -6
- package/dest/node/log/types.d.ts.map +0 -1
- package/dest/node/log/types.js +0 -2
- package/dest/node/serialize/index.d.ts +0 -2
- package/dest/node/serialize/index.d.ts.map +0 -1
- package/dest/node/serialize/index.js +0 -2
- package/dest/node/serialize/serialize.d.ts +0 -18
- package/dest/node/serialize/serialize.d.ts.map +0 -1
- package/dest/node/serialize/serialize.js +0 -72
- package/dest/node/types/fields.d.ts +0 -23
- package/dest/node/types/fields.d.ts.map +0 -1
- package/dest/node/types/fields.js +0 -61
- package/dest/node/types/index.d.ts +0 -3
- package/dest/node/types/index.d.ts.map +0 -1
- package/dest/node/types/index.js +0 -3
- package/dest/node/types/point.d.ts +0 -18
- package/dest/node/types/point.d.ts.map +0 -1
- package/dest/node/types/point.js +0 -28
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts +0 -15
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.d.ts.map +0 -1
- package/dest/node-cjs/bb_backends/sync_to_async_adapter.js +0 -24
- package/dest/node-cjs/bigint-array/index.d.ts +0 -17
- package/dest/node-cjs/bigint-array/index.d.ts.map +0 -1
- package/dest/node-cjs/bigint-array/index.js +0 -43
- package/dest/node-cjs/log/browser/index.d.ts +0 -6
- package/dest/node-cjs/log/browser/index.d.ts.map +0 -1
- package/dest/node-cjs/log/browser/index.js +0 -30
- package/dest/node-cjs/log/index.d.ts +0 -2
- package/dest/node-cjs/log/index.d.ts.map +0 -1
- package/dest/node-cjs/log/index.js +0 -8
- package/dest/node-cjs/log/node/index.d.ts +0 -6
- package/dest/node-cjs/log/node/index.d.ts.map +0 -1
- package/dest/node-cjs/log/node/index.js +0 -42
- package/dest/node-cjs/log/types.d.ts +0 -6
- package/dest/node-cjs/log/types.d.ts.map +0 -1
- package/dest/node-cjs/log/types.js +0 -3
- package/dest/node-cjs/serialize/index.d.ts +0 -2
- package/dest/node-cjs/serialize/index.d.ts.map +0 -1
- package/dest/node-cjs/serialize/index.js +0 -5
- package/dest/node-cjs/serialize/serialize.d.ts +0 -18
- package/dest/node-cjs/serialize/serialize.d.ts.map +0 -1
- package/dest/node-cjs/serialize/serialize.js +0 -82
- package/dest/node-cjs/types/fields.d.ts +0 -23
- package/dest/node-cjs/types/fields.d.ts.map +0 -1
- package/dest/node-cjs/types/fields.js +0 -65
- package/dest/node-cjs/types/index.d.ts +0 -3
- package/dest/node-cjs/types/index.d.ts.map +0 -1
- package/dest/node-cjs/types/index.js +0 -6
- package/dest/node-cjs/types/point.d.ts +0 -18
- package/dest/node-cjs/types/point.d.ts.map +0 -1
- package/dest/node-cjs/types/point.js +0 -32
- package/src/bb_backends/sync_to_async_adapter.ts +0 -21
- package/src/cbind/generated/api_types.ts +0 -4271
- package/src/cbind/generated/async.ts +0 -717
- package/src/cbind/generated/curve_constants.ts +0 -53
- package/src/cbind/generated/sync.ts +0 -663
- package/src/log/browser/index.ts +0 -35
- package/src/log/index.ts +0 -1
- package/src/log/node/index.ts +0 -52
- package/src/log/types.ts +0 -6
- package/src/serialize/index.ts +0 -1
- package/src/serialize/serialize.ts +0 -75
- package/src/types/index.ts +0 -2
- package/src/types/point.ts +0 -32
- /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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
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
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
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
|
-
|
|
179
|
-
|
|
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
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
);
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
);
|
|
194
|
-
|
|
195
|
-
|
|
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
|
-
|
|
158
|
+
`┌─ Size ${size.toString().padStart(3)} field elements ───────────────────────────────────────┐\n`,
|
|
201
159
|
);
|
|
202
|
-
|
|
203
|
-
|
|
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
|
-
|
|
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
|
-
|
|
209
|
-
|
|
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
|
-
|
|
212
|
-
|
|
213
|
-
|
|
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
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
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
|
-
|
|
227
|
-
|
|
228
|
-
|
|
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
|
-
|
|
232
|
-
|
|
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
|
|
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
|
|
254
|
-
expect(Buffer.from(nativeSocketResult.hash)).toEqual(
|
|
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
|
|
259
|
-
expect(Buffer.from(nativeShmResult.hash)).toEqual(
|
|
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
|
|
264
|
-
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(
|
|
266
|
+
const nativeShmSyncResult = nativeShmSyncApi.poseidon2Hash({ inputs });
|
|
267
|
+
expect(Buffer.from(nativeShmSyncResult.hash)).toEqual(wasmResult.hash);
|
|
265
268
|
}
|
|
266
269
|
}
|
|
267
270
|
});
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import { randomBytes } from '
|
|
1
|
+
import { randomBytes } from '../../random/index.js';
|
|
2
2
|
import {
|
|
3
3
|
buffer32BytesToBigIntBE,
|
|
4
4
|
uint8ArrayToBigIntBE,
|
|
5
5
|
bigIntToBufferBE,
|
|
6
6
|
bigIntToUint8ArrayBE,
|
|
7
|
-
} from '
|
|
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 =
|
|
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
|
|
37
|
+
logger?: (msg: string) => void,
|
|
38
38
|
initial = 33,
|
|
39
39
|
maximum = this.getDefaultMaximumMemoryPages(),
|
|
40
40
|
) {
|
|
41
|
-
|
|
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
|
}
|