diff --git a/crates/CMakeLists.txt b/crates/CMakeLists.txt index a30bf16e36..ab1c0f8a89 100644 --- a/crates/CMakeLists.txt +++ b/crates/CMakeLists.txt @@ -43,3 +43,4 @@ function(add_xrpl_crate name) endfunction() add_xrpl_crate(rs_hello_world CRATE rs_hello_world FILES lib.rs) +add_xrpl_crate(xrpl_wasm_vm_ffi CRATE xrpl_wasm_vm_ffi FILES lib.rs) diff --git a/crates/Cargo.lock b/crates/Cargo.lock index aae00b4c29..cdaceb3ae9 100644 --- a/crates/Cargo.lock +++ b/crates/Cargo.lock @@ -57,9 +57,9 @@ dependencies = [ [[package]] name = "cxx" -version = "1.0.194" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747d8437319e3a2f43d93b341c137927ca70c0f5dabeea7a005a73665e247c7e" +checksum = "6fe442a792c7c736eea18b32a7f8a3b63cf8aafabda6760042dc2fdeda456291" dependencies = [ "cc", "cxx-build", @@ -72,9 +72,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.194" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0f4697d190a142477b16aef7da8a99bfdc41e7e8b1687583c0d23a79c7afc1e" +checksum = "e3184a94384c663718698311a78a51ac00c484c10b4eeac06fb0a068c5f64fa2" dependencies = [ "cc", "codespan-reporting", @@ -82,39 +82,39 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn", + "syn 3.0.3", ] [[package]] name = "cxxbridge-cmd" -version = "1.0.194" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0956799fa8678d4c50eed028f2de1c0552ae183c76e976cf7ca8c4e36a7c328" +checksum = "0148d8fd1199329ddf1d157a5e134e51ceff37c6a7ddd38615c399d81cb05d8d" dependencies = [ "clap", "codespan-reporting", "indexmap", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "cxxbridge-flags" -version = "1.0.194" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23384a836ab4f0ad98ace7e3955ad2de39de42378ab487dc28d3990392cb283a" +checksum = "52850339faed2eaadd24e286dc1d8268cc6f8a7bd9524d713adc9099566b4c89" [[package]] name = "cxxbridge-macro" -version = "1.0.194" +version = "1.0.198" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6acc6b5822b9526adfb4fc377b67128fdd60aac757cc4a741a6278603f763cf" +checksum = "2c77c856545d886c9bd5215409ebb63b925e262135248b50c79e5a5f194ee47c" dependencies = [ "indexmap", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -218,7 +218,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -244,6 +244,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -288,3 +299,22 @@ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" dependencies = [ "windows-link", ] + +[[package]] +name = "xrpl-host-functions" +version = "0.1.0" + +[[package]] +name = "xrpl-host-functions-macros" +version = "0.1.0" + +[[package]] +name = "xrpl-wasm-vm" +version = "0.1.0" + +[[package]] +name = "xrpl-wasm-vm-ffi" +version = "0.1.0" +dependencies = [ + "cxx", +] diff --git a/crates/Cargo.toml b/crates/Cargo.toml index d0372c0a09..e197c6a4ce 100644 --- a/crates/Cargo.toml +++ b/crates/Cargo.toml @@ -1,9 +1,9 @@ [workspace] -members = ["hello_world"] +members = ["hello_world", "xrpl-wasm-vm-ffi", "xrpl-wasm-vm", "xrpl-host-functions", "xrpl-host-functions-macros"] resolver = "3" [workspace.dependencies] -cxx = { version = "1.0.194", features = ["c++20"] } +cxx = { version = "1.0.198", features = ["c++20"] } [workspace.package] edition = "2024" diff --git a/crates/xrpl-host-functions-macros/Cargo.toml b/crates/xrpl-host-functions-macros/Cargo.toml new file mode 100644 index 0000000000..ad785f2543 --- /dev/null +++ b/crates/xrpl-host-functions-macros/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "xrpl-host-functions-macros" +version = "0.1.0" +edition.workspace = true + +[dependencies] diff --git a/crates/xrpl-host-functions-macros/src/lib.rs b/crates/xrpl-host-functions-macros/src/lib.rs new file mode 100644 index 0000000000..b93cf3ffd9 --- /dev/null +++ b/crates/xrpl-host-functions-macros/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/crates/xrpl-host-functions/Cargo.toml b/crates/xrpl-host-functions/Cargo.toml new file mode 100644 index 0000000000..67052a9fc2 --- /dev/null +++ b/crates/xrpl-host-functions/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "xrpl-host-functions" +version = "0.1.0" +edition.workspace = true + +[dependencies] diff --git a/crates/xrpl-host-functions/src/lib.rs b/crates/xrpl-host-functions/src/lib.rs new file mode 100644 index 0000000000..b93cf3ffd9 --- /dev/null +++ b/crates/xrpl-host-functions/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/crates/xrpl-wasm-vm-ffi/Cargo.toml b/crates/xrpl-wasm-vm-ffi/Cargo.toml new file mode 100644 index 0000000000..8429eba2ac --- /dev/null +++ b/crates/xrpl-wasm-vm-ffi/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "xrpl-wasm-vm-ffi" +version = "0.1.0" +edition.workspace = true + +[lib] +crate-type = ["staticlib", "rlib"] + +[dependencies] +cxx.workspace = true diff --git a/crates/xrpl-wasm-vm-ffi/src/lib.rs b/crates/xrpl-wasm-vm-ffi/src/lib.rs new file mode 100644 index 0000000000..12d0bfebb1 --- /dev/null +++ b/crates/xrpl-wasm-vm-ffi/src/lib.rs @@ -0,0 +1,2 @@ +#[cxx::bridge] +mod ffi {} diff --git a/crates/xrpl-wasm-vm/Cargo.toml b/crates/xrpl-wasm-vm/Cargo.toml new file mode 100644 index 0000000000..6ec8dc2cad --- /dev/null +++ b/crates/xrpl-wasm-vm/Cargo.toml @@ -0,0 +1,6 @@ +[package] +name = "xrpl-wasm-vm" +version = "0.1.0" +edition.workspace = true + +[dependencies] diff --git a/crates/xrpl-wasm-vm/src/lib.rs b/crates/xrpl-wasm-vm/src/lib.rs new file mode 100644 index 0000000000..b93cf3ffd9 --- /dev/null +++ b/crates/xrpl-wasm-vm/src/lib.rs @@ -0,0 +1,14 @@ +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +}