diff --git a/.cargo/config.toml b/.cargo/config.toml index 8317a149..5c9afebe 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -4,7 +4,7 @@ # https://doc.rust-lang.org/cargo/reference/config.html # Disable reference-types since Wizer (as of version 7.0.0) does not support # reference-types. -[target.wasm32-wasi] +[target.wasm32-wasip1] rustflags = [ "-C", "target-feature=+simd128", diff --git a/.github/workflows/build-assets.yml b/.github/workflows/build-assets.yml index a9004836..eea28d62 100644 --- a/.github/workflows/build-assets.yml +++ b/.github/workflows/build-assets.yml @@ -40,18 +40,18 @@ jobs: uses: actions/upload-artifact@v4 with: name: engine - path: target/wasm32-wasi/release/javy_core.wasm + path: target/wasm32-wasip1/release/javy_core.wasm - name: Upload quickjs_provider to artifacts uses: actions/upload-artifact@v4 with: name: provider - path: target/wasm32-wasi/release/javy_quickjs_provider.wasm + path: target/wasm32-wasip1/release/javy_quickjs_provider.wasm - name: Wizen and archive wizened quickjs_provider run: | - wizer target/wasm32-wasi/release/javy_quickjs_provider.wasm --allow-wasi --init-func initialize_runtime --wasm-bulk-memory true -o target/wasm32-wasi/release/javy_quickjs_provider_wizened.wasm - gzip -k -f target/wasm32-wasi/release/javy_quickjs_provider_wizened.wasm && mv target/wasm32-wasi/release/javy_quickjs_provider_wizened.wasm.gz javy-quickjs_provider.wasm.gz + wizer target/wasm32-wasip1/release/javy_quickjs_provider.wasm --allow-wasi --init-func initialize_runtime --wasm-bulk-memory true -o target/wasm32-wasip1/release/javy_quickjs_provider_wizened.wasm + gzip -k -f target/wasm32-wasip1/release/javy_quickjs_provider_wizened.wasm && mv target/wasm32-wasip1/release/javy_quickjs_provider_wizened.wasm.gz javy-quickjs_provider.wasm.gz - name: Upload archived quickjs_provider to artifacts uses: actions/upload-artifact@v4 @@ -133,12 +133,12 @@ jobs: - uses: actions/download-artifact@v4 with: name: engine - path: target/wasm32-wasi/release/ + path: target/wasm32-wasip1/release/ - uses: actions/download-artifact@v4 with: name: provider - path: target/wasm32-wasi/release/ + path: target/wasm32-wasip1/release/ - name: Build CLI ${{ matrix.os }} run: cargo build --release --target ${{ matrix.target }} --package javy-cli diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9d510228..42b25191 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,19 +24,16 @@ jobs: with: os: macos - - name: Install cargo-wasi - run: cargo install cargo-wasi - - name: Install cargo-hack uses: taiki-e/install-action@cargo-hack - name: Compile core - run: cargo build -p javy-core --release --target=wasm32-wasi + run: cargo build -p javy-core --release --target=wasm32-wasip1 - name: Test - env: - CARGO_TARGET_WASM32_WASI_RUNNER: wasmtime --dir=. - run: cargo hack wasi test --workspace --exclude=javy-cli --exclude=javy-config --exclude=javy-runner --each-feature -- --nocapture + env: + CARGO_TARGET_WASM32_WASIP1_RUNNER: wasmtime --dir=. + run: cargo hack test --target=wasm32-wasip1 --workspace --exclude=javy-cli --exclude=javy-config --exclude=javy-runner --each-feature -- --nocapture - name: Test Config run: cargo test --package=javy-config @@ -50,10 +47,10 @@ jobs: --exclude=javy-cli \ --exclude=javy-runner \ --exclude=javy-fuzz \ - --target=wasm32-wasi --all-targets -- -D warnings - - # We need to specify a different job for linting `javy-runner` given that - # it depends on Wasmtime and Cranelift cannot be compiled to `wasm32-wasi` + --target=wasm32-wasip1 --all-targets -- -D warnings + + # We need to specify a different job for linting `javy-runner` given that + # it depends on Wasmtime and Cranelift cannot be compiled to `wasm32-wasip1` - name: Lint Runner run: cargo clippy --package=javy-runner -- -D warnings @@ -61,13 +58,13 @@ jobs: uses: actions/upload-artifact@v4 with: name: engine - path: target/wasm32-wasi/release/javy_core.wasm + path: target/wasm32-wasip1/release/javy_core.wasm - name: Upload quickjs_provider to artifacts uses: actions/upload-artifact@v4 with: name: provider - path: target/wasm32-wasi/release/javy_quickjs_provider.wasm + path: target/wasm32-wasip1/release/javy_quickjs_provider.wasm cli: name: test_cli @@ -83,12 +80,12 @@ jobs: - uses: actions/download-artifact@v4 with: name: engine - path: target/wasm32-wasi/release/ + path: target/wasm32-wasip1/release/ - uses: actions/download-artifact@v4 with: name: provider - path: target/wasm32-wasi/release/ + path: target/wasm32-wasip1/release/ - name: Test CLI run: CARGO_PROFILE_RELEASE_LTO=off cargo test --package=javy-cli --release -- --nocapture diff --git a/.github/workflows/cli-features.yml b/.github/workflows/cli-features.yml index 9c8cfe27..6fedddc1 100644 --- a/.github/workflows/cli-features.yml +++ b/.github/workflows/cli-features.yml @@ -19,5 +19,5 @@ jobs: - name: Test `experimental_event_loop` run: | - cargo build --package=javy-core --target=wasm32-wasi --release --features=experimental_event_loop + cargo build --package=javy-core --target=wasm32-wasip1 --release --features=experimental_event_loop cargo test --package=javy-cli --features=experimental_event_loop --release -- --nocapture diff --git a/.github/workflows/wpt.yml b/.github/workflows/wpt.yml index 7bf1821d..587f2bac 100644 --- a/.github/workflows/wpt.yml +++ b/.github/workflows/wpt.yml @@ -21,7 +21,7 @@ jobs: - name: WPT run: | - cargo build --package=javy-core --release --target=wasm32-wasi --features=experimental_event_loop + cargo build --package=javy-core --release --target=wasm32-wasip1 --features=experimental_event_loop CARGO_PROFILE_RELEASE_LTO=off cargo build --package=javy-cli --release npm install --prefix wpt npm test --prefix wpt diff --git a/Makefile b/Makefile index 6d12916c..001e2ff1 100644 --- a/Makefile +++ b/Makefile @@ -15,17 +15,17 @@ cli: core CARGO_PROFILE_RELEASE_LTO=off cargo build --package=javy-cli --release core: - cargo build --package=javy-core --release --target=wasm32-wasi --features=$(CORE_FEATURES) + cargo build --package=javy-core --release --target=wasm32-wasip1 --features=$(CORE_FEATURES) docs: cargo doc --package=javy-cli --open - cargo doc --package=javy-core --open --target=wasm32-wasi + cargo doc --package=javy-core --open --target=wasm32-wasip1 test-javy: - CARGO_TARGET_WASM32_WASI_RUNNER="wasmtime --dir=." cargo wasi test --package=javy --features json,messagepack -- --nocapture + CARGO_TARGET_WASM32_WASIP1_RUNNER="wasmtime --dir=." cargo test --package=javy --target=wasm32-wasip1 --features json,messagepack -- --nocapture test-core: - cargo wasi test --package=javy-core -- --nocapture + CARGO_TARGET_WASM32_WASIP1_RUNNER="wasmtime" cargo test --package=javy-core --target=wasm32-wasip1 -- --nocapture # Test in release mode to skip some debug assertions # Note: to make this faster, the engine should be optimized beforehand (wasm-strip + wasm-opt). @@ -53,11 +53,11 @@ fmt: fmt-javy fmt-core fmt-cli fmt-javy: cargo fmt --package=javy -- --check - cargo clippy --package=javy --target=wasm32-wasi --all-targets -- -D warnings + cargo clippy --package=javy --target=wasm32-wasip1 --all-targets -- -D warnings fmt-core: cargo fmt --package=javy-core -- --check - cargo clippy --package=javy-core --target=wasm32-wasi --all-targets -- -D warnings + cargo clippy --package=javy-core --target=wasm32-wasip1 --all-targets -- -D warnings # Use `--release` on CLI clippy to align with `test-cli`. # This reduces the size of the target directory which improves CI stability. diff --git a/crates/cli/benches/benchmark.rs b/crates/cli/benches/benchmark.rs index 9f62928a..aca1085b 100644 --- a/crates/cli/benches/benchmark.rs +++ b/crates/cli/benches/benchmark.rs @@ -121,7 +121,7 @@ impl FunctionCase { let qjs_provider = Module::new( &self.engine, fs::read(Path::new( - "../../target/wasm32-wasi/release/javy_quickjs_provider_wizened.wasm", + "../../target/wasm32-wasip1/release/javy_quickjs_provider_wizened.wasm", ))?, )?; let instance = linker.instantiate(store.as_context_mut(), &qjs_provider)?; diff --git a/crates/cli/build.rs b/crates/cli/build.rs index 4ebe2a2c..beca6db2 100644 --- a/crates/cli/build.rs +++ b/crates/cli/build.rs @@ -48,7 +48,7 @@ fn copy_javy_core() -> Result<()> { .unwrap() .parent() .unwrap() - .join("target/wasm32-wasi/release"); + .join("target/wasm32-wasip1/release"); let engine_path = module_path.join("javy_core.wasm"); let quickjs_provider_path = module_path.join("javy_quickjs_provider.wasm"); let quickjs_provider_wizened_path = module_path.join("javy_quickjs_provider_wizened.wasm"); diff --git a/crates/cli/tests/dylib_test.rs b/crates/cli/tests/dylib_test.rs index 7fb0415c..05031a25 100644 --- a/crates/cli/tests/dylib_test.rs +++ b/crates/cli/tests/dylib_test.rs @@ -65,7 +65,7 @@ fn provider_module() -> Result> { lib_path.pop(); lib_path = lib_path.join( Path::new("target") - .join("wasm32-wasi") + .join("wasm32-wasip1") .join("release") .join("javy_quickjs_provider_wizened.wasm"), ); diff --git a/crates/javy/publish.sh b/crates/javy/publish.sh index 1701b9f6..ecb5ce17 100755 --- a/crates/javy/publish.sh +++ b/crates/javy/publish.sh @@ -2,4 +2,4 @@ set -e -cargo publish --target=wasm32-wasi +cargo publish --target=wasm32-wasip1 diff --git a/crates/javy/tests/262.rs b/crates/javy/tests/262.rs index f09e462f..51040730 100644 --- a/crates/javy/tests/262.rs +++ b/crates/javy/tests/262.rs @@ -1,2 +1,2 @@ #[cfg(feature = "json")] -javy_test_macros::t262!(path = "crates/javy/test262"); +javy_test_macros::t262!(path = "./test262"); diff --git a/crates/test-macros/src/lib.rs b/crates/test-macros/src/lib.rs index d4bed847..426bad5c 100644 --- a/crates/test-macros/src/lib.rs +++ b/crates/test-macros/src/lib.rs @@ -14,7 +14,7 @@ use anyhow::bail; use proc_macro::TokenStream; use proc_macro2::Span; use quote::quote; -use std::path::{Path, PathBuf}; +use std::{env, path::PathBuf}; use syn::{meta::ParseNestedMeta, parse_macro_input, Ident, LitBool, LitStr, Result, ReturnType}; struct Config262 { @@ -23,8 +23,10 @@ struct Config262 { impl Config262 { fn validate(&self) -> anyhow::Result<()> { - let path: Box = self.root.clone().into(); - if path.is_dir() { + if PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()) + .join(&self.root) + .is_dir() + { Ok(()) } else { bail!("Invalid path") @@ -116,10 +118,13 @@ fn gen_tests( harness_str: &String, prefix: &'static str, ) -> proc_macro2::TokenStream { - let parse_dir = std::fs::read_dir(dir).expect("parse directory to be available"); + let package_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); + let parse_dir = + std::fs::read_dir(package_path.join(dir)).expect("parse directory to be available"); let spec = parse_dir.filter_map(|e| e.ok()).map(move |entry| { let path = entry.path(); - let path_str = path.clone().into_os_string().into_string().unwrap(); + let path = path.strip_prefix(&package_path).unwrap(); + let path_str = path.to_str().unwrap(); let name = path.file_stem().unwrap().to_str().unwrap(); let name = name.replace('.', "_"); let name = name.replace('-', "_"); @@ -299,7 +304,7 @@ fn expand_cli_tests(test_config: &CliTestConfig, func: syn::ItemFn) -> Result