Skip to content

Commit 4024925

Browse files
authored
Merge pull request #27 from magicblock-labs/bmuddha/chore/solana-4.0.x-upgrade
chore: update solana deps to 4.0.x
2 parents b501cdd + b275f82 commit 4024925

31 files changed

Lines changed: 1358 additions & 539 deletions

Cargo.lock

Lines changed: 394 additions & 253 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 43 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -3,110 +3,110 @@ members = ["program-runtime", "solana-account", "svm", "transaction-context"]
33
resolver = "2"
44

55
[workspace.package]
6-
version = "3.1.12"
76
authors = ["Anza Maintainers <maintainers@anza.xyz>"]
8-
repository = "https://github.com/anza-xyz/agave"
7+
edition = "2021"
98
homepage = "https://anza.xyz/"
109
license = "Apache-2.0"
11-
edition = "2021"
10+
repository = "https://github.com/anza-xyz/agave"
11+
version = "4.0.0"
1212

1313
[workspace.dependencies]
14-
agave-logger = { version = "3.1", features = ["agave-unstable-api"] }
15-
agave-syscalls = "3.1"
16-
ahash = "0.8.11"
14+
agave-logger = { version = "=4.0.0", features = ["agave-unstable-api"] }
15+
agave-syscalls = { version = "=4.0.0", default-features = false, features = ["agave-unstable-api"] }
16+
ahash = "0.8.12"
1717
assert_matches = "1.5.0"
1818
base64 = "0.22.1"
1919
bincode = "1.3.3"
20+
cfg-if = "1.0.4"
2021
ed25519-dalek = "=1.0.1"
22+
env_logger = "0.11.9"
2123
itertools = "0.12.1"
22-
libsecp256k1 = { version = "0.6.0", default-features = false, features = [
23-
"std",
24-
"static-context",
25-
] }
26-
log = "0.4.28"
24+
libsecp256k1 = { version = "0.6.0", default-features = false, features = ["static-context", "std"] }
25+
log = "0.4.29"
2726
openssl = "0.10"
2827
percentage = "0.1.0"
29-
qualifier_attr = "0.2.2"
28+
qualifier_attr = { version = "0.2.2", default-features = false }
3029
rand = "0.8.5"
3130
rand0-7 = { package = "rand", version = "0.7" }
3231
serde = { version = "1.0.228", features = ["rc"] }
3332
serde_bytes = { version = "0.11" }
3433
shuttle = "0.7.1"
35-
spl-generic-token = "2.0"
36-
spl-token-interface = "2.0"
37-
static_assertions = "1.1.0"
38-
test-case = "3.3"
39-
thiserror = "2.0"
4034
solana-account = { path = "solana-account", version = "3.4.0" }
4135
solana-account-info = "3.1.1"
42-
solana-bpf-loader-program = "3.1"
36+
solana-bpf-loader-program = { version = "=4.0.0", default-features = false, features = [
37+
"agave-unstable-api"
38+
] }
4339
solana-clock = "3.0.0"
44-
solana-compute-budget = { version = "3.1", features = ["agave-unstable-api"] }
40+
solana-compute-budget = { version = "=4.0.0", features = ["agave-unstable-api"] }
4541
solana-compute-budget-interface = "3.0"
46-
solana-compute-budget-program = { version = "3.1", features = [
47-
"agave-unstable-api",
48-
] }
42+
solana-compute-budget-program = { version = "=4.0.0", features = ["agave-unstable-api"] }
4943
solana-ed25519-program = "3.0"
5044
solana-epoch-rewards = "3.0.1"
5145
solana-epoch-schedule = "3.0"
5246
solana-fee-calculator = "3.0"
5347
solana-fee-structure = "3.0"
5448
solana-frozen-abi = "3.0"
5549
solana-frozen-abi-macro = "3.0"
56-
solana-hash = "3.1"
57-
solana-instruction = "3.0"
50+
solana-hash = "~4.2.0"
51+
solana-instruction = ">=3.2.0,<3.4.0"
5852
solana-instruction-error = "2.2"
5953
solana-instructions-sysvar = "3.0"
6054
solana-keypair = "3.0"
6155
solana-last-restart-slot = "3.0.0"
6256
solana-loader-v3-interface = "6.1.0"
6357
solana-loader-v4-interface = "3.1"
64-
solana-loader-v4-program = { version = "3.1", features = [
65-
"agave-unstable-api",
58+
solana-loader-v4-program = { version = "=4.0.0", default-features = false, features = [
59+
"agave-unstable-api"
6660
] }
6761
solana-message = "3.0"
6862
solana-native-token = "3.0"
6963
solana-nonce = "3.0"
7064
solana-nonce-account = "3.0"
7165
solana-precompile-error = "3.0"
72-
solana-program-binaries = { version = "3.1", features = ["agave-unstable-api"] }
66+
solana-program-binaries = { version = "=4.0.0", features = ["agave-unstable-api"] }
7367
solana-program-entrypoint = "3.1"
7468
solana-program-pack = "3.1"
7569
solana-program-runtime = { path = "program-runtime" }
76-
solana-pubkey = "3.0"
70+
solana-pubkey = { version = "~4.1.0", default-features = false }
7771
solana-rent = "3.0"
78-
solana-sbpf = "0.13.1"
72+
solana-sbpf = { version = "=0.14.4", default-features = false }
7973
solana-sdk-ids = "3.0"
8074
solana-secp256k1-program = { version = "3.0", features = ["bincode"] }
8175
solana-secp256r1-program = { version = "3.0", features = ["openssl-vendored"] }
82-
solana-signature = "3.1.0"
76+
solana-signature = { version = "~3.3.0", default-features = false }
8377
solana-signer = "3.0"
8478
solana-slot-hashes = "3.0.1"
8579
solana-stable-layout = "3.0.1"
8680
solana-stake-interface = "2.0.2"
87-
solana-svm-callback = "3.1"
88-
solana-svm-feature-set = "3.1"
89-
solana-svm-log-collector = "3.1"
90-
solana-svm-measure = "3.1"
91-
solana-svm-timings = "3.1"
92-
solana-svm-transaction = "3.1"
93-
solana-svm-type-overrides = "3.1"
94-
solana-system-interface = "2.0"
95-
solana-system-program = { version = "3.1", features = ["agave-unstable-api"] }
81+
solana-svm-callback = { version = "=4.0.0", features = ["agave-unstable-api"] }
82+
solana-svm-feature-set = { version = "=4.0.0", features = ["agave-unstable-api"] }
83+
solana-svm-log-collector = { version = "=4.0.0", features = ["agave-unstable-api"] }
84+
solana-svm-measure = { version = "=4.0.0", features = ["agave-unstable-api"] }
85+
solana-svm-timings = { version = "=4.0.0", features = ["agave-unstable-api"] }
86+
solana-svm-transaction = { version = "=4.0.0", features = ["agave-unstable-api"] }
87+
solana-svm-type-overrides = { version = "=4.0.0", features = ["agave-unstable-api"] }
88+
solana-system-interface = { version = ">=3.0.0,<3.2.0", features = ["alloc", "bincode", "serde"] }
89+
solana-system-program = { version = "=4.0.0", features = ["agave-unstable-api"] }
9690
solana-system-transaction = "3.0"
9791
solana-sysvar = "3.0"
9892
solana-sysvar-id = "3.0"
9993
solana-transaction = "3.0"
10094
solana-transaction-context = { path = "transaction-context" }
10195
solana-transaction-error = "3.0"
96+
spl-generic-token = "2.0"
97+
spl-token-interface = "2.0"
98+
static_assertions = "1.1.0"
99+
test-case = "3.3"
100+
thiserror = "2.0"
102101

103102
[workspace.lints.rust.unexpected_cfgs]
104-
level = "warn"
105-
priority = 0
106103
check-cfg = [
107-
'cfg(target_os, values("solana"))',
108-
'cfg(feature, values("frozen-abi", "no-entrypoint"))',
104+
'cfg(feature, values("frozen-abi", "no-entrypoint"))',
105+
'cfg(target_arch, values("sbf"))',
106+
'cfg(target_os, values("solana"))'
109107
]
108+
level = "warn"
109+
priority = 0
110110

111111
[patch.crates-io]
112112
solana-account = { path = "solana-account" }

program-runtime/Cargo.toml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ authors = { workspace = true }
77
repository = { workspace = true }
88
homepage = { workspace = true }
99
license = { workspace = true }
10-
edition = { workspace = true }
10+
edition = "2024"
1111

1212
[package.metadata.docs.rs]
1313
targets = ["x86_64-unknown-linux-gnu"]
@@ -22,17 +22,21 @@ dev-context-only-utils = []
2222
dummy-for-ci-check = ["metrics"]
2323
frozen-abi = ["dep:solana-frozen-abi", "dep:solana-frozen-abi-macro"]
2424
metrics = []
25+
sbpf-debugger = ["solana-sbpf/debugger"]
2526
shuttle-test = [
2627
"solana-sbpf/shuttle-test",
2728
"solana-svm-type-overrides/shuttle-test",
2829
]
30+
svm-internal = ["dep:qualifier_attr"]
2931

3032
[dependencies]
3133
base64 = { workspace = true }
3234
bincode = { workspace = true }
35+
cfg-if = { workspace = true }
3336
itertools = { workspace = true }
3437
log = { workspace = true }
3538
percentage = { workspace = true }
39+
qualifier_attr = { workspace = true, optional = true }
3640
rand = { workspace = true }
3741
serde = { workspace = true }
3842
solana-account = { workspace = true, features = ["bincode"] }
@@ -64,14 +68,12 @@ solana-svm-feature-set = { workspace = true }
6468
solana-svm-log-collector = { workspace = true }
6569
solana-svm-measure = { workspace = true }
6670
solana-svm-timings = { workspace = true }
67-
solana-svm-transaction = { workspace = true, features = ["agave-unstable-api"] }
71+
solana-svm-transaction = { workspace = true }
6872
solana-svm-type-overrides = { workspace = true }
6973
solana-system-interface = { workspace = true }
7074
solana-sysvar = { workspace = true, features = ["bincode"] }
7175
solana-sysvar-id = { workspace = true }
72-
solana-transaction-context = { workspace = true, features = [
73-
"agave-unstable-api",
74-
] }
76+
solana-transaction-context = { workspace = true }
7577
thiserror = { workspace = true }
7678

7779
[dev-dependencies]

program-runtime/src/cpi.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ use {
77
serialization::{create_memory_region_of_account, modify_memory_region_of_account},
88
},
99
solana_account_info::AccountInfo,
10-
solana_instruction::{error::InstructionError, AccountMeta, Instruction},
10+
solana_instruction::{AccountMeta, Instruction, error::InstructionError},
1111
solana_loader_v3_interface::instruction as bpf_loader_upgradeable,
1212
solana_program_entrypoint::MAX_PERMITTED_DATA_INCREASE,
13-
solana_pubkey::{Pubkey, PubkeyError, MAX_SEEDS},
13+
solana_pubkey::{MAX_SEEDS, Pubkey, PubkeyError},
1414
solana_sbpf::{ebpf, memory_region::MemoryMapping},
1515
solana_sdk_ids::{bpf_loader, bpf_loader_deprecated, native_loader},
1616
solana_stable_layout::stable_instruction::StableInstruction,
1717
solana_svm_log_collector::ic_msg,
1818
solana_svm_measure::measure::Measure,
1919
solana_svm_timings::ExecuteTimings,
2020
solana_transaction_context::{
21-
vm_slice::VmSlice, BorrowedInstructionAccount, IndexOfAccount,
22-
MAX_ACCOUNTS_PER_INSTRUCTION, MAX_INSTRUCTION_DATA_LEN,
21+
BorrowedInstructionAccount, IndexOfAccount, MAX_ACCOUNTS_PER_INSTRUCTION,
22+
MAX_INSTRUCTION_DATA_LEN, vm_slice::VmSlice,
2323
},
2424
std::mem,
2525
thiserror::Error,
@@ -247,7 +247,7 @@ pub struct CallerAccount<'a> {
247247

248248
impl<'a> CallerAccount<'a> {
249249
pub fn get_serialized_data(
250-
memory_mapping: &solana_sbpf::memory_region::MemoryMapping<'_>,
250+
memory_mapping: &solana_sbpf::memory_region::MemoryMapping,
251251
vm_addr: u64,
252252
len: u64,
253253
stricter_abi_and_runtime_constraints: bool,
@@ -286,7 +286,7 @@ impl<'a> CallerAccount<'a> {
286286
// Create a CallerAccount given an AccountInfo.
287287
pub fn from_account_info(
288288
invoke_context: &InvokeContext,
289-
memory_mapping: &solana_sbpf::memory_region::MemoryMapping<'_>,
289+
memory_mapping: &solana_sbpf::memory_region::MemoryMapping,
290290
check_aligned: bool,
291291
_vm_addr: u64,
292292
account_info: &solana_account_info::AccountInfo,
@@ -296,7 +296,7 @@ impl<'a> CallerAccount<'a> {
296296

297297
let stricter_abi_and_runtime_constraints = invoke_context
298298
.get_feature_set()
299-
.stricter_abi_and_runtime_constraints;
299+
.virtual_address_space_adjustments;
300300
let account_data_direct_mapping =
301301
invoke_context.get_feature_set().account_data_direct_mapping;
302302

@@ -409,7 +409,7 @@ impl<'a> CallerAccount<'a> {
409409
// Create a CallerAccount given a SolAccountInfo.
410410
fn from_sol_account_info(
411411
invoke_context: &InvokeContext,
412-
memory_mapping: &solana_sbpf::memory_region::MemoryMapping<'_>,
412+
memory_mapping: &solana_sbpf::memory_region::MemoryMapping,
413413
check_aligned: bool,
414414
vm_addr: u64,
415415
account_info: &SolAccountInfo,
@@ -419,7 +419,7 @@ impl<'a> CallerAccount<'a> {
419419

420420
let stricter_abi_and_runtime_constraints = invoke_context
421421
.get_feature_set()
422-
.stricter_abi_and_runtime_constraints;
422+
.virtual_address_space_adjustments;
423423
let account_data_direct_mapping =
424424
invoke_context.get_feature_set().account_data_direct_mapping;
425425

@@ -513,7 +513,7 @@ pub trait SyscallInvokeSigned {
513513
fn translate_accounts<'a>(
514514
account_infos_addr: u64,
515515
account_infos_len: u64,
516-
memory_mapping: &MemoryMapping<'_>,
516+
memory_mapping: &MemoryMapping,
517517
invoke_context: &mut InvokeContext,
518518
check_aligned: bool,
519519
) -> Result<Vec<TranslatedAccount<'a>>, Error>;
@@ -592,7 +592,7 @@ pub fn translate_instruction_rust(
592592
pub fn translate_accounts_rust<'a>(
593593
account_infos_addr: u64,
594594
account_infos_len: u64,
595-
memory_mapping: &MemoryMapping<'_>,
595+
memory_mapping: &MemoryMapping,
596596
invoke_context: &mut InvokeContext,
597597
check_aligned: bool,
598598
) -> Result<Vec<TranslatedAccount<'a>>, Error> {
@@ -730,7 +730,7 @@ pub fn translate_instruction_c(
730730
pub fn translate_accounts_c<'a>(
731731
account_infos_addr: u64,
732732
account_infos_len: u64,
733-
memory_mapping: &MemoryMapping<'_>,
733+
memory_mapping: &MemoryMapping,
734734
invoke_context: &mut InvokeContext,
735735
check_aligned: bool,
736736
) -> Result<Vec<TranslatedAccount<'a>>, Error> {
@@ -822,7 +822,7 @@ pub fn cpi_common<S: SyscallInvokeSigned>(
822822
}
823823
let stricter_abi_and_runtime_constraints = invoke_context
824824
.get_feature_set()
825-
.stricter_abi_and_runtime_constraints;
825+
.virtual_address_space_adjustments;
826826
let account_data_direct_mapping = invoke_context.get_feature_set().account_data_direct_mapping;
827827
let check_aligned = invoke_context.get_check_aligned();
828828

@@ -945,7 +945,7 @@ where
945945
{
946946
let stricter_abi_and_runtime_constraints = invoke_context
947947
.get_feature_set()
948-
.stricter_abi_and_runtime_constraints;
948+
.virtual_address_space_adjustments;
949949

950950
// In the same vein as the other check_account_info_pointer() checks, we don't lock
951951
// this pointer to a specific address but we don't want it to be inside accounts, or
@@ -1000,14 +1000,14 @@ fn translate_accounts_common<'a, T, F>(
10001000
account_infos: &[T],
10011001
account_infos_addr: u64,
10021002
invoke_context: &mut InvokeContext,
1003-
memory_mapping: &MemoryMapping<'_>,
1003+
memory_mapping: &MemoryMapping,
10041004
check_aligned: bool,
10051005
do_translate: F,
10061006
) -> Result<Vec<TranslatedAccount<'a>>, Error>
10071007
where
10081008
F: Fn(
10091009
&InvokeContext,
1010-
&MemoryMapping<'_>,
1010+
&MemoryMapping,
10111011
bool,
10121012
u64,
10131013
&T,
@@ -1029,7 +1029,7 @@ where
10291029

10301030
let stricter_abi_and_runtime_constraints = invoke_context
10311031
.get_feature_set()
1032-
.stricter_abi_and_runtime_constraints;
1032+
.virtual_address_space_adjustments;
10331033
let account_data_direct_mapping = invoke_context.get_feature_set().account_data_direct_mapping;
10341034

10351035
for (instruction_account_index, instruction_account) in
@@ -1265,7 +1265,7 @@ fn update_caller_account_region(
12651265
// accounts (regardless of the current size of an account).
12661266
fn update_caller_account(
12671267
invoke_context: &InvokeContext,
1268-
memory_mapping: &MemoryMapping<'_>,
1268+
memory_mapping: &MemoryMapping,
12691269
check_aligned: bool,
12701270
caller_account: &mut CallerAccount<'_>,
12711271
callee_account: &mut BorrowedInstructionAccount<'_, '_>,
@@ -1371,7 +1371,7 @@ mod tests {
13711371
solana_sdk_ids::{bpf_loader, system_program},
13721372
solana_svm_feature_set::SVMFeatureSet,
13731373
solana_transaction_context::{
1374-
transaction_accounts::KeyedAccountSharedData, IndexOfAccount, InstructionAccount,
1374+
IndexOfAccount, InstructionAccount, transaction_accounts::KeyedAccountSharedData,
13751375
},
13761376
std::{
13771377
cell::{Cell, RefCell},
@@ -1405,7 +1405,7 @@ mod tests {
14051405
.map(|a| (a.0, a.1))
14061406
.collect::<Vec<KeyedAccountSharedData>>();
14071407
let mut feature_set = SVMFeatureSet::all_enabled();
1408-
feature_set.stricter_abi_and_runtime_constraints = false;
1408+
feature_set.virtual_address_space_adjustments = false;
14091409
let feature_set = &feature_set;
14101410
with_mock_invoke_context_with_feature_set!(
14111411
$invoke_context,

0 commit comments

Comments
 (0)