Compare commits

...

2 Commits

Author SHA1 Message Date
xermicus b0ad55715f wip
Signed-off-by: xermicus <bigcyrill@hotmail.com>
2025-09-18 14:40:00 +02:00
xermicus a5fbd545c5 rul
Signed-off-by: xermicus <bigcyrill@hotmail.com>
2025-09-03 20:17:51 +02:00
10 changed files with 286 additions and 45 deletions
Generated
+151 -45
View File
@@ -105,13 +105,26 @@ version = "0.8.25"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d8bcce99ad10fe02640cfaec1c6bc809b837c783c1d52906aa5af66e2a196f6" checksum = "9d8bcce99ad10fe02640cfaec1c6bc809b837c783c1d52906aa5af66e2a196f6"
dependencies = [ dependencies = [
"alloy-dyn-abi", "alloy-dyn-abi 0.8.25",
"alloy-json-abi 0.8.25", "alloy-json-abi 0.8.25",
"alloy-primitives 0.8.25", "alloy-primitives 0.8.25",
"alloy-rlp", "alloy-rlp",
"alloy-sol-types 0.8.25", "alloy-sol-types 0.8.25",
] ]
[[package]]
name = "alloy-core"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bfe6c56d58fbfa9f0f6299376e8ce33091fc6494239466814c3f54b55743cb09"
dependencies = [
"alloy-dyn-abi 1.3.1",
"alloy-json-abi 1.3.1",
"alloy-primitives 1.3.1",
"alloy-rlp",
"alloy-sol-types 1.3.1",
]
[[package]] [[package]]
name = "alloy-dyn-abi" name = "alloy-dyn-abi"
version = "0.8.25" version = "0.8.25"
@@ -129,13 +142,29 @@ dependencies = [
"winnow", "winnow",
] ]
[[package]]
name = "alloy-dyn-abi"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3f56873f3cac7a2c63d8e98a4314b8311aa96adb1a0f82ae923eb2119809d2c"
dependencies = [
"alloy-json-abi 1.3.1",
"alloy-primitives 1.3.1",
"alloy-sol-type-parser 1.3.1",
"alloy-sol-types 1.3.1",
"itoa",
"serde",
"serde_json",
"winnow",
]
[[package]] [[package]]
name = "alloy-eip2124" name = "alloy-eip2124"
version = "0.2.0" version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5" checksum = "741bdd7499908b3aa0b159bba11e71c8cddd009a2c2eb7a06e825f1ec87900a5"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-rlp", "alloy-rlp",
"crc", "crc",
"serde", "serde",
@@ -148,7 +177,7 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd" checksum = "7b82752a889170df67bbb36d42ca63c531eb16274f0d7299ae2a680facba17bd"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-rlp", "alloy-rlp",
"serde", "serde",
] ]
@@ -159,7 +188,7 @@ version = "0.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16" checksum = "9d4769c6ffddca380b0070d71c8b7f30bed375543fe76bb2f74ec0acf4b7cd16"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-rlp", "alloy-rlp",
"serde", "serde",
"thiserror 2.0.12", "thiserror 2.0.12",
@@ -174,7 +203,7 @@ dependencies = [
"alloy-eip2124", "alloy-eip2124",
"alloy-eip2930", "alloy-eip2930",
"alloy-eip7702", "alloy-eip7702",
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-rlp", "alloy-rlp",
"alloy-serde", "alloy-serde",
"auto_impl", "auto_impl",
@@ -192,7 +221,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c98fb40f07997529235cc474de814cd7bd9de561e101716289095696c0e4639d" checksum = "c98fb40f07997529235cc474de814cd7bd9de561e101716289095696c0e4639d"
dependencies = [ dependencies = [
"alloy-eips", "alloy-eips",
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-serde", "alloy-serde",
"alloy-trie", "alloy-trie",
"serde", "serde",
@@ -212,12 +241,12 @@ dependencies = [
[[package]] [[package]]
name = "alloy-json-abi" name = "alloy-json-abi"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ccaa79753d7bf15f06399ea76922afbfaf8d18bebed9e8fc452984b4a90dcc9" checksum = "125a1c373261b252e53e04d6e92c37d881833afc1315fceab53fd46045695640"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-sol-type-parser 1.1.2", "alloy-sol-type-parser 1.3.1",
"serde", "serde",
"serde_json", "serde_json",
] ]
@@ -251,9 +280,9 @@ dependencies = [
[[package]] [[package]]
name = "alloy-primitives" name = "alloy-primitives"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18c35fc4b03ace65001676358ffbbaefe2a2b27ee50fe777c345082c7c888be8" checksum = "bc9485c56de23438127a731a6b4c87803d49faf1a7068dcd1d8768aca3a9edb9"
dependencies = [ dependencies = [
"alloy-rlp", "alloy-rlp",
"bytes", "bytes",
@@ -304,7 +333,7 @@ version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "730e8f2edf2fc224cabd1c25d090e1655fa6137b2e409f92e5eec735903f1507" checksum = "730e8f2edf2fc224cabd1c25d090e1655fa6137b2e409f92e5eec735903f1507"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"serde", "serde",
"serde_json", "serde_json",
] ]
@@ -325,12 +354,12 @@ dependencies = [
[[package]] [[package]]
name = "alloy-sol-macro" name = "alloy-sol-macro"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8612e0658964d616344f199ab251a49d48113992d81b92dab93ed855faa66383" checksum = "d20d867dcf42019d4779519a1ceb55eba8d7f3d0e4f0a89bcba82b8f9eb01e48"
dependencies = [ dependencies = [
"alloy-sol-macro-expander 1.1.2", "alloy-sol-macro-expander 1.3.1",
"alloy-sol-macro-input 1.1.2", "alloy-sol-macro-input 1.3.1",
"proc-macro-error2", "proc-macro-error2",
"proc-macro2", "proc-macro2",
"quote", "quote",
@@ -357,11 +386,11 @@ dependencies = [
[[package]] [[package]]
name = "alloy-sol-macro-expander" name = "alloy-sol-macro-expander"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a384edac7283bc4c010a355fb648082860c04b826bb7a814c45263c8f304c74" checksum = "b74e91b0b553c115d14bd0ed41898309356dc85d0e3d4b9014c4e7715e48c8ad"
dependencies = [ dependencies = [
"alloy-sol-macro-input 1.1.2", "alloy-sol-macro-input 1.3.1",
"const-hex", "const-hex",
"heck", "heck",
"indexmap 2.9.0", "indexmap 2.9.0",
@@ -369,7 +398,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.101", "syn 2.0.101",
"syn-solidity 1.1.2", "syn-solidity 1.3.1",
"tiny-keccak", "tiny-keccak",
] ]
@@ -391,9 +420,9 @@ dependencies = [
[[package]] [[package]]
name = "alloy-sol-macro-input" name = "alloy-sol-macro-input"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dd588c2d516da7deb421b8c166dc60b7ae31bca5beea29ab6621fcfa53d6ca5" checksum = "84194d31220803f5f62d0a00f583fd3a062b36382e2bea446f1af96727754565"
dependencies = [ dependencies = [
"const-hex", "const-hex",
"dunce", "dunce",
@@ -402,7 +431,7 @@ dependencies = [
"proc-macro2", "proc-macro2",
"quote", "quote",
"syn 2.0.101", "syn 2.0.101",
"syn-solidity 1.1.2", "syn-solidity 1.3.1",
] ]
[[package]] [[package]]
@@ -417,9 +446,9 @@ dependencies = [
[[package]] [[package]]
name = "alloy-sol-type-parser" name = "alloy-sol-type-parser"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e86ddeb70792c7ceaad23e57d52250107ebbb86733e52f4a25d8dc1abc931837" checksum = "fe8c27b3cf6b2bb8361904732f955bc7c05e00be5f469cec7e2280b6167f3ff0"
dependencies = [ dependencies = [
"serde", "serde",
"winnow", "winnow",
@@ -440,13 +469,13 @@ dependencies = [
[[package]] [[package]]
name = "alloy-sol-types" name = "alloy-sol-types"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "584cb97bfc5746cb9dcc4def77da11694b5d6d7339be91b7480a6a68dc129387" checksum = "f5383d34ea00079e6dd89c652bcbdb764db160cef84e6250926961a0b2295d04"
dependencies = [ dependencies = [
"alloy-json-abi 1.1.2", "alloy-json-abi 1.3.1",
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-sol-macro 1.1.2", "alloy-sol-macro 1.3.1",
"serde", "serde",
] ]
@@ -456,7 +485,7 @@ version = "0.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500" checksum = "983d99aa81f586cef9dae38443245e585840fcf0fc58b09aee0b1f27aed1d500"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-rlp", "alloy-rlp",
"arrayvec", "arrayvec",
"derive_more 2.0.1", "derive_more 2.0.1",
@@ -6490,7 +6519,7 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "895fe6f50f621a69132697b8b43d29d1db4d9ff445eec410bf1fc98cd7e9412c" checksum = "895fe6f50f621a69132697b8b43d29d1db4d9ff445eec410bf1fc98cd7e9412c"
dependencies = [ dependencies = [
"alloy-core", "alloy-core 0.8.25",
"derive_more 0.99.20", "derive_more 0.99.20",
"environmental", "environmental",
"ethabi-decode", "ethabi-decode",
@@ -6505,8 +6534,8 @@ dependencies = [
"num-integer", "num-integer",
"num-traits", "num-traits",
"pallet-revive-fixtures", "pallet-revive-fixtures",
"pallet-revive-proc-macro", "pallet-revive-proc-macro 0.3.0",
"pallet-revive-uapi", "pallet-revive-uapi 0.4.0",
"pallet-transaction-payment", "pallet-transaction-payment",
"parity-scale-codec", "parity-scale-codec",
"paste", "paste",
@@ -6539,7 +6568,7 @@ checksum = "dc1df19ca809f036d6ddf1632039e9db312f92dbe8f9390e6722ad808cd95377"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"cargo_metadata", "cargo_metadata",
"pallet-revive-uapi", "pallet-revive-uapi 0.4.0",
"polkavm-linker 0.21.0", "polkavm-linker 0.21.0",
"sp-core", "sp-core",
"sp-io", "sp-io",
@@ -6558,7 +6587,7 @@ dependencies = [
"pallet-balances", "pallet-balances",
"pallet-message-queue", "pallet-message-queue",
"pallet-revive", "pallet-revive",
"pallet-revive-uapi", "pallet-revive-uapi 0.4.0",
"pallet-timestamp", "pallet-timestamp",
"pallet-xcm", "pallet-xcm",
"parity-scale-codec", "parity-scale-codec",
@@ -6587,6 +6616,17 @@ dependencies = [
"syn 2.0.101", "syn 2.0.101",
] ]
[[package]]
name = "pallet-revive-proc-macro"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "feb9c42c125790dd4bb0132312bb1a9d3a890b4720c7696d636194311f948e36"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.101",
]
[[package]] [[package]]
name = "pallet-revive-uapi" name = "pallet-revive-uapi"
version = "0.4.0" version = "0.4.0"
@@ -6594,12 +6634,25 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0cb8f45102c6279f59f55e0051fc6c26b996619d7842800dfaf3a2583459a1c7" checksum = "0cb8f45102c6279f59f55e0051fc6c26b996619d7842800dfaf3a2583459a1c7"
dependencies = [ dependencies = [
"bitflags 1.3.2", "bitflags 1.3.2",
"pallet-revive-proc-macro", "pallet-revive-proc-macro 0.3.0",
"parity-scale-codec", "parity-scale-codec",
"polkavm-derive 0.21.0", "polkavm-derive 0.21.0",
"scale-info", "scale-info",
] ]
[[package]]
name = "pallet-revive-uapi"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e340813d94f380bc531d4cd5f28685065a14dbbff87ab23507f72c7d2792b82c"
dependencies = [
"bitflags 1.3.2",
"pallet-revive-proc-macro 0.4.0",
"parity-scale-codec",
"polkavm-derive 0.27.0",
"scale-info",
]
[[package]] [[package]]
name = "pallet-root-offences" name = "pallet-root-offences"
version = "37.0.0" version = "37.0.0"
@@ -7927,6 +7980,12 @@ dependencies = [
"polkavm-assembler 0.24.0", "polkavm-assembler 0.24.0",
] ]
[[package]]
name = "polkavm-common"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a19805789e7bf778ac5855f6fe9350353f6a1697c2aab9bfb6fc7c831be54fad"
[[package]] [[package]]
name = "polkavm-derive" name = "polkavm-derive"
version = "0.18.0" version = "0.18.0"
@@ -7945,6 +8004,15 @@ dependencies = [
"polkavm-derive-impl-macro 0.21.0", "polkavm-derive-impl-macro 0.21.0",
] ]
[[package]]
name = "polkavm-derive"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eea46a17d87cbf3c0f3f6156f6300f60cec67cf9eaca296c770e0873f8389d6"
dependencies = [
"polkavm-derive-impl-macro 0.27.0",
]
[[package]] [[package]]
name = "polkavm-derive-impl" name = "polkavm-derive-impl"
version = "0.18.1" version = "0.18.1"
@@ -7969,6 +8037,18 @@ dependencies = [
"syn 2.0.101", "syn 2.0.101",
] ]
[[package]]
name = "polkavm-derive-impl"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8abdd1210d96b1dda9ac21199ec469448fd628cea102e2ff0e0df1667c4c3b5f"
dependencies = [
"polkavm-common 0.27.0",
"proc-macro2",
"quote",
"syn 2.0.101",
]
[[package]] [[package]]
name = "polkavm-derive-impl-macro" name = "polkavm-derive-impl-macro"
version = "0.18.0" version = "0.18.0"
@@ -7989,6 +8069,16 @@ dependencies = [
"syn 2.0.101", "syn 2.0.101",
] ]
[[package]]
name = "polkavm-derive-impl-macro"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a45173d70138aa1879892c50777ed0d8b0c8556f7678372f09fa1d89bbbddb4"
dependencies = [
"polkavm-derive-impl 0.27.0",
"syn 2.0.101",
]
[[package]] [[package]]
name = "polkavm-disassembler" name = "polkavm-disassembler"
version = "0.24.0" version = "0.24.0"
@@ -8573,7 +8663,7 @@ dependencies = [
name = "revive-benchmarks" name = "revive-benchmarks"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"criterion", "criterion",
"hex", "hex",
"revive-differential", "revive-differential",
@@ -8607,7 +8697,7 @@ name = "revive-differential"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"alloy-genesis", "alloy-genesis",
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-serde", "alloy-serde",
"hex", "hex",
"serde", "serde",
@@ -8629,8 +8719,8 @@ dependencies = [
name = "revive-integration" name = "revive-integration"
version = "0.1.1" version = "0.1.1"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"alloy-sol-types 1.1.2", "alloy-sol-types 1.3.1",
"hex", "hex",
"rayon", "rayon",
"resolc", "resolc",
@@ -8697,11 +8787,27 @@ dependencies = [
"sha3", "sha3",
] ]
[[package]]
name = "revive-rul"
version = "0.1.0"
dependencies = [
"anyhow",
"pallet-revive-uapi 0.7.0",
"polkavm-linker 0.24.0",
]
[[package]]
name = "revive-rul-runtime-library"
version = "0.1.0"
dependencies = [
"alloy-core 1.3.1",
]
[[package]] [[package]]
name = "revive-runner" name = "revive-runner"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"alloy-primitives 1.1.2", "alloy-primitives 1.3.1",
"anyhow", "anyhow",
"clap", "clap",
"env_logger 0.11.8", "env_logger 0.11.8",
@@ -10752,9 +10858,9 @@ dependencies = [
[[package]] [[package]]
name = "syn-solidity" name = "syn-solidity"
version = "1.1.2" version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b5d879005cc1b5ba4e18665be9e9501d9da3a9b95f625497c4cb7ee082b532e" checksum = "a0b198d366dbec045acfcd97295eb653a7a2b40e4dc764ef1e79aafcad439d3c"
dependencies = [ dependencies = [
"paste", "paste",
"proc-macro2", "proc-macro2",
+2
View File
@@ -58,6 +58,7 @@ alloy-primitives = { version = "1.1", features = ["serde"] }
alloy-sol-types = "1.1" alloy-sol-types = "1.1"
alloy-genesis = "1.0" alloy-genesis = "1.0"
alloy-serde = "1.0" alloy-serde = "1.0"
alloy-core = "1.3"
env_logger = { version = "0.11.8", default-features = false } env_logger = { version = "0.11.8", default-features = false }
serde_stacker = "0.1.12" serde_stacker = "0.1.12"
criterion = { version = "0.6", features = ["html_reports"] } criterion = { version = "0.6", features = ["html_reports"] }
@@ -71,6 +72,7 @@ tar = "0.4"
toml = "0.8" toml = "0.8"
assert_cmd = "2.0" assert_cmd = "2.0"
assert_fs = "1.1" assert_fs = "1.1"
pallet-revive-uapi = "0.7.0"
# polkadot-sdk and friends # polkadot-sdk and friends
codec = { version = "3.7.5", default-features = false, package = "parity-scale-codec" } codec = { version = "3.7.5", default-features = false, package = "parity-scale-codec" }
+11
View File
@@ -0,0 +1,11 @@
[package]
name = "revive-rul-runtime-library"
version.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true
authors.workspace = true
description = "revive compiler rust backend runtime library"
[dependencies]
alloy-core = { workspace = true, default-features = false }
@@ -0,0 +1,4 @@
//! The revive Rust backend contract runtime library configuration.
/// The Ethereum Virtual Machine word size in bytes.
pub const EVM_WORD_SIZE_BYTES: usize = 32;
+6
View File
@@ -0,0 +1,6 @@
//! The revive Rust backend contract runtime library.
#![no_std]
pub mod configuration;
pub mod memory;
+13
View File
@@ -0,0 +1,13 @@
//! The revive Rust backend contract runtime emulated linear EVM heap memory.
/// The emulated linear EVM heap memory size.
pub const MEMORY_SIZE: usize = 1024 * 64;
/// The emulated linear EVM heap memory size.
pub const MEMORY: [u8; MEMORY_SIZE] = [0; MEMORY_SIZE];
pub struct Function<const VARIABLES: usize> {
pub variables: [u8; VARIABLES],
}
impl<const VARIABLES: usize> Function<VARIABLES> {}
+14
View File
@@ -0,0 +1,14 @@
[package]
name = "revive-rul"
version.workspace = true
license.workspace = true
edition.workspace = true
repository.workspace = true
authors.workspace = true
description = "revive compiler rust backend"
[dependencies]
anyhow = { workspace = true }
pallet-revive-uapi = { workspace = true }
polkavm-linker = { workspace = true }
+79
View File
@@ -0,0 +1,79 @@
//! The revive rust backend builder module.
const CARGO_TOML: &str = r#"
[package]
name = "contracts"
publish = false
version = "1.0.0"
edition = "2021"
# Make sure this is not included into the workspace
[workspace]
# Binary targets are injected dynamically by the build script.
[[bin]]
# All paths are injected dynamically by the build script.
[dependencies]
uapi = { version = "0.7.0", package = 'pallet-revive-uapi', features = ["unstable-hostfn"], default-features = false }
hex-literal = { version = "0.4.1", default-features = false }
polkavm-derive = { version = "0.27.0" }
[profile.release]
opt-level = z
lto = true
codegen-units = 1
"#;
const HEADER: &str = r#"
#![no_std]
#![no_main]
include!("../panic_handler.rs");
use uapi::{HostFn, HostFnImpl as api, ReturnFlags};
#[panic_handler]
fn panic(_info: &core::panic::PanicInfo) -> ! {
// SAFETY: The unimp instruction is guaranteed to trap
unsafe {
core::arch::asm!("unimp");
core::hint::unreachable_unchecked();
}
}
/// The emulated linear EVM heap memory size.
pub const MEMORY_SIZE: usize = 1024 * 64;
/// The emulated linear EVM heap memory size.
pub const MEMORY: [u8; MEMORY_SIZE] = [0; MEMORY_SIZE];
"#;
const EXPORT_FUNCTION: &str = r#"
#[no_mangle]
#[polkavm_derive::polkavm_export]
pub extern "C" fn "#;
fn emit(constructor_code: &str, runtime_code: &str) -> String {
let mut buffer = String::from(HEADER);
buffer.reserve(
constructor_code.len() + runtime_code.len() + HEADER.len() + EXPORT_FUNCTION.len() * 2,
);
buffer.push_str(EXPORT_FUNCTION);
buffer.push_str("deploy() {");
buffer.push_str(constructor_code);
buffer.push_str("\n}");
buffer.push_str(EXPORT_FUNCTION);
buffer.push_str("call() {");
buffer.push_str(runtime_code);
buffer.push_str("\n}");
buffer
}
/// Build a PVM blob.
pub fn build(constructor_code: &str, runtime_code: &str) -> Vec<u8> {
let code = emit(constructor_code, runtime_code);
todo!();
}
+5
View File
@@ -0,0 +1,5 @@
//! The revive rust backend library.
pub mod builder;
pub mod yul_library;
+1
View File
@@ -0,0 +1 @@
//! The revive rust backend YUL auxilliary library functions module.