Skip to content

Commit 6908a8c

Browse files
committed
feat: add svm crate
1 parent 6b99920 commit 6908a8c

35 files changed

Lines changed: 6919 additions & 21 deletions

‎Cargo.toml‎

Lines changed: 37 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
[workspace]
2-
members = [
3-
"solana/account",
4-
"solana/program-runtime",
5-
"solana/transaction-context",
6-
]
2+
members = ["solana/account", "solana/program-runtime", "solana/svm", "solana/transaction-context"]
73
resolver = "3"
84

95
[workspace.package]
@@ -18,6 +14,7 @@ version = "0.1.0"
1814
[workspace.dependencies]
1915
solana-account = { path = "solana/account" }
2016
solana-program-runtime = { path = "solana/program-runtime" }
17+
solana-svm = { path = "solana/svm" }
2118
solana-transaction-context = { path = "solana/transaction-context" }
2219

2320
ahash = "0.8.12"
@@ -28,7 +25,9 @@ bincode = "1.3.3"
2825
bitflags = "2.11.1"
2926
cfg-if = "1.0.4"
3027
criterion = "0.7.0"
28+
env_logger = "0.11.8"
3129
itertools = "0.14.0"
30+
libsecp256k1 = "0.7.2"
3231
log = "0.4.29"
3332
percentage = "0.1.0"
3433
qualifier_attr = "0.2.2"
@@ -46,9 +45,14 @@ agave-syscalls = "4.0.0"
4645
agave-transaction-view = "4.0.0"
4746
solana-account-info = "3.1.1"
4847
solana-clock = "3.0.1"
48+
solana-compute-budget = "4.0.0"
49+
solana-compute-budget-interface = "3.0.0"
50+
solana-compute-budget-program = "4.0.0"
51+
solana-ed25519-program = "3.0.0"
4952
solana-epoch-rewards = "3.0.1"
5053
solana-epoch-schedule = "~3.0.0"
5154
solana-feature-gate-interface = { version = "4.0", features = ["bincode"] }
55+
solana-fee-calculator = "3.2.0"
5256
solana-fee-structure = "3.0.0"
5357
solana-frozen-abi = "3.2.0"
5458
solana-frozen-abi-macro = "3.2.1"
@@ -59,35 +63,51 @@ solana-instructions-sysvar = "3.0.0"
5963
solana-keypair = "3.1.0"
6064
solana-last-restart-slot = "3.0.0"
6165
solana-loader-v3-interface = "6.1.0"
66+
solana-loader-v4-interface = "3.1.0"
67+
solana-message = "3.1.0"
68+
solana-native-token = "3.0.0"
69+
solana-nonce = "3.0.0"
70+
solana-nonce-account = "3.0.0"
71+
solana-packet = "4.1.0"
72+
solana-precompile-error = "3.0.0"
73+
solana-program-binaries = "4.0.0"
6274
solana-program-entrypoint = "3.1.1"
75+
solana-program-pack = "3.1.0"
6376
solana-pubkey = "~4.1.0"
6477
solana-rent = "3.0.0"
6578
solana-sbpf = "=0.14.4"
6679
solana-sdk-ids = "3.1.0"
80+
solana-secp256k1-program = "3.0.1"
81+
solana-secp256r1-program = "3.0.0"
6782
solana-sha256-hasher = "3.1.0"
6883
solana-short-vec = "3.2.1"
6984
solana-signature = "3.3.0"
7085
solana-signer = "3.0.0"
7186
solana-slot-hashes = "3.0.1"
7287
solana-stable-layout = "3.0.0"
7388
solana-stake-interface = "2.0.2"
74-
solana-sysvar = "3.1.1"
75-
solana-sysvar-id = "3.1.0"
76-
solana-system-interface = ">=3.0.0, <3.2.0"
77-
solana-svm-callback = "4.0.0-rc.1"
78-
solana-svm-feature-set = "4.0.0-rc.1"
79-
solana-svm-log-collector = "4.0.0-rc.1"
80-
solana-svm-measure = "4.0.0-rc.1"
81-
solana-svm-timings = "4.0.0-rc.1"
82-
solana-svm-transaction = "4.0.0-rc.1"
83-
solana-svm-type-overrides = "4.0.0-rc.1"
84-
solana-system-interface = ">=3.0.0, <3.2.0"
85-
solana-system-program = "4.0.0-rc.0"
89+
solana-svm-callback = "4.0.0"
90+
solana-svm-feature-set = "4.0.0"
91+
solana-svm-log-collector = "4.0.0"
92+
solana-svm-measure = "4.0.0"
93+
solana-svm-timings = "4.0.0"
94+
solana-svm-transaction = "4.0.0"
95+
solana-svm-type-overrides = "4.0.0"
96+
solana-system-interface = "3.0.0"
97+
solana-system-program = "4.0.0"
8698
solana-system-transaction = "3.0.0"
8799
solana-sysvar = "3.1.1"
88100
solana-sysvar-id = "3.1.0"
89101
solana-transaction = "3.1.0"
90102
solana-transaction-error = "3.2"
103+
spl-generic-token = "2.0.1"
104+
spl-token-interface = "2.0.0"
105+
106+
[patch.crates-io]
107+
solana-account = { path = "solana/account" }
108+
solana-program-runtime = { path = "solana/program-runtime" }
109+
solana-svm = { path = "solana/svm" }
110+
solana-transaction-context = { path = "solana/transaction-context" }
91111

92112

93113
[workspace.lints.rust]

‎solana/program-runtime/Cargo.toml‎

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@ name = "solana-program-runtime"
44
authors = { workspace = true }
55
description = "Solana program runtime"
66
documentation = "https://docs.rs/solana-program-runtime"
7-
version = { workspace = true }
8-
authors = { workspace = true }
9-
repository = { workspace = true }
7+
edition = { workspace = true }
108
homepage = { workspace = true }
119
license = { workspace = true }
1210
repository = { workspace = true }

‎solana/svm/Cargo.toml‎

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
[package]
2+
name = "solana-svm"
3+
4+
authors = { workspace = true }
5+
description = "Solana SVM"
6+
documentation = "https://docs.rs/solana-svm"
7+
edition = { workspace = true }
8+
homepage = { workspace = true }
9+
license = { workspace = true }
10+
repository = { workspace = true }
11+
version = "4.0.0"
12+
13+
[package.metadata.docs.rs]
14+
targets = ["x86_64-unknown-linux-gnu"]
15+
16+
[lib]
17+
crate-type = ["lib"]
18+
name = "solana_svm"
19+
20+
[features]
21+
agave-unstable-api = [
22+
"solana-program-runtime/agave-unstable-api",
23+
"solana-svm-callback/agave-unstable-api",
24+
"solana-svm-feature-set/agave-unstable-api",
25+
"solana-svm-log-collector/agave-unstable-api",
26+
"solana-svm-measure/agave-unstable-api",
27+
"solana-svm-timings/agave-unstable-api",
28+
"solana-svm-transaction/agave-unstable-api",
29+
"solana-svm-type-overrides/agave-unstable-api",
30+
"solana-transaction-context/agave-unstable-api"
31+
]
32+
default = ["metrics"]
33+
dev-context-only-utils = ["dep:qualifier_attr", "solana-program-runtime/dev-context-only-utils"]
34+
dummy-for-ci-check = ["metrics"]
35+
frozen-abi = [
36+
"dep:solana-frozen-abi",
37+
"dep:solana-frozen-abi-macro",
38+
"solana-program-runtime/frozen-abi"
39+
]
40+
metrics = ["solana-program-runtime/metrics"]
41+
shuttle-test = ["solana-program-runtime/shuttle-test", "solana-svm-type-overrides/shuttle-test"]
42+
svm-internal = ["dep:qualifier_attr"]
43+
44+
[dependencies]
45+
ahash = { workspace = true }
46+
log = { workspace = true }
47+
percentage = { workspace = true }
48+
qualifier_attr = { workspace = true, optional = true }
49+
scc = { workspace = true }
50+
serde = { workspace = true, features = ["rc"] }
51+
thiserror = { workspace = true }
52+
53+
solana-account = { workspace = true }
54+
solana-clock = { workspace = true }
55+
solana-fee-structure = { workspace = true }
56+
solana-frozen-abi = { workspace = true, optional = true, features = ["frozen-abi"] }
57+
solana-frozen-abi-macro = { workspace = true, optional = true, features = ["frozen-abi"] }
58+
solana-hash = { workspace = true }
59+
solana-instruction = { workspace = true, features = ["std"] }
60+
solana-instructions-sysvar = { workspace = true }
61+
solana-loader-v3-interface = { workspace = true, features = ["bincode"] }
62+
solana-loader-v4-interface = { workspace = true }
63+
solana-message = { workspace = true }
64+
solana-nonce = { workspace = true }
65+
solana-nonce-account = { workspace = true }
66+
solana-program-entrypoint = { workspace = true }
67+
solana-program-pack = { workspace = true }
68+
solana-program-runtime = { workspace = true }
69+
solana-pubkey = { workspace = true }
70+
solana-rent = { workspace = true }
71+
solana-sdk-ids = { workspace = true }
72+
solana-svm-callback = { workspace = true }
73+
solana-svm-feature-set = { workspace = true }
74+
solana-svm-log-collector = { workspace = true }
75+
solana-svm-measure = { workspace = true }
76+
solana-svm-timings = { workspace = true }
77+
solana-svm-transaction = { workspace = true }
78+
solana-svm-type-overrides = { workspace = true }
79+
solana-system-interface = { workspace = true }
80+
solana-sysvar-id = { workspace = true }
81+
solana-transaction-context = { workspace = true }
82+
solana-transaction-error = { workspace = true }
83+
spl-generic-token = { workspace = true }
84+
85+
[dev-dependencies]
86+
agave-syscalls = { workspace = true }
87+
assert_matches = { workspace = true }
88+
bincode = { workspace = true }
89+
env_logger = { workspace = true }
90+
libsecp256k1 = { workspace = true }
91+
rand = { workspace = true }
92+
shuttle = "0.7.1"
93+
solana-clock = { workspace = true }
94+
solana-compute-budget = { workspace = true, features = ["agave-unstable-api"] }
95+
solana-compute-budget-interface = { workspace = true }
96+
solana-compute-budget-program = { workspace = true, features = ["agave-unstable-api"] }
97+
solana-ed25519-program = { workspace = true }
98+
solana-epoch-schedule = { workspace = true }
99+
solana-fee-calculator = { workspace = true }
100+
solana-keypair = { workspace = true }
101+
solana-native-token = { workspace = true }
102+
solana-precompile-error = { workspace = true }
103+
solana-program-binaries = { workspace = true, features = ["agave-unstable-api"] }
104+
solana-program-runtime = { workspace = true, features = ["dev-context-only-utils"] }
105+
solana-pubkey = { workspace = true, features = ["rand"] }
106+
solana-rent = { workspace = true }
107+
solana-sbpf = { workspace = true, features = ["jit"] }
108+
solana-secp256k1-program = { workspace = true, features = ["bincode"] }
109+
solana-secp256r1-program = { workspace = true, features = ["openssl-vendored"] }
110+
solana-signature = { workspace = true, features = ["rand"] }
111+
solana-signer = { workspace = true }
112+
test-case = "3.3.1"
113+
# See order-crates-for-publishing.py for using this unusual `path = "."`
114+
solana-svm = { path = ".", features = [
115+
"agave-unstable-api",
116+
"dev-context-only-utils",
117+
"svm-internal"
118+
] }
119+
solana-system-program = { workspace = true, features = ["agave-unstable-api"] }
120+
solana-system-transaction = { workspace = true }
121+
solana-sysvar = { workspace = true }
122+
solana-transaction = { workspace = true, features = ["dev-context-only-utils"] }
123+
solana-transaction-context = { workspace = true, features = ["dev-context-only-utils"] }
124+
spl-token-interface = { workspace = true }

0 commit comments

Comments
 (0)