Sitelet https://github.com/zkmopro/mopro/pull/641
Skip to content

Mopro wasm refactor 2 - #641

Merged
vivianjeng merged 18 commits into
mainfrom
mopro-wasm-refactor-2
Dec 22, 2025
Merged

vivianjeng merged 18 commits into
mainfrom
mopro-wasm-refactor-2

Conversation

@vivianjeng

@vivianjeng vivianjeng commented Dec 18, 2025 •

Copy link
Copy Markdown
Member

close #575

- Added new `wasm_setup!` macro for WebAssembly initialization in `lib.rs`.
- Introduced a new `web` module in `app_config` for WebAssembly-specific build logic.
- Updated `Cargo.toml` files to include necessary dependencies for WebAssembly.
- Removed unused binaries and streamlined workspace members in `Cargo.toml`.
- Added new test binaries for Android, iOS, Flutter, React Native, and Web platforms.
- Improved error handling in the WebAssembly build process.

This update enhances the overall support for WebAssembly in the project, allowing for better integration and functionality.
- Updated the WebPlatform builder to include the `--features wasm` flag for enhanced WebAssembly support.
- Modified the `mopro_wasm_hello_world` function to conditionally compile with `wasm_bindgen` for better integration with WebAssembly targets.

This change improves the build process for WebAssembly, ensuring that the necessary features are enabled during compilation.
- Removed unnecessary dependencies from `Cargo.toml` for the tests.
- Updated `lib.rs` to conditionally expose WebAssembly-related features based on the target architecture.
- Enhanced the `wasm_setup!` macro to improve WebAssembly initialization.

This refactor simplifies the project structure and improves the handling of WebAssembly features.
- Added new dependencies for WebAssembly features in `Cargo.lock`.
- Updated build scripts to conditionally compile WebAssembly-related functions.
- Removed obsolete `write_toml` module and streamlined project structure.
- Introduced new test cases for Halo2 proof generation and verification in WebAssembly.
- Improved error handling and build configuration for WebAssembly targets.

This update significantly enhances the WebAssembly capabilities of the project, ensuring better integration and functionality.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Dec 18, 2025 •

Copy link
Copy Markdown

Deploying mopro with  Cloudflare Pages  Cloudflare Pages

Latest commit: 75ead97
Status: ✅  Deploy successful!
Preview URL: https://48acb991.mopro.pages.dev
Branch Preview URL: https://mopro-wasm-refactor-2.mopro.pages.dev

View logs

- Changed the `wasm-pack test` command in the build workflow to use `--features wasm` instead of `--all-features` for better control over feature selection during testing.
- Updated the `.cargo/config.toml` to specify the unstable build standard for WebAssembly, ensuring compatibility with the latest Rust features.

This update enhances the testing process for WebAssembly, allowing for more targeted feature testing and improved build configuration.
@vivianjeng
vivianjeng force-pushed the mopro-wasm-refactor-2 branch from a20de85 to 0ee9425 Compare December 18, 2025 08:44
…ting

- Added `rustup default stable` command to ensure the stable Rust toolchain is used during the build process.
- Modified the `wasm-pack test` command to use `--all-features` for comprehensive feature testing in the WebAssembly environment.

These changes enhance the build and testing workflow, ensuring compatibility with the latest Rust features and improving the testing process for WebAssembly.
- Removed the `rustup default stable` command from the build workflow to streamline the setup.
- Updated the `install_uniffi_bindgen_react_native` function to use the current working directory for cloning and installing the `uniffi-bindgen-react-native` repository, enhancing path handling and clarity.
- Simplified the removal of the cloned directory by using the current path.

These changes improve the installation process for React Native bindings, ensuring better path management and reducing potential errors during setup.
…nfiguration

- Modified the configuration to specify the unstable build standard for WebAssembly.
- Updated the `wasm32-unknown-unknown` target to include a runner command for testing with `wasm-pack`.
- Enhanced rustflags for better performance and memory management in WebAssembly builds.

These changes streamline the build process for WebAssembly, ensuring better compatibility and testing capabilities.
- Replaced manual command execution for the Web platform with a dedicated function call to `build_from_str_arch`.
- Improved code clarity and maintainability by utilizing the new `WebPlatform` constant.

These changes enhance the build process for the Web platform, ensuring a more efficient and organized approach.
- Changed the workflow to run exclusively on `ubuntu-latest`, removing the matrix strategy for OS.
- This simplifies the build process and ensures consistent testing across environments.

These changes enhance the reliability of the build and test process by standardizing the operating system used.
…obsolete wasm components

- Changed the build mode from debug to release for the Web platform in the GitHub Actions workflow.
- Removed the mopro-wasm library and its associated files, including README, configuration, and source code, to streamline the project.
- Updated the mopro-ffi README to include information about compiling wasm code for supported proving systems.

These changes enhance the build process for the Web platform and simplify the project structure by eliminating unused components.
… related components

- Updated several dependencies in `Cargo.lock` to their latest versions, including `addr2line`, `backtrace`, `gimli`, `indexmap`, and `object`, ensuring improved performance and security.
- Removed obsolete references to `mopro-wasm` in the README and updated sections to clarify the focus on `mopro-ffi`.
- Streamlined the testing instructions and improved clarity in the documentation for various platforms, including iOS, Android, Flutter, and React Native.
- Adjusted the build-and-test workflow by removing the `test-ffi-all` job to simplify the CI process.

These changes enhance the overall project structure, improve dependency management, and provide clearer documentation for users.
…ebAssembly setup

- Removed the `mopro-wasm` entry from the sidebars and deleted the associated `mopro-wasm.mdx` file to streamline documentation.
- Updated the `web-wasm-setup.md` to reflect changes in the build process, including the removal of `mopro-wasm-lib` and adjustments to the instructions for user-defined circuit implementations.
- Clarified the usage of `mopro-ffi` and modified code examples to enhance clarity for users.

These changes simplify the documentation and improve the focus on the current project structure, enhancing user experience.
@vivianjeng
vivianjeng marked this pull request as ready for review December 22, 2025 09:55
…ing usage

- Updated the `web-wasm-setup.md` to include detailed instructions on enabling multithreading with `wasm-bindgen-rayon` for Halo2.
- Added a new section on usage with WebAssembly, explaining the default behavior of Rayon and its impact on performance.
- Expanded the `mopro-ffi` README to reflect support for additional FFI tools, including `uniffi-bindgen-react-native`, and provided clearer instructions for building across various platforms.

These changes improve the clarity and usability of the documentation, ensuring users have the necessary information for effective WebAssembly integration.
…ncies

- Bumped the version of `mopro` and `mopro-ffi` to 0.3.3 in their respective `Cargo.toml` files.
- Updated the `Cargo.lock` to reflect the new version and adjusted dependencies accordingly.
- Enhanced the CLI README to clarify automation features and support for additional FFI tools.
- Modified dependency specifications in the `write_toml.rs` file to use versioning instead of git references for `mopro-ffi`.

These changes ensure consistency across the project and improve the clarity of documentation for users.
- Changed the dependency path for `mopro-ffi` in `cli/Cargo.toml` to point to the local path instead of a version.
- Updated `Cargo.lock` to remove versioning for `mopro-ffi`, ensuring consistency with the new local path specification.

These changes streamline the dependency management for the project, facilitating local development.
@vivianjeng
vivianjeng merged commit 02ed75e into main Dec 22, 2025
47 of 49 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor: move mopro-wasm to mopro-ffi and update the CLI

1 participant