From 761125412e37dff22a3b4878a97b827db1567d3d Mon Sep 17 00:00:00 2001 From: Tom French Date: Wed, 3 Apr 2024 10:37:24 +0100 Subject: [PATCH 1/2] chore: remove conditional compilation around `acvm_js` package --- Cargo.lock | 2 +- acvm-repo/acvm_js/Cargo.toml | 3 -- acvm-repo/acvm_js/src/black_box_solvers.rs | 2 - acvm-repo/acvm_js/src/execute.rs | 2 +- acvm-repo/acvm_js/src/lib.rs | 47 ++++++++++------------ acvm-repo/bn254_blackbox_solver/Cargo.toml | 1 + acvm-repo/bn254_blackbox_solver/src/lib.rs | 13 ++++-- 7 files changed, 34 insertions(+), 36 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2f85b26f974..2371ef6df05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -93,7 +93,6 @@ dependencies = [ "acvm", "bn254_blackbox_solver", "build-data", - "cfg-if 1.0.0", "console_error_panic_hook", "const-str", "gloo-utils", @@ -606,6 +605,7 @@ dependencies = [ "acvm_blackbox_solver", "ark-ec", "ark-ff", + "cfg-if 1.0.0", "flate2", "getrandom 0.2.10", "js-sys", diff --git a/acvm-repo/acvm_js/Cargo.toml b/acvm-repo/acvm_js/Cargo.toml index 65c072b1d96..7300fa96a09 100644 --- a/acvm-repo/acvm_js/Cargo.toml +++ b/acvm-repo/acvm_js/Cargo.toml @@ -16,9 +16,6 @@ repository.workspace = true crate-type = ["cdylib"] [dependencies] -cfg-if = "1.0.0" - -[target.'cfg(target_arch = "wasm32")'.dependencies] acvm.workspace = true bn254_blackbox_solver = { workspace = true, optional = true } wasm-bindgen.workspace = true diff --git a/acvm-repo/acvm_js/src/black_box_solvers.rs b/acvm-repo/acvm_js/src/black_box_solvers.rs index fc0e3b28ebf..188e5334ed5 100644 --- a/acvm-repo/acvm_js/src/black_box_solvers.rs +++ b/acvm-repo/acvm_js/src/black_box_solvers.rs @@ -59,7 +59,6 @@ pub fn ecdsa_secp256k1_verify( signature, ) .unwrap() - .into() } /// Verifies a ECDSA signature over the secp256r1 curve. @@ -81,5 +80,4 @@ pub fn ecdsa_secp256r1_verify( signature, ) .unwrap() - .into() } diff --git a/acvm-repo/acvm_js/src/execute.rs b/acvm-repo/acvm_js/src/execute.rs index 60d27a489e2..4c23acea5db 100644 --- a/acvm-repo/acvm_js/src/execute.rs +++ b/acvm-repo/acvm_js/src/execute.rs @@ -106,7 +106,7 @@ pub async fn execute_circuit_with_black_box_solver( None => error.to_string(), }; - return Err(JsExecutionError::new(error_string.into(), call_stack).into()); + return Err(JsExecutionError::new(error_string, call_stack).into()); } ACVMStatus::RequiresForeignCall(foreign_call) => { let result = resolve_brillig(&foreign_call_handler, &foreign_call).await?; diff --git a/acvm-repo/acvm_js/src/lib.rs b/acvm-repo/acvm_js/src/lib.rs index 88afd1767c9..8ded77a4e22 100644 --- a/acvm-repo/acvm_js/src/lib.rs +++ b/acvm-repo/acvm_js/src/lib.rs @@ -1,31 +1,26 @@ -#![forbid(unsafe_code)] #![warn(unreachable_pub)] #![warn(clippy::semicolon_if_nothing_returned)] #![cfg_attr(not(test), warn(unused_crate_dependencies, unused_extern_crates))] -// TODO: Absence of per package targets -// https://doc.rust-lang.org/cargo/reference/unstable.html#per-package-target -// otherwise could be reorganized to make this file more pretty. +mod black_box_solvers; +mod build_info; +mod compression; +mod execute; +mod foreign_call; +mod js_execution_error; +mod js_witness_map; +mod logging; +mod public_witness; -cfg_if::cfg_if! { - if #[cfg(target_arch = "wasm32")] { - mod build_info; - mod compression; - mod execute; - mod foreign_call; - mod js_witness_map; - mod logging; - mod public_witness; - mod js_execution_error; - mod black_box_solvers; - - pub use black_box_solvers::{and, xor, sha256, blake2s256, keccak256, ecdsa_secp256k1_verify, ecdsa_secp256r1_verify}; - pub use build_info::build_info; - pub use compression::{compress_witness, decompress_witness}; - pub use execute::{execute_circuit, execute_circuit_with_black_box_solver, create_black_box_solver}; - pub use js_witness_map::JsWitnessMap; - pub use logging::init_log_level; - pub use public_witness::{get_public_parameters_witness, get_public_witness, get_return_witness}; - pub use js_execution_error::JsExecutionError; - } -} +pub use black_box_solvers::{ + and, blake2s256, ecdsa_secp256k1_verify, ecdsa_secp256r1_verify, keccak256, sha256, xor, +}; +pub use build_info::build_info; +pub use compression::{compress_witness, decompress_witness}; +pub use execute::{ + create_black_box_solver, execute_circuit, execute_circuit_with_black_box_solver, +}; +pub use js_execution_error::JsExecutionError; +pub use js_witness_map::JsWitnessMap; +pub use logging::init_log_level; +pub use public_witness::{get_public_parameters_witness, get_public_witness, get_return_witness}; diff --git a/acvm-repo/bn254_blackbox_solver/Cargo.toml b/acvm-repo/bn254_blackbox_solver/Cargo.toml index 396e4aa0146..8658c37420b 100644 --- a/acvm-repo/bn254_blackbox_solver/Cargo.toml +++ b/acvm-repo/bn254_blackbox_solver/Cargo.toml @@ -17,6 +17,7 @@ acir.workspace = true acvm_blackbox_solver.workspace = true thiserror.workspace = true num-traits.workspace = true +cfg-if = "1.0.0" rust-embed = { version = "6.6.0", features = [ "debug-embed", diff --git a/acvm-repo/bn254_blackbox_solver/src/lib.rs b/acvm-repo/bn254_blackbox_solver/src/lib.rs index be0e60ada96..231594170e3 100644 --- a/acvm-repo/bn254_blackbox_solver/src/lib.rs +++ b/acvm-repo/bn254_blackbox_solver/src/lib.rs @@ -20,10 +20,17 @@ pub struct Bn254BlackBoxSolver { } impl Bn254BlackBoxSolver { - #[cfg(target_arch = "wasm32")] pub async fn initialize() -> Bn254BlackBoxSolver { - let blackbox_vendor = Barretenberg::initialize().await; - Bn254BlackBoxSolver { blackbox_vendor } + // We fallback to the sync initialization of barretenberg on non-wasm targets. + // This ensures that wasm packages consuming this still build on the default target (useful for linting, etc.) + cfg_if::cfg_if! { + if #[cfg(target_arch = "wasm32")] { + let blackbox_vendor = Barretenberg::initialize().await; + Bn254BlackBoxSolver { blackbox_vendor } + } else { + Bn254BlackBoxSolver::new() + } + } } #[cfg(not(target_arch = "wasm32"))] From d65cd3b256d02cbeb61c77ed7036b8f4b97507cc Mon Sep 17 00:00:00 2001 From: Tom French Date: Wed, 3 Apr 2024 11:13:59 +0100 Subject: [PATCH 2/2] chore: move dep to workspace --- acvm-repo/acvm_js/Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/acvm-repo/acvm_js/Cargo.toml b/acvm-repo/acvm_js/Cargo.toml index 7300fa96a09..8319c38aee2 100644 --- a/acvm-repo/acvm_js/Cargo.toml +++ b/acvm-repo/acvm_js/Cargo.toml @@ -22,11 +22,11 @@ wasm-bindgen.workspace = true wasm-bindgen-futures.workspace = true console_error_panic_hook.workspace = true gloo-utils.workspace = true -js-sys.workspace = true +js-sys.workspace = true +serde.workspace = true tracing-subscriber.workspace = true tracing-web.workspace = true -serde = { version = "1.0.136", features = ["derive"] } const-str = "0.5.5" [build-dependencies]