From 5e6cdc0ffeb9d0c8f30e5373ae1c3895d9ac50ef Mon Sep 17 00:00:00 2001 From: Mikhail Volkhov Date: Tue, 19 Nov 2024 15:11:00 +0000 Subject: [PATCH 1/2] Add stub methods for lagrange_commitments_whole_domain --- src/lib/crypto/kimchi_bindings/js/bindings/srs.js | 11 ++++++++++- src/lib/crypto/kimchi_bindings/stubs/src/srs.rs | 4 ++-- src/lib/crypto/kimchi_bindings/wasm/src/srs.rs | 8 ++++++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/lib/crypto/kimchi_bindings/js/bindings/srs.js b/src/lib/crypto/kimchi_bindings/js/bindings/srs.js index d61480d422d..7c169915093 100644 --- a/src/lib/crypto/kimchi_bindings/js/bindings/srs.js +++ b/src/lib/crypto/kimchi_bindings/js/bindings/srs.js @@ -1,4 +1,4 @@ -/* global plonk_wasm, caml_jsstring_of_string, +/* global plonk_wasm, caml_jsstring_of_string, tsBindings, tsRustConversion */ @@ -39,6 +39,11 @@ var caml_fp_srs_read = function (offset, path) { } }; +// Provides: caml_fp_srs_lagrange_commitments_whole_domain +// Requires: tsSrs +var caml_fp_srs_lagrange_commitments_whole_domain = tsSrs.fp.lagrangeCommitmentsWholeDomain; + + // Provides: caml_fp_srs_lagrange_commitment // Requires: tsSrs var caml_fp_srs_lagrange_commitment = tsSrs.fp.lagrangeCommitment; @@ -130,6 +135,10 @@ var caml_fq_srs_read = function (offset, path) { } }; +// Provides: caml_fq_srs_lagrange_commitments_whole_domain +// Requires: tsSrs +var caml_fq_srs_lagrange_commitments_whole_domain = tsSrs.fq.lagrangeCommitmentsWholeDomain; + // Provides: caml_fq_srs_lagrange_commitment // Requires: tsSrs var caml_fq_srs_lagrange_commitment = tsSrs.fq.lagrangeCommitment; diff --git a/src/lib/crypto/kimchi_bindings/stubs/src/srs.rs b/src/lib/crypto/kimchi_bindings/stubs/src/srs.rs index 6269de0aa9d..4b2f7386a04 100644 --- a/src/lib/crypto/kimchi_bindings/stubs/src/srs.rs +++ b/src/lib/crypto/kimchi_bindings/stubs/src/srs.rs @@ -79,8 +79,8 @@ macro_rules! impl_srs { pub fn [<$name:snake _lagrange_commitments_whole_domain>]( srs: $name, domain_size: ocaml::Int, - ) -> Result>, ocaml::Error> { - Ok(srs.get_lagrange_basis_from_domain_size(domain_size as usize).clone().into_iter().map(|x| x.into()).collect()) + ) -> Vec> { + srs.get_lagrange_basis_from_domain_size(domain_size as usize).clone().into_iter().map(|x| x.into()).collect() } diff --git a/src/lib/crypto/kimchi_bindings/wasm/src/srs.rs b/src/lib/crypto/kimchi_bindings/wasm/src/srs.rs index 2b33c56d59f..4c5b09d9f05 100644 --- a/src/lib/crypto/kimchi_bindings/wasm/src/srs.rs +++ b/src/lib/crypto/kimchi_bindings/wasm/src/srs.rs @@ -124,6 +124,14 @@ macro_rules! impl_srs { Ok(Some(Arc::new(srs).into())) } + #[wasm_bindgen] + pub fn [<$name:snake _lagrange_commitments_whole_domain>]( + srs: &[], + domain_size: i32, + ) -> WasmVector<$WasmPolyComm> { + srs.get_lagrange_basis_from_domain_size(domain_size as usize).clone().into_iter().map(|x| x.into()).collect() + } + #[wasm_bindgen] pub fn [<$name:snake _lagrange_commitment>]( srs: &[], From a2b77b9d1826847cf72e48f60bce68b8be0a4df1 Mon Sep 17 00:00:00 2001 From: Mikhail Volkhov Date: Tue, 19 Nov 2024 19:56:16 +0000 Subject: [PATCH 2/2] Suppress improper_ctypes_definitions warnings --- src/lib/crypto/kimchi_bindings/wasm/src/projective.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/crypto/kimchi_bindings/wasm/src/projective.rs b/src/lib/crypto/kimchi_bindings/wasm/src/projective.rs index 63f524859e2..26b3655d62f 100644 --- a/src/lib/crypto/kimchi_bindings/wasm/src/projective.rs +++ b/src/lib/crypto/kimchi_bindings/wasm/src/projective.rs @@ -75,12 +75,18 @@ macro_rules! impl_projective { proj.into() } + // improper_ctypes_definitions is allowed here because the CamlBase/ScalarField struct + // already has #[repr(C)] in its definition + #[allow(improper_ctypes_definitions)] #[wasm_bindgen] pub extern "C" fn []() -> $CamlBaseField { let (endo_q, _endo_r) = poly_commitment::srs::endos::(); endo_q.into() } + // improper_ctypes_definitions is allowed here because the CamlBase/ScalarField struct + // already has #[repr(C)] in its definition + #[allow(improper_ctypes_definitions)] #[wasm_bindgen] pub extern "C" fn []() -> $CamlScalarField { let (_endo_q, endo_r) = poly_commitment::srs::endos::();