From 4d8f9243c426b49db23c9ce9a355729a4264699c Mon Sep 17 00:00:00 2001 From: Matthias Goergens Date: Fri, 13 Dec 2024 18:14:28 +0800 Subject: [PATCH 1/3] Reshuffle crates --- Cargo.toml | 2 +- {guest => ceno_rt}/.cargo/config.toml | 0 ceno_rt/Cargo.lock | 93 ++++++++++++++++ ceno_rt/Cargo.toml | 13 +++ {guest/ceno_rt => ceno_rt}/README.md | 0 {guest/ceno_rt => ceno_rt}/build.rs | 0 {guest/ceno_rt => ceno_rt}/ceno_link.x | 0 {guest/ceno_rt => ceno_rt}/memory.x | 0 {guest/ceno_rt => ceno_rt}/src/allocator.rs | 0 {guest/ceno_rt => ceno_rt}/src/io.rs | 0 {guest/ceno_rt => ceno_rt}/src/lib.rs | 0 {guest/ceno_rt => ceno_rt}/src/params.rs | 0 examples-builder/build.rs | 8 +- examples/.cargo/config.toml | 1 + examples/Cargo.lock | 100 ++++++++++++++++++ examples/Cargo.toml | 13 +++ .../examples/ceno_rt_alloc.rs | 0 .../examples/ceno_rt_io.rs | 0 .../examples/ceno_rt_mem.rs | 0 .../examples/ceno_rt_mini.rs | 0 .../examples/ceno_rt_panic.rs | 0 guest/ceno_rt/Cargo.toml | 13 --- guest/examples/Cargo.toml | 13 --- 23 files changed, 225 insertions(+), 31 deletions(-) rename {guest => ceno_rt}/.cargo/config.toml (100%) create mode 100644 ceno_rt/Cargo.lock create mode 100644 ceno_rt/Cargo.toml rename {guest/ceno_rt => ceno_rt}/README.md (100%) rename {guest/ceno_rt => ceno_rt}/build.rs (100%) rename {guest/ceno_rt => ceno_rt}/ceno_link.x (100%) rename {guest/ceno_rt => ceno_rt}/memory.x (100%) rename {guest/ceno_rt => ceno_rt}/src/allocator.rs (100%) rename {guest/ceno_rt => ceno_rt}/src/io.rs (100%) rename {guest/ceno_rt => ceno_rt}/src/lib.rs (100%) rename {guest/ceno_rt => ceno_rt}/src/params.rs (100%) create mode 120000 examples/.cargo/config.toml create mode 100644 examples/Cargo.lock create mode 100644 examples/Cargo.toml rename {guest/examples => examples}/examples/ceno_rt_alloc.rs (100%) rename {guest/examples => examples}/examples/ceno_rt_io.rs (100%) rename {guest/examples => examples}/examples/ceno_rt_mem.rs (100%) rename {guest/examples => examples}/examples/ceno_rt_mini.rs (100%) rename {guest/examples => examples}/examples/ceno_rt_panic.rs (100%) delete mode 100644 guest/ceno_rt/Cargo.toml delete mode 100644 guest/examples/Cargo.toml diff --git a/Cargo.toml b/Cargo.toml index 93cabd8d9..2fb832769 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [workspace] -exclude = ["guest"] +exclude = ["ceno_rt", "examples"] members = [ "ceno_emul", "examples-builder", diff --git a/guest/.cargo/config.toml b/ceno_rt/.cargo/config.toml similarity index 100% rename from guest/.cargo/config.toml rename to ceno_rt/.cargo/config.toml diff --git a/ceno_rt/Cargo.lock b/ceno_rt/Cargo.lock new file mode 100644 index 000000000..feb0692ae --- /dev/null +++ b/ceno_rt/Cargo.lock @@ -0,0 +1,93 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ceno_rt" +version = "0.1.0" +dependencies = [ + "riscv", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "riscv" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea8ff73d3720bdd0a97925f0bf79ad2744b6da8ff36be3840c48ac81191d7a7" +dependencies = [ + "critical-section", + "embedded-hal", + "paste", + "riscv-macros", + "riscv-pac", +] + +[[package]] +name = "riscv-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f265be5d634272320a7de94cea15c22a3bfdd4eb42eb43edc528415f066a1f25" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "riscv-pac" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8188909339ccc0c68cfb5a04648313f09621e8b87dc03095454f1a11f6c5d436" + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" diff --git a/ceno_rt/Cargo.toml b/ceno_rt/Cargo.toml new file mode 100644 index 000000000..2ba43c74a --- /dev/null +++ b/ceno_rt/Cargo.toml @@ -0,0 +1,13 @@ +[package] +categories = ["cryptography", "zk", "blockchain", "ceno"] +description = "Ceno runtime library" +edition = "2021" +keywords = ["cryptography", "zk", "blockchain", "ceno"] +license = "MIT OR Apache-2.0" +name = "ceno_rt" +readme = "README.md" +repository = "https://github.com/scroll-tech/ceno" +version = "0.1.0" + +[dependencies] +riscv = "0.12" diff --git a/guest/ceno_rt/README.md b/ceno_rt/README.md similarity index 100% rename from guest/ceno_rt/README.md rename to ceno_rt/README.md diff --git a/guest/ceno_rt/build.rs b/ceno_rt/build.rs similarity index 100% rename from guest/ceno_rt/build.rs rename to ceno_rt/build.rs diff --git a/guest/ceno_rt/ceno_link.x b/ceno_rt/ceno_link.x similarity index 100% rename from guest/ceno_rt/ceno_link.x rename to ceno_rt/ceno_link.x diff --git a/guest/ceno_rt/memory.x b/ceno_rt/memory.x similarity index 100% rename from guest/ceno_rt/memory.x rename to ceno_rt/memory.x diff --git a/guest/ceno_rt/src/allocator.rs b/ceno_rt/src/allocator.rs similarity index 100% rename from guest/ceno_rt/src/allocator.rs rename to ceno_rt/src/allocator.rs diff --git a/guest/ceno_rt/src/io.rs b/ceno_rt/src/io.rs similarity index 100% rename from guest/ceno_rt/src/io.rs rename to ceno_rt/src/io.rs diff --git a/guest/ceno_rt/src/lib.rs b/ceno_rt/src/lib.rs similarity index 100% rename from guest/ceno_rt/src/lib.rs rename to ceno_rt/src/lib.rs diff --git a/guest/ceno_rt/src/params.rs b/ceno_rt/src/params.rs similarity index 100% rename from guest/ceno_rt/src/params.rs rename to ceno_rt/src/params.rs diff --git a/examples-builder/build.rs b/examples-builder/build.rs index 0e8d90441..7ea9b9628 100644 --- a/examples-builder/build.rs +++ b/examples-builder/build.rs @@ -26,7 +26,7 @@ fn build_elfs() { // See git history for an attempt to do this. let output = Command::new("cargo") .args(["build", "--release", "--examples"]) - .current_dir("../guest/examples") + .current_dir("../examples") .env_clear() .envs(std::env::vars().filter(|x| !x.0.starts_with("CARGO_"))) .output() @@ -41,11 +41,11 @@ fn build_elfs() { dest, r#"#[allow(non_upper_case_globals)] pub const {example}: &[u8] = - include_bytes!(r"{CARGO_MANIFEST_DIR}/../guest/target/riscv32im-unknown-none-elf/release/examples/{example}");"# + include_bytes!(r"{CARGO_MANIFEST_DIR}/../examples/target/riscv32im-unknown-none-elf/release/examples/{example}");"# ).expect("failed to write vars.rs"); } - let input_path = "../guest/"; - let elfs_path = "../guest/target/riscv32im-unknown-none-elf/release/examples/"; + let input_path = "../examples/"; + let elfs_path = "../examples/target/riscv32im-unknown-none-elf/release/examples/"; println!("cargo:rerun-if-changed={input_path}"); println!("cargo:rerun-if-changed={elfs_path}"); diff --git a/examples/.cargo/config.toml b/examples/.cargo/config.toml new file mode 120000 index 000000000..bade0c189 --- /dev/null +++ b/examples/.cargo/config.toml @@ -0,0 +1 @@ +../../ceno_rt/.cargo/config.toml \ No newline at end of file diff --git a/examples/Cargo.lock b/examples/Cargo.lock new file mode 100644 index 000000000..84c6c3ab6 --- /dev/null +++ b/examples/Cargo.lock @@ -0,0 +1,100 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "ceno_rt" +version = "0.1.0" +dependencies = [ + "riscv", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "embedded-hal" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "361a90feb7004eca4019fb28352a9465666b24f840f5c3cddf0ff13920590b89" + +[[package]] +name = "examples" +version = "0.1.0" +dependencies = [ + "ceno_rt", +] + +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + +[[package]] +name = "proc-macro2" +version = "1.0.92" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "riscv" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea8ff73d3720bdd0a97925f0bf79ad2744b6da8ff36be3840c48ac81191d7a7" +dependencies = [ + "critical-section", + "embedded-hal", + "paste", + "riscv-macros", + "riscv-pac", +] + +[[package]] +name = "riscv-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f265be5d634272320a7de94cea15c22a3bfdd4eb42eb43edc528415f066a1f25" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "riscv-pac" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8188909339ccc0c68cfb5a04648313f09621e8b87dc03095454f1a11f6c5d436" + +[[package]] +name = "syn" +version = "2.0.90" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" diff --git a/examples/Cargo.toml b/examples/Cargo.toml new file mode 100644 index 000000000..b3751d1f3 --- /dev/null +++ b/examples/Cargo.toml @@ -0,0 +1,13 @@ +[package] +categories = ["cryptography", "zk", "blockchain", "ceno"] +description = "Ceno RiscV guest examples" +edition = "2021" +keywords = ["cryptography", "zk", "blockchain", "ceno"] +license = "MIT OR Apache-2.0" +name = "examples" +readme = "README.md" +repository = "https://github.com/scroll-tech/ceno" +version = "0.1.0" + +[dependencies] +ceno_rt = { path = "../ceno_rt" } diff --git a/guest/examples/examples/ceno_rt_alloc.rs b/examples/examples/ceno_rt_alloc.rs similarity index 100% rename from guest/examples/examples/ceno_rt_alloc.rs rename to examples/examples/ceno_rt_alloc.rs diff --git a/guest/examples/examples/ceno_rt_io.rs b/examples/examples/ceno_rt_io.rs similarity index 100% rename from guest/examples/examples/ceno_rt_io.rs rename to examples/examples/ceno_rt_io.rs diff --git a/guest/examples/examples/ceno_rt_mem.rs b/examples/examples/ceno_rt_mem.rs similarity index 100% rename from guest/examples/examples/ceno_rt_mem.rs rename to examples/examples/ceno_rt_mem.rs diff --git a/guest/examples/examples/ceno_rt_mini.rs b/examples/examples/ceno_rt_mini.rs similarity index 100% rename from guest/examples/examples/ceno_rt_mini.rs rename to examples/examples/ceno_rt_mini.rs diff --git a/guest/examples/examples/ceno_rt_panic.rs b/examples/examples/ceno_rt_panic.rs similarity index 100% rename from guest/examples/examples/ceno_rt_panic.rs rename to examples/examples/ceno_rt_panic.rs diff --git a/guest/ceno_rt/Cargo.toml b/guest/ceno_rt/Cargo.toml deleted file mode 100644 index dfdc87ad2..000000000 --- a/guest/ceno_rt/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -categories.workspace = true -description = "Ceno runtime library" -edition.workspace = true -keywords.workspace = true -license.workspace = true -name = "ceno_rt" -readme = "README.md" -repository.workspace = true -version.workspace = true - -[dependencies] -riscv = "0.12" diff --git a/guest/examples/Cargo.toml b/guest/examples/Cargo.toml deleted file mode 100644 index 397e743b1..000000000 --- a/guest/examples/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -categories.workspace = true -description = "Ceno RiscV guest examples" -edition.workspace = true -keywords.workspace = true -license.workspace = true -name = "examples" -readme = "README.md" -repository.workspace = true -version.workspace = true - -[dependencies] -ceno_rt = { path = "../ceno_rt" } From 3fa5d49ca3e5a3c4f1472871202ec4040f124dac Mon Sep 17 00:00:00 2001 From: Matthias Goergens Date: Fri, 13 Dec 2024 19:02:18 +0800 Subject: [PATCH 2/3] Adapt cache --- .github/workflows/integration.yml | 3 ++- .github/workflows/lints.yml | 3 ++- .github/workflows/tests.yml | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index 8bcc5dfed..1150da037 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -47,7 +47,8 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - guest/target/ + example/target/ + ceno_rt/target/ key: integration-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - uses: dtolnay/rust-toolchain@nightly diff --git a/.github/workflows/lints.yml b/.github/workflows/lints.yml index 1f8d41b0b..f738f7183 100644 --- a/.github/workflows/lints.yml +++ b/.github/workflows/lints.yml @@ -35,7 +35,8 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - guest/target/ + ceno_rt/target/ + example/target/ key: lint-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: lint-${{ runner.os }}-cargo- diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0f2ea9df3..598f397e2 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -34,7 +34,8 @@ jobs: ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ - guest/target/ + ceno_rt/target/ + example/target/ key: tests-${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} restore-keys: tests-${{ runner.os }}-cargo- From afe1239c460ff8f77958f67cdc69987340ce455d Mon Sep 17 00:00:00 2001 From: Matthias Goergens Date: Fri, 13 Dec 2024 19:05:07 +0800 Subject: [PATCH 3/3] Inline --- examples-builder/build.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/examples-builder/build.rs b/examples-builder/build.rs index 7ea9b9628..3a7be2c37 100644 --- a/examples-builder/build.rs +++ b/examples-builder/build.rs @@ -44,10 +44,9 @@ fn build_elfs() { include_bytes!(r"{CARGO_MANIFEST_DIR}/../examples/target/riscv32im-unknown-none-elf/release/examples/{example}");"# ).expect("failed to write vars.rs"); } - let input_path = "../examples/"; + println!("cargo:rerun-if-changed=../examples/"); + println!("cargo:rerun-if-changed=../ceno_rt/"); let elfs_path = "../examples/target/riscv32im-unknown-none-elf/release/examples/"; - - println!("cargo:rerun-if-changed={input_path}"); println!("cargo:rerun-if-changed={elfs_path}"); }