feat(ipc): add /ipc-codegen and /ipc-runtime foundation packages#23610
Merged
Conversation
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
41fcedb to
0588ea3
Compare
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 28, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
This was referenced May 29, 2026
ffa4943 to
3e62454
Compare
charlielye
added a commit
that referenced
this pull request
May 29, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 29, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 29, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
3e62454 to
66e928d
Compare
charlielye
added a commit
that referenced
this pull request
May 29, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 29, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 29, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
charlielye
added a commit
that referenced
this pull request
May 29, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
charlielye
added a commit
that referenced
this pull request
May 29, 2026
…bb::ipc Last PR in the IPC migration stack (base: #23613 barretenberg-rs). Cuts bb.js's TS surface + its NAPI substrate over to the foundation packages (PR #23610). Two backends: - WASM (`bb_backends/wasm.ts`): uses `cbindCall('bbapi', bytes)` via WASM exports. The C++ side (in PR #23612) pipes bytes through codegen `make_bb_handler`. No TS-side changes — wire-compatible. - Native UDS / SHM (`bb_backends/node/native_socket.ts`): uses `UdsIpcClient` from `@aztec/ipc-runtime`. **TS**: - `barretenberg/ts/scripts/generate.sh`: regen script that calls `node ipc-codegen/src/generate.ts` for bb (TS + Rust bindings) and for aztec-wsdb (TS bindings). - `barretenberg/ts/src/cbind/`: codegen sources moved into `/ipc-codegen/src/` in PR #23610. The deletions land here. The generated/ subdir is gitignored and regenerated by the bb.js build. - `barretenberg/ts/src/bb_backends/node/native_socket.ts`: uses `UdsIpcClient` from `@aztec/ipc-runtime`. - `barretenberg/ts/package.json` / `yarn.lock`: depend on `@aztec/ipc-runtime`. - `barretenberg/ts/src/bbapi/chonk_pinned_inputs.test.ts` deleted (drift from the original stack rebase — referenced obsolete domain command types). **C++ NAPI substrate**: - `barretenberg/cpp/src/barretenberg/nodejs_module/msgpack_client/`: `msgpack_client_{wrapper,async}.{cpp,hpp}` use `ipc_runtime/ipc_client.hpp` for transport. - `barretenberg/cpp/src/barretenberg/nodejs_module/CMakeLists.txt`: link `ipc_runtime`. **Legacy ipc subdir gone**: - `barretenberg/cpp/src/barretenberg/ipc/` removed entirely. After this PR no consumer references `bb::ipc::` — every transport surface routes through `ipc::` from ipc-runtime. - Top-level `barretenberg/cpp/src/CMakeLists.txt`: drop the `add_subdirectory(barretenberg/ipc)` and the transitional comment about the legacy subdir. Verification: - `ninja bb aztec-wsdb bbapi_tests` clean (legacy bb::ipc gone) - `./bin/bbapi_tests` — 30/30 - `cd barretenberg/ts && yarn build && yarn test` - bb-prover e2e against migrated bb.js End state after the full 5-PR stack: - bb / wsdb servers route through codegen `make_<prefix>_handler` + `ipc::make_server` + `ipc::install_default_signal_handlers`. - bb.js / barretenberg-rs clients route through codegen-emitted typed surfaces over `ipc_runtime::IpcClient` (Rust) / `@aztec/ipc-runtime`'s `UdsIpcClient` (TS). - No `msgpack_roundtrip` at handler boundaries. - No parallel domain command types. - No hand-rolled UDS/SHM transport.
66e928d to
e6fa350
Compare
charlielye
added a commit
that referenced
this pull request
May 29, 2026
Cuts the aztec-wsdb service over to consume the foundation packages added in PR #23610. Wsdb_schema.json is the source of truth; the codegen emits `generated/wsdb_ipc_{client,server}.{hpp,cpp}` and `wsdb_types.hpp` on build (gitignored). Handlers operate on wire types directly with field-by-field conversion at the boundary — no msgpack_roundtrip. **C++ server**: - New: wsdb_handlers.{cpp,hpp}, wsdb_request.hpp, wsdb_wire_convert.hpp, wsdb_schema.json. Server uses `ipc::make_server`, `ipc::install_default_signal_handlers`, and the codegen-emitted `make_wsdb_handler` dispatcher. - Deleted: wsdb_commands.hpp, wsdb_execute.{cpp,hpp}, wsdb_ipc_client_generated.{cpp,hpp}. Replaced by codegen output and inline handler bodies. **C++ AVM client**: - wsdb_ipc_merkle_db.{cpp,hpp} moved from barretenberg/wsdb_client/ to barretenberg/vm2/simulation/dbs/ (next to its sibling DB implementations). Constructs the codegen-generated `WsdbIpcClient`. - barretenberg/wsdb_client/ dir removed. - vm2/CMakeLists.txt updated to link the wsdb_ipc_client target. - Top-level CMakeLists.txt drops add_subdirectory(barretenberg/wsdb_client). **TS codegen invocation**: - barretenberg/ts/src/aztec-wsdb/generate.ts deleted (codegen moved to /ipc-codegen in PR #23610). The wsdb_ipc_client generated by the C++ build is independent. **yarn-project**: - yarn-project/world-state/src/native/ipc_world_state_instance.ts deleted. Already orphaned on next (no importers); the AVM sibling stack re-adds it later after rebasing on top of this stack. **serialize/msgpack.hpp**: - Predefines `IPC_CODEGEN_USE_BB_MSGPACK_ADAPTORS` so codegen-emitted msgpack_struct_map_impl.hpp yields to barretenberg's existing struct-map adaptor. Without this, both adaptors specialize the same primary template for `SERIALIZATION_FIELDS`-bearing types → "ambiguous partial specializations" compile error. The legacy `barretenberg/cpp/src/barretenberg/ipc/` library (namespace `bb::ipc`) stays in place — bb, nodejs_module, and api still link it. Follow-up PRs migrate those consumers and the old subdir is deleted once nothing references it. Verification: - `cd barretenberg/cpp/build && ninja aztec-wsdb` clean - `./bin/aztec-wsdb msgpack schema` round-trips against wsdb_schema.json (pre-existing alias-vs-primitive mismatch in the committed JSON, not introduced here) - bb binary still builds (legacy ipc/ stays for now)
charlielye
added a commit
that referenced
this pull request
May 29, 2026
… PipeBackend Cuts the Rust crate over to consume the foundation packages (PR #23610). Schema = `bb_schema.json` (committed in PR #23612). The codegen emits `barretenberg-rs/src/generated/{bb_types,bb_client}.rs` on build; `backend.rs`, `error.rs`, `ffi_backend.rs` are template-copied once into the same dir. **Removed**: - `src/backend.rs` and `src/error.rs` (now codegen-emitted templates in `src/generated/`). - `src/types.rs` (replaced by codegen `bb_types.rs`). - `src/backends/ffi.rs` and `src/backends/pipe.rs` (the backends/ directory). The old `PipeBackend` (forked bb subprocess + stdin/stdout pipe transport) is gone in favor of `ipc_runtime::IpcClient` over UDS or SHM. The codegen-emitted `Backend` trait abstracts the transport; `impl Backend for ipc_runtime::IpcClient` lives in the runtime crate. **Modified**: - `Cargo.toml` / `bootstrap.sh` (depend on `ipc-runtime`). - `src/lib.rs` (re-exports updated for the codegen-emitted modules). - `src/fr_ext.rs` (new — extra constructors / accessors on the codegen `Fr` newtype that downstream callers rely on; kept as a separate impl block so `src/generated/bb_types.rs` stays a pure regen target). **Tests**: - `barretenberg/rust/tests/` updated: dropped legacy `blake2s.rs`, `pedersen.rs`, `poseidon.rs`, `utils.rs` and `pipe_test.rs` (the PipeBackend tests). The `ffi/` test modules now exercise the codegen `BbApi<ipc_runtime::IpcClient>` surface. Verification: - `BB_LIB_DIR=… cargo build --release` for `barretenberg-rs/` — clean. - `BB_LIB_DIR=… cargo build --features ffi --release --tests` for `tests/` — pre-existing test compile errors (120) match the stack tip; the schema-visitor change for `array<unsigned char, N != 32>` (now `[u8; N]` instead of `Vec<u8>`) rippled into the test source. Fixing the test crate is a follow-up. The crate's library surface (the part downstream consumers see) is green.
This was referenced Jun 10, 2026
ludamad
reviewed
Jun 10, 2026
ludamad
reviewed
Jun 10, 2026
ludamad
approved these changes
Jun 10, 2026
Collaborator
|
Looks good. I think I got your intent well, communicating via code works. It's a lot of 'well if it works...' stuff, so happy to approve and let you do the hard part |
Introduce ipc-runtime (msgpack-over-UDS/SHM transports for C++, TS, Rust, Zig) and ipc-codegen (schema-driven client/server/dispatch generator for the same four languages), plus the echo example and its cross-language wire-compat test matrix. Runtime: - UDS and shared-memory transports (single-client SPSC and multi-client MPSC rings) behind a common IpcClient/IpcServer interface, with NAPI bindings. - Unified constants and timeout semantics, max-frame guards, frame-desync detection, and shutdown/cancellation via futex wake (SHM) / fd close (UDS). - NAPI lifecycle hardening: clean close/join, no TSFN leak, the process exits when no calls are in flight. Codegen: - Human-authored JSONC schema format: a single per-service object (service/aliases/types/error/commands with shorthand type refs) that lowers to the internal named_union IR the four generators consume, so output is identical across the friendly and legacy positional forms. Naming derives from the 'service' field; aliases support bin32 (nominal) and scalar synonyms. - Generators hand-roll the [name, payload] msgpack framing keyed on MSGPACK_SCHEMA_NAME (no C++ schema reflection). - Schema validation, unified server error wrapping, and per-language wire fixes (rust Option<bytes>/[bytes;N], ts u64 bigint + bin32, zig signed-int tolerance), with a golden corpus pinning canonical msgpack output. Full echo test matrix (golden x4, UDS 4x4, SHM, ts_package) passes.
This was referenced Jun 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Foundation PR for the IPC migration stack. Adds the reusable IPC code generator and runtime packages used by the follow-up wsdb, bb, Rust, bb.js, and AVM cutover PRs.
This PR is intentionally additive for production consumers: it introduces the shared infrastructure, examples, and tests, but existing services are migrated in later PRs.
Stack
cl/ipc-foundation— this PRcl/ipc-wsdb-migratecl/ipc-bb-migratecl/ipc-bb-rs-migratecl/ipc-bb-js-migratecl/ipc-3-avm-wsdb-cutovercl/ipc-4-avm-binarycl/ipc-5-avm-cutoverWhat is added
/ipc-codegenSchema-driven multi-language codegen for msgpack-framed IPC clients and servers.
bin32for fixed-size 32-byte values instead of dynamic vectors.optionalDependencies; consumers install the wrapper and the package manager selects the matching arch package byos/cpu.ipc-codegen/echo_example/{cpp,rust,ts,zig,ts_package}with local build/bootstrap docs./ipc-runtimeShared transport/runtime implementation used by generated clients and servers.
@aztec/ipc-runtimefor UDS and NAPI SHM clients.Validation
ipc-codegen/bootstrap.shipc-runtime/bootstrap.sh./bootstrap.shpassed on this branch during stack validation.barretenberg/cppdiff relative toorigin/next; the barretenberg C++ integration lives in refactor(wsdb): migrate aztec-wsdb to ipc-codegen + ipc-runtime #23611.