From c4a4709943c47cb16115f5d29907ede92cc12bd3 Mon Sep 17 00:00:00 2001 From: Charlie <5764343+charlielye@users.noreply.github.com> Date: Thu, 18 Jun 2026 13:19:33 +0000 Subject: [PATCH] feat(avm): add generated simulator package setup --- Makefile | 18 +- aztec-up/bootstrap.sh | 11 +- .../acir_tests/bbjs-test/package.json | 2 +- .../acir_tests/browser-test-app/package.json | 2 +- .../scripts/bbjs_legacy_cli_prove.sh | 2 +- barretenberg/acir_tests/yarn.lock | 12 +- barretenberg/cpp/.gitignore | 2 + barretenberg/cpp/.rebuild_patterns | 2 + barretenberg/cpp/CLAUDE.md | 2 +- barretenberg/cpp/CMakePresets.json | 9 +- .../cpp/scripts/ci_update_chonk_inputs.sh | 2 +- barretenberg/cpp/src/CMakeLists.txt | 2 + .../cpp/src/barretenberg/avm/CMakeLists.txt | 68 ++++++++ .../cpp/src/barretenberg/avm/avm_execute.cpp | 100 +++++++++++ .../cpp/src/barretenberg/avm/avm_execute.hpp | 29 ++++ .../src/barretenberg/avm/avm_ipc_server.cpp | 90 ++++++++++ .../src/barretenberg/avm/avm_ipc_server.hpp | 20 +++ .../cpp/src/barretenberg/avm/avm_schema.json | 24 +++ barretenberg/cpp/src/barretenberg/avm/cli.cpp | 52 ++++++ barretenberg/cpp/src/barretenberg/avm/cli.hpp | 7 + .../cpp/src/barretenberg/avm/main.cpp | 6 + .../cpp/src/barretenberg/cdb/CMakeLists.txt | 51 ++++++ .../src/barretenberg/cdb/cdb_ipc_client.cpp | 105 ++++++++++++ .../src/barretenberg/cdb/cdb_ipc_client.hpp | 45 +++++ .../cpp/src/barretenberg/cdb/cdb_schema.json | 77 +++++++++ .../cpp/src/barretenberg/vm2/CLAUDE.md | 2 +- barretenberg/rust/bootstrap.sh | 4 +- barretenberg/rust/tests/src/blake2s.rs | 2 +- barretenberg/rust/tests/src/ffi/blake2s.rs | 2 +- barretenberg/rust/tests/src/lib.rs | 2 +- barretenberg/rust/tests/src/pedersen.rs | 2 +- barretenberg/rust/tests/src/poseidon.rs | 2 +- barretenberg/rust/tests/src/utils.rs | 2 +- barretenberg/ts/.gitignore | 10 +- barretenberg/ts/.rebuild_patterns | 4 + barretenberg/ts/{ => bb.js}/.prettierrc.json | 0 barretenberg/ts/{ => bb.js}/CHANGELOG.md | 0 barretenberg/ts/{ => bb.js}/README.md | 0 barretenberg/ts/bb.js/bootstrap.sh | 87 ++++++++++ barretenberg/ts/{ => bb.js}/eslint.config.js | 0 barretenberg/ts/{ => bb.js}/package-lock.json | 0 barretenberg/ts/bb.js/package.json | 100 +++++++++++ .../scripts/browser_postprocess.sh | 0 .../{ => bb.js}/scripts/chonk_wasm_bench.mjs | 4 +- .../ts/{ => bb.js}/scripts/cjs_postprocess.sh | 0 .../ts/{ => bb.js}/scripts/copy_cross.sh | 8 +- .../ts/{ => bb.js}/scripts/copy_native.sh | 6 +- .../ts/{ => bb.js}/scripts/copy_wasm.sh | 10 +- .../ts/{ => bb.js}/scripts/run_test.sh | 2 +- .../ts/{ => bb.js}/src/async_map/index.ts | 0 .../__snapshots__/pedersen.test.ts.snap | 0 .../__snapshots__/poseidon.test.ts.snap | 0 .../src/barretenberg/backend.test.ts | 0 .../{ => bb.js}/src/barretenberg/backend.ts | 0 .../src/barretenberg/blake2s.test.ts | 0 .../ts/{ => bb.js}/src/barretenberg/index.ts | 0 .../src/barretenberg/pedersen.test.ts | 0 .../src/barretenberg/poseidon.bench.test.ts | 0 .../src/barretenberg/poseidon.test.ts | 0 .../src/barretenberg/testing/bigint-buffer.ts | 0 .../src/barretenberg/testing/fields.ts | 0 .../barretenberg-threads.wasm.gz | 0 .../barretenberg_wasm/barretenberg.wasm.gz | 0 .../barretenberg_wasm_base/index.ts | 0 .../factory/browser/index.ts | 0 .../factory/browser/main.worker.ts | 0 .../factory/node/index.ts | 0 .../factory/node/main.worker.ts | 0 .../barretenberg_wasm_main/heap_allocator.ts | 0 .../barretenberg_wasm_main/index.ts | 0 .../factory/browser/index.ts | 0 .../factory/browser/thread.worker.ts | 0 .../factory/node/index.ts | 0 .../factory/node/thread.worker.ts | 0 .../barretenberg_wasm_thread/index.ts | 0 .../browser/barretenberg-threads.ts | 0 .../fetch_code/browser/barretenberg.ts | 0 .../fetch_code/browser/index.ts | 0 .../src/barretenberg_wasm/fetch_code/index.ts | 0 .../fetch_code/node/index.ts | 0 .../fetch_code/wasm-module.d.ts | 0 .../helpers/browser/index.ts | 0 .../src/barretenberg_wasm/helpers/index.ts | 0 .../barretenberg_wasm/helpers/node/index.ts | 0 .../helpers/node/node_endpoint.ts | 0 .../src/barretenberg_wasm/index.test.ts | 0 .../src/barretenberg_wasm/index.ts | 0 .../src/bb_backends/browser/index.ts | 0 .../src/bb_backends/browser/platform.ts | 0 .../ts/{ => bb.js}/src/bb_backends/index.ts | 0 .../{ => bb.js}/src/bb_backends/interface.ts | 0 .../{ => bb.js}/src/bb_backends/node/index.ts | 0 .../src/bb_backends/node/native_pipe.ts | 0 .../src/bb_backends/node/native_shm.ts | 0 .../src/bb_backends/node/native_shm_async.ts | 0 .../src/bb_backends/node/native_socket.ts | 0 .../src/bb_backends/node/platform.ts | 0 .../ts/{ => bb.js}/src/bb_backends/wasm.ts | 0 .../src/bbapi/chonk_pinned_inputs.test.ts | 0 .../src/bbapi/exception_handling.test.ts | 0 .../ts/{ => bb.js}/src/bbapi_exception.ts | 0 .../ts/{ => bb.js}/src/benchmark/index.ts | 0 .../ts/{ => bb.js}/src/benchmark/timer.ts | 0 barretenberg/ts/{ => bb.js}/src/bin/index.ts | 0 .../ts/{ => bb.js}/src/cbind/README.md | 0 .../ts/{ => bb.js}/src/cbind/cpp_codegen.ts | 0 .../ts/{ => bb.js}/src/cbind/generate.ts | 6 +- .../ts/{ => bb.js}/src/cbind/naming.ts | 0 .../ts/{ => bb.js}/src/cbind/rust_codegen.ts | 0 .../{ => bb.js}/src/cbind/schema_visitor.ts | 0 .../src/cbind/typescript_codegen.ts | 0 .../src/crs/browser/cached_net_crs.ts | 0 .../ts/{ => bb.js}/src/crs/browser/index.ts | 0 barretenberg/ts/{ => bb.js}/src/crs/index.ts | 0 .../ts/{ => bb.js}/src/crs/net_crs.test.ts | 0 .../ts/{ => bb.js}/src/crs/net_crs.ts | 0 .../ts/{ => bb.js}/src/crs/node/index.ts | 0 barretenberg/ts/{ => bb.js}/src/index.html | 0 barretenberg/ts/{ => bb.js}/src/index.ts | 0 .../ts/{ => bb.js}/src/proof/index.ts | 0 .../{ => bb.js}/src/random/browser/index.ts | 0 .../ts/{ => bb.js}/src/random/index.ts | 0 .../ts/{ => bb.js}/src/random/node/index.ts | 0 .../ts/{ => bb.js}/src/retry/index.ts | 0 .../ts/{ => bb.js}/tsconfig.browser.json | 0 barretenberg/ts/{ => bb.js}/tsconfig.cjs.json | 0 barretenberg/ts/{ => bb.js}/tsconfig.esm.json | 0 barretenberg/ts/{ => bb.js}/tsconfig.json | 0 barretenberg/ts/bootstrap.sh | 158 ++++++++++++------ barretenberg/ts/package.json | 105 ++---------- barretenberg/ts/yarn.lock | 67 +++++++- boxes/package.json | 2 +- docs/examples/ts/bootstrap.sh | 19 ++- docs/examples/ts/lib.sh | 13 +- .../ts/recursive_verification/config.yaml | 5 +- ipc-codegen/src/typescript_package_codegen.ts | 18 +- playground/vite.config.ts | 6 +- release-image/Dockerfile.base.dockerignore | 4 +- release-image/Dockerfile.dockerignore | 10 +- release-image/bootstrap.sh | 3 +- yarn-project/aztec/package.json | 2 +- yarn-project/bb-prover/package.json | 2 +- yarn-project/foundation/package.json | 2 +- yarn-project/ivc-integration/package.json | 2 +- yarn-project/package.json | 2 +- yarn-project/pxe/package.json | 2 +- yarn-project/stdlib/package.json | 2 +- yarn-project/yarn.lock | 16 +- 148 files changed, 1202 insertions(+), 233 deletions(-) create mode 100644 barretenberg/cpp/src/barretenberg/avm/CMakeLists.txt create mode 100644 barretenberg/cpp/src/barretenberg/avm/avm_execute.cpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/avm_execute.hpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.cpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.hpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/avm_schema.json create mode 100644 barretenberg/cpp/src/barretenberg/avm/cli.cpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/cli.hpp create mode 100644 barretenberg/cpp/src/barretenberg/avm/main.cpp create mode 100644 barretenberg/cpp/src/barretenberg/cdb/CMakeLists.txt create mode 100644 barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.cpp create mode 100644 barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.hpp create mode 100644 barretenberg/cpp/src/barretenberg/cdb/cdb_schema.json rename barretenberg/ts/{ => bb.js}/.prettierrc.json (100%) rename barretenberg/ts/{ => bb.js}/CHANGELOG.md (100%) rename barretenberg/ts/{ => bb.js}/README.md (100%) create mode 100755 barretenberg/ts/bb.js/bootstrap.sh rename barretenberg/ts/{ => bb.js}/eslint.config.js (100%) rename barretenberg/ts/{ => bb.js}/package-lock.json (100%) create mode 100644 barretenberg/ts/bb.js/package.json rename barretenberg/ts/{ => bb.js}/scripts/browser_postprocess.sh (100%) rename barretenberg/ts/{ => bb.js}/scripts/chonk_wasm_bench.mjs (96%) rename barretenberg/ts/{ => bb.js}/scripts/cjs_postprocess.sh (100%) rename barretenberg/ts/{ => bb.js}/scripts/copy_cross.sh (80%) rename barretenberg/ts/{ => bb.js}/scripts/copy_native.sh (61%) rename barretenberg/ts/{ => bb.js}/scripts/copy_wasm.sh (55%) rename barretenberg/ts/{ => bb.js}/scripts/run_test.sh (82%) rename barretenberg/ts/{ => bb.js}/src/async_map/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/__snapshots__/pedersen.test.ts.snap (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/__snapshots__/poseidon.test.ts.snap (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/backend.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/backend.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/blake2s.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/pedersen.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/poseidon.bench.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/poseidon.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/testing/bigint-buffer.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg/testing/fields.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg-threads.wasm.gz (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg.wasm.gz (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_base/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_main/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/fetch_code/wasm-module.d.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/helpers/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/helpers/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/helpers/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/helpers/node/node_endpoint.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/index.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/barretenberg_wasm/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/browser/platform.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/interface.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/native_pipe.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/native_shm.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/native_shm_async.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/native_socket.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/node/platform.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bb_backends/wasm.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bbapi/chonk_pinned_inputs.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bbapi/exception_handling.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bbapi_exception.ts (100%) rename barretenberg/ts/{ => bb.js}/src/benchmark/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/benchmark/timer.ts (100%) rename barretenberg/ts/{ => bb.js}/src/bin/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/README.md (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/cpp_codegen.ts (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/generate.ts (96%) rename barretenberg/ts/{ => bb.js}/src/cbind/naming.ts (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/rust_codegen.ts (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/schema_visitor.ts (100%) rename barretenberg/ts/{ => bb.js}/src/cbind/typescript_codegen.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/browser/cached_net_crs.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/net_crs.test.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/net_crs.ts (100%) rename barretenberg/ts/{ => bb.js}/src/crs/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/index.html (100%) rename barretenberg/ts/{ => bb.js}/src/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/proof/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/random/browser/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/random/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/random/node/index.ts (100%) rename barretenberg/ts/{ => bb.js}/src/retry/index.ts (100%) rename barretenberg/ts/{ => bb.js}/tsconfig.browser.json (100%) rename barretenberg/ts/{ => bb.js}/tsconfig.cjs.json (100%) rename barretenberg/ts/{ => bb.js}/tsconfig.esm.json (100%) rename barretenberg/ts/{ => bb.js}/tsconfig.json (100%) diff --git a/Makefile b/Makefile index d40c9a8df0d1..d9fd38e1ab44 100644 --- a/Makefile +++ b/Makefile @@ -47,7 +47,7 @@ endef # PHONY TARGETS - List every target that has a file/dir of the same name. #============================================================================== -.PHONY: noir barretenberg noir-projects l1-contracts release-image boxes playground docs aztec-up spartan wsdb +.PHONY: noir barretenberg noir-projects l1-contracts release-image boxes playground docs aztec-up spartan wsdb aztec-vm-sim #============================================================================== # BOOTSTRAP TARGETS @@ -61,7 +61,7 @@ fast: release-image barretenberg boxes playground docs aztec-up \ full: fast bb-full-tests bb-cpp-full yarn-project-benches # Release. Everything plus copy bb cross compiles to ts projects. -release: fast bb-cpp-release-dir bb-ts-cross-copy ipc-runtime-cross +release: fast bb-cpp-release-dir bb-ts-cross-copy aztec-vm-sim-cross-copy ipc-runtime-cross #============================================================================== # Noir @@ -96,7 +96,7 @@ avm-transpiler-cross: avm-transpiler-cross-amd64-macos avm-transpiler-cross-arm6 #============================================================================== # Barretenberg - Aggregate target for all barretenberg sub-projects. -barretenberg: bb-cpp bb-ts bb-rs bb-acir bb-docs bb-sol bb-bbup bb-crs +barretenberg: bb-cpp bb-ts aztec-vm-sim bb-rs bb-acir bb-docs bb-sol bb-bbup bb-crs # BB C++ - Main aggregate target. bb-cpp: bb-cpp-native bb-cpp-wasm bb-cpp-wasm-threads @@ -212,11 +212,17 @@ bb-cpp-full: bb-cpp bb-cpp-gcc bb-cpp-fuzzing bb-cpp-asan bb-cpp-smt bb-cpp-cros # BB TypeScript - TypeScript bindings bb-ts: bb-cpp-wasm bb-cpp-wasm-threads bb-cpp-native ipc-runtime - $(call build,$@,barretenberg/ts) + $(call build,$@,barretenberg/ts,build_bb_js) # Copies the cross-compiles into bb.js. bb-ts-cross-copy: bb-ts bb-cpp-cross - $(call build,$@,barretenberg/ts,cross_copy) + $(call build,$@,barretenberg/ts,cross_copy_bb_js) + +aztec-vm-sim: ipc-codegen ipc-runtime bb-cpp-native + $(call build,$@,barretenberg/ts,build_aztec_vm_sim) + +aztec-vm-sim-cross-copy: aztec-vm-sim bb-cpp-cross + $(call build,$@,barretenberg/ts,cross_copy_aztec_vm_sim) # BB Rust - barretenberg-rs FFI crate bb-rs: bb-ts bb-cpp-native @@ -379,7 +385,7 @@ l1-contracts-tests: l1-contracts-verifier # Yarn Project - TypeScript monorepo with all TS packages #============================================================================== -yarn-project: bb-ts noir-projects l1-contracts wsdb +yarn-project: bb-ts noir-projects l1-contracts wsdb aztec-vm-sim $(call build,$@,yarn-project) yarn-project-tests: yarn-project diff --git a/aztec-up/bootstrap.sh b/aztec-up/bootstrap.sh index 1bcfcca9bf49..228a49202627 100755 --- a/aztec-up/bootstrap.sh +++ b/aztec-up/bootstrap.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash source $(git rev-parse --show-toplevel)/ci3/source_bootstrap -hash=$(hash_str $(cache_content_hash ^aztec-up/) $(../ipc-runtime/bootstrap.sh hash) $(../wsdb/bootstrap.sh hash) $(../yarn-project/bootstrap.sh hash)) +hash=$(hash_str $(cache_content_hash ^aztec-up/) $(../ipc-runtime/bootstrap.sh hash) $(../wsdb/bootstrap.sh hash) $(../barretenberg/ts/bootstrap.sh hash) $(../yarn-project/bootstrap.sh hash)) # Bare aliases ("nightly", "latest") resolve to this major version. DEFAULT_MAJOR_VERSION=${AZTEC_TOOLCHAIN_DEFAULT_MAJOR_VERSION:-4} @@ -13,6 +13,10 @@ function wsdb_package_dirs { echo "$root/wsdb/ts" } +function barretenberg_ts_package_dirs { + "$root"/barretenberg/ts/bootstrap.sh get_projects +} + function build { # Noop if user doesn't have docker. if ! command -v docker &>/dev/null; then @@ -111,7 +115,7 @@ EOF echo "Deploying packages to local npm registry (version: $version)..." { echo $root/ipc-runtime/ts - echo $root/barretenberg/ts + barretenberg_ts_package_dirs wsdb_package_dirs $root/noir/bootstrap.sh get_projects $root/yarn-project/bootstrap.sh get_projects @@ -187,7 +191,8 @@ function prep_test_mac { # Ensure we've cross-compiled bb for macos. Normally this is only done on releases. ../barretenberg/cpp/bootstrap.sh build_cross amd64-macos true - ../barretenberg/ts/bootstrap.sh cross_copy amd64-macos + ../barretenberg/ts/bootstrap.sh cross_copy_bb_js amd64-macos + ../barretenberg/ts/bootstrap.sh cross_copy_aztec_vm_sim amd64-macos # Ensure build artifacts exist. if [ ! -f ./bin/0.0.1/versions ] || [ ! -d ./verdaccio-storage ]; then diff --git a/barretenberg/acir_tests/bbjs-test/package.json b/barretenberg/acir_tests/bbjs-test/package.json index 949fff8b73a0..45a9fba0f272 100644 --- a/barretenberg/acir_tests/bbjs-test/package.json +++ b/barretenberg/acir_tests/bbjs-test/package.json @@ -6,7 +6,7 @@ "build": "yarn tsgo" }, "dependencies": { - "@aztec/bb.js": "portal:../../ts", + "@aztec/bb.js": "portal:../../ts/bb.js", "commander": "^12.1.0" }, "devDependencies": { diff --git a/barretenberg/acir_tests/browser-test-app/package.json b/barretenberg/acir_tests/browser-test-app/package.json index f81e78234764..cb26e5680e97 100644 --- a/barretenberg/acir_tests/browser-test-app/package.json +++ b/barretenberg/acir_tests/browser-test-app/package.json @@ -9,7 +9,7 @@ "serve": "serve -n -L -p ${PORT:-8080} -c ../serve.json dest" }, "devDependencies": { - "@aztec/bb.js": "portal:../../ts", + "@aztec/bb.js": "portal:../../ts/bb.js", "@types/pako": "^2.0.3", "html-webpack-plugin": "^5.6.0", "pako": "^2.1.0", diff --git a/barretenberg/acir_tests/scripts/bbjs_legacy_cli_prove.sh b/barretenberg/acir_tests/scripts/bbjs_legacy_cli_prove.sh index 0fa48eb91755..a54432d6f639 100755 --- a/barretenberg/acir_tests/scripts/bbjs_legacy_cli_prove.sh +++ b/barretenberg/acir_tests/scripts/bbjs_legacy_cli_prove.sh @@ -6,7 +6,7 @@ export HARDWARE_CONCURRENCY=8 cd ../acir_tests/$1 # NOTE The bb.js main file is deprecated! -bbjs_bin="../../../ts/dest/node/main.js" +bbjs_bin="../../../ts/bb.js/dest/node/main.js" output_dir=$(mktemp -d ./output-XXXXXX) trap "rm -rf $output_dir" EXIT diff --git a/barretenberg/acir_tests/yarn.lock b/barretenberg/acir_tests/yarn.lock index 8608993b859f..59ea6ce8c578 100644 --- a/barretenberg/acir_tests/yarn.lock +++ b/barretenberg/acir_tests/yarn.lock @@ -20,9 +20,9 @@ __metadata: languageName: unknown linkType: soft -"@aztec/bb.js@portal:../../ts::locator=bbjs-test%40workspace%3Abbjs-test": +"@aztec/bb.js@portal:../../ts/bb.js::locator=bbjs-test%40workspace%3Abbjs-test": version: 0.0.0-use.local - resolution: "@aztec/bb.js@portal:../../ts::locator=bbjs-test%40workspace%3Abbjs-test" + resolution: "@aztec/bb.js@portal:../../ts/bb.js::locator=bbjs-test%40workspace%3Abbjs-test" dependencies: comlink: "npm:^4.4.1" commander: "npm:^12.1.0" @@ -35,9 +35,9 @@ __metadata: languageName: node linkType: soft -"@aztec/bb.js@portal:../../ts::locator=browser-test-app%40workspace%3Abrowser-test-app": +"@aztec/bb.js@portal:../../ts/bb.js::locator=browser-test-app%40workspace%3Abrowser-test-app": version: 0.0.0-use.local - resolution: "@aztec/bb.js@portal:../../ts::locator=browser-test-app%40workspace%3Abrowser-test-app" + resolution: "@aztec/bb.js@portal:../../ts/bb.js::locator=browser-test-app%40workspace%3Abrowser-test-app" dependencies: comlink: "npm:^4.4.1" commander: "npm:^12.1.0" @@ -1201,7 +1201,7 @@ __metadata: version: 0.0.0-use.local resolution: "bbjs-test@workspace:bbjs-test" dependencies: - "@aztec/bb.js": "portal:../../ts" + "@aztec/bb.js": "portal:../../ts/bb.js" "@typescript/native-preview": "npm:7.0.0-dev.20251126.1" commander: "npm:^12.1.0" languageName: unknown @@ -1308,7 +1308,7 @@ __metadata: version: 0.0.0-use.local resolution: "browser-test-app@workspace:browser-test-app" dependencies: - "@aztec/bb.js": "portal:../../ts" + "@aztec/bb.js": "portal:../../ts/bb.js" "@types/pako": "npm:^2.0.3" html-webpack-plugin: "npm:^5.6.0" pako: "npm:^2.1.0" diff --git a/barretenberg/cpp/.gitignore b/barretenberg/cpp/.gitignore index f31a9edc993a..d0b410232ca1 100644 --- a/barretenberg/cpp/.gitignore +++ b/barretenberg/cpp/.gitignore @@ -15,6 +15,8 @@ go*.tar.gz barretenberg_modules.dot barretenberg_modules.png src/barretenberg/bb/config.hpp +src/barretenberg/avm/generated/ +src/barretenberg/cdb/generated/ bench-out *.bak src/barretenberg/avm_fuzzer/corpus/** diff --git a/barretenberg/cpp/.rebuild_patterns b/barretenberg/cpp/.rebuild_patterns index 4c7ba2459ea5..ead32cae8ae5 100644 --- a/barretenberg/cpp/.rebuild_patterns +++ b/barretenberg/cpp/.rebuild_patterns @@ -1,6 +1,8 @@ ^barretenberg/cpp/.*\.(cpp|cc|cxx|c\+\+|h|hpp|hxx|h\+\+|c|h|inl|inc|ipp|tpp|cmake)$ ^barretenberg/cpp/.*CMakeLists\.txt$ ^barretenberg/cpp/.*Dockerfile.*$ +^barretenberg/cpp/src/barretenberg/avm/avm_schema\.json$ +^barretenberg/cpp/src/barretenberg/cdb/cdb_schema\.json$ ^barretenberg/cpp/scripts/ ^barretenberg/cpp/bootstrap.sh ^barretenberg/cpp/CMakePresets.json diff --git a/barretenberg/cpp/CLAUDE.md b/barretenberg/cpp/CLAUDE.md index 8a1cc69051ee..b64f0f8c4eb0 100644 --- a/barretenberg/cpp/CLAUDE.md +++ b/barretenberg/cpp/CLAUDE.md @@ -188,7 +188,7 @@ For bb.js, run: ```bash barretenberg/cpp/scripts/chonk_inputs.sh download -barretenberg/ts/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js +barretenberg/ts/bb.js/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js ``` Typical workflow diff --git a/barretenberg/cpp/CMakePresets.json b/barretenberg/cpp/CMakePresets.json index 9ec185dac497..337edd6680f5 100644 --- a/barretenberg/cpp/CMakePresets.json +++ b/barretenberg/cpp/CMakePresets.json @@ -409,6 +409,7 @@ "CC": "$env{WASI_SDK_PREFIX}/bin/clang", "CXX": "$env{WASI_SDK_PREFIX}/bin/clang++", "CXXFLAGS": "-DBB_VERBOSE -fvisibility=hidden", + "LDFLAGS": "--no-wasm-opt", "AR": "$env{WASI_SDK_PREFIX}/bin/llvm-ar", "RANLIB": "$env{WASI_SDK_PREFIX}/bin/llvm-ranlib" }, @@ -800,25 +801,25 @@ "name": "amd64-linux", "configurePreset": "amd64-linux", "inheritConfigureEnvironment": true, - "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb"] + "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb", "aztec-vm-sim"] }, { "name": "arm64-linux", "configurePreset": "arm64-linux", "inheritConfigureEnvironment": true, - "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb"] + "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb", "aztec-vm-sim"] }, { "name": "amd64-macos", "configurePreset": "amd64-macos", "inheritConfigureEnvironment": true, - "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb"] + "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb", "aztec-vm-sim"] }, { "name": "arm64-macos", "configurePreset": "arm64-macos", "inheritConfigureEnvironment": true, - "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb"] + "targets": ["bb", "nodejs_module", "bb-external", "aztec-wsdb", "aztec-vm-sim"] }, { "name": "amd64-windows", diff --git a/barretenberg/cpp/scripts/ci_update_chonk_inputs.sh b/barretenberg/cpp/scripts/ci_update_chonk_inputs.sh index c265fd431b4d..cbef89edb4b6 100755 --- a/barretenberg/cpp/scripts/ci_update_chonk_inputs.sh +++ b/barretenberg/cpp/scripts/ci_update_chonk_inputs.sh @@ -125,7 +125,7 @@ function verify_refreshed_inputs { CHONK_PINNED_IVC_FLOW="$flow" CHONK_PINNED_IVC_FLOW_LIMIT=1 \ barretenberg/cpp/scripts/run_test.sh bbapi_tests ChonkPinnedIvcInputsTest.AllPinnedFlows CHONK_PINNED_IVC_FLOW="$flow" CHONK_PINNED_IVC_FLOW_LIMIT=1 CHONK_PINNED_IVC_WASM_FLOW_LIMIT=1 \ - barretenberg/ts/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js + barretenberg/ts/bb.js/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js } remove_pr_label "$refresh_label" diff --git a/barretenberg/cpp/src/CMakeLists.txt b/barretenberg/cpp/src/CMakeLists.txt index a818ce8812d5..47679fc24fc0 100644 --- a/barretenberg/cpp/src/CMakeLists.txt +++ b/barretenberg/cpp/src/CMakeLists.txt @@ -129,6 +129,8 @@ if(NOT FUZZING AND NOT WASM AND NOT BB_LITE) add_subdirectory(barretenberg/ipc) add_subdirectory(barretenberg/wsdb) add_subdirectory(barretenberg/vm2_wsdb) + add_subdirectory(barretenberg/cdb) + add_subdirectory(barretenberg/avm) add_subdirectory(barretenberg/nodejs_module) endif() diff --git a/barretenberg/cpp/src/barretenberg/avm/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/avm/CMakeLists.txt new file mode 100644 index 000000000000..4109697048b6 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/CMakeLists.txt @@ -0,0 +1,68 @@ +set(AVM_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/avm_schema.json) +set(AVM_GEN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/generated) +set(AVM_GEN_OUTPUTS + ${AVM_GEN_DIR}/avm_ipc_server.hpp + ${AVM_GEN_DIR}/avm_types.hpp + ${AVM_GEN_DIR}/ipc_codegen/msgpack_adaptor.hpp + ${AVM_GEN_DIR}/ipc_codegen/msgpack_include.hpp + ${AVM_GEN_DIR}/ipc_codegen/throw.hpp +) +set(IPC_CODEGEN_DIR ${CMAKE_SOURCE_DIR}/../../ipc-codegen) +file(GLOB_RECURSE IPC_CODEGEN_SRC + ${IPC_CODEGEN_DIR}/src/*.ts + ${IPC_CODEGEN_DIR}/templates/cpp/*.hpp +) +add_custom_command( + OUTPUT ${AVM_GEN_OUTPUTS} + COMMAND node --experimental-strip-types --experimental-transform-types --no-warnings + ${IPC_CODEGEN_DIR}/src/generate.ts + --schema ${AVM_SCHEMA} + --lang cpp + --out ${AVM_GEN_DIR} + --server + --cpp-namespace bb::avm + --cpp-include-dir barretenberg/avm/generated + --prefix Avm + --strip-method-prefix + DEPENDS ${AVM_SCHEMA} ${IPC_CODEGEN_SRC} + COMMENT "Generating AVM IPC server from avm_schema.json" + VERBATIM +) +add_custom_target(avm_ipc_generated DEPENDS ${AVM_GEN_OUTPUTS}) + +add_executable( + aztec-vm-sim + main.cpp + cli.cpp + avm_execute.cpp + avm_ipc_server.cpp +) +add_dependencies(aztec-vm-sim avm_ipc_generated) +target_include_directories( + aztec-vm-sim + PRIVATE + ${AVM_GEN_DIR} +) +target_link_libraries( + aztec-vm-sim + PRIVATE + barretenberg + vm2_sim + wsdb_ipc_merkle_db + wsdb_ipc_client + cdb_ipc_client + ipc_runtime + env +) +if(ENABLE_STACKTRACES) + target_link_libraries( + aztec-vm-sim + PUBLIC + Backward::Interface + ) + target_link_options( + aztec-vm-sim + PRIVATE + -ldw -lelf + ) +endif() diff --git a/barretenberg/cpp/src/barretenberg/avm/avm_execute.cpp b/barretenberg/cpp/src/barretenberg/avm/avm_execute.cpp new file mode 100644 index 000000000000..a4558e965640 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/avm_execute.cpp @@ -0,0 +1,100 @@ +#include "barretenberg/avm/avm_execute.hpp" +#include "barretenberg/common/log.hpp" +#include "barretenberg/serialize/msgpack.hpp" +#include "barretenberg/serialize/msgpack_impl.hpp" +#include "barretenberg/vm2/avm_sim_api.hpp" +#include "barretenberg/vm2/common/avm_io.hpp" +#include "barretenberg/vm2/simulation/lib/cancellation_token.hpp" +#include "barretenberg/vm2/simulation_helper.hpp" +#include "barretenberg/vm2_wsdb/wsdb_ipc_merkle_db.hpp" + +namespace bb::avm { + +using namespace bb::avm2; +using namespace bb::world_state; + +// Global cancellation token for the currently active simulation. +// Set before simulation starts, cleared after. SIGUSR1 handler reads this to cancel. +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) +std::atomic g_active_cancellation_token{ nullptr }; + +template static std::vector serialize_to_msgpack(const T& value) +{ + msgpack::sbuffer buf; + msgpack::pack(buf, value); + return std::vector(buf.data(), buf.data() + buf.size()); +} + +template static T deserialize_from_msgpack(const std::vector& bytes) +{ + auto unpacked = msgpack::unpack(reinterpret_cast(bytes.data()), bytes.size()); + T value; + unpacked.get().convert(value); + return value; +} + +template <> wire::AvmSimulateResponse handle_simulate(AvmRequest& request, wire::AvmSimulate&& command) +{ + auto sim_inputs = deserialize_from_msgpack(command.inputs); + + // The caller owns fork lifecycle and registers the matching contracts DB + // on the CDB server before invoking AvmSimulate. Fork ID 0 is valid. + uint64_t fork_id = sim_inputs.ws_revision.forkId; + vinfo("Using external WSDB fork ", fork_id, " for AVM simulation"); + + request.cdb_client.set_fork_id(fork_id); + + auto cancellation_token = std::make_shared(); + g_active_cancellation_token.store(cancellation_token.get(), std::memory_order_release); + + try { + // Create revision pointing to the fork. blockNumber = LATEST sentinel routes the WSDB + // through its non-historical path so the fork's uncommitted leaves are visible. + WorldStateRevision revision = { + .forkId = fork_id, + .blockNumber = WorldStateRevision::LATEST, + .includeUncommitted = true, + }; + + bb::avm2::simulation::WsdbIpcMerkleDB merkle_db(request.wsdb_client, revision); + + AvmSimulationHelper simulation_helper; + auto result = sim_inputs.config.collect_hints + ? simulation_helper.simulate_for_hint_collection_internal(request.cdb_client, + merkle_db, + sim_inputs.config, + sim_inputs.tx, + sim_inputs.global_variables, + sim_inputs.protocol_contracts, + cancellation_token) + : simulation_helper.simulate_fast_internal(request.cdb_client, + merkle_db, + sim_inputs.config, + sim_inputs.tx, + sim_inputs.global_variables, + sim_inputs.protocol_contracts, + cancellation_token); + + g_active_cancellation_token.store(nullptr, std::memory_order_release); + + return wire::AvmSimulateResponse{ .result = serialize_to_msgpack(result) }; + } catch (...) { + g_active_cancellation_token.store(nullptr, std::memory_order_release); + throw; + } +} + +template <> +wire::AvmSimulateWithHintsResponse handle_simulate_with_hints(AvmRequest& request, wire::AvmSimulateWithHints&& command) +{ + (void)request; + + auto proving_inputs = deserialize_from_msgpack(command.inputs); + + AvmSimAPI api; + auto result = api.simulate_with_hinted_dbs(proving_inputs); + + return wire::AvmSimulateWithHintsResponse{ .result = serialize_to_msgpack(result) }; +} + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/avm_execute.hpp b/barretenberg/cpp/src/barretenberg/avm/avm_execute.hpp new file mode 100644 index 000000000000..4f9a18f0b33f --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/avm_execute.hpp @@ -0,0 +1,29 @@ +#pragma once +/** + * @file avm_execute.hpp + * @brief AVM IPC handler context. + */ + +#include "barretenberg/avm/generated/avm_ipc_server.hpp" +#include "barretenberg/cdb/cdb_ipc_client.hpp" +#include "barretenberg/vm2/simulation/lib/cancellation_token.hpp" +#include "barretenberg/wsdb/generated/wsdb_ipc_client.hpp" + +#include + +namespace bb::avm { + +/** Global cancellation token for the active simulation. SIGUSR1 handler uses this. */ +// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables) +extern std::atomic g_active_cancellation_token; + +/** + * @brief Context passed to each command's execute() method. + * Provides access to WSDB and CDB IPC clients. + */ +struct AvmRequest { + cdb::CdbIpcContractDB& cdb_client; + wsdb::WsdbIpcClient& wsdb_client; +}; + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.cpp b/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.cpp new file mode 100644 index 000000000000..26f21ed14797 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.cpp @@ -0,0 +1,90 @@ +#include "barretenberg/avm/avm_ipc_server.hpp" +#include "barretenberg/avm/avm_execute.hpp" +#include "barretenberg/cdb/cdb_ipc_client.hpp" +#include "barretenberg/common/log.hpp" +#include "barretenberg/wsdb/generated/wsdb_ipc_client.hpp" +#include "ipc_runtime/ipc_server.hpp" +#include "ipc_runtime/serve_helper.hpp" +#include "ipc_runtime/signal_handlers.hpp" + +#include +#include +#include +#include +#include +#include + +namespace bb::avm { + +int execute_avm_server(const std::string& input_path, const std::string& wsdb_path, const std::string& cdb_path) +{ + info("Connecting to aztec-wsdb at ", wsdb_path); + constexpr int max_retries = 50; + constexpr int retry_delay_ms = 100; + std::unique_ptr wsdb_client; + for (int attempt = 0; attempt < max_retries; ++attempt) { + try { + wsdb_client = std::make_unique(wsdb_path); + break; + } catch (const std::exception& e) { + if (attempt == max_retries - 1) { + info("Failed to connect to aztec-wsdb after ", max_retries, " attempts: ", e.what()); + return 1; + } + std::this_thread::sleep_for(std::chrono::milliseconds(retry_delay_ms)); + } + } + + info("Connecting to CDB at ", cdb_path); + std::unique_ptr cdb_client; + for (int attempt = 0; attempt < max_retries; ++attempt) { + try { + cdb_client = std::make_unique(cdb_path); + break; + } catch (const std::exception& e) { + if (attempt == max_retries - 1) { + info("Failed to connect to CDB after ", max_retries, " attempts: ", e.what()); + return 1; + } + std::this_thread::sleep_for(std::chrono::milliseconds(retry_delay_ms)); + } + } + + AvmRequest request{ .cdb_client = *cdb_client, .wsdb_client = *wsdb_client }; + + ipc::ServerOptions opts; + opts.max_shm_clients = 1; + auto server = ipc::make_server(input_path, opts); + if (!server) { + info("Error: --input path must end with .sock or .shm: ", input_path); + return 1; + } + + info("aztec-vm-sim listening on ", input_path); + ipc::install_default_signal_handlers(*server); + auto cancel_simulation_handler = [](int /*signal*/) { + auto* token = g_active_cancellation_token.load(std::memory_order_acquire); + if (token) { + token->cancel(); + } + }; + + (void)std::signal(SIGUSR1, cancel_simulation_handler); + + if (!server->listen()) { + info("Error: Could not start IPC server"); + return 1; + } + + info("aztec-vm-sim IPC server ready"); + + auto handler = make_avm_handler(request); + server->run([&handler](int /*client_id*/, std::span raw_request) -> std::vector { + return handler(std::vector(raw_request.begin(), raw_request.end())); + }); + + server->close(); + return 0; +} + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.hpp b/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.hpp new file mode 100644 index 000000000000..538a290c7332 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/avm_ipc_server.hpp @@ -0,0 +1,20 @@ +#pragma once + +#include + +namespace bb::avm { + +/** + * @brief Start the aztec-vm-sim IPC server. + * + * Connects to WSDB and CDB as IPC clients, then runs the server loop + * dispatching incoming simulation commands. + * + * @param input_path IPC path for TS client connections. + * @param wsdb_path IPC path to the running WSDB server. + * @param cdb_path IPC path to the running CDB server. + * @return 0 on success, non-zero on error. + */ +int execute_avm_server(const std::string& input_path, const std::string& wsdb_path, const std::string& cdb_path); + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/avm_schema.json b/barretenberg/cpp/src/barretenberg/avm/avm_schema.json new file mode 100644 index 000000000000..48c1ba56519a --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/avm_schema.json @@ -0,0 +1,24 @@ +{ + "service": "Avm", + "error": { + "message": "string" + }, + "commands": { + "Simulate": { + "request": { + "inputs": "bytes" + }, + "response": { + "result": "bytes" + } + }, + "SimulateWithHints": { + "request": { + "inputs": "bytes" + }, + "response": { + "result": "bytes" + } + } + } +} diff --git a/barretenberg/cpp/src/barretenberg/avm/cli.cpp b/barretenberg/cpp/src/barretenberg/avm/cli.cpp new file mode 100644 index 000000000000..819cd211fa2c --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/cli.cpp @@ -0,0 +1,52 @@ +#include "barretenberg/avm/cli.hpp" +#include "barretenberg/avm/avm_execute.hpp" +#include "barretenberg/avm/avm_ipc_server.hpp" +#include "barretenberg/common/log.hpp" + +#include "barretenberg/bb/deps/cli11.hpp" +#include + +namespace bb::avm { + +int parse_and_run_avm(int argc, char* argv[]) +{ + CLI::App app{ "aztec-vm-sim: Standalone AVM simulator server" }; + app.require_subcommand(1); + + // ----------------------------------------------------------------------- + // Subcommand: msgpack + // ----------------------------------------------------------------------- + CLI::App* msgpack_command = app.add_subcommand("msgpack", "Msgpack API interface."); + + // msgpack run + CLI::App* msgpack_run_command = msgpack_command->add_subcommand("run", "Start the AVM simulator IPC server."); + + std::string input_path; + msgpack_run_command->add_option("-i,--input", input_path, "IPC socket/shm path (.sock or .shm)")->required(); + + std::string wsdb_path; + msgpack_run_command->add_option("--wsdb", wsdb_path, "WSDB server IPC path")->required(); + + std::string cdb_path; + msgpack_run_command->add_option("--cdb", cdb_path, "CDB server IPC path")->required(); + + // Parse CLI + try { + app.parse(argc, argv); + } catch (const CLI::ParseError& e) { + return app.exit(e); + } + + try { + if (msgpack_run_command->parsed()) { + return execute_avm_server(input_path, wsdb_path, cdb_path); + } + } catch (const std::exception& e) { + info("Error: ", e.what()); + return 1; + } + + return 0; +} + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/cli.hpp b/barretenberg/cpp/src/barretenberg/avm/cli.hpp new file mode 100644 index 000000000000..c8bf203ee119 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/cli.hpp @@ -0,0 +1,7 @@ +#pragma once + +namespace bb::avm { + +int parse_and_run_avm(int argc, char* argv[]); + +} // namespace bb::avm diff --git a/barretenberg/cpp/src/barretenberg/avm/main.cpp b/barretenberg/cpp/src/barretenberg/avm/main.cpp new file mode 100644 index 000000000000..cba683be6c1a --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/avm/main.cpp @@ -0,0 +1,6 @@ +#include "barretenberg/avm/cli.hpp" + +int main(int argc, char* argv[]) +{ + return bb::avm::parse_and_run_avm(argc, argv); +} diff --git a/barretenberg/cpp/src/barretenberg/cdb/CMakeLists.txt b/barretenberg/cpp/src/barretenberg/cdb/CMakeLists.txt new file mode 100644 index 000000000000..f0b040ebb80a --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/cdb/CMakeLists.txt @@ -0,0 +1,51 @@ +set(CDB_SCHEMA ${CMAKE_CURRENT_SOURCE_DIR}/cdb_schema.json) +set(CDB_GEN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/generated) +set(CDB_GEN_OUTPUTS + ${CDB_GEN_DIR}/cdb_ipc_client.cpp + ${CDB_GEN_DIR}/cdb_ipc_client.hpp + ${CDB_GEN_DIR}/cdb_types.hpp + ${CDB_GEN_DIR}/ipc_codegen/msgpack_adaptor.hpp + ${CDB_GEN_DIR}/ipc_codegen/msgpack_include.hpp + ${CDB_GEN_DIR}/ipc_codegen/throw.hpp +) +set(IPC_CODEGEN_DIR ${CMAKE_SOURCE_DIR}/../../ipc-codegen) +file(GLOB_RECURSE IPC_CODEGEN_SRC + ${IPC_CODEGEN_DIR}/src/*.ts + ${IPC_CODEGEN_DIR}/templates/cpp/*.hpp +) +add_custom_command( + OUTPUT ${CDB_GEN_OUTPUTS} + COMMAND node --experimental-strip-types --experimental-transform-types --no-warnings + ${IPC_CODEGEN_DIR}/src/generate.ts + --schema ${CDB_SCHEMA} + --lang cpp + --out ${CDB_GEN_DIR} + --client + --cpp-namespace bb::cdb + --cpp-include-dir barretenberg/cdb/generated + --prefix Cdb + --strip-method-prefix + DEPENDS ${CDB_SCHEMA} ${IPC_CODEGEN_SRC} + COMMENT "Generating CDB IPC client from cdb_schema.json" + VERBATIM +) +add_custom_target(cdb_ipc_generated DEPENDS ${CDB_GEN_OUTPUTS}) + +add_library( + cdb_ipc_client + STATIC + ${CDB_GEN_DIR}/cdb_ipc_client.cpp + cdb_ipc_client.cpp +) +add_dependencies(cdb_ipc_client cdb_ipc_generated) +target_include_directories( + cdb_ipc_client + PUBLIC + ${CDB_GEN_DIR} +) +target_link_libraries( + cdb_ipc_client + PUBLIC + barretenberg + ipc_runtime +) diff --git a/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.cpp b/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.cpp new file mode 100644 index 000000000000..94a0d9d1d738 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.cpp @@ -0,0 +1,105 @@ +#include "barretenberg/cdb/cdb_ipc_client.hpp" + +#include "barretenberg/serialize/msgpack.hpp" +#include "barretenberg/serialize/msgpack_impl.hpp" + +namespace bb::cdb { + +namespace { + +template std::vector serialize_to_msgpack(const T& value) +{ + msgpack::sbuffer buf; + msgpack::pack(buf, value); + return std::vector(buf.data(), buf.data() + buf.size()); +} + +template T deserialize_from_msgpack(const std::vector& bytes) +{ + auto unpacked = msgpack::unpack(reinterpret_cast(bytes.data()), bytes.size()); + T value; + unpacked.get().convert(value); + return value; +} + +template Alias field_to_wire(const avm2::FF& field) +{ + Alias wire{}; + avm2::FF::serialize_to_buffer(field, wire.data()); + return wire; +} + +template avm2::FF field_from_wire(const Alias& wire) +{ + return avm2::FF::serialize_from_buffer(wire.data()); +} + +template std::optional decode_optional_msgpack(const std::optional>& bytes) +{ + if (!bytes.has_value()) { + return std::nullopt; + } + return deserialize_from_msgpack(*bytes); +} + +} // namespace + +CdbIpcContractDB::CdbIpcContractDB(const std::string& ipc_path) + : client_(std::make_unique(ipc_path)) +{} + +CdbIpcContractDB::~CdbIpcContractDB() = default; + +std::optional CdbIpcContractDB::get_contract_instance(const avm2::AztecAddress& address) const +{ + auto resp = client_->get_contract_instance( + CdbGetContractInstance{ .address = field_to_wire(address), .forkId = fork_id_ }); + return decode_optional_msgpack(resp.instance); +} + +std::optional CdbIpcContractDB::get_contract_class(const avm2::ContractClassId& class_id) const +{ + auto resp = client_->get_contract_class( + CdbGetContractClass{ .classId = field_to_wire(class_id), .forkId = fork_id_ }); + return decode_optional_msgpack(resp.contractClass); +} + +std::optional CdbIpcContractDB::get_bytecode_commitment(const avm2::ContractClassId& class_id) const +{ + auto resp = client_->get_bytecode_commitment( + CdbGetBytecodeCommitment{ .classId = field_to_wire(class_id), .forkId = fork_id_ }); + return resp.commitment.has_value() ? std::optional(field_from_wire(*resp.commitment)) : std::nullopt; +} + +std::optional CdbIpcContractDB::get_debug_function_name(const avm2::AztecAddress& address, + const avm2::FunctionSelector& selector) const +{ + auto resp = + client_->get_debug_function_name(CdbGetDebugFunctionName{ .address = field_to_wire(address), + .selector = field_to_wire(selector), + .forkId = fork_id_ }); + return resp.name; +} + +void CdbIpcContractDB::add_contracts(const avm2::ContractDeploymentData& contract_deployment_data) +{ + client_->add_contracts(CdbAddContracts{ .contractDeploymentData = serialize_to_msgpack(contract_deployment_data), + .forkId = fork_id_ }); +} + +void CdbIpcContractDB::create_checkpoint() +{ + client_->create_checkpoint(CdbCreateCheckpoint{ .forkId = fork_id_ }); +} + +void CdbIpcContractDB::commit_checkpoint() +{ + client_->commit_checkpoint(CdbCommitCheckpoint{ .forkId = fork_id_ }); +} + +void CdbIpcContractDB::revert_checkpoint() +{ + client_->revert_checkpoint(CdbRevertCheckpoint{ .forkId = fork_id_ }); +} + +} // namespace bb::cdb diff --git a/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.hpp b/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.hpp new file mode 100644 index 000000000000..1c72f15519cc --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/cdb/cdb_ipc_client.hpp @@ -0,0 +1,45 @@ +#pragma once +/** + * @brief ContractDBInterface adapter over the generated CDB IPC client. + * + * Translates ContractDBInterface calls (AVM domain types) into + * CdbIpcClient command structs, delegating IPC transport to the + * auto-generated client. + */ + +#include "barretenberg/cdb/generated/cdb_ipc_client.hpp" +#include "barretenberg/vm2/simulation/interfaces/db.hpp" + +#include +#include + +namespace bb::cdb { + +class CdbIpcContractDB final : public avm2::simulation::ContractDBInterface { + public: + explicit CdbIpcContractDB(const std::string& ipc_path); + ~CdbIpcContractDB() override; + + /** Set the fork ID used to route CDB requests to the correct PublicContractsDB. */ + void set_fork_id(uint64_t fork_id) { fork_id_ = fork_id; } + uint64_t get_fork_id() const { return fork_id_; } + + // ContractDBInterface implementation + std::optional get_contract_instance(const avm2::AztecAddress& address) const override; + std::optional get_contract_class(const avm2::ContractClassId& class_id) const override; + std::optional get_bytecode_commitment(const avm2::ContractClassId& class_id) const override; + std::optional get_debug_function_name(const avm2::AztecAddress& address, + const avm2::FunctionSelector& selector) const override; + + void add_contracts(const avm2::ContractDeploymentData& contract_deployment_data) override; + + void create_checkpoint() override; + void commit_checkpoint() override; + void revert_checkpoint() override; + + private: + std::unique_ptr client_; + uint64_t fork_id_ = 0; +}; + +} // namespace bb::cdb diff --git a/barretenberg/cpp/src/barretenberg/cdb/cdb_schema.json b/barretenberg/cpp/src/barretenberg/cdb/cdb_schema.json new file mode 100644 index 000000000000..7fb59850db52 --- /dev/null +++ b/barretenberg/cpp/src/barretenberg/cdb/cdb_schema.json @@ -0,0 +1,77 @@ +{ + "service": "Cdb", + "aliases": { + "AztecAddress": "bin32", + "ContractClassId": "bin32", + "ForkId": "u64", + "Fr": "bin32", + "FunctionSelector": "bin32" + }, + "error": { + "message": "string" + }, + "commands": { + "GetContractInstance": { + "request": { + "address": "AztecAddress", + "forkId": "ForkId" + }, + "response": { + "instance": "bytes?" + } + }, + "GetContractClass": { + "request": { + "classId": "ContractClassId", + "forkId": "ForkId" + }, + "response": { + "contractClass": "bytes?" + } + }, + "GetBytecodeCommitment": { + "request": { + "classId": "ContractClassId", + "forkId": "ForkId" + }, + "response": { + "commitment": "Fr?" + } + }, + "GetDebugFunctionName": { + "request": { + "address": "AztecAddress", + "selector": "FunctionSelector", + "forkId": "ForkId" + }, + "response": { + "name": "string?" + } + }, + "AddContracts": { + "request": { + "contractDeploymentData": "bytes", + "forkId": "ForkId" + }, + "response": {} + }, + "CreateCheckpoint": { + "request": { + "forkId": "ForkId" + }, + "response": {} + }, + "CommitCheckpoint": { + "request": { + "forkId": "ForkId" + }, + "response": {} + }, + "RevertCheckpoint": { + "request": { + "forkId": "ForkId" + }, + "response": {} + } + } +} diff --git a/barretenberg/cpp/src/barretenberg/vm2/CLAUDE.md b/barretenberg/cpp/src/barretenberg/vm2/CLAUDE.md index e3439943acb1..b768a9f5a931 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/CLAUDE.md +++ b/barretenberg/cpp/src/barretenberg/vm2/CLAUDE.md @@ -59,7 +59,7 @@ Configure once: `cmake --preset clang20-assert`. All commands below are from `ba 2. **`vm2_tests`** — AVM unit tests. - Build: `cmake --build --preset clang20-assert --target vm2_tests`. Run from `barretenberg/cpp/build`: `./bin/vm2_tests --gtest_filter="*test_name*"`. 3. **`nodejs_module`** — Fast simulation only; builds quickly. - - Build: `cmake --build --preset clang20-assert --target nodejs_module`. For TS: from `barretenberg/cpp/`, run `(cd ../../barretenberg/ts/; ./scripts/copy_native.sh)` then bootstrap `yarn-project` (see yarn-project/CLAUDE.md). + - Build: `cmake --build --preset clang20-assert --target nodejs_module`. For TS: from `barretenberg/cpp/`, run `(cd ../../barretenberg/ts/; ./bootstrap.sh build_bb_js)` then bootstrap `yarn-project` (see yarn-project/CLAUDE.md). ## AVM and TypeScript diff --git a/barretenberg/rust/bootstrap.sh b/barretenberg/rust/bootstrap.sh index 6c3938fc2d58..80ec5cc7b040 100755 --- a/barretenberg/rust/bootstrap.sh +++ b/barretenberg/rust/bootstrap.sh @@ -10,7 +10,7 @@ function build { if ! cache_download barretenberg-rs-$hash.tar.gz; then # Generate Rust bindings from msgpack schema (uses ts-node, no build needed) - (cd ../ts && yarn generate) + (cd ../ts/bb.js && yarn generate) # Build all targets # BB_LIB_DIR tells build.rs to use local lib instead of downloading (ffi feature is on by default) @@ -57,7 +57,7 @@ function release { # Generated files must exist (created during build step, or generate now) if [ ! -f barretenberg-rs/src/api.rs ] || [ ! -f barretenberg-rs/src/generated_types.rs ]; then echo "Generated files not found, running yarn generate..." - (cd ../ts && yarn generate) + (cd ../ts/bb.js && yarn generate) fi # Check if this version is already published on crates.io (idempotent re-runs). diff --git a/barretenberg/rust/tests/src/blake2s.rs b/barretenberg/rust/tests/src/blake2s.rs index c6181452e0d3..a2bc57d89657 100644 --- a/barretenberg/rust/tests/src/blake2s.rs +++ b/barretenberg/rust/tests/src/blake2s.rs @@ -1,6 +1,6 @@ //! Blake2s hash tests //! -//! Parallels barretenberg/ts/src/barretenberg/blake2s.test.ts +//! Parallels barretenberg/ts/bb.js/src/barretenberg/blake2s.test.ts //! //! These tests require the BB binary to be built. They are skipped if the binary is not found. diff --git a/barretenberg/rust/tests/src/ffi/blake2s.rs b/barretenberg/rust/tests/src/ffi/blake2s.rs index ddb7ab85f794..871f07c0e787 100644 --- a/barretenberg/rust/tests/src/ffi/blake2s.rs +++ b/barretenberg/rust/tests/src/ffi/blake2s.rs @@ -1,6 +1,6 @@ //! Blake2s hash tests using FfiBackend //! -//! Parallels barretenberg/ts/src/barretenberg/blake2s.test.ts +//! Parallels barretenberg/ts/bb.js/src/barretenberg/blake2s.test.ts #[cfg(test)] use barretenberg_rs::{backends::FfiBackend, BarretenbergApi, Fr}; diff --git a/barretenberg/rust/tests/src/lib.rs b/barretenberg/rust/tests/src/lib.rs index 957f9277fa05..4c7af1d58c03 100644 --- a/barretenberg/rust/tests/src/lib.rs +++ b/barretenberg/rust/tests/src/lib.rs @@ -1,6 +1,6 @@ //! Barretenberg Rust test suite //! -//! This test suite parallels the TypeScript test suite in barretenberg/ts/src/barretenberg. +//! This test suite parallels the TypeScript test suite in barretenberg/ts/bb.js/src/barretenberg. //! //! ## Running Tests //! diff --git a/barretenberg/rust/tests/src/pedersen.rs b/barretenberg/rust/tests/src/pedersen.rs index d7ff5f9c62d3..a2846fe3f7ea 100644 --- a/barretenberg/rust/tests/src/pedersen.rs +++ b/barretenberg/rust/tests/src/pedersen.rs @@ -1,6 +1,6 @@ //! Pedersen hash and commit tests //! -//! Parallels barretenberg/ts/src/barretenberg/pedersen.test.ts +//! Parallels barretenberg/ts/bb.js/src/barretenberg/pedersen.test.ts //! //! These tests require the BB binary to be built. They are skipped if the binary is not found. diff --git a/barretenberg/rust/tests/src/poseidon.rs b/barretenberg/rust/tests/src/poseidon.rs index 10391a00c42c..e505fcfc5b17 100644 --- a/barretenberg/rust/tests/src/poseidon.rs +++ b/barretenberg/rust/tests/src/poseidon.rs @@ -1,6 +1,6 @@ //! Poseidon2 hash tests //! -//! Parallels barretenberg/ts/src/barretenberg/poseidon.test.ts +//! Parallels barretenberg/ts/bb.js/src/barretenberg/poseidon.test.ts //! //! These tests require the BB binary to be built. They are skipped if the binary is not found. diff --git a/barretenberg/rust/tests/src/utils.rs b/barretenberg/rust/tests/src/utils.rs index 5d19a2e8ce96..48e54c0b8bbb 100644 --- a/barretenberg/rust/tests/src/utils.rs +++ b/barretenberg/rust/tests/src/utils.rs @@ -19,7 +19,7 @@ pub fn random_fr() -> Fr { /// Timer for performance measurements /// -/// Parallels the Timer class in barretenberg/ts/src/benchmark/timer.ts +/// Parallels the Timer class in barretenberg/ts/bb.js/src/benchmark/timer.ts pub struct Timer { start: Instant, } diff --git a/barretenberg/ts/.gitignore b/barretenberg/ts/.gitignore index cc254d3c8714..be97a4f66266 100644 --- a/barretenberg/ts/.gitignore +++ b/barretenberg/ts/.gitignore @@ -2,13 +2,19 @@ !.yarn/releases !.yarn/plugins node_modules -dest +bb.js/node_modules +bb.js/dest +bb.js/build +bb.js/.tsbuildinfo* +bb.js/*.tsbuildinfo +aztec-vm-sim/ .tsbuildinfo* *.tsbuildinfo *.log /crs package.tgz package +packages/ # Generated files -src/cbind/generated/ +bb.js/src/cbind/generated/ diff --git a/barretenberg/ts/.rebuild_patterns b/barretenberg/ts/.rebuild_patterns index 2a04ff6d0270..af9ebe7df71f 100644 --- a/barretenberg/ts/.rebuild_patterns +++ b/barretenberg/ts/.rebuild_patterns @@ -1,2 +1,6 @@ ^barretenberg/ts/.*$ ^barretenberg/ts/bootstrap.sh +^ipc-codegen/src/.*\.ts$ +^ipc-codegen/templates/ +^barretenberg/cpp/src/barretenberg/avm/avm_schema\.json$ +^barretenberg/cpp/src/barretenberg/cdb/cdb_schema\.json$ diff --git a/barretenberg/ts/.prettierrc.json b/barretenberg/ts/bb.js/.prettierrc.json similarity index 100% rename from barretenberg/ts/.prettierrc.json rename to barretenberg/ts/bb.js/.prettierrc.json diff --git a/barretenberg/ts/CHANGELOG.md b/barretenberg/ts/bb.js/CHANGELOG.md similarity index 100% rename from barretenberg/ts/CHANGELOG.md rename to barretenberg/ts/bb.js/CHANGELOG.md diff --git a/barretenberg/ts/README.md b/barretenberg/ts/bb.js/README.md similarity index 100% rename from barretenberg/ts/README.md rename to barretenberg/ts/bb.js/README.md diff --git a/barretenberg/ts/bb.js/bootstrap.sh b/barretenberg/ts/bb.js/bootstrap.sh new file mode 100755 index 000000000000..2f8d7a8df673 --- /dev/null +++ b/barretenberg/ts/bb.js/bootstrap.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash +# Use ci3 script base. +source $(git rev-parse --show-toplevel)/ci3/source_bootstrap + +# We mix if we're a release into the hash, as releases have all architectures built. +# Include AVM_TRANSPILER setting to prevent cache poisoning: ci-barretenberg-full builds +# with AVM_TRANSPILER=0, producing a bb binary without AVM transpiler support. Without this, +# that build can populate the bb.js cache with a non-AVM bb, which ci-fast then downloads. +hash=$(hash_str \ + $(../../cpp/bootstrap.sh hash) \ + $(cache_content_hash ../.rebuild_patterns) \ + $(semver check $REF_NAME && echo 1 || echo 0) \ + ${AVM_TRANSPILER:-1}) + +function build { + echo_header "bb.js build" + (cd .. && ./bootstrap.sh generate_aztec_vm_sim_package) + (cd .. && npm_install_deps) + + if ! cache_download bb.js-$hash.tar.gz; then + find . -exec touch -d "@0" {} + 2>/dev/null || true + yarn clean + yarn generate + yarn build:wasm + yarn build:native + parallel -v --line-buffered --tag 'denoise "yarn {}"' ::: build:esm build:cjs build:browser + cache_upload bb.js-$hash.tar.gz dest build + fi + + # We copy snapshot dirs to dest so we can run tests from dest. + # This is because web-workers run into issues with transpilation. + for snapshot_dir in src/**/__snapshots__; do + dest_dir="${snapshot_dir/src\//dest\/node\/}" + rm -rf "$dest_dir" + cp -r "$snapshot_dir" "$dest_dir" + for file in $dest_dir/*.test.ts.snap; do + mv "$file" "${file/.test.ts.snap/.test.js.snap}" + done + done +} + +function test_cmds { + cd dest/node + for test in **/*.test.js; do + # Skip benchmarks here. + [[ "$test" =~ \.bench\.test\.js$ ]] && continue + [[ "$test" == "bbapi/chonk_pinned_inputs.test.js" ]] && continue + + local prefix=$hash + # Extra resource. + if [[ "$test" =~ ^examples/ ]]; then + prefix="$prefix:CPUS=16" + fi + echo "$prefix barretenberg/ts/bb.js/scripts/run_test.sh $test" + done + echo "$hash:CPUS=8:MEM=32g:TIMEOUT=20m barretenberg/cpp/scripts/chonk_inputs.sh download && barretenberg/ts/bb.js/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js" +} + +function bench_cmds { + echo "$hash:CPUS=4 barretenberg/ts/bb.js/scripts/run_test.sh poseidon.bench.test.js" +} + +function test { + echo_header "bb.js test" + test_cmds | filter_test_cmds | parallelize +} + +function release { + cross_copy + retry "deploy_npm ${REF_NAME#v}" +} + +function cross_copy { + ./scripts/copy_cross.sh "$@" +} + +case "$cmd" in + "") + build + ;; + "hash") + echo "$hash" + ;; + *) + default_cmd_handler "$@" + ;; +esac diff --git a/barretenberg/ts/eslint.config.js b/barretenberg/ts/bb.js/eslint.config.js similarity index 100% rename from barretenberg/ts/eslint.config.js rename to barretenberg/ts/bb.js/eslint.config.js diff --git a/barretenberg/ts/package-lock.json b/barretenberg/ts/bb.js/package-lock.json similarity index 100% rename from barretenberg/ts/package-lock.json rename to barretenberg/ts/bb.js/package-lock.json diff --git a/barretenberg/ts/bb.js/package.json b/barretenberg/ts/bb.js/package.json new file mode 100644 index 000000000000..847bf93181e7 --- /dev/null +++ b/barretenberg/ts/bb.js/package.json @@ -0,0 +1,100 @@ +{ + "name": "@aztec/bb.js", + "packageManager": "yarn@4.13.0", + "version": "0.1.0", + "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts/bb.js", + "license": "MIT", + "type": "module", + "types": "./dest/node/index.d.ts", + "exports": { + ".": { + "require": "./dest/node-cjs/index.js", + "browser": "./dest/browser/index.js", + "default": "./dest/node/index.js" + }, + "./platform": { + "default": "./dest/node/bb_backends/node/platform.js" + } + }, + "bin": { + "bb": "dest/node/bin/index.js" + }, + "files": [ + "src/", + "dest/", + "build/", + "README.md" + ], + "scripts": { + "clean": "rm -rf ./dest .tsbuildinfo .tsbuildinfo.cjs ./src/cbind/generated", + "build": "yarn clean && yarn generate && yarn build:wasm && yarn build:native && yarn build:esm && yarn build:cjs && yarn build:browser", + "build:wasm": "./scripts/copy_wasm.sh", + "build:native": "./scripts/copy_native.sh", + "build:esm": "tsgo -b tsconfig.esm.json && chmod +x ./dest/node/bin/index.js", + "build:cjs": "tsgo -b tsconfig.cjs.json && ./scripts/cjs_postprocess.sh", + "build:browser": "tsgo -b tsconfig.browser.json && ./scripts/browser_postprocess.sh", + "generate": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 ts-node src/cbind/generate.ts", + "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src", + "formatting:fix": "prettier -w ./src", + "test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests", + "test:chonk-inputs": "yarn test chonk_pinned_inputs", + "test:debug": "NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules ./node_modules/.bin/jest --no-cache --passWithNoTests --runInBand", + "simple_test": "NODE_NO_WARNINGS=1 node ./src/examples/simple.rawtest.ts", + "deploy": "npm publish --access public" + }, + "jest": { + "preset": "ts-jest/presets/default-esm", + "transform": { + "^.+\\.tsx?$": [ + "@swc/jest", + { + "jsc": { + "parser": { + "syntax": "typescript", + "decorators": true + }, + "transform": { + "decoratorVersion": "2022-03" + } + } + } + ] + }, + "moduleNameMapper": { + "^(\\.{1,2}/.*)\\.js$": "$1" + }, + "extensionsToTreatAsEsm": [ + ".ts" + ], + "testRegex": "./src/.*\\.test\\.ts$", + "rootDir": "./src" + }, + "dependencies": { + "comlink": "^4.4.1", + "commander": "^12.1.0", + "idb-keyval": "^6.2.1", + "msgpackr": "^1.11.2", + "pako": "^2.1.0", + "tslib": "^2.4.0" + }, + "devDependencies": { + "@jest/globals": "^30.0.0", + "@swc/core": "^1.10.1", + "@swc/jest": "^0.2.37", + "@types/detect-node": "^2.0.0", + "@types/jest": "^30.0.0", + "@types/node": "^22.15.17", + "@types/pako": "^2.0.3", + "@types/source-map-support": "^0.5.6", + "@typescript/native-preview": "7.0.0-dev.20251126.1", + "eslint": "^9.26.0", + "eslint-config-prettier": "^10.1.5", + "jest": "^30.0.0", + "prettier": "^3.5.3", + "ts-jest": "^29.4.0", + "ts-loader": "^9.4.2", + "ts-node": "^10.9.1", + "typescript": "^5.3.3", + "typescript-eslint": "^8.32.1" + } +} diff --git a/barretenberg/ts/scripts/browser_postprocess.sh b/barretenberg/ts/bb.js/scripts/browser_postprocess.sh similarity index 100% rename from barretenberg/ts/scripts/browser_postprocess.sh rename to barretenberg/ts/bb.js/scripts/browser_postprocess.sh diff --git a/barretenberg/ts/scripts/chonk_wasm_bench.mjs b/barretenberg/ts/bb.js/scripts/chonk_wasm_bench.mjs similarity index 96% rename from barretenberg/ts/scripts/chonk_wasm_bench.mjs rename to barretenberg/ts/bb.js/scripts/chonk_wasm_bench.mjs index e5514ed81cad..bc2519c1770b 100644 --- a/barretenberg/ts/scripts/chonk_wasm_bench.mjs +++ b/barretenberg/ts/bb.js/scripts/chonk_wasm_bench.mjs @@ -5,10 +5,10 @@ // predict browser performance. Run the same script against two builds (current vs baseline) and compare. // // Prereqs: -// - bb.js is built: (cd barretenberg/ts && yarn build) [needs the wasm artifact + dest/node] +// - bb.js is built: (cd barretenberg/ts/bb.js && yarn build) [needs the wasm artifact + dest/node] // - pinned inputs downloaded: barretenberg/cpp/scripts/chonk_inputs.sh download // -// Usage (from barretenberg/ts so node_modules resolves): +// Usage (from barretenberg/ts/bb.js so node_modules resolves): // node scripts/chonk_wasm_bench.mjs // // Env knobs: diff --git a/barretenberg/ts/scripts/cjs_postprocess.sh b/barretenberg/ts/bb.js/scripts/cjs_postprocess.sh similarity index 100% rename from barretenberg/ts/scripts/cjs_postprocess.sh rename to barretenberg/ts/bb.js/scripts/cjs_postprocess.sh diff --git a/barretenberg/ts/scripts/copy_cross.sh b/barretenberg/ts/bb.js/scripts/copy_cross.sh similarity index 80% rename from barretenberg/ts/scripts/copy_cross.sh rename to barretenberg/ts/bb.js/scripts/copy_cross.sh index d69cfdbd103b..ffb0d5ac774a 100755 --- a/barretenberg/ts/scripts/copy_cross.sh +++ b/barretenberg/ts/bb.js/scripts/copy_cross.sh @@ -8,16 +8,16 @@ cd $(dirname $0)/.. if [ -n "${1:-}" ]; then arch="$1" mkdir -p ./build/$arch - cp ../cpp/build-$arch/bin/bb ./build/$arch - cp ../cpp/build-$arch/lib/nodejs_module.node ./build/$arch + cp ../../cpp/build-$arch/bin/bb ./build/$arch + cp ../../cpp/build-$arch/lib/nodejs_module.node ./build/$arch elif semver check "${REF_NAME:-}" && [[ "$(arch)" == "amd64" ]]; then # We're building a release. # Copy all cross-compiled architectures for release builds. # The native amd64-linux binary is already copied by copy_native.sh (bb-ts target). for arch in arm64-linux amd64-macos arm64-macos; do mkdir -p ./build/$arch - cp ../cpp/build-$arch/bin/bb ./build/$arch - cp ../cpp/build-$arch/lib/nodejs_module.node ./build/$arch + cp ../../cpp/build-$arch/bin/bb ./build/$arch + cp ../../cpp/build-$arch/lib/nodejs_module.node ./build/$arch done llvm-strip-20 ./build/*/* diff --git a/barretenberg/ts/scripts/copy_native.sh b/barretenberg/ts/bb.js/scripts/copy_native.sh similarity index 61% rename from barretenberg/ts/scripts/copy_native.sh rename to barretenberg/ts/bb.js/scripts/copy_native.sh index 3fdd7aa2f10e..85487610e83f 100755 --- a/barretenberg/ts/scripts/copy_native.sh +++ b/barretenberg/ts/bb.js/scripts/copy_native.sh @@ -9,10 +9,10 @@ cd $(dirname $0)/.. target="$(arch)-$(os)" if [ "${BUILD_CPP:-0}" -eq 1 ]; then - ../cpp/bootstrap.sh build_preset clang20 --target bb --target nodejs_module + ../../cpp/bootstrap.sh build_preset clang20 --target bb --target nodejs_module fi mkdir -p ./build/$target -cp ../cpp/build/bin/bb ./build/$target -cp ../cpp/build/lib/nodejs_module.node ./build/$target +cp ../../cpp/build/bin/bb ./build/$target +cp ../../cpp/build/lib/nodejs_module.node ./build/$target diff --git a/barretenberg/ts/scripts/copy_wasm.sh b/barretenberg/ts/bb.js/scripts/copy_wasm.sh similarity index 55% rename from barretenberg/ts/scripts/copy_wasm.sh rename to barretenberg/ts/bb.js/scripts/copy_wasm.sh index 1251d38474af..41099fe7c199 100755 --- a/barretenberg/ts/scripts/copy_wasm.sh +++ b/barretenberg/ts/bb.js/scripts/copy_wasm.sh @@ -6,7 +6,7 @@ set -e cd $(dirname $0)/.. if [ "${BUILD_CPP:-0}" -eq 1 ]; then - parallel --line-buffered --tag '../cpp/bootstrap.sh {}' ::: build_wasm build_wasm_threads + parallel --line-buffered --tag '../../cpp/bootstrap.sh {}' ::: build_wasm build_wasm_threads fi # Copy the wasm to its home in the bb.js dest folder. @@ -18,7 +18,7 @@ mkdir -p ./dest/node/barretenberg_wasm mkdir -p ./dest/node-cjs/barretenberg_wasm mkdir -p ./dest/browser/barretenberg_wasm -cp ../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz -cp ../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz -cp ../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/browser/barretenberg_wasm/barretenberg-threads.wasm.gz -cp ../cpp/build-wasm/bin/barretenberg.wasm.gz ./dest/browser/barretenberg_wasm/barretenberg.wasm.gz +cp ../../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/node/barretenberg_wasm/barretenberg-threads.wasm.gz +cp ../../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/node-cjs/barretenberg_wasm/barretenberg-threads.wasm.gz +cp ../../cpp/build-wasm-threads/bin/barretenberg.wasm.gz ./dest/browser/barretenberg_wasm/barretenberg-threads.wasm.gz +cp ../../cpp/build-wasm/bin/barretenberg.wasm.gz ./dest/browser/barretenberg_wasm/barretenberg.wasm.gz diff --git a/barretenberg/ts/scripts/run_test.sh b/barretenberg/ts/bb.js/scripts/run_test.sh similarity index 82% rename from barretenberg/ts/scripts/run_test.sh rename to barretenberg/ts/bb.js/scripts/run_test.sh index 696eaf5f04b4..6ea22952e1e4 100755 --- a/barretenberg/ts/scripts/run_test.sh +++ b/barretenberg/ts/bb.js/scripts/run_test.sh @@ -9,4 +9,4 @@ cd $(dirname $0)/.. export NODE_OPTIONS="--no-warnings --experimental-vm-modules" -./node_modules/.bin/jest --testRegex '\.test\.js$' --rootDir ./dest/node --runInBand $1 +$(yarn bin jest) --testRegex '\.test\.js$' --rootDir ./dest/node --runInBand $1 diff --git a/barretenberg/ts/src/async_map/index.ts b/barretenberg/ts/bb.js/src/async_map/index.ts similarity index 100% rename from barretenberg/ts/src/async_map/index.ts rename to barretenberg/ts/bb.js/src/async_map/index.ts diff --git a/barretenberg/ts/src/barretenberg/__snapshots__/pedersen.test.ts.snap b/barretenberg/ts/bb.js/src/barretenberg/__snapshots__/pedersen.test.ts.snap similarity index 100% rename from barretenberg/ts/src/barretenberg/__snapshots__/pedersen.test.ts.snap rename to barretenberg/ts/bb.js/src/barretenberg/__snapshots__/pedersen.test.ts.snap diff --git a/barretenberg/ts/src/barretenberg/__snapshots__/poseidon.test.ts.snap b/barretenberg/ts/bb.js/src/barretenberg/__snapshots__/poseidon.test.ts.snap similarity index 100% rename from barretenberg/ts/src/barretenberg/__snapshots__/poseidon.test.ts.snap rename to barretenberg/ts/bb.js/src/barretenberg/__snapshots__/poseidon.test.ts.snap diff --git a/barretenberg/ts/src/barretenberg/backend.test.ts b/barretenberg/ts/bb.js/src/barretenberg/backend.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/backend.test.ts rename to barretenberg/ts/bb.js/src/barretenberg/backend.test.ts diff --git a/barretenberg/ts/src/barretenberg/backend.ts b/barretenberg/ts/bb.js/src/barretenberg/backend.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/backend.ts rename to barretenberg/ts/bb.js/src/barretenberg/backend.ts diff --git a/barretenberg/ts/src/barretenberg/blake2s.test.ts b/barretenberg/ts/bb.js/src/barretenberg/blake2s.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/blake2s.test.ts rename to barretenberg/ts/bb.js/src/barretenberg/blake2s.test.ts diff --git a/barretenberg/ts/src/barretenberg/index.ts b/barretenberg/ts/bb.js/src/barretenberg/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/index.ts rename to barretenberg/ts/bb.js/src/barretenberg/index.ts diff --git a/barretenberg/ts/src/barretenberg/pedersen.test.ts b/barretenberg/ts/bb.js/src/barretenberg/pedersen.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/pedersen.test.ts rename to barretenberg/ts/bb.js/src/barretenberg/pedersen.test.ts diff --git a/barretenberg/ts/src/barretenberg/poseidon.bench.test.ts b/barretenberg/ts/bb.js/src/barretenberg/poseidon.bench.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/poseidon.bench.test.ts rename to barretenberg/ts/bb.js/src/barretenberg/poseidon.bench.test.ts diff --git a/barretenberg/ts/src/barretenberg/poseidon.test.ts b/barretenberg/ts/bb.js/src/barretenberg/poseidon.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/poseidon.test.ts rename to barretenberg/ts/bb.js/src/barretenberg/poseidon.test.ts diff --git a/barretenberg/ts/src/barretenberg/testing/bigint-buffer.ts b/barretenberg/ts/bb.js/src/barretenberg/testing/bigint-buffer.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/testing/bigint-buffer.ts rename to barretenberg/ts/bb.js/src/barretenberg/testing/bigint-buffer.ts diff --git a/barretenberg/ts/src/barretenberg/testing/fields.ts b/barretenberg/ts/bb.js/src/barretenberg/testing/fields.ts similarity index 100% rename from barretenberg/ts/src/barretenberg/testing/fields.ts rename to barretenberg/ts/bb.js/src/barretenberg/testing/fields.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg-threads.wasm.gz b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg-threads.wasm.gz similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg-threads.wasm.gz rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg-threads.wasm.gz diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg.wasm.gz b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg.wasm.gz similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg.wasm.gz rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg.wasm.gz diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_base/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_base/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_base/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/browser/main.worker.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/factory/node/main.worker.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/heap_allocator.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_main/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_main/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/browser/thread.worker.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/factory/node/thread.worker.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/barretenberg_wasm_thread/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/barretenberg-threads.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/barretenberg.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/browser/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/browser/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/node/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/node/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/node/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/fetch_code/wasm-module.d.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/wasm-module.d.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/fetch_code/wasm-module.d.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/fetch_code/wasm-module.d.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/browser/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/helpers/browser/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/browser/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/helpers/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/helpers/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/node/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/helpers/node/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/node/index.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/node/node_endpoint.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/helpers/node/node_endpoint.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/helpers/node/node_endpoint.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/index.test.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/index.test.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/index.test.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/index.test.ts diff --git a/barretenberg/ts/src/barretenberg_wasm/index.ts b/barretenberg/ts/bb.js/src/barretenberg_wasm/index.ts similarity index 100% rename from barretenberg/ts/src/barretenberg_wasm/index.ts rename to barretenberg/ts/bb.js/src/barretenberg_wasm/index.ts diff --git a/barretenberg/ts/src/bb_backends/browser/index.ts b/barretenberg/ts/bb.js/src/bb_backends/browser/index.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/browser/index.ts rename to barretenberg/ts/bb.js/src/bb_backends/browser/index.ts diff --git a/barretenberg/ts/src/bb_backends/browser/platform.ts b/barretenberg/ts/bb.js/src/bb_backends/browser/platform.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/browser/platform.ts rename to barretenberg/ts/bb.js/src/bb_backends/browser/platform.ts diff --git a/barretenberg/ts/src/bb_backends/index.ts b/barretenberg/ts/bb.js/src/bb_backends/index.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/index.ts rename to barretenberg/ts/bb.js/src/bb_backends/index.ts diff --git a/barretenberg/ts/src/bb_backends/interface.ts b/barretenberg/ts/bb.js/src/bb_backends/interface.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/interface.ts rename to barretenberg/ts/bb.js/src/bb_backends/interface.ts diff --git a/barretenberg/ts/src/bb_backends/node/index.ts b/barretenberg/ts/bb.js/src/bb_backends/node/index.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/index.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/index.ts diff --git a/barretenberg/ts/src/bb_backends/node/native_pipe.ts b/barretenberg/ts/bb.js/src/bb_backends/node/native_pipe.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/native_pipe.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/native_pipe.ts diff --git a/barretenberg/ts/src/bb_backends/node/native_shm.ts b/barretenberg/ts/bb.js/src/bb_backends/node/native_shm.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/native_shm.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/native_shm.ts diff --git a/barretenberg/ts/src/bb_backends/node/native_shm_async.ts b/barretenberg/ts/bb.js/src/bb_backends/node/native_shm_async.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/native_shm_async.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/native_shm_async.ts diff --git a/barretenberg/ts/src/bb_backends/node/native_socket.ts b/barretenberg/ts/bb.js/src/bb_backends/node/native_socket.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/native_socket.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/native_socket.ts diff --git a/barretenberg/ts/src/bb_backends/node/platform.ts b/barretenberg/ts/bb.js/src/bb_backends/node/platform.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/node/platform.ts rename to barretenberg/ts/bb.js/src/bb_backends/node/platform.ts diff --git a/barretenberg/ts/src/bb_backends/wasm.ts b/barretenberg/ts/bb.js/src/bb_backends/wasm.ts similarity index 100% rename from barretenberg/ts/src/bb_backends/wasm.ts rename to barretenberg/ts/bb.js/src/bb_backends/wasm.ts diff --git a/barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts b/barretenberg/ts/bb.js/src/bbapi/chonk_pinned_inputs.test.ts similarity index 100% rename from barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts rename to barretenberg/ts/bb.js/src/bbapi/chonk_pinned_inputs.test.ts diff --git a/barretenberg/ts/src/bbapi/exception_handling.test.ts b/barretenberg/ts/bb.js/src/bbapi/exception_handling.test.ts similarity index 100% rename from barretenberg/ts/src/bbapi/exception_handling.test.ts rename to barretenberg/ts/bb.js/src/bbapi/exception_handling.test.ts diff --git a/barretenberg/ts/src/bbapi_exception.ts b/barretenberg/ts/bb.js/src/bbapi_exception.ts similarity index 100% rename from barretenberg/ts/src/bbapi_exception.ts rename to barretenberg/ts/bb.js/src/bbapi_exception.ts diff --git a/barretenberg/ts/src/benchmark/index.ts b/barretenberg/ts/bb.js/src/benchmark/index.ts similarity index 100% rename from barretenberg/ts/src/benchmark/index.ts rename to barretenberg/ts/bb.js/src/benchmark/index.ts diff --git a/barretenberg/ts/src/benchmark/timer.ts b/barretenberg/ts/bb.js/src/benchmark/timer.ts similarity index 100% rename from barretenberg/ts/src/benchmark/timer.ts rename to barretenberg/ts/bb.js/src/benchmark/timer.ts diff --git a/barretenberg/ts/src/bin/index.ts b/barretenberg/ts/bb.js/src/bin/index.ts similarity index 100% rename from barretenberg/ts/src/bin/index.ts rename to barretenberg/ts/bb.js/src/bin/index.ts diff --git a/barretenberg/ts/src/cbind/README.md b/barretenberg/ts/bb.js/src/cbind/README.md similarity index 100% rename from barretenberg/ts/src/cbind/README.md rename to barretenberg/ts/bb.js/src/cbind/README.md diff --git a/barretenberg/ts/src/cbind/cpp_codegen.ts b/barretenberg/ts/bb.js/src/cbind/cpp_codegen.ts similarity index 100% rename from barretenberg/ts/src/cbind/cpp_codegen.ts rename to barretenberg/ts/bb.js/src/cbind/cpp_codegen.ts diff --git a/barretenberg/ts/src/cbind/generate.ts b/barretenberg/ts/bb.js/src/cbind/generate.ts similarity index 96% rename from barretenberg/ts/src/cbind/generate.ts rename to barretenberg/ts/bb.js/src/cbind/generate.ts index 79d56925df15..c21d81008f46 100644 --- a/barretenberg/ts/src/cbind/generate.ts +++ b/barretenberg/ts/bb.js/src/cbind/generate.ts @@ -43,8 +43,8 @@ const LANGUAGE_GENERATORS: LanguageGenerator[] = [ generate: (compiled) => { const rustGen = new RustCodegen(); return [ - { path: '../../../rust/barretenberg-rs/src/generated_types.rs', content: rustGen.generateTypes(compiled) }, - { path: '../../../rust/barretenberg-rs/src/api.rs', content: rustGen.generateApi(compiled) }, + { path: '../../../../rust/barretenberg-rs/src/generated_types.rs', content: rustGen.generateTypes(compiled) }, + { path: '../../../../rust/barretenberg-rs/src/api.rs', content: rustGen.generateApi(compiled) }, ]; }, }, @@ -54,7 +54,7 @@ const LANGUAGE_GENERATORS: LanguageGenerator[] = [ const __dirname = dirname(fileURLToPath(import.meta.url)); async function generate() { - const bbBuildPath = process.env.BB_BINARY_PATH || join(__dirname, '../../../cpp/build/bin/bb'); + const bbBuildPath = process.env.BB_BINARY_PATH || join(__dirname, '../../../../cpp/build/bin/bb'); // Get schema from bb console.log('Fetching msgpack schema from bb...'); diff --git a/barretenberg/ts/src/cbind/naming.ts b/barretenberg/ts/bb.js/src/cbind/naming.ts similarity index 100% rename from barretenberg/ts/src/cbind/naming.ts rename to barretenberg/ts/bb.js/src/cbind/naming.ts diff --git a/barretenberg/ts/src/cbind/rust_codegen.ts b/barretenberg/ts/bb.js/src/cbind/rust_codegen.ts similarity index 100% rename from barretenberg/ts/src/cbind/rust_codegen.ts rename to barretenberg/ts/bb.js/src/cbind/rust_codegen.ts diff --git a/barretenberg/ts/src/cbind/schema_visitor.ts b/barretenberg/ts/bb.js/src/cbind/schema_visitor.ts similarity index 100% rename from barretenberg/ts/src/cbind/schema_visitor.ts rename to barretenberg/ts/bb.js/src/cbind/schema_visitor.ts diff --git a/barretenberg/ts/src/cbind/typescript_codegen.ts b/barretenberg/ts/bb.js/src/cbind/typescript_codegen.ts similarity index 100% rename from barretenberg/ts/src/cbind/typescript_codegen.ts rename to barretenberg/ts/bb.js/src/cbind/typescript_codegen.ts diff --git a/barretenberg/ts/src/crs/browser/cached_net_crs.ts b/barretenberg/ts/bb.js/src/crs/browser/cached_net_crs.ts similarity index 100% rename from barretenberg/ts/src/crs/browser/cached_net_crs.ts rename to barretenberg/ts/bb.js/src/crs/browser/cached_net_crs.ts diff --git a/barretenberg/ts/src/crs/browser/index.ts b/barretenberg/ts/bb.js/src/crs/browser/index.ts similarity index 100% rename from barretenberg/ts/src/crs/browser/index.ts rename to barretenberg/ts/bb.js/src/crs/browser/index.ts diff --git a/barretenberg/ts/src/crs/index.ts b/barretenberg/ts/bb.js/src/crs/index.ts similarity index 100% rename from barretenberg/ts/src/crs/index.ts rename to barretenberg/ts/bb.js/src/crs/index.ts diff --git a/barretenberg/ts/src/crs/net_crs.test.ts b/barretenberg/ts/bb.js/src/crs/net_crs.test.ts similarity index 100% rename from barretenberg/ts/src/crs/net_crs.test.ts rename to barretenberg/ts/bb.js/src/crs/net_crs.test.ts diff --git a/barretenberg/ts/src/crs/net_crs.ts b/barretenberg/ts/bb.js/src/crs/net_crs.ts similarity index 100% rename from barretenberg/ts/src/crs/net_crs.ts rename to barretenberg/ts/bb.js/src/crs/net_crs.ts diff --git a/barretenberg/ts/src/crs/node/index.ts b/barretenberg/ts/bb.js/src/crs/node/index.ts similarity index 100% rename from barretenberg/ts/src/crs/node/index.ts rename to barretenberg/ts/bb.js/src/crs/node/index.ts diff --git a/barretenberg/ts/src/index.html b/barretenberg/ts/bb.js/src/index.html similarity index 100% rename from barretenberg/ts/src/index.html rename to barretenberg/ts/bb.js/src/index.html diff --git a/barretenberg/ts/src/index.ts b/barretenberg/ts/bb.js/src/index.ts similarity index 100% rename from barretenberg/ts/src/index.ts rename to barretenberg/ts/bb.js/src/index.ts diff --git a/barretenberg/ts/src/proof/index.ts b/barretenberg/ts/bb.js/src/proof/index.ts similarity index 100% rename from barretenberg/ts/src/proof/index.ts rename to barretenberg/ts/bb.js/src/proof/index.ts diff --git a/barretenberg/ts/src/random/browser/index.ts b/barretenberg/ts/bb.js/src/random/browser/index.ts similarity index 100% rename from barretenberg/ts/src/random/browser/index.ts rename to barretenberg/ts/bb.js/src/random/browser/index.ts diff --git a/barretenberg/ts/src/random/index.ts b/barretenberg/ts/bb.js/src/random/index.ts similarity index 100% rename from barretenberg/ts/src/random/index.ts rename to barretenberg/ts/bb.js/src/random/index.ts diff --git a/barretenberg/ts/src/random/node/index.ts b/barretenberg/ts/bb.js/src/random/node/index.ts similarity index 100% rename from barretenberg/ts/src/random/node/index.ts rename to barretenberg/ts/bb.js/src/random/node/index.ts diff --git a/barretenberg/ts/src/retry/index.ts b/barretenberg/ts/bb.js/src/retry/index.ts similarity index 100% rename from barretenberg/ts/src/retry/index.ts rename to barretenberg/ts/bb.js/src/retry/index.ts diff --git a/barretenberg/ts/tsconfig.browser.json b/barretenberg/ts/bb.js/tsconfig.browser.json similarity index 100% rename from barretenberg/ts/tsconfig.browser.json rename to barretenberg/ts/bb.js/tsconfig.browser.json diff --git a/barretenberg/ts/tsconfig.cjs.json b/barretenberg/ts/bb.js/tsconfig.cjs.json similarity index 100% rename from barretenberg/ts/tsconfig.cjs.json rename to barretenberg/ts/bb.js/tsconfig.cjs.json diff --git a/barretenberg/ts/tsconfig.esm.json b/barretenberg/ts/bb.js/tsconfig.esm.json similarity index 100% rename from barretenberg/ts/tsconfig.esm.json rename to barretenberg/ts/bb.js/tsconfig.esm.json diff --git a/barretenberg/ts/tsconfig.json b/barretenberg/ts/bb.js/tsconfig.json similarity index 100% rename from barretenberg/ts/tsconfig.json rename to barretenberg/ts/bb.js/tsconfig.json diff --git a/barretenberg/ts/bootstrap.sh b/barretenberg/ts/bootstrap.sh index 7a8fb3be4f5b..903ee198cba0 100755 --- a/barretenberg/ts/bootstrap.sh +++ b/barretenberg/ts/bootstrap.sh @@ -1,78 +1,138 @@ #!/usr/bin/env bash -# Use ci3 script base. source $(git rev-parse --show-toplevel)/ci3/source_bootstrap -# We mix if we're a release into the hash, as releases have all architectures built. -# Include AVM_TRANSPILER setting to prevent cache poisoning: ci-barretenberg-full builds -# with AVM_TRANSPILER=0, producing a bb binary without AVM transpiler support. Without this, -# that build can populate the bb.js cache with a non-AVM bb, which ci-fast then downloads. +ROOT=$(git rev-parse --show-toplevel) +AZTEC_VM_SIM_BINARY=aztec-vm-sim +AZTEC_VM_SIM_PACKAGE=@aztec/aztec-vm-sim + hash=$(hash_str \ + $(bb.js/bootstrap.sh hash) \ $(../cpp/bootstrap.sh hash) \ + $(../../ipc-codegen/bootstrap.sh hash) \ + $(../../ipc-runtime/bootstrap.sh hash) \ $(cache_content_hash .rebuild_patterns) \ - $(semver check $REF_NAME && echo 1 || echo 0) \ - ${AVM_TRANSPILER:-1}) + $(semver check $REF_NAME && echo 1 || echo 0)) -function build { - echo_header "bb.js build" - npm_install_deps +function generate_aztec_vm_sim_package { + node --experimental-strip-types --experimental-transform-types --no-warnings \ + "$ROOT/ipc-codegen/src/generate.ts" \ + --schema "$ROOT/barretenberg/cpp/src/barretenberg/avm/avm_schema.json" \ + --lang ts \ + --client \ + --out "$ROOT/barretenberg/ts/aztec-vm-sim/src/generated" \ + --package "$ROOT/barretenberg/ts/aztec-vm-sim" \ + --package-name "$AZTEC_VM_SIM_PACKAGE" \ + --binary-name "$AZTEC_VM_SIM_BINARY" \ + --prefix Avm \ + --strip-method-prefix \ + --package-transports uds \ + --package-ipc-path-args 'msgpack,run,--input,{path}' +} - if ! cache_download bb.js-$hash.tar.gz; then - find . -exec touch -d "@0" {} + 2>/dev/null || true - yarn clean - yarn generate - yarn build:wasm - yarn build:native - parallel -v --line-buffered --tag 'denoise "yarn {}"' ::: build:esm build:cjs build:browser - cache_upload bb.js-$hash.tar.gz dest build - fi +function copy_aztec_vm_sim_native { + local target_dir="aztec-vm-sim/build/$(arch)-$(os)" + mkdir -p "$target_dir" + cp "$ROOT/barretenberg/cpp/build/bin/$AZTEC_VM_SIM_BINARY" "$target_dir/$AZTEC_VM_SIM_BINARY" +} - # We copy snapshot dirs to dest so we can run tests from dest. - # This is because web-workers run into issues with transpilation. - for snapshot_dir in src/**/__snapshots__; do - dest_dir="${snapshot_dir/src\//dest\/node\/}" - rm -rf "$dest_dir" - cp -r "$snapshot_dir" "$dest_dir" - for file in $dest_dir/*.test.ts.snap; do - mv "$file" "${file/.test.ts.snap/.test.js.snap}" +function copy_aztec_vm_sim_cross { + if [ -n "${1:-}" ]; then + local cross_arch="$1" + mkdir -p "aztec-vm-sim/build/$cross_arch" + cp "$ROOT/barretenberg/cpp/build-$cross_arch/bin/$AZTEC_VM_SIM_BINARY" \ + "aztec-vm-sim/build/$cross_arch/$AZTEC_VM_SIM_BINARY" + elif semver check "${REF_NAME:-}" && [ "$(arch)" == "amd64" ]; then + for cross_arch in arm64-linux amd64-macos arm64-macos; do + mkdir -p "aztec-vm-sim/build/$cross_arch" + cp "$ROOT/barretenberg/cpp/build-$cross_arch/bin/$AZTEC_VM_SIM_BINARY" \ + "aztec-vm-sim/build/$cross_arch/$AZTEC_VM_SIM_BINARY" done - done + else + echo "This task is expected to be run with an explicit arch or in an x86 release context." + fi +} + +function prepare_aztec_vm_sim_arch_packages { + (cd aztec-vm-sim && ./scripts/prepare_arch_packages.sh "$@") +} + +function build_bb_js { + (cd bb.js && ./bootstrap.sh) +} + +function build_aztec_vm_sim { + echo_header "aztec-vm-sim package build" + generate_aztec_vm_sim_package + copy_aztec_vm_sim_native + npm_install_deps + yarn workspace "$AZTEC_VM_SIM_PACKAGE" build + prepare_aztec_vm_sim_arch_packages "$(arch)-$(os)=build/$(arch)-$(os)/$AZTEC_VM_SIM_BINARY" +} + +function build { + build_bb_js + build_aztec_vm_sim } function test_cmds { - cd dest/node - for test in **/*.test.js; do - # Skip benchmarks here. - [[ "$test" =~ \.bench\.test\.js$ ]] && continue - [[ "$test" == "bbapi/chonk_pinned_inputs.test.js" ]] && continue - - local prefix=$hash - # Extra resource. - if [[ "$test" =~ ^examples/ ]]; then - prefix="$prefix:CPUS=16" - fi - echo "$prefix barretenberg/ts/scripts/run_test.sh $test" - done - echo "$hash:CPUS=8:MEM=32g:TIMEOUT=20m barretenberg/cpp/scripts/chonk_inputs.sh download && barretenberg/ts/scripts/run_test.sh bbapi/chonk_pinned_inputs.test.js" + (cd bb.js && ./bootstrap.sh test_cmds) } function bench_cmds { - echo "$hash:CPUS=4 barretenberg/ts/scripts/run_test.sh poseidon.bench.test.js" + (cd bb.js && ./bootstrap.sh bench_cmds) } function test { - echo_header "bb.js test" - test_cmds | filter_test_cmds | parallelize + (cd bb.js && ./bootstrap.sh test) } -function release { - cross_copy - retry "deploy_npm ${REF_NAME#v}" +function cross_copy_bb_js { + (cd bb.js && ./bootstrap.sh cross_copy "$@") +} + +function cross_copy_aztec_vm_sim { + generate_aztec_vm_sim_package + copy_aztec_vm_sim_cross "$@" + npm_install_deps + yarn workspace "$AZTEC_VM_SIM_PACKAGE" build + prepare_aztec_vm_sim_arch_packages } function cross_copy { - ./scripts/copy_cross.sh "$@" + cross_copy_bb_js "$@" +} + +function get_projects { + echo "$PWD/bb.js" + if [ -d aztec-vm-sim ]; then + for package_dir in aztec-vm-sim/packages/*; do + [ -d "$package_dir" ] && echo "$PWD/$package_dir" + done + echo "$PWD/aztec-vm-sim" + fi } +function release_aztec_vm_sim { + generate_aztec_vm_sim_package + copy_aztec_vm_sim_native + copy_aztec_vm_sim_cross + npm_install_deps + yarn workspace "$AZTEC_VM_SIM_PACKAGE" build + prepare_aztec_vm_sim_arch_packages + for package_dir in aztec-vm-sim/packages/*; do + (cd "$package_dir" && retry "deploy_npm ${REF_NAME#v}") + done + (cd aztec-vm-sim && retry "deploy_npm ${REF_NAME#v}") +} + +function release { + (cd bb.js && ./bootstrap.sh release) + release_aztec_vm_sim +} + +export -f generate_aztec_vm_sim_package copy_aztec_vm_sim_native copy_aztec_vm_sim_cross +export -f build_bb_js build_aztec_vm_sim build cross_copy_bb_js cross_copy_aztec_vm_sim release + case "$cmd" in "") build diff --git a/barretenberg/ts/package.json b/barretenberg/ts/package.json index 671d34b7efc3..44a3fa9ea20b 100644 --- a/barretenberg/ts/package.json +++ b/barretenberg/ts/package.json @@ -1,100 +1,17 @@ { - "name": "@aztec/bb.js", + "name": "@aztec/barretenberg-ts-packages", "packageManager": "yarn@4.13.0", - "version": "0.1.0", - "homepage": "https://github.com/AztecProtocol/aztec-packages/tree/master/barretenberg/ts", - "license": "MIT", - "type": "module", - "types": "./dest/node/index.d.ts", - "exports": { - ".": { - "require": "./dest/node-cjs/index.js", - "browser": "./dest/browser/index.js", - "default": "./dest/node/index.js" - }, - "./platform": { - "default": "./dest/node/bb_backends/node/platform.js" - } - }, - "bin": { - "bb": "dest/node/bin/index.js" - }, - "files": [ - "src/", - "dest/", - "build/", - "README.md" - ], + "private": true, "scripts": { - "clean": "rm -rf ./dest .tsbuildinfo .tsbuildinfo.cjs ./src/cbind/generated", - "build": "yarn clean && yarn generate && yarn build:wasm && yarn build:native && yarn build:esm && yarn build:cjs && yarn build:browser", - "build:wasm": "./scripts/copy_wasm.sh", - "build:native": "./scripts/copy_native.sh", - "build:esm": "tsgo -b tsconfig.esm.json && chmod +x ./dest/node/bin/index.js", - "build:cjs": "tsgo -b tsconfig.cjs.json && ./scripts/cjs_postprocess.sh", - "build:browser": "tsgo -b tsconfig.browser.json && ./scripts/browser_postprocess.sh", - "generate": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 ts-node src/cbind/generate.ts", - "formatting": "prettier --check ./src && eslint --max-warnings 0 ./src", - "formatting:fix": "prettier -w ./src", - "test": "NODE_OPTIONS='--loader ts-node/esm' NODE_NO_WARNINGS=1 node --experimental-vm-modules $(yarn bin jest) --no-cache --passWithNoTests", - "test:chonk-inputs": "yarn test chonk_pinned_inputs", - "test:debug": "NODE_NO_WARNINGS=1 node --inspect-brk=0.0.0.0 --experimental-vm-modules ./node_modules/.bin/jest --no-cache --passWithNoTests --runInBand", - "simple_test": "NODE_NO_WARNINGS=1 node ./src/examples/simple.rawtest.ts", - "deploy": "npm publish --access public" + "build": "yarn workspaces foreach -A -p -v run build", + "clean": "yarn workspaces foreach -A -p -v run clean" }, - "jest": { - "preset": "ts-jest/presets/default-esm", - "transform": { - "^.+\\.tsx?$": [ - "@swc/jest", - { - "jsc": { - "parser": { - "syntax": "typescript", - "decorators": true - }, - "transform": { - "decoratorVersion": "2022-03" - } - } - } - ] - }, - "moduleNameMapper": { - "^(\\.{1,2}/.*)\\.js$": "$1" - }, - "extensionsToTreatAsEsm": [ - ".ts" - ], - "testRegex": "./src/.*\\.test\\.ts$", - "rootDir": "./src" - }, - "dependencies": { - "comlink": "^4.4.1", - "commander": "^12.1.0", - "idb-keyval": "^6.2.1", - "msgpackr": "^1.11.2", - "pako": "^2.1.0", - "tslib": "^2.4.0" - }, - "devDependencies": { - "@jest/globals": "^30.0.0", - "@swc/core": "^1.10.1", - "@swc/jest": "^0.2.37", - "@types/detect-node": "^2.0.0", - "@types/jest": "^30.0.0", - "@types/node": "^22.15.17", - "@types/pako": "^2.0.3", - "@types/source-map-support": "^0.5.6", - "@typescript/native-preview": "7.0.0-dev.20251126.1", - "eslint": "^9.26.0", - "eslint-config-prettier": "^10.1.5", - "jest": "^30.0.0", - "prettier": "^3.5.3", - "ts-jest": "^29.4.0", - "ts-loader": "^9.4.2", - "ts-node": "^10.9.1", - "typescript": "^5.3.3", - "typescript-eslint": "^8.32.1" + "workspaces": [ + "bb.js", + "aztec-vm-sim", + "aztec-vm-sim/packages/*" + ], + "resolutions": { + "@aztec/ipc-runtime": "portal:../../ipc-runtime/ts" } } diff --git a/barretenberg/ts/yarn.lock b/barretenberg/ts/yarn.lock index a8d5df09b9cc..a8ca56cef919 100644 --- a/barretenberg/ts/yarn.lock +++ b/barretenberg/ts/yarn.lock @@ -5,9 +5,66 @@ __metadata: version: 8 cacheKey: 10 -"@aztec/bb.js@workspace:.": +"@aztec/aztec-vm-sim-darwin-arm64@npm:0.1.0, @aztec/aztec-vm-sim-darwin-arm64@workspace:aztec-vm-sim/packages/aztec-vm-sim-darwin-arm64": version: 0.0.0-use.local - resolution: "@aztec/bb.js@workspace:." + resolution: "@aztec/aztec-vm-sim-darwin-arm64@workspace:aztec-vm-sim/packages/aztec-vm-sim-darwin-arm64" + languageName: unknown + linkType: soft + +"@aztec/aztec-vm-sim-darwin-x64@npm:0.1.0, @aztec/aztec-vm-sim-darwin-x64@workspace:aztec-vm-sim/packages/aztec-vm-sim-darwin-x64": + version: 0.0.0-use.local + resolution: "@aztec/aztec-vm-sim-darwin-x64@workspace:aztec-vm-sim/packages/aztec-vm-sim-darwin-x64" + languageName: unknown + linkType: soft + +"@aztec/aztec-vm-sim-linux-arm64@npm:0.1.0, @aztec/aztec-vm-sim-linux-arm64@workspace:aztec-vm-sim/packages/aztec-vm-sim-linux-arm64": + version: 0.0.0-use.local + resolution: "@aztec/aztec-vm-sim-linux-arm64@workspace:aztec-vm-sim/packages/aztec-vm-sim-linux-arm64" + languageName: unknown + linkType: soft + +"@aztec/aztec-vm-sim-linux-x64@npm:0.1.0, @aztec/aztec-vm-sim-linux-x64@workspace:aztec-vm-sim/packages/aztec-vm-sim-linux-x64": + version: 0.0.0-use.local + resolution: "@aztec/aztec-vm-sim-linux-x64@workspace:aztec-vm-sim/packages/aztec-vm-sim-linux-x64" + languageName: unknown + linkType: soft + +"@aztec/aztec-vm-sim@workspace:aztec-vm-sim": + version: 0.0.0-use.local + resolution: "@aztec/aztec-vm-sim@workspace:aztec-vm-sim" + dependencies: + "@aztec/aztec-vm-sim-darwin-arm64": "npm:0.1.0" + "@aztec/aztec-vm-sim-darwin-x64": "npm:0.1.0" + "@aztec/aztec-vm-sim-linux-arm64": "npm:0.1.0" + "@aztec/aztec-vm-sim-linux-x64": "npm:0.1.0" + "@aztec/ipc-runtime": "@aztec/ipc-runtime" + "@types/node": "npm:^22.15.17" + msgpackr: "npm:^1.11.2" + tslib: "npm:^2.4.0" + typescript: "npm:^5.3.3" + dependenciesMeta: + "@aztec/aztec-vm-sim-darwin-arm64": + optional: true + "@aztec/aztec-vm-sim-darwin-x64": + optional: true + "@aztec/aztec-vm-sim-linux-arm64": + optional: true + "@aztec/aztec-vm-sim-linux-x64": + optional: true + bin: + aztec-vm-sim: ./dest/bin.js + languageName: unknown + linkType: soft + +"@aztec/barretenberg-ts-packages@workspace:.": + version: 0.0.0-use.local + resolution: "@aztec/barretenberg-ts-packages@workspace:." + languageName: unknown + linkType: soft + +"@aztec/bb.js@workspace:bb.js": + version: 0.0.0-use.local + resolution: "@aztec/bb.js@workspace:bb.js" dependencies: "@jest/globals": "npm:^30.0.0" "@swc/core": "npm:^1.10.1" @@ -38,6 +95,12 @@ __metadata: languageName: unknown linkType: soft +"@aztec/ipc-runtime@portal:../../ipc-runtime/ts::locator=%40aztec%2Fbarretenberg-ts-packages%40workspace%3A.": + version: 0.0.0-use.local + resolution: "@aztec/ipc-runtime@portal:../../ipc-runtime/ts::locator=%40aztec%2Fbarretenberg-ts-packages%40workspace%3A." + languageName: node + linkType: soft + "@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.27.1": version: 7.27.1 resolution: "@babel/code-frame@npm:7.27.1" diff --git a/boxes/package.json b/boxes/package.json index d31ef6f4d84a..f29c43c36719 100644 --- a/boxes/package.json +++ b/boxes/package.json @@ -17,7 +17,7 @@ "@aztec/stdlib": "link:../yarn-project/stdlib", "@aztec/entrypoints": "link:../yarn-project/entrypoints", "@aztec/foundation": "link:../yarn-project/foundation", - "@aztec/bb.js": "link:../barretenberg/ts", + "@aztec/bb.js": "link:../barretenberg/ts/bb.js", "@aztec/key-store": "link:../yarn-project/key-store", "@aztec/kv-store": "link:../yarn-project/kv-store", "@aztec/pxe": "link:../yarn-project/pxe", diff --git a/docs/examples/ts/bootstrap.sh b/docs/examples/ts/bootstrap.sh index 302614922013..3dada0594222 100755 --- a/docs/examples/ts/bootstrap.sh +++ b/docs/examples/ts/bootstrap.sh @@ -209,9 +209,22 @@ validate_project() { # Verify explicit link packages for dep in "${explicit_link_deps[@]}"; do - # Extract path from @aztec/pkg@link:$REPO_ROOT/path format - local link_target="${dep#*@link:}" - local pkg_name="${dep%%@link:*}" + local link_target + local pkg_name + case "$dep" in + *@link:*) + link_target="${dep#*@link:}" + pkg_name="${dep%%@link:*}" + ;; + *@portal:*) + link_target="${dep#*@portal:}" + pkg_name="${dep%%@portal:*}" + ;; + *) + echo_stderr "ERROR: Unsupported explicit dependency spec: $dep" + return 1 + ;; + esac if [ ! -d "$link_target" ]; then echo_stderr "ERROR: Link target does not exist: $link_target" diff --git a/docs/examples/ts/lib.sh b/docs/examples/ts/lib.sh index 03039d94befa..530571567b6d 100644 --- a/docs/examples/ts/lib.sh +++ b/docs/examples/ts/lib.sh @@ -7,7 +7,8 @@ # Reads a config.yaml via yq and classifies each dependency entry into one of # three global arrays: # AZTEC_DEPS — @aztec/* packages resolved to pkg@link:/yarn-project/ -# EXPLICIT_LINK_DEPS — link: packages resolved to pkg@link:/ +# EXPLICIT_LINK_DEPS — link:/portal: packages resolved to pkg@link:/ +# or pkg@portal:/ # NPM_DEPS — npm: packages (bare names, e.g. viem) # # Also sets PARSED_DEPS_FOUND to "true" if any dependency was found, "false" otherwise. @@ -36,8 +37,16 @@ parse_dependencies() { # External package: npm:viem -> viem local npm_pkg="${pkg#npm:}" NPM_DEPS+=("$npm_pkg") + elif [[ "$pkg" =~ ^portal: ]]; then + # Explicit portal: + # portal:@aztec/bb.js:barretenberg/ts/bb.js -> @aztec/bb.js@portal:$repo_root/barretenberg/ts/bb.js + local portal_spec="${pkg#portal:}" + local portal_pkg_name="${portal_spec%%:*}" + local portal_path="${portal_spec#*:}" + EXPLICIT_LINK_DEPS+=("${portal_pkg_name}@portal:${repo_root}/${portal_path}") elif [[ "$pkg" =~ ^link: ]]; then - # Explicit link: link:@aztec/bb.js:barretenberg/ts -> @aztec/bb.js@link:$repo_root/barretenberg/ts + # Explicit link: + # link:@aztec/bb.js:barretenberg/ts/bb.js -> @aztec/bb.js@link:$repo_root/barretenberg/ts/bb.js local link_spec="${pkg#link:}" local link_pkg_name="${link_spec%%:*}" local link_path="${link_spec#*:}" diff --git a/docs/examples/ts/recursive_verification/config.yaml b/docs/examples/ts/recursive_verification/config.yaml index 4dc77737fb34..ba02de1ded67 100644 --- a/docs/examples/ts/recursive_verification/config.yaml +++ b/docs/examples/ts/recursive_verification/config.yaml @@ -10,7 +10,8 @@ contracts: # Dependencies: # - @aztec/* packages are auto-linked from yarn-project/ -# - Use link:path for packages outside yarn-project/ +# - Use portal:package:path for packages outside yarn-project that need their own package dependencies +# - Use link:package:path for local packages whose transitive dependencies are listed explicitly # - Use npm:package-name for external npm packages dependencies: - "@aztec/aztec.js" @@ -20,7 +21,7 @@ dependencies: - "@aztec/pxe" - "@aztec/noir-contracts.js" # Packages outside yarn-project/ - use explicit link paths - - "link:@aztec/bb.js:barretenberg/ts" + - "portal:@aztec/bb.js:barretenberg/ts/bb.js" - "link:@aztec/noir-noir_js:noir/packages/noir_js" # Transitive dependencies of @aztec/noir-noir_js - "link:@aztec/noir-acvm_js:noir/packages/acvm_js" diff --git a/ipc-codegen/src/typescript_package_codegen.ts b/ipc-codegen/src/typescript_package_codegen.ts index 1b4a6065a077..1fb893bc2f96 100644 --- a/ipc-codegen/src/typescript_package_codegen.ts +++ b/ipc-codegen/src/typescript_package_codegen.ts @@ -229,9 +229,12 @@ class SpawnedBackend implements IpcClientAsync { private exitPromise: Promise, private logPath: string | undefined, ) { - // Detect unexpected server death. Over SHM there is no connection to break, +${supportsShm + ? ` // Detect unexpected server death. Over SHM there is no connection to break, // so without this an in-flight call waits forever for a reply that will - // never arrive. Reject in-flight calls and point at the log file. + // never arrive. Reject in-flight calls and point at the log file.` + : ` // Detect unexpected server death and reject in-flight calls with the + // child log path included in the error.`} this.child.on('exit', (code, signal) => { if (this.destroying) { return; @@ -253,9 +256,13 @@ class SpawnedBackend implements IpcClientAsync { const transport = options.transport ?? '${defaultTransport}'; const instanceId = '${toSnakeCase(prefix)}-' + process.pid + '-' + threadId + '-' + instanceCounter++; - const ipcPath = transport === 'shm' + const ipcPath = ${ + supportsShm + ? `transport === 'shm' ? instanceId + '.shm' - : join(tmpdir(), instanceId + '.sock'); + : join(tmpdir(), instanceId + '.sock')` + : `join(tmpdir(), instanceId + '.sock')` + }; if (transport === 'uds' && existsSync(ipcPath)) { unlinkSync(ipcPath); @@ -370,7 +377,7 @@ function cleanupIpcPath(ipcPath: string, transport: ${serviceTransport}) { if (transport === 'uds' && existsSync(ipcPath)) { unlinkSync(ipcPath); } - if (transport === 'shm') { +${supportsShm ? ` if (transport === 'shm') { const shmName = ipcPath.replace(/\\.shm$/, ''); for (const suffix of ['_request', '_response']) { const shmPath = '/dev/shm/' + shmName + suffix; @@ -379,6 +386,7 @@ function cleanupIpcPath(ipcPath: string, transport: ${serviceTransport}) { } } } +` : ""} } catch {} } diff --git a/playground/vite.config.ts b/playground/vite.config.ts index fc929320eaec..92db8bf0c30f 100644 --- a/playground/vite.config.ts +++ b/playground/vite.config.ts @@ -120,7 +120,7 @@ export default defineConfig(({ mode }) => { '../yarn-project/noir-protocol-circuits-types/artifacts', '../noir/packages/noirc_abi/web', '../noir/packages/acvm_js/web', - '../barretenberg/ts/dest/browser', + '../barretenberg/ts/bb.js/dest/browser', ], }, }, @@ -157,9 +157,11 @@ export default defineConfig(({ mode }) => { // greatly needed here. // - Dec 2025: bumped from 4500 --> 4600 as SimpleToken grew a bit again. // PR: https://github.com/AztecProtocol/aztec-packages/pull/18815 + // - 2026-06-18: bumped from 4600 => 4700 after rebuilding the bb.js browser package at its new + // barretenberg/ts/bb.js path produced assets/barretenberg-*.js at 4641.65 KB. { pattern: /.*/, - maxSizeKB: 4600, + maxSizeKB: 4700, description: 'Detect if json artifacts or bb.js wasm get out of control', }, ]), diff --git a/release-image/Dockerfile.base.dockerignore b/release-image/Dockerfile.base.dockerignore index 41ce460a73b8..a14772326d6d 100644 --- a/release-image/Dockerfile.base.dockerignore +++ b/release-image/Dockerfile.base.dockerignore @@ -1,6 +1,8 @@ * # These are copied in so we can perform a "production dependency install" in the release base image. -!/barretenberg/ts/package.json +!/barretenberg/ts/bb.js/package.json +!/barretenberg/ts/aztec-vm-sim/package.json +!/barretenberg/ts/aztec-vm-sim/packages/*/package.json !/noir/packages/*/package.json !/wsdb/ts/package.json !/wsdb/ts/packages/*/package.json diff --git a/release-image/Dockerfile.dockerignore b/release-image/Dockerfile.dockerignore index 52894396ab80..b0b8db344041 100644 --- a/release-image/Dockerfile.dockerignore +++ b/release-image/Dockerfile.dockerignore @@ -2,9 +2,13 @@ * !/.release-please-manifest.json !/barretenberg/cpp/build/bin/bb-avm -!/barretenberg/ts/dest/ -!/barretenberg/ts/build/ -!/barretenberg/ts/package.json +!/barretenberg/ts/bb.js/dest/ +!/barretenberg/ts/bb.js/build/ +!/barretenberg/ts/bb.js/package.json +!/barretenberg/ts/aztec-vm-sim/dest/ +!/barretenberg/ts/aztec-vm-sim/build/ +!/barretenberg/ts/aztec-vm-sim/package.json +!/barretenberg/ts/aztec-vm-sim/packages/ !/ipc-runtime/ts/dest/ !/ipc-runtime/ts/package.json !/wsdb/ts/dest/ diff --git a/release-image/bootstrap.sh b/release-image/bootstrap.sh index 1c43f01b8efc..8ca6698f3c4d 100755 --- a/release-image/bootstrap.sh +++ b/release-image/bootstrap.sh @@ -3,7 +3,8 @@ source $(git rev-parse --show-toplevel)/ci3/source_bootstrap hash=$(hash_str \ $(cache_content_hash ^release-image/Dockerfile ^release-image/Dockerfile.base.dockerignore ^release-image/Dockerfile.dockerignore ^build-images/src/Dockerfile ^ipc-runtime/ts/package.json ^yarn-project/yarn.lock) \ - $(../wsdb/bootstrap.sh hash)) + $(../wsdb/bootstrap.sh hash) \ + $(../barretenberg/ts/bootstrap.sh hash)) function prepare_crs { echo_header "prepare crs for prover-agent image" diff --git a/yarn-project/aztec/package.json b/yarn-project/aztec/package.json index 849438b01ac9..de6131cba91d 100644 --- a/yarn-project/aztec/package.json +++ b/yarn-project/aztec/package.json @@ -33,7 +33,7 @@ "@aztec/aztec-node": "workspace:^", "@aztec/aztec.js": "workspace:^", "@aztec/bb-prover": "workspace:^", - "@aztec/bb.js": "portal:../../barretenberg/ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@aztec/blob-client": "workspace:^", "@aztec/bot": "workspace:^", "@aztec/builder": "workspace:^", diff --git a/yarn-project/bb-prover/package.json b/yarn-project/bb-prover/package.json index c981776719d0..ddb3396cf5cd 100644 --- a/yarn-project/bb-prover/package.json +++ b/yarn-project/bb-prover/package.json @@ -70,7 +70,7 @@ ] }, "dependencies": { - "@aztec/bb.js": "portal:../../barretenberg/ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@aztec/constants": "workspace:^", "@aztec/foundation": "workspace:^", "@aztec/noir-noirc_abi": "portal:../../noir/packages/noirc_abi", diff --git a/yarn-project/foundation/package.json b/yarn-project/foundation/package.json index be856d8324ba..aef5e36471e4 100644 --- a/yarn-project/foundation/package.json +++ b/yarn-project/foundation/package.json @@ -146,7 +146,7 @@ "testEnvironment": "../../foundation/src/jest/env.mjs" }, "dependencies": { - "@aztec/bb.js": "portal:../../barretenberg/ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@koa/cors": "^5.0.0", "@noble/curves": "=1.7.0", "@noble/hashes": "^1.6.1", diff --git a/yarn-project/ivc-integration/package.json b/yarn-project/ivc-integration/package.json index 440564d7fc67..5e9ea2991303 100644 --- a/yarn-project/ivc-integration/package.json +++ b/yarn-project/ivc-integration/package.json @@ -59,7 +59,7 @@ ] }, "dependencies": { - "@aztec/bb.js": "../../ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@aztec/constants": "workspace:^", "@aztec/foundation": "workspace:^", "@aztec/noir-noir_codegen": "portal:../../noir/packages/noir_codegen", diff --git a/yarn-project/package.json b/yarn-project/package.json index 9941d109e1eb..7b9c0dff2589 100644 --- a/yarn-project/package.json +++ b/yarn-project/package.json @@ -85,7 +85,7 @@ "typescript": "^5.3.3" }, "resolutions": { - "@aztec/bb.js": "portal:../barretenberg/ts", + "@aztec/bb.js": "portal:../barretenberg/ts/bb.js", "@aztec/ipc-runtime": "portal:../ipc-runtime/ts", "@aztec/wsdb": "portal:../wsdb/ts", "@aztec/wsdb-darwin-arm64": "portal:../wsdb/ts/packages/wsdb-darwin-arm64", diff --git a/yarn-project/pxe/package.json b/yarn-project/pxe/package.json index 1aa1045bd898..0193e66d3613 100644 --- a/yarn-project/pxe/package.json +++ b/yarn-project/pxe/package.json @@ -72,7 +72,7 @@ }, "dependencies": { "@aztec/bb-prover": "workspace:^", - "@aztec/bb.js": "portal:../../barretenberg/ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@aztec/builder": "workspace:^", "@aztec/constants": "workspace:^", "@aztec/ethereum": "workspace:^", diff --git a/yarn-project/stdlib/package.json b/yarn-project/stdlib/package.json index d8f872a45910..e8b016039d57 100644 --- a/yarn-project/stdlib/package.json +++ b/yarn-project/stdlib/package.json @@ -92,7 +92,7 @@ }, "dependencies": { "@aws-sdk/client-s3": "^3.892.0", - "@aztec/bb.js": "portal:../../barretenberg/ts", + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js", "@aztec/blob-lib": "workspace:^", "@aztec/constants": "workspace:^", "@aztec/ethereum": "workspace:^", diff --git a/yarn-project/yarn.lock b/yarn-project/yarn.lock index b0fe68e6ece5..d403a6170bee 100644 --- a/yarn-project/yarn.lock +++ b/yarn-project/yarn.lock @@ -859,7 +859,7 @@ __metadata: "@aztec/aztec-node": "workspace:^" "@aztec/aztec.js": "workspace:^" "@aztec/bb-prover": "workspace:^" - "@aztec/bb.js": "portal:../../barretenberg/ts" + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@aztec/blob-client": "workspace:^" "@aztec/bot": "workspace:^" "@aztec/builder": "workspace:^" @@ -911,7 +911,7 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/bb-prover@workspace:bb-prover" dependencies: - "@aztec/bb.js": "portal:../../barretenberg/ts" + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@aztec/constants": "workspace:^" "@aztec/ethereum": "workspace:^" "@aztec/foundation": "workspace:^" @@ -946,9 +946,9 @@ __metadata: languageName: unknown linkType: soft -"@aztec/bb.js@portal:../barretenberg/ts::locator=%40aztec%2Faztec3-packages%40workspace%3A.": +"@aztec/bb.js@portal:../barretenberg/ts/bb.js::locator=%40aztec%2Faztec3-packages%40workspace%3A.": version: 0.0.0-use.local - resolution: "@aztec/bb.js@portal:../barretenberg/ts::locator=%40aztec%2Faztec3-packages%40workspace%3A." + resolution: "@aztec/bb.js@portal:../barretenberg/ts/bb.js::locator=%40aztec%2Faztec3-packages%40workspace%3A." dependencies: comlink: "npm:^4.4.1" commander: "npm:^12.1.0" @@ -1356,7 +1356,7 @@ __metadata: version: 0.0.0-use.local resolution: "@aztec/foundation@workspace:foundation" dependencies: - "@aztec/bb.js": "portal:../../barretenberg/ts" + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@jest/globals": "npm:^30.0.0" "@koa/cors": "npm:^5.0.0" "@libp2p/interface": "npm:1.3.1" @@ -1423,7 +1423,7 @@ __metadata: resolution: "@aztec/ivc-integration@workspace:ivc-integration" dependencies: "@aztec/bb-prover": "workspace:^" - "@aztec/bb.js": ../../ts + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@aztec/constants": "workspace:^" "@aztec/foundation": "workspace:^" "@aztec/kv-store": "workspace:^" @@ -1890,7 +1890,7 @@ __metadata: resolution: "@aztec/pxe@workspace:pxe" dependencies: "@aztec/bb-prover": "workspace:^" - "@aztec/bb.js": "portal:../../barretenberg/ts" + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@aztec/builder": "workspace:^" "@aztec/constants": "workspace:^" "@aztec/ethereum": "workspace:^" @@ -2103,7 +2103,7 @@ __metadata: resolution: "@aztec/stdlib@workspace:stdlib" dependencies: "@aws-sdk/client-s3": "npm:^3.892.0" - "@aztec/bb.js": "portal:../../barretenberg/ts" + "@aztec/bb.js": "portal:../../barretenberg/ts/bb.js" "@aztec/blob-lib": "workspace:^" "@aztec/constants": "workspace:^" "@aztec/ethereum": "workspace:^"