Skip to content

Next#1

Open
JacobLinCool wants to merge 3 commits intomainfrom
next
Open

Next#1
JacobLinCool wants to merge 3 commits intomainfrom
next

Conversation

@JacobLinCool
Copy link
Copy Markdown
Member

This pull request makes significant updates to the project's CI/CD workflows, Docker build process, and dependency management to modernize, streamline, and improve maintainability. The most important changes include overhauling GitHub Actions workflows for CI, Docker, and release automation, updating the Dockerfile for better compatibility and efficiency, and refactoring the Cargo.toml to update dependencies and features.

CI/CD Workflow Improvements:

  • The .github/workflows/test.yml workflow is expanded and renamed to "CI", introducing separate jobs for formatting, linting, testing with different feature sets, code coverage, and benchmarking, providing more granular and thorough CI checks.
  • The .github/workflows/docker.yml workflow is modernized to support building and publishing Docker images on both branch pushes and tags, with updated actions and metadata handling for multi-platform builds.
  • The .github/workflows/release.yml workflow is restructured to build release artifacts for multiple platforms in parallel, upload them as build artifacts, and then publish them as GitHub release assets, replacing the previous approach with more maintainable and flexible steps.

Dependency and Build System Updates:

  • The Cargo.toml is refactored to update dependency versions, introduce target-specific dependencies for native and WASM builds, define new features (such as web), and add development dependencies for testing and benchmarking. Several dependencies are updated to newer versions, and some are replaced or made optional for better modularity.
  • The minimum Rust version is now explicitly set to 1.93 in Cargo.toml.

Dockerfile Modernization:

  • The Dockerfile is rewritten to use rust:1-bookworm and debian:bookworm-slim for the build and runtime stages, respectively, replacing Alpine Linux and improving compatibility with dependencies. The build process is updated to use locked dependencies and the default binary path, and the entrypoint is simplified.

General Improvements:

  • All workflows now explicitly set permissions and environments for improved security and reproducibility [1] [2].

These changes collectively modernize the project's infrastructure, improve CI reliability, and make builds and releases more robust and maintainable.

Revamp GitHub Actions and CI: update docker, release and test workflows to newer actions (checkout v4, buildx/metadata, rust toolchain, etc.), add multi-platform Docker build and improved release matrix with artifact upload, and introduce separate jobs for fmt, clippy, tests, coverage and benchmarks. Add new benchmarks, test suites and a bench script (benches/runtime.rs, scripts/bench.sh, tests/*), update Dockerfile, Cargo.toml and various src modules (including removal of src/random.rs) and other minor code/README adjustments to support the updated CI and release process.
Replace the previous cost middleware with a new meter implementation and add first-class WASM/web support. Removed src/cost.rs and introduced src/meter.rs which instruments WASM with fvm-wasm-instrument and a weighted opcode cost table; it exposes meter state and an instrument_wasm helper. Add web-specific runtime modules and shims (new run/web*.rs and src/web.rs) and adapt run.rs to support native and wasm targets. Cargo.toml: add a `web` feature, make wasm-bindgen/serde-wasm-bindgen/wasm-bindgen-futures optional, add fvm-wasm-instrument and target-specific deps for wasm32 and non-wasm builds; adjust wasmer features. README updated with browser build/wasm-bindgen usage and notes. Cargo.lock and tests updated to account for new/changed dependencies and behavior.
@JacobLinCool JacobLinCool self-assigned this Mar 31, 2026
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.

1 participant