@aztec/bb.js 0.0.0-devnet
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/README.md +149 -0
- package/dest/browser/522.index.js +10 -0
- package/dest/browser/barretenberg/backend.d.ts +85 -0
- package/dest/browser/barretenberg/backend.d.ts.map +1 -0
- package/dest/browser/barretenberg/index.d.ts +47 -0
- package/dest/browser/barretenberg/index.d.ts.map +1 -0
- package/dest/browser/barretenberg/verifier.d.ts +16 -0
- package/dest/browser/barretenberg/verifier.d.ts.map +1 -0
- package/dest/browser/barretenberg_api/index.d.ts +113 -0
- package/dest/browser/barretenberg_api/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +44 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +4 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +47 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -0
- package/dest/browser/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
- package/dest/browser/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/browser/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/browser/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- package/dest/browser/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/browser/barretenberg_wasm/index.d.ts +18 -0
- package/dest/browser/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/browser/bigint-array/index.d.ts +3 -0
- package/dest/browser/bigint-array/index.d.ts.map +1 -0
- package/dest/browser/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/browser/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/browser/crs/browser/index.d.ts +2 -0
- package/dest/browser/crs/browser/index.d.ts.map +1 -0
- package/dest/browser/crs/index.d.ts +2 -0
- package/dest/browser/crs/index.d.ts.map +1 -0
- package/dest/browser/crs/net_crs.d.ts +61 -0
- package/dest/browser/crs/net_crs.d.ts.map +1 -0
- package/dest/browser/crs/node/index.d.ts +36 -0
- package/dest/browser/crs/node/index.d.ts.map +1 -0
- package/dest/browser/index.d.ts +5 -0
- package/dest/browser/index.d.ts.map +1 -0
- package/dest/browser/index.js +16205 -0
- package/dest/browser/proof/index.d.ts +19 -0
- package/dest/browser/proof/index.d.ts.map +1 -0
- package/dest/browser/random/browser/index.d.ts +2 -0
- package/dest/browser/random/browser/index.d.ts.map +1 -0
- package/dest/browser/random/index.d.ts +2 -0
- package/dest/browser/random/index.d.ts.map +1 -0
- package/dest/browser/random/node/index.d.ts +2 -0
- package/dest/browser/random/node/index.d.ts.map +1 -0
- package/dest/browser/serialize/buffer_reader.d.ts +28 -0
- package/dest/browser/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/browser/serialize/index.d.ts +4 -0
- package/dest/browser/serialize/index.d.ts.map +1 -0
- package/dest/browser/serialize/output_type.d.ts +11 -0
- package/dest/browser/serialize/output_type.d.ts.map +1 -0
- package/dest/browser/serialize/serialize.d.ts +53 -0
- package/dest/browser/serialize/serialize.d.ts.map +1 -0
- package/dest/browser/types/fields.d.ts +43 -0
- package/dest/browser/types/fields.d.ts.map +1 -0
- package/dest/browser/types/fixed_size_buffer.d.ts +26 -0
- package/dest/browser/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/browser/types/index.d.ts +6 -0
- package/dest/browser/types/index.d.ts.map +1 -0
- package/dest/browser/types/point.d.ts +17 -0
- package/dest/browser/types/point.d.ts.map +1 -0
- package/dest/browser/types/ptr.d.ts +13 -0
- package/dest/browser/types/ptr.d.ts.map +1 -0
- package/dest/browser/types/raw_buffer.d.ts +3 -0
- package/dest/browser/types/raw_buffer.d.ts.map +1 -0
- package/dest/node/async_map/index.d.ts +10 -0
- package/dest/node/async_map/index.d.ts.map +1 -0
- package/dest/node/async_map/index.js +16 -0
- package/dest/node/barretenberg/backend.d.ts +85 -0
- package/dest/node/barretenberg/backend.d.ts.map +1 -0
- package/dest/node/barretenberg/backend.js +247 -0
- package/dest/node/barretenberg/blake2s.test.d.ts +2 -0
- package/dest/node/barretenberg/blake2s.test.d.ts.map +1 -0
- package/dest/node/barretenberg/blake2s.test.js +54 -0
- package/dest/node/barretenberg/common.test.d.ts +2 -0
- package/dest/node/barretenberg/common.test.d.ts.map +1 -0
- package/dest/node/barretenberg/common.test.js +20 -0
- package/dest/node/barretenberg/index.d.ts +47 -0
- package/dest/node/barretenberg/index.d.ts.map +1 -0
- package/dest/node/barretenberg/index.js +97 -0
- package/dest/node/barretenberg/pedersen.test.d.ts +2 -0
- package/dest/node/barretenberg/pedersen.test.d.ts.map +1 -0
- package/dest/node/barretenberg/pedersen.test.js +55 -0
- package/dest/node/barretenberg/poseidon.test.d.ts +2 -0
- package/dest/node/barretenberg/poseidon.test.d.ts.map +1 -0
- package/dest/node/barretenberg/poseidon.test.js +35 -0
- package/dest/node/barretenberg/schnorr.test.d.ts +2 -0
- package/dest/node/barretenberg/schnorr.test.d.ts.map +1 -0
- package/dest/node/barretenberg/schnorr.test.js +113 -0
- package/dest/node/barretenberg/verifier.d.ts +16 -0
- package/dest/node/barretenberg/verifier.d.ts.map +1 -0
- package/dest/node/barretenberg/verifier.js +40 -0
- package/dest/node/barretenberg_api/index.d.ts +113 -0
- package/dest/node/barretenberg_api/index.d.ts.map +1 -0
- package/dest/node/barretenberg_api/index.js +728 -0
- package/dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +0 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts +44 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_base/index.js +125 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +10 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +12 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +4 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +18 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +9 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +57 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +47 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_main/index.js +107 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +10 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +12 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +18 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +9 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/barretenberg_wasm_thread/index.js +40 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/browser/index.js +12 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/index.js +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/fetch_code/node/index.js +22 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/browser/index.js +18 -0
- package/dest/node/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/node/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/index.js +2 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/node/index.js +39 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/helpers/node/node_endpoint.js +28 -0
- package/dest/node/barretenberg_wasm/index.d.ts +18 -0
- package/dest/node/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/index.js +45 -0
- package/dest/node/barretenberg_wasm/index.test.d.ts +2 -0
- package/dest/node/barretenberg_wasm/index.test.d.ts.map +1 -0
- package/dest/node/barretenberg_wasm/index.test.js +38 -0
- package/dest/node/benchmark/index.d.ts +3 -0
- package/dest/node/benchmark/index.d.ts.map +1 -0
- package/dest/node/benchmark/index.js +25 -0
- package/dest/node/benchmark/timer.d.ts +34 -0
- package/dest/node/benchmark/timer.d.ts.map +1 -0
- package/dest/node/benchmark/timer.js +41 -0
- package/dest/node/bigint-array/index.d.ts +3 -0
- package/dest/node/bigint-array/index.d.ts.map +1 -0
- package/dest/node/bigint-array/index.js +21 -0
- package/dest/node/bindgen/function_declaration.d.ts +11 -0
- package/dest/node/bindgen/function_declaration.d.ts.map +1 -0
- package/dest/node/bindgen/function_declaration.js +2 -0
- package/dest/node/bindgen/index.d.ts +2 -0
- package/dest/node/bindgen/index.d.ts.map +1 -0
- package/dest/node/bindgen/index.js +15 -0
- package/dest/node/bindgen/mappings.d.ts +4 -0
- package/dest/node/bindgen/mappings.d.ts.map +1 -0
- package/dest/node/bindgen/mappings.js +63 -0
- package/dest/node/bindgen/rust.d.ts +2 -0
- package/dest/node/bindgen/rust.d.ts.map +1 -0
- package/dest/node/bindgen/rust.js +43 -0
- package/dest/node/bindgen/to_camel_case.d.ts +2 -0
- package/dest/node/bindgen/to_camel_case.d.ts.map +1 -0
- package/dest/node/bindgen/to_camel_case.js +11 -0
- package/dest/node/bindgen/typescript.d.ts +2 -0
- package/dest/node/bindgen/typescript.d.ts.map +1 -0
- package/dest/node/bindgen/typescript.js +100 -0
- package/dest/node/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/node/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/node/crs/browser/cached_net_crs.js +90 -0
- package/dest/node/crs/browser/index.d.ts +2 -0
- package/dest/node/crs/browser/index.d.ts.map +1 -0
- package/dest/node/crs/browser/index.js +2 -0
- package/dest/node/crs/index.d.ts +2 -0
- package/dest/node/crs/index.d.ts.map +1 -0
- package/dest/node/crs/index.js +2 -0
- package/dest/node/crs/net_crs.d.ts +61 -0
- package/dest/node/crs/net_crs.d.ts.map +1 -0
- package/dest/node/crs/net_crs.js +97 -0
- package/dest/node/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node/crs/node/ignition_files_crs.js +65 -0
- package/dest/node/crs/node/index.d.ts +36 -0
- package/dest/node/crs/node/index.d.ts.map +1 -0
- package/dest/node/crs/node/index.js +93 -0
- package/dest/node/examples/simple.rawtest.d.ts +2 -0
- package/dest/node/examples/simple.rawtest.d.ts.map +1 -0
- package/dest/node/examples/simple.rawtest.js +30 -0
- package/dest/node/examples/simple.test.d.ts +2 -0
- package/dest/node/examples/simple.test.d.ts.map +1 -0
- package/dest/node/examples/simple.test.js +23 -0
- package/dest/node/index.d.ts +5 -0
- package/dest/node/index.d.ts.map +1 -0
- package/dest/node/index.js +5 -0
- package/dest/node/main.d.ts +23 -0
- package/dest/node/main.d.ts.map +1 -0
- package/dest/node/main.js +712 -0
- package/dest/node/proof/index.d.ts +19 -0
- package/dest/node/proof/index.d.ts.map +1 -0
- package/dest/node/proof/index.js +85 -0
- package/dest/node/random/browser/index.d.ts +2 -0
- package/dest/node/random/browser/index.d.ts.map +1 -0
- package/dest/node/random/browser/index.js +31 -0
- package/dest/node/random/index.d.ts +2 -0
- package/dest/node/random/index.d.ts.map +1 -0
- package/dest/node/random/index.js +2 -0
- package/dest/node/random/node/index.d.ts +2 -0
- package/dest/node/random/node/index.d.ts.map +1 -0
- package/dest/node/random/node/index.js +5 -0
- package/dest/node/serialize/buffer_reader.d.ts +28 -0
- package/dest/node/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/node/serialize/buffer_reader.js +66 -0
- package/dest/node/serialize/index.d.ts +4 -0
- package/dest/node/serialize/index.d.ts.map +1 -0
- package/dest/node/serialize/index.js +4 -0
- package/dest/node/serialize/output_type.d.ts +11 -0
- package/dest/node/serialize/output_type.d.ts.map +1 -0
- package/dest/node/serialize/output_type.js +44 -0
- package/dest/node/serialize/serialize.d.ts +53 -0
- package/dest/node/serialize/serialize.d.ts.map +1 -0
- package/dest/node/serialize/serialize.js +139 -0
- package/dest/node/types/fields.d.ts +43 -0
- package/dest/node/types/fields.d.ts.map +1 -0
- package/dest/node/types/fields.js +97 -0
- package/dest/node/types/fixed_size_buffer.d.ts +26 -0
- package/dest/node/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/node/types/fixed_size_buffer.js +51 -0
- package/dest/node/types/index.d.ts +6 -0
- package/dest/node/types/index.d.ts.map +1 -0
- package/dest/node/types/index.js +6 -0
- package/dest/node/types/point.d.ts +17 -0
- package/dest/node/types/point.d.ts.map +1 -0
- package/dest/node/types/point.js +31 -0
- package/dest/node/types/ptr.d.ts +13 -0
- package/dest/node/types/ptr.d.ts.map +1 -0
- package/dest/node/types/ptr.js +19 -0
- package/dest/node/types/raw_buffer.d.ts +3 -0
- package/dest/node/types/raw_buffer.d.ts.map +1 -0
- package/dest/node/types/raw_buffer.js +5 -0
- package/dest/node-cjs/async_map/index.d.ts +10 -0
- package/dest/node-cjs/async_map/index.d.ts.map +1 -0
- package/dest/node-cjs/async_map/index.js +20 -0
- package/dest/node-cjs/barretenberg/backend.d.ts +85 -0
- package/dest/node-cjs/barretenberg/backend.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/backend.js +253 -0
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/blake2s.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/blake2s.test.js +56 -0
- package/dest/node-cjs/barretenberg/common.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/common.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/common.test.js +22 -0
- package/dest/node-cjs/barretenberg/index.d.ts +47 -0
- package/dest/node-cjs/barretenberg/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/index.js +106 -0
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/pedersen.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/pedersen.test.js +57 -0
- package/dest/node-cjs/barretenberg/poseidon.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/poseidon.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/poseidon.test.js +37 -0
- package/dest/node-cjs/barretenberg/schnorr.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg/schnorr.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/schnorr.test.js +115 -0
- package/dest/node-cjs/barretenberg/verifier.d.ts +16 -0
- package/dest/node-cjs/barretenberg/verifier.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg/verifier.js +44 -0
- package/dest/node-cjs/barretenberg_api/index.d.ts +113 -0
- package/dest/node-cjs/barretenberg_api/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_api/index.js +733 -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 +44 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_base/index.js +130 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.js +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.js +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts +4 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.js +22 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.js +11 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts +21 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.js +61 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts +47 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_main/index.js +112 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.js +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts +3 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.js +15 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts +4 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.js +22 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.js +11 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts +28 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/barretenberg_wasm_thread/index.js +44 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/browser/index.js +17 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/index.js +5 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/fetch_code/node/index.js +27 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts +6 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/browser/index.js +26 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/index.js +5 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts +22 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/index.js +48 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts +8 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/helpers/node/node_endpoint.js +32 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts +18 -0
- package/dest/node-cjs/barretenberg_wasm/index.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/index.js +51 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.d.ts +2 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.d.ts.map +1 -0
- package/dest/node-cjs/barretenberg_wasm/index.test.js +40 -0
- package/dest/node-cjs/benchmark/index.d.ts +3 -0
- package/dest/node-cjs/benchmark/index.d.ts.map +1 -0
- package/dest/node-cjs/benchmark/index.js +30 -0
- package/dest/node-cjs/benchmark/timer.d.ts +34 -0
- package/dest/node-cjs/benchmark/timer.d.ts.map +1 -0
- package/dest/node-cjs/benchmark/timer.js +45 -0
- package/dest/node-cjs/bigint-array/index.d.ts +3 -0
- package/dest/node-cjs/bigint-array/index.d.ts.map +1 -0
- package/dest/node-cjs/bigint-array/index.js +26 -0
- package/dest/node-cjs/bindgen/function_declaration.d.ts +11 -0
- package/dest/node-cjs/bindgen/function_declaration.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/function_declaration.js +3 -0
- package/dest/node-cjs/bindgen/index.d.ts +2 -0
- package/dest/node-cjs/bindgen/index.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/index.js +17 -0
- package/dest/node-cjs/bindgen/mappings.d.ts +4 -0
- package/dest/node-cjs/bindgen/mappings.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/mappings.js +68 -0
- package/dest/node-cjs/bindgen/rust.d.ts +2 -0
- package/dest/node-cjs/bindgen/rust.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/rust.js +48 -0
- package/dest/node-cjs/bindgen/to_camel_case.d.ts +2 -0
- package/dest/node-cjs/bindgen/to_camel_case.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/to_camel_case.js +15 -0
- package/dest/node-cjs/bindgen/typescript.d.ts +2 -0
- package/dest/node-cjs/bindgen/typescript.d.ts.map +1 -0
- package/dest/node-cjs/bindgen/typescript.js +105 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts +43 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/browser/cached_net_crs.js +95 -0
- package/dest/node-cjs/crs/browser/index.d.ts +2 -0
- package/dest/node-cjs/crs/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/browser/index.js +7 -0
- package/dest/node-cjs/crs/index.d.ts +2 -0
- package/dest/node-cjs/crs/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/index.js +7 -0
- package/dest/node-cjs/crs/net_crs.d.ts +61 -0
- package/dest/node-cjs/crs/net_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/net_crs.js +102 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts +38 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/ignition_files_crs.js +69 -0
- package/dest/node-cjs/crs/node/index.d.ts +36 -0
- package/dest/node-cjs/crs/node/index.d.ts.map +1 -0
- package/dest/node-cjs/crs/node/index.js +99 -0
- package/dest/node-cjs/examples/simple.rawtest.d.ts +2 -0
- package/dest/node-cjs/examples/simple.rawtest.d.ts.map +1 -0
- package/dest/node-cjs/examples/simple.rawtest.js +33 -0
- package/dest/node-cjs/examples/simple.test.d.ts +2 -0
- package/dest/node-cjs/examples/simple.test.d.ts.map +1 -0
- package/dest/node-cjs/examples/simple.test.js +25 -0
- package/dest/node-cjs/index.d.ts +5 -0
- package/dest/node-cjs/index.d.ts.map +1 -0
- package/dest/node-cjs/index.js +20 -0
- package/dest/node-cjs/main.d.ts +23 -0
- package/dest/node-cjs/main.d.ts.map +1 -0
- package/dest/node-cjs/main.js +735 -0
- package/dest/node-cjs/package.json +3 -0
- package/dest/node-cjs/proof/index.d.ts +19 -0
- package/dest/node-cjs/proof/index.d.ts.map +1 -0
- package/dest/node-cjs/proof/index.js +93 -0
- package/dest/node-cjs/random/browser/index.d.ts +2 -0
- package/dest/node-cjs/random/browser/index.d.ts.map +1 -0
- package/dest/node-cjs/random/browser/index.js +35 -0
- package/dest/node-cjs/random/index.d.ts +2 -0
- package/dest/node-cjs/random/index.d.ts.map +1 -0
- package/dest/node-cjs/random/index.js +5 -0
- package/dest/node-cjs/random/node/index.d.ts +2 -0
- package/dest/node-cjs/random/node/index.d.ts.map +1 -0
- package/dest/node-cjs/random/node/index.js +9 -0
- package/dest/node-cjs/serialize/buffer_reader.d.ts +28 -0
- package/dest/node-cjs/serialize/buffer_reader.d.ts.map +1 -0
- package/dest/node-cjs/serialize/buffer_reader.js +70 -0
- package/dest/node-cjs/serialize/index.d.ts +4 -0
- package/dest/node-cjs/serialize/index.d.ts.map +1 -0
- package/dest/node-cjs/serialize/index.js +7 -0
- package/dest/node-cjs/serialize/output_type.d.ts +11 -0
- package/dest/node-cjs/serialize/output_type.d.ts.map +1 -0
- package/dest/node-cjs/serialize/output_type.js +52 -0
- package/dest/node-cjs/serialize/serialize.d.ts +53 -0
- package/dest/node-cjs/serialize/serialize.d.ts.map +1 -0
- package/dest/node-cjs/serialize/serialize.js +161 -0
- package/dest/node-cjs/types/fields.d.ts +43 -0
- package/dest/node-cjs/types/fields.d.ts.map +1 -0
- package/dest/node-cjs/types/fields.js +102 -0
- package/dest/node-cjs/types/fixed_size_buffer.d.ts +26 -0
- package/dest/node-cjs/types/fixed_size_buffer.d.ts.map +1 -0
- package/dest/node-cjs/types/fixed_size_buffer.js +57 -0
- package/dest/node-cjs/types/index.d.ts +6 -0
- package/dest/node-cjs/types/index.d.ts.map +1 -0
- package/dest/node-cjs/types/index.js +9 -0
- package/dest/node-cjs/types/point.d.ts +17 -0
- package/dest/node-cjs/types/point.d.ts.map +1 -0
- package/dest/node-cjs/types/point.js +35 -0
- package/dest/node-cjs/types/ptr.d.ts +13 -0
- package/dest/node-cjs/types/ptr.d.ts.map +1 -0
- package/dest/node-cjs/types/ptr.js +23 -0
- package/dest/node-cjs/types/raw_buffer.d.ts +3 -0
- package/dest/node-cjs/types/raw_buffer.d.ts.map +1 -0
- package/dest/node-cjs/types/raw_buffer.js +9 -0
- package/package.json +105 -0
- package/src/async_map/index.ts +15 -0
- package/src/barretenberg/__snapshots__/pedersen.test.ts.snap +156 -0
- package/src/barretenberg/__snapshots__/poseidon.test.ts.snap +40 -0
- package/src/barretenberg/backend.ts +362 -0
- package/src/barretenberg/blake2s.test.ts +70 -0
- package/src/barretenberg/common.test.ts +23 -0
- package/src/barretenberg/index.ts +130 -0
- package/src/barretenberg/pedersen.test.ts +62 -0
- package/src/barretenberg/poseidon.test.ts +39 -0
- package/src/barretenberg/schnorr.test.ts +182 -0
- package/src/barretenberg/verifier.ts +55 -0
- package/src/barretenberg_api/index.ts +1305 -0
- package/src/barretenberg_wasm/barretenberg_wasm_base/index.ts +138 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts +15 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts +18 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts +60 -0
- package/src/barretenberg_wasm/barretenberg_wasm_main/index.ts +138 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts +15 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts +18 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts +10 -0
- package/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts +47 -0
- package/src/barretenberg_wasm/fetch_code/browser/index.ts +12 -0
- package/src/barretenberg_wasm/fetch_code/browser/wasm-module.d.ts +4 -0
- package/src/barretenberg_wasm/fetch_code/index.ts +1 -0
- package/src/barretenberg_wasm/fetch_code/node/index.ts +22 -0
- package/src/barretenberg_wasm/helpers/browser/index.ts +22 -0
- package/src/barretenberg_wasm/helpers/index.ts +1 -0
- package/src/barretenberg_wasm/helpers/node/index.ts +44 -0
- package/src/barretenberg_wasm/helpers/node/node_endpoint.ts +28 -0
- package/src/barretenberg_wasm/index.test.ts +45 -0
- package/src/barretenberg_wasm/index.ts +50 -0
- package/src/benchmark/index.ts +26 -0
- package/src/benchmark/timer.ts +45 -0
- package/src/bigint-array/index.ts +21 -0
- package/src/bindgen/function_declaration.ts +11 -0
- package/src/bindgen/index.ts +17 -0
- package/src/bindgen/mappings.ts +66 -0
- package/src/bindgen/rust.ts +52 -0
- package/src/bindgen/to_camel_case.ts +10 -0
- package/src/bindgen/typescript.ts +116 -0
- package/src/crs/browser/cached_net_crs.ts +99 -0
- package/src/crs/browser/index.ts +1 -0
- package/src/crs/index.ts +1 -0
- package/src/crs/net_crs.ts +115 -0
- package/src/crs/node/ignition_files_crs.ts +74 -0
- package/src/crs/node/index.ts +102 -0
- package/src/examples/simple.rawtest.ts +38 -0
- package/src/examples/simple.test.ts +28 -0
- package/src/index.html +9 -0
- package/src/index.ts +12 -0
- package/src/main.ts +834 -0
- package/src/proof/index.ts +120 -0
- package/src/random/browser/index.ts +32 -0
- package/src/random/index.ts +1 -0
- package/src/random/node/index.ts +5 -0
- package/src/serialize/buffer_reader.ts +82 -0
- package/src/serialize/index.ts +3 -0
- package/src/serialize/output_type.ts +53 -0
- package/src/serialize/serialize.ts +157 -0
- package/src/types/fields.ts +115 -0
- package/src/types/fixed_size_buffer.ts +59 -0
- package/src/types/index.ts +5 -0
- package/src/types/point.ts +35 -0
- package/src/types/ptr.ts +20 -0
- package/src/types/raw_buffer.ts +3 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import createDebug from 'debug';
|
|
2
|
+
import { randomBytes } from '../../random/index.js';
|
|
3
|
+
|
|
4
|
+
const debug = createDebug('bb.js:wasm');
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Base implementation of BarretenbergWasm.
|
|
8
|
+
* Contains code that is common to the "main thread" implementation and the "child thread" implementation.
|
|
9
|
+
*/
|
|
10
|
+
export class BarretenbergWasmBase {
|
|
11
|
+
protected memStore: { [key: string]: Uint8Array } = {};
|
|
12
|
+
protected memory!: WebAssembly.Memory;
|
|
13
|
+
protected instance!: WebAssembly.Instance;
|
|
14
|
+
protected logger: (msg: string) => void = debug;
|
|
15
|
+
|
|
16
|
+
protected getImportObj(memory: WebAssembly.Memory) {
|
|
17
|
+
/* eslint-disable camelcase */
|
|
18
|
+
const importObj = {
|
|
19
|
+
// We need to implement a part of the wasi api:
|
|
20
|
+
// https://github.com/WebAssembly/WASI/blob/main/phases/snapshot/docs.md
|
|
21
|
+
// We literally only need to support random_get, everything else is noop implementated in barretenberg.wasm.
|
|
22
|
+
wasi_snapshot_preview1: {
|
|
23
|
+
random_get: (out: any, length: number) => {
|
|
24
|
+
out = out >>> 0;
|
|
25
|
+
const randomData = randomBytes(length);
|
|
26
|
+
const mem = this.getMemory();
|
|
27
|
+
mem.set(randomData, out);
|
|
28
|
+
},
|
|
29
|
+
clock_time_get: (a1: number, a2: number, out: number) => {
|
|
30
|
+
out = out >>> 0;
|
|
31
|
+
const ts = BigInt(new Date().getTime()) * 1000000n;
|
|
32
|
+
const view = new DataView(this.getMemory().buffer);
|
|
33
|
+
view.setBigUint64(out, ts, true);
|
|
34
|
+
},
|
|
35
|
+
proc_exit: () => {
|
|
36
|
+
this.logger('PANIC: proc_exit was called.');
|
|
37
|
+
throw new Error();
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
|
|
41
|
+
// These are functions implementations for imports we've defined are needed.
|
|
42
|
+
// The native C++ build defines these in a module called "env". We must implement TypeScript versions here.
|
|
43
|
+
env: {
|
|
44
|
+
/**
|
|
45
|
+
* The 'info' call we use for logging in C++, calls this under the hood.
|
|
46
|
+
* The native code will just print to std:err (to avoid std::cout which is used for IPC).
|
|
47
|
+
* Here we just emit the log line for the client to decide what to do with.
|
|
48
|
+
*/
|
|
49
|
+
logstr: (addr: number) => {
|
|
50
|
+
const str = this.stringFromAddress(addr);
|
|
51
|
+
const m = this.getMemory();
|
|
52
|
+
const str2 = `${str} (mem: ${(m.length / (1024 * 1024)).toFixed(2)}MiB)`;
|
|
53
|
+
this.logger(str2);
|
|
54
|
+
if (str2.startsWith('WARNING:')) {
|
|
55
|
+
this.logger(new Error().stack!);
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
|
|
59
|
+
get_data: (keyAddr: number, outBufAddr: number) => {
|
|
60
|
+
const key = this.stringFromAddress(keyAddr);
|
|
61
|
+
outBufAddr = outBufAddr >>> 0;
|
|
62
|
+
const data = this.memStore[key];
|
|
63
|
+
if (!data) {
|
|
64
|
+
this.logger(`get_data miss ${key}`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
// this.logger(`get_data hit ${key} size: ${data.length} dest: ${outBufAddr}`);
|
|
68
|
+
// this.logger(Buffer.from(data.slice(0, 64)).toString('hex'));
|
|
69
|
+
this.writeMemory(outBufAddr, data);
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
set_data: (keyAddr: number, dataAddr: number, dataLength: number) => {
|
|
73
|
+
const key = this.stringFromAddress(keyAddr);
|
|
74
|
+
dataAddr = dataAddr >>> 0;
|
|
75
|
+
this.memStore[key] = this.getMemorySlice(dataAddr, dataAddr + dataLength);
|
|
76
|
+
// this.logger(`set_data: ${key} length: ${dataLength}`);
|
|
77
|
+
},
|
|
78
|
+
|
|
79
|
+
memory,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
/* eslint-enable camelcase */
|
|
83
|
+
|
|
84
|
+
return importObj;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
public exports(): any {
|
|
88
|
+
return this.instance.exports;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* When returning values from the WASM, use >>> operator to convert signed representation to unsigned representation.
|
|
93
|
+
*/
|
|
94
|
+
public call(name: string, ...args: any) {
|
|
95
|
+
if (!this.exports()[name]) {
|
|
96
|
+
throw new Error(`WASM function ${name} not found.`);
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
return this.exports()[name](...args) >>> 0;
|
|
100
|
+
} catch (err: any) {
|
|
101
|
+
const message = `WASM function ${name} aborted, error: ${err}`;
|
|
102
|
+
this.logger(message);
|
|
103
|
+
this.logger(err.stack);
|
|
104
|
+
throw err;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public memSize() {
|
|
109
|
+
return this.getMemory().length;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Returns a copy of the data, not a view.
|
|
114
|
+
*/
|
|
115
|
+
public getMemorySlice(start: number, end: number) {
|
|
116
|
+
return this.getMemory().subarray(start, end).slice();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
public writeMemory(offset: number, arr: Uint8Array) {
|
|
120
|
+
const mem = this.getMemory();
|
|
121
|
+
mem.set(arr, offset);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// PRIVATE METHODS
|
|
125
|
+
|
|
126
|
+
private getMemory() {
|
|
127
|
+
return new Uint8Array(this.memory.buffer);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private stringFromAddress(addr: number) {
|
|
131
|
+
addr = addr >>> 0;
|
|
132
|
+
const m = this.getMemory();
|
|
133
|
+
let i = addr;
|
|
134
|
+
for (; m[i] !== 0; ++i);
|
|
135
|
+
const textDecoder = new TextDecoder('ascii');
|
|
136
|
+
return textDecoder.decode(m.slice(addr, i));
|
|
137
|
+
}
|
|
138
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import MainWorker from './main.worker.js';
|
|
3
|
+
|
|
4
|
+
export function createMainWorker() {
|
|
5
|
+
const worker = new MainWorker();
|
|
6
|
+
const debugStr = debug.disable();
|
|
7
|
+
debug.enable(debugStr);
|
|
8
|
+
worker.postMessage({ debug: debugStr });
|
|
9
|
+
return worker;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { expose } from 'comlink';
|
|
2
|
+
import { BarretenbergWasmMain } from '../../index.js';
|
|
3
|
+
import debug from 'debug';
|
|
4
|
+
|
|
5
|
+
self.onmessage = function (e) {
|
|
6
|
+
if (e.data.debug) {
|
|
7
|
+
debug.enable(e.data.debug);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
expose(new BarretenbergWasmMain());
|
|
12
|
+
|
|
13
|
+
self.postMessage({ ready: true });
|
|
14
|
+
|
|
15
|
+
export default null as any;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Worker } from 'worker_threads';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
function getCurrentDir() {
|
|
6
|
+
if (typeof __dirname !== 'undefined') {
|
|
7
|
+
return __dirname;
|
|
8
|
+
} else {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function createMainWorker() {
|
|
16
|
+
const __dirname = getCurrentDir();
|
|
17
|
+
return new Worker(__dirname + `/main.worker.js`);
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { parentPort } from 'worker_threads';
|
|
2
|
+
import { expose } from 'comlink';
|
|
3
|
+
import { BarretenbergWasmMain } from '../../index.js';
|
|
4
|
+
import { nodeEndpoint } from '../../../helpers/node/node_endpoint.js';
|
|
5
|
+
|
|
6
|
+
if (!parentPort) {
|
|
7
|
+
throw new Error('No parentPort');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
expose(new BarretenbergWasmMain(), nodeEndpoint(parentPort));
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { type BarretenbergWasmMain } from './index.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Keeps track of heap allocations so they can be easily freed.
|
|
5
|
+
* The WASM memory layout has 1024 bytes of unused "scratch" space at the start (addresses 0-1023).
|
|
6
|
+
* We can leverage this for IO rather than making expensive bb_malloc bb_free calls.
|
|
7
|
+
* Heap allocations will be created for input/output args that don't fit into the scratch space.
|
|
8
|
+
* Input and output args can use the same scratch space as it's assume all input reads will be performed before any
|
|
9
|
+
* output writes are performed.
|
|
10
|
+
*/
|
|
11
|
+
export class HeapAllocator {
|
|
12
|
+
private allocs: number[] = [];
|
|
13
|
+
private inScratchRemaining = 1024;
|
|
14
|
+
private outScratchRemaining = 1024;
|
|
15
|
+
|
|
16
|
+
constructor(private wasm: BarretenbergWasmMain) {}
|
|
17
|
+
|
|
18
|
+
copyToMemory(buffers: Uint8Array[]) {
|
|
19
|
+
return buffers.map(buf => {
|
|
20
|
+
if (buf.length <= this.inScratchRemaining) {
|
|
21
|
+
const ptr = (this.inScratchRemaining -= buf.length);
|
|
22
|
+
this.wasm.writeMemory(ptr, buf);
|
|
23
|
+
return ptr;
|
|
24
|
+
} else {
|
|
25
|
+
const ptr = this.wasm.call('bbmalloc', buf.length);
|
|
26
|
+
this.wasm.writeMemory(ptr, buf);
|
|
27
|
+
this.allocs.push(ptr);
|
|
28
|
+
return ptr;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
getOutputPtrs(outLens: (number | undefined)[]) {
|
|
34
|
+
return outLens.map(len => {
|
|
35
|
+
// If the obj is variable length, we need a 4 byte ptr to write the serialized data address to.
|
|
36
|
+
// WARNING: 4 only works with WASM as it has 32 bit memory.
|
|
37
|
+
const size = len || 4;
|
|
38
|
+
|
|
39
|
+
if (size <= this.outScratchRemaining) {
|
|
40
|
+
return (this.outScratchRemaining -= size);
|
|
41
|
+
} else {
|
|
42
|
+
const ptr = this.wasm.call('bbmalloc', size);
|
|
43
|
+
this.allocs.push(ptr);
|
|
44
|
+
return ptr;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
addOutputPtr(ptr: number) {
|
|
50
|
+
if (ptr >= 1024) {
|
|
51
|
+
this.allocs.push(ptr);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
freeAll() {
|
|
56
|
+
for (const ptr of this.allocs) {
|
|
57
|
+
this.wasm.call('bbfree', ptr);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { type Worker } from 'worker_threads';
|
|
2
|
+
import createDebug from 'debug';
|
|
3
|
+
import { Remote } from 'comlink';
|
|
4
|
+
import { getNumCpu, getRemoteBarretenbergWasm, getSharedMemoryAvailable } from '../helpers/index.js';
|
|
5
|
+
import { createThreadWorker } from '../barretenberg_wasm_thread/factory/node/index.js';
|
|
6
|
+
import { type BarretenbergWasmThreadWorker } from '../barretenberg_wasm_thread/index.js';
|
|
7
|
+
import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
|
|
8
|
+
import { HeapAllocator } from './heap_allocator.js';
|
|
9
|
+
|
|
10
|
+
const debug = createDebug('bb.js:wasm');
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* This is the "main thread" implementation of BarretenbergWasm.
|
|
14
|
+
* It spawns a bunch of "child thread" implementations.
|
|
15
|
+
* In a browser context, this still runs on a worker, as it will block waiting on child threads.
|
|
16
|
+
*/
|
|
17
|
+
export class BarretenbergWasmMain extends BarretenbergWasmBase {
|
|
18
|
+
static MAX_THREADS = 32;
|
|
19
|
+
private workers: Worker[] = [];
|
|
20
|
+
private remoteWasms: BarretenbergWasmThreadWorker[] = [];
|
|
21
|
+
private nextWorker = 0;
|
|
22
|
+
private nextThreadId = 1;
|
|
23
|
+
|
|
24
|
+
public getNumThreads() {
|
|
25
|
+
return this.workers.length + 1;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Init as main thread. Spawn child threads.
|
|
30
|
+
*/
|
|
31
|
+
public async init(
|
|
32
|
+
module: WebAssembly.Module,
|
|
33
|
+
threads = Math.min(getNumCpu(), BarretenbergWasmMain.MAX_THREADS),
|
|
34
|
+
logger: (msg: string) => void = debug,
|
|
35
|
+
initial = 32,
|
|
36
|
+
maximum = 2 ** 16,
|
|
37
|
+
) {
|
|
38
|
+
this.logger = logger;
|
|
39
|
+
|
|
40
|
+
const initialMb = (initial * 2 ** 16) / (1024 * 1024);
|
|
41
|
+
const maxMb = (maximum * 2 ** 16) / (1024 * 1024);
|
|
42
|
+
const shared = getSharedMemoryAvailable();
|
|
43
|
+
|
|
44
|
+
this.logger(
|
|
45
|
+
`initial mem: ${initial} pages, ${initialMb}MiB. ` +
|
|
46
|
+
`max mem: ${maximum} pages, ${maxMb}MiB. ` +
|
|
47
|
+
`threads: ${threads}, shared: ${shared}`,
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
this.memory = new WebAssembly.Memory({ initial, maximum, shared });
|
|
51
|
+
|
|
52
|
+
const instance = await WebAssembly.instantiate(module, this.getImportObj(this.memory));
|
|
53
|
+
|
|
54
|
+
this.instance = instance;
|
|
55
|
+
|
|
56
|
+
// Init all global/static data.
|
|
57
|
+
this.call('_initialize');
|
|
58
|
+
|
|
59
|
+
// Create worker threads. Create 1 less than requested, as main thread counts as a thread.
|
|
60
|
+
if (threads > 1) {
|
|
61
|
+
this.logger(`creating ${threads} worker threads...`);
|
|
62
|
+
this.workers = await Promise.all(Array.from({ length: threads - 1 }).map(createThreadWorker));
|
|
63
|
+
this.remoteWasms = await Promise.all(this.workers.map(getRemoteBarretenbergWasm<BarretenbergWasmThreadWorker>));
|
|
64
|
+
await Promise.all(this.remoteWasms.map(w => w.initThread(module, this.memory)));
|
|
65
|
+
}
|
|
66
|
+
this.logger('init complete.');
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Called on main thread. Signals child threads to gracefully exit.
|
|
71
|
+
*/
|
|
72
|
+
public async destroy() {
|
|
73
|
+
await Promise.all(this.workers.map(w => w.terminate()));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
protected getImportObj(memory: WebAssembly.Memory) {
|
|
77
|
+
const baseImports = super.getImportObj(memory);
|
|
78
|
+
|
|
79
|
+
/* eslint-disable camelcase */
|
|
80
|
+
return {
|
|
81
|
+
...baseImports,
|
|
82
|
+
wasi: {
|
|
83
|
+
'thread-spawn': (arg: number) => {
|
|
84
|
+
arg = arg >>> 0;
|
|
85
|
+
const id = this.nextThreadId++;
|
|
86
|
+
const worker = this.nextWorker++ % this.remoteWasms.length;
|
|
87
|
+
// this.logger(`spawning thread ${id} on worker ${worker} with arg ${arg >>> 0}`);
|
|
88
|
+
this.remoteWasms[worker].call('wasi_thread_start', id, arg).catch(this.logger);
|
|
89
|
+
// this.remoteWasms[worker].postMessage({ msg: 'thread', data: { id, arg } });
|
|
90
|
+
return id;
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
env: {
|
|
94
|
+
...baseImports.env,
|
|
95
|
+
env_hardware_concurrency: () => {
|
|
96
|
+
// If there are no workers (we're already running as a worker, or the main thread requested no workers)
|
|
97
|
+
// then we return 1, which should cause any algos using threading to just not create a thread.
|
|
98
|
+
return this.remoteWasms.length + 1;
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
/* eslint-enable camelcase */
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
callWasmExport(funcName: string, inArgs: Uint8Array[], outLens: (number | undefined)[]) {
|
|
106
|
+
const alloc = new HeapAllocator(this);
|
|
107
|
+
const inPtrs = alloc.copyToMemory(inArgs);
|
|
108
|
+
const outPtrs = alloc.getOutputPtrs(outLens);
|
|
109
|
+
this.call(funcName, ...inPtrs, ...outPtrs);
|
|
110
|
+
const outArgs = this.getOutputArgs(outLens, outPtrs, alloc);
|
|
111
|
+
alloc.freeAll();
|
|
112
|
+
return outArgs;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private getOutputArgs(outLens: (number | undefined)[], outPtrs: number[], alloc: HeapAllocator) {
|
|
116
|
+
return outLens.map((len, i) => {
|
|
117
|
+
if (len) {
|
|
118
|
+
return this.getMemorySlice(outPtrs[i], outPtrs[i] + len);
|
|
119
|
+
}
|
|
120
|
+
const slice = this.getMemorySlice(outPtrs[i], outPtrs[i] + 4);
|
|
121
|
+
const ptr = new DataView(slice.buffer, slice.byteOffset, slice.byteLength).getUint32(0, true);
|
|
122
|
+
|
|
123
|
+
// Add our heap buffer to the dealloc list.
|
|
124
|
+
alloc.addOutputPtr(ptr);
|
|
125
|
+
|
|
126
|
+
// The length will be found in the first 4 bytes of the buffer, big endian. See to_heap_buffer.
|
|
127
|
+
const lslice = this.getMemorySlice(ptr, ptr + 4);
|
|
128
|
+
const length = new DataView(lslice.buffer, lslice.byteOffset, lslice.byteLength).getUint32(0, false);
|
|
129
|
+
|
|
130
|
+
return this.getMemorySlice(ptr + 4, ptr + 4 + length);
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The comlink type that asyncifies the BarretenbergWasmMain api.
|
|
137
|
+
*/
|
|
138
|
+
export type BarretenbergWasmMainWorker = Remote<BarretenbergWasmMain>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import ThreadWorker from './thread.worker.js';
|
|
3
|
+
|
|
4
|
+
export function createThreadWorker() {
|
|
5
|
+
const worker = new ThreadWorker();
|
|
6
|
+
const debugStr = debug.disable();
|
|
7
|
+
debug.enable(debugStr);
|
|
8
|
+
worker.postMessage({ debug: debugStr });
|
|
9
|
+
return worker;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { expose } from 'comlink';
|
|
2
|
+
import { BarretenbergWasmThread } from '../../index.js';
|
|
3
|
+
import debug from 'debug';
|
|
4
|
+
|
|
5
|
+
self.onmessage = function (e) {
|
|
6
|
+
if (e.data.debug) {
|
|
7
|
+
debug.enable(e.data.debug);
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
expose(new BarretenbergWasmThread());
|
|
12
|
+
|
|
13
|
+
self.postMessage({ ready: true });
|
|
14
|
+
|
|
15
|
+
export default null as any;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Worker } from 'worker_threads';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
|
|
5
|
+
function getCurrentDir() {
|
|
6
|
+
if (typeof __dirname !== 'undefined') {
|
|
7
|
+
return __dirname;
|
|
8
|
+
} else {
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
10
|
+
// @ts-ignore
|
|
11
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function createThreadWorker() {
|
|
16
|
+
const __dirname = getCurrentDir();
|
|
17
|
+
return new Worker(__dirname + `/thread.worker.js`);
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { parentPort } from 'worker_threads';
|
|
2
|
+
import { expose } from 'comlink';
|
|
3
|
+
import { BarretenbergWasmThread } from '../../index.js';
|
|
4
|
+
import { nodeEndpoint } from '../../../helpers/node/node_endpoint.js';
|
|
5
|
+
|
|
6
|
+
if (!parentPort) {
|
|
7
|
+
throw new Error('No parentPort');
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
expose(new BarretenbergWasmThread(), nodeEndpoint(parentPort));
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Remote } from 'comlink';
|
|
2
|
+
import { killSelf, threadLogger } from '../helpers/index.js';
|
|
3
|
+
import { BarretenbergWasmBase } from '../barretenberg_wasm_base/index.js';
|
|
4
|
+
|
|
5
|
+
export class BarretenbergWasmThread extends BarretenbergWasmBase {
|
|
6
|
+
/**
|
|
7
|
+
* Init as worker thread.
|
|
8
|
+
*/
|
|
9
|
+
public async initThread(module: WebAssembly.Module, memory: WebAssembly.Memory) {
|
|
10
|
+
this.logger = threadLogger() || this.logger;
|
|
11
|
+
this.memory = memory;
|
|
12
|
+
this.instance = await WebAssembly.instantiate(module, this.getImportObj(this.memory));
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
public destroy() {
|
|
16
|
+
killSelf();
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
protected getImportObj(memory: WebAssembly.Memory) {
|
|
20
|
+
const baseImports = super.getImportObj(memory);
|
|
21
|
+
|
|
22
|
+
/* eslint-disable camelcase */
|
|
23
|
+
return {
|
|
24
|
+
...baseImports,
|
|
25
|
+
wasi: {
|
|
26
|
+
'thread-spawn': () => {
|
|
27
|
+
this.logger('PANIC: threads cannot spawn threads!');
|
|
28
|
+
this.logger(new Error().stack!);
|
|
29
|
+
killSelf();
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
// These are functions implementations for imports we've defined are needed.
|
|
34
|
+
// The native C++ build defines these in a module called "env". We must implement TypeScript versions here.
|
|
35
|
+
env: {
|
|
36
|
+
...baseImports.env,
|
|
37
|
+
env_hardware_concurrency: () => {
|
|
38
|
+
// We return 1, which should cause any algos using threading to just not create a thread.
|
|
39
|
+
return 1;
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
/* eslint-enable camelcase */
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export type BarretenbergWasmThreadWorker = Remote<BarretenbergWasmThread>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import barretenbergModule from '../../barretenberg.wasm.gz';
|
|
2
|
+
import barretenbergThreadsModule from '../../barretenberg-threads.wasm.gz';
|
|
3
|
+
import pako from 'pako';
|
|
4
|
+
|
|
5
|
+
// Annoyingly the wasm declares if it's memory is shared or not. So now we need two wasms if we want to be
|
|
6
|
+
// able to fallback on "non shared memory" situations.
|
|
7
|
+
export async function fetchCode(multithreaded: boolean) {
|
|
8
|
+
const res = await fetch(multithreaded ? barretenbergThreadsModule : barretenbergModule);
|
|
9
|
+
const compressedData = await res.arrayBuffer();
|
|
10
|
+
const decompressedData = pako.ungzip(new Uint8Array(compressedData));
|
|
11
|
+
return decompressedData.buffer;
|
|
12
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './node/index.js';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import { dirname } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
import pako from 'pako';
|
|
5
|
+
|
|
6
|
+
function getCurrentDir() {
|
|
7
|
+
if (typeof __dirname !== 'undefined') {
|
|
8
|
+
return __dirname;
|
|
9
|
+
} else {
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
17
|
+
export async function fetchCode(multithreaded: boolean) {
|
|
18
|
+
const path = getCurrentDir() + '/../../barretenberg-threads.wasm.gz';
|
|
19
|
+
const compressedData = await readFile(path);
|
|
20
|
+
const decompressedData = pako.ungzip(new Uint8Array(compressedData));
|
|
21
|
+
return decompressedData.buffer;
|
|
22
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { wrap } from 'comlink';
|
|
2
|
+
|
|
3
|
+
export function getSharedMemoryAvailable() {
|
|
4
|
+
const globalScope = typeof window !== 'undefined' ? window : globalThis;
|
|
5
|
+
return typeof SharedArrayBuffer !== 'undefined' && globalScope.crossOriginIsolated;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export function getRemoteBarretenbergWasm<T>(worker: Worker) {
|
|
9
|
+
return wrap(worker) as T;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function getNumCpu() {
|
|
13
|
+
return navigator.hardwareConcurrency;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function threadLogger(): ((msg: string) => void) | undefined {
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function killSelf() {
|
|
21
|
+
self.close();
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './node/index.js';
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Worker } from 'worker_threads';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import { wrap } from 'comlink';
|
|
4
|
+
import { nodeEndpoint } from './node_endpoint.js';
|
|
5
|
+
import { writeSync } from 'fs';
|
|
6
|
+
|
|
7
|
+
export function getSharedMemoryAvailable() {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Comlink allows you to produce a Proxy to the worker, enabling you to call methods as if it were a normal class.
|
|
13
|
+
* Note we give it the type information it needs so the returned Proxy object looks like that type.
|
|
14
|
+
* Node has a different implementation, needing this nodeEndpoint wrapper, hence this function exists here.
|
|
15
|
+
*/
|
|
16
|
+
export function getRemoteBarretenbergWasm<T>(worker: Worker): T {
|
|
17
|
+
return wrap(nodeEndpoint(worker)) as T;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Returns number of cpus as reported by the system, unless overriden by HARDWARE_CONCURRENCY env var.
|
|
22
|
+
*/
|
|
23
|
+
export function getNumCpu() {
|
|
24
|
+
return +process.env.HARDWARE_CONCURRENCY! || os.cpus().length;
|
|
25
|
+
}
|
|
26
|
+
|
|
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.
|
|
32
|
+
*/
|
|
33
|
+
export function threadLogger(): ((msg: string) => void) | undefined {
|
|
34
|
+
return (msg: string) => {
|
|
35
|
+
writeSync(1, msg + '\n');
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export function killSelf(): never {
|
|
40
|
+
// Extordinarily hard process termination. Due to how parent threads block on child threads etc, even process.exit
|
|
41
|
+
// doesn't seem to be able to abort the process. The following does.
|
|
42
|
+
process.kill(process.pid);
|
|
43
|
+
throw new Error();
|
|
44
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { NodeEndpoint } from 'comlink/dist/esm/node-adapter.js';
|
|
2
|
+
|
|
3
|
+
export function nodeEndpoint(nep: NodeEndpoint) {
|
|
4
|
+
const listeners = new WeakMap();
|
|
5
|
+
return {
|
|
6
|
+
postMessage: nep.postMessage.bind(nep),
|
|
7
|
+
addEventListener: (_: any, eh: any) => {
|
|
8
|
+
const l = (data: any) => {
|
|
9
|
+
if ('handleEvent' in eh) {
|
|
10
|
+
eh.handleEvent({ data });
|
|
11
|
+
} else {
|
|
12
|
+
eh({ data });
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
nep.on('message', l);
|
|
16
|
+
listeners.set(eh, l);
|
|
17
|
+
},
|
|
18
|
+
removeEventListener: (_: any, eh: any) => {
|
|
19
|
+
const l = listeners.get(eh);
|
|
20
|
+
if (!l) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
nep.off('message', l);
|
|
24
|
+
listeners.delete(eh);
|
|
25
|
+
},
|
|
26
|
+
start: nep.start && nep.start.bind(nep),
|
|
27
|
+
};
|
|
28
|
+
}
|