Эх сурвалжийг харах

replace low-hanging fruit dependencies on `solana-program` (#6351)

Trent Nelson 5 сар өмнө
parent
commit
4b2a5a5617
100 өөрчлөгдсөн 661 нэмэгдсэн , 313 устгасан
  1. 11 8
      Cargo.lock
  2. 1 1
      accounts-db/src/blockhash_queue.rs
  3. 6 1
      banks-client/Cargo.toml
  4. 6 3
      banks-client/src/lib.rs
  5. 1 1
      cli-output/Cargo.toml
  6. 1 1
      cli-output/src/cli_output.rs
  7. 1 1
      cli-output/src/display.rs
  8. 1 1
      cli/Cargo.toml
  9. 7 7
      cli/src/address_lookup_table.rs
  10. 1 1
      cli/src/cli.rs
  11. 1 1
      cli/src/cluster_query.rs
  12. 7 6
      cli/src/stake.rs
  13. 1 1
      compute-budget-instruction/Cargo.toml
  14. 1 1
      compute-budget-instruction/src/compute_budget_instruction_details.rs
  15. 1 1
      program-test/Cargo.toml
  16. 1 2
      program-test/tests/cpi.rs
  17. 1 1
      program-test/tests/realloc.rs
  18. 3 3
      programs/bpf_loader/benches/bpf_loader_upgradeable.rs
  19. 1 16
      programs/bpf_loader/src/syscalls/cpi.rs
  20. 1 1
      programs/bpf_loader/src/syscalls/mod.rs
  21. 265 42
      programs/sbf/Cargo.lock
  22. 19 0
      programs/sbf/Cargo.toml
  23. 1 1
      programs/sbf/rust/128bit/Cargo.toml
  24. 1 2
      programs/sbf/rust/128bit/src/lib.rs
  25. 0 1
      programs/sbf/rust/128bit_dep/Cargo.toml
  26. 0 2
      programs/sbf/rust/128bit_dep/src/lib.rs
  27. 5 1
      programs/sbf/rust/account_mem/Cargo.toml
  28. 6 7
      programs/sbf/rust/account_mem/src/lib.rs
  29. 4 0
      programs/sbf/rust/account_mem_deprecated/Cargo.toml
  30. 5 6
      programs/sbf/rust/account_mem_deprecated/src/lib.rs
  31. 3 0
      programs/sbf/rust/alloc/Cargo.toml
  32. 3 3
      programs/sbf/rust/alloc/src/lib.rs
  33. 2 1
      programs/sbf/rust/alt_bn128/Cargo.toml
  34. 2 2
      programs/sbf/rust/alt_bn128/src/lib.rs
  35. 2 1
      programs/sbf/rust/alt_bn128_compression/Cargo.toml
  36. 2 2
      programs/sbf/rust/alt_bn128_compression/src/lib.rs
  37. 3 1
      programs/sbf/rust/big_mod_exp/Cargo.toml
  38. 4 2
      programs/sbf/rust/big_mod_exp/src/lib.rs
  39. 4 0
      programs/sbf/rust/call_args/Cargo.toml
  40. 5 5
      programs/sbf/rust/call_args/src/lib.rs
  41. 3 0
      programs/sbf/rust/call_depth/Cargo.toml
  42. 4 2
      programs/sbf/rust/call_depth/src/lib.rs
  43. 6 0
      programs/sbf/rust/caller_access/Cargo.toml
  44. 7 9
      programs/sbf/rust/caller_access/src/lib.rs
  45. 2 1
      programs/sbf/rust/curve25519/Cargo.toml
  46. 2 2
      programs/sbf/rust/curve25519/src/lib.rs
  47. 5 1
      programs/sbf/rust/custom_heap/Cargo.toml
  48. 10 7
      programs/sbf/rust/custom_heap/src/lib.rs
  49. 1 1
      programs/sbf/rust/dep_crate/Cargo.toml
  50. 1 2
      programs/sbf/rust/dep_crate/src/lib.rs
  51. 7 0
      programs/sbf/rust/deprecated_loader/Cargo.toml
  52. 9 13
      programs/sbf/rust/deprecated_loader/src/lib.rs
  53. 4 1
      programs/sbf/rust/divide_by_zero/Cargo.toml
  54. 2 3
      programs/sbf/rust/divide_by_zero/src/lib.rs
  55. 6 0
      programs/sbf/rust/dup_accounts/Cargo.toml
  56. 8 10
      programs/sbf/rust/dup_accounts/src/lib.rs
  57. 5 1
      programs/sbf/rust/error_handling/Cargo.toml
  58. 5 9
      programs/sbf/rust/error_handling/src/lib.rs
  59. 4 1
      programs/sbf/rust/external_spend/Cargo.toml
  60. 4 3
      programs/sbf/rust/external_spend/src/lib.rs
  61. 6 1
      programs/sbf/rust/get_minimum_delegation/Cargo.toml
  62. 4 4
      programs/sbf/rust/get_minimum_delegation/src/lib.rs
  63. 6 0
      programs/sbf/rust/inner_instruction_alignment_check/Cargo.toml
  64. 8 8
      programs/sbf/rust/inner_instruction_alignment_check/src/lib.rs
  65. 8 0
      programs/sbf/rust/instruction_introspection/Cargo.toml
  66. 9 11
      programs/sbf/rust/instruction_introspection/src/lib.rs
  67. 9 0
      programs/sbf/rust/invoke/Cargo.toml
  68. 11 11
      programs/sbf/rust/invoke/src/lib.rs
  69. 5 0
      programs/sbf/rust/invoke_and_error/Cargo.toml
  70. 7 7
      programs/sbf/rust/invoke_and_error/src/lib.rs
  71. 5 0
      programs/sbf/rust/invoke_and_ok/Cargo.toml
  72. 7 7
      programs/sbf/rust/invoke_and_ok/src/lib.rs
  73. 5 0
      programs/sbf/rust/invoke_and_return/Cargo.toml
  74. 7 7
      programs/sbf/rust/invoke_and_return/src/lib.rs
  75. 8 0
      programs/sbf/rust/invoked/Cargo.toml
  76. 8 9
      programs/sbf/rust/invoked/src/lib.rs
  77. 2 1
      programs/sbf/rust/invoked_dep/Cargo.toml
  78. 3 3
      programs/sbf/rust/invoked_dep/src/lib.rs
  79. 1 0
      programs/sbf/rust/iter/Cargo.toml
  80. 3 3
      programs/sbf/rust/iter/src/lib.rs
  81. 5 0
      programs/sbf/rust/log_data/Cargo.toml
  82. 6 4
      programs/sbf/rust/log_data/src/lib.rs
  83. 2 0
      programs/sbf/rust/many_args/Cargo.toml
  84. 1 2
      programs/sbf/rust/many_args/src/helper.rs
  85. 4 2
      programs/sbf/rust/many_args/src/lib.rs
  86. 1 0
      programs/sbf/rust/many_args_dep/Cargo.toml
  87. 1 2
      programs/sbf/rust/many_args_dep/src/lib.rs
  88. 5 1
      programs/sbf/rust/mem/Cargo.toml
  89. 5 7
      programs/sbf/rust/mem/src/lib.rs
  90. 0 1
      programs/sbf/rust/mem_dep/Cargo.toml
  91. 1 1
      programs/sbf/rust/membuiltins/Cargo.toml
  92. 1 1
      programs/sbf/rust/membuiltins/src/lib.rs
  93. 4 1
      programs/sbf/rust/noop/Cargo.toml
  94. 4 3
      programs/sbf/rust/noop/src/lib.rs
  95. 5 1
      programs/sbf/rust/panic/Cargo.toml
  96. 6 5
      programs/sbf/rust/panic/src/lib.rs
  97. 1 0
      programs/sbf/rust/param_passing/Cargo.toml
  98. 2 4
      programs/sbf/rust/param_passing/src/lib.rs
  99. 0 1
      programs/sbf/rust/param_passing_dep/Cargo.toml
  100. 0 2
      programs/sbf/rust/param_passing_dep/src/lib.rs

+ 11 - 8
Cargo.lock

@@ -6844,14 +6844,18 @@ dependencies = [
  "solana-account",
  "solana-account",
  "solana-banks-interface",
  "solana-banks-interface",
  "solana-banks-server",
  "solana-banks-server",
+ "solana-clock",
  "solana-commitment-config",
  "solana-commitment-config",
+ "solana-hash",
  "solana-message",
  "solana-message",
- "solana-program",
+ "solana-program-pack",
  "solana-pubkey",
  "solana-pubkey",
+ "solana-rent",
  "solana-runtime",
  "solana-runtime",
  "solana-signature",
  "solana-signature",
  "solana-signer",
  "solana-signer",
  "solana-system-interface",
  "solana-system-interface",
+ "solana-sysvar",
  "solana-transaction",
  "solana-transaction",
  "solana-transaction-context",
  "solana-transaction-context",
  "solana-transaction-error",
  "solana-transaction-error",
@@ -7345,6 +7349,7 @@ dependencies = [
  "serde_json",
  "serde_json",
  "solana-account",
  "solana-account",
  "solana-account-decoder",
  "solana-account-decoder",
+ "solana-address-lookup-table-interface",
  "solana-borsh",
  "solana-borsh",
  "solana-bpf-loader-program",
  "solana-bpf-loader-program",
  "solana-clap-utils",
  "solana-clap-utils",
@@ -7378,7 +7383,6 @@ dependencies = [
  "solana-offchain-message",
  "solana-offchain-message",
  "solana-packet",
  "solana-packet",
  "solana-presigner",
  "solana-presigner",
- "solana-program",
  "solana-program-runtime",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-pubkey",
  "solana-pubsub-client",
  "solana-pubsub-client",
@@ -7458,12 +7462,12 @@ dependencies = [
  "solana-message",
  "solana-message",
  "solana-native-token",
  "solana-native-token",
  "solana-packet",
  "solana-packet",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-rpc-client-api",
  "solana-rpc-client-api",
  "solana-sdk-ids",
  "solana-sdk-ids",
  "solana-signature",
  "solana-signature",
  "solana-signer",
  "solana-signer",
+ "solana-stake-interface",
  "solana-system-interface",
  "solana-system-interface",
  "solana-sysvar",
  "solana-sysvar",
  "solana-transaction",
  "solana-transaction",
@@ -7640,10 +7644,10 @@ dependencies = [
  "solana-keypair",
  "solana-keypair",
  "solana-message",
  "solana-message",
  "solana-packet",
  "solana-packet",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-sdk-ids",
  "solana-sdk-ids",
  "solana-signer",
  "solana-signer",
+ "solana-stake-interface",
  "solana-svm-transaction",
  "solana-svm-transaction",
  "solana-system-interface",
  "solana-system-interface",
  "solana-transaction",
  "solana-transaction",
@@ -9860,7 +9864,6 @@ dependencies = [
  "solana-instruction",
  "solana-instruction",
  "solana-keypair",
  "solana-keypair",
  "solana-message",
  "solana-message",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-rpc-client-api",
  "solana-rpc-client-api",
  "solana-signature",
  "solana-signature",
@@ -9870,6 +9873,7 @@ dependencies = [
  "solana-transaction-error",
  "solana-transaction-error",
  "solana-transaction-status-client-types",
  "solana-transaction-status-client-types",
  "solana-version",
  "solana-version",
+ "solana-vote-interface",
  "static_assertions",
  "static_assertions",
  "tokio",
  "tokio",
 ]
 ]
@@ -10081,7 +10085,6 @@ dependencies = [
  "solana-perf",
  "solana-perf",
  "solana-poh-config",
  "solana-poh-config",
  "solana-precompile-error",
  "solana-precompile-error",
- "solana-program",
  "solana-program-runtime",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-pubkey",
  "solana-rayon-threadlimit",
  "solana-rayon-threadlimit",
@@ -10152,7 +10155,6 @@ dependencies = [
  "solana-instruction",
  "solana-instruction",
  "solana-keypair",
  "solana-keypair",
  "solana-message",
  "solana-message",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-sdk-ids",
  "solana-sdk-ids",
  "solana-signature",
  "solana-signature",
@@ -10162,6 +10164,7 @@ dependencies = [
  "solana-system-transaction",
  "solana-system-transaction",
  "solana-transaction",
  "solana-transaction",
  "solana-transaction-error",
  "solana-transaction-error",
+ "solana-vote-interface",
  "thiserror 2.0.12",
  "thiserror 2.0.12",
 ]
 ]
 
 
@@ -11693,7 +11696,6 @@ dependencies = [
  "solana-keypair",
  "solana-keypair",
  "solana-ledger",
  "solana-ledger",
  "solana-logger",
  "solana-logger",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-runtime",
  "solana-runtime",
  "solana-shred-version",
  "solana-shred-version",
@@ -11702,6 +11704,7 @@ dependencies = [
  "solana-time-utils",
  "solana-time-utils",
  "solana-timings",
  "solana-timings",
  "solana-vote",
  "solana-vote",
+ "solana-vote-interface",
  "solana-vote-program",
  "solana-vote-program",
  "tempfile",
  "tempfile",
 ]
 ]

+ 1 - 1
accounts-db/src/blockhash_queue.rs

@@ -144,7 +144,7 @@ impl BlockhashQueue {
 
 
     #[deprecated(
     #[deprecated(
         since = "2.0.0",
         since = "2.0.0",
-        note = "Please use `solana_program::clock::MAX_PROCESSING_AGE`"
+        note = "Please use `solana_clock::MAX_PROCESSING_AGE`"
     )]
     )]
     pub fn get_max_age(&self) -> usize {
     pub fn get_max_age(&self) -> usize {
         self.max_age
         self.max_age

+ 6 - 1
banks-client/Cargo.toml

@@ -14,10 +14,15 @@ borsh = { workspace = true }
 futures = { workspace = true }
 futures = { workspace = true }
 solana-account = { workspace = true }
 solana-account = { workspace = true }
 solana-banks-interface = { workspace = true }
 solana-banks-interface = { workspace = true }
+solana-clock = { workspace = true }
 solana-commitment-config = { workspace = true }
 solana-commitment-config = { workspace = true }
+solana-hash = { workspace = true }
 solana-message = { workspace = true }
 solana-message = { workspace = true }
-solana-program = { workspace = true }
+solana-program-pack = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-rent = { workspace = true }
 solana-signature = { workspace = true }
 solana-signature = { workspace = true }
+solana-sysvar = { workspace = true }
 solana-transaction = { workspace = true }
 solana-transaction = { workspace = true }
 solana-transaction-context = { workspace = true }
 solana-transaction-context = { workspace = true }
 solana-transaction-error = { workspace = true }
 solana-transaction-error = { workspace = true }

+ 6 - 3
banks-client/src/lib.rs

@@ -17,12 +17,15 @@ use {
         BanksRequest, BanksResponse, BanksTransactionResultWithMetadata,
         BanksRequest, BanksResponse, BanksTransactionResultWithMetadata,
         BanksTransactionResultWithSimulation,
         BanksTransactionResultWithSimulation,
     },
     },
+    solana_clock::Slot,
     solana_commitment_config::CommitmentLevel,
     solana_commitment_config::CommitmentLevel,
+    solana_hash::Hash,
     solana_message::Message,
     solana_message::Message,
-    solana_program::{
-        clock::Slot, hash::Hash, program_pack::Pack, pubkey::Pubkey, rent::Rent, sysvar::Sysvar,
-    },
+    solana_program_pack::Pack,
+    solana_pubkey::Pubkey,
+    solana_rent::Rent,
     solana_signature::Signature,
     solana_signature::Signature,
+    solana_sysvar::Sysvar,
     solana_transaction::versioned::VersionedTransaction,
     solana_transaction::versioned::VersionedTransaction,
     tarpc::{
     tarpc::{
         client::{self, NewClient, RequestDispatch},
         client::{self, NewClient, RequestDispatch},

+ 1 - 1
cli-output/Cargo.toml

@@ -33,11 +33,11 @@ solana-hash = { workspace = true }
 solana-message = { workspace = true }
 solana-message = { workspace = true }
 solana-native-token = { workspace = true }
 solana-native-token = { workspace = true }
 solana-packet = { workspace = true }
 solana-packet = { workspace = true }
-solana-program = { workspace = true }
 solana-pubkey = { workspace = true }
 solana-pubkey = { workspace = true }
 solana-rpc-client-api = { workspace = true }
 solana-rpc-client-api = { workspace = true }
 solana-sdk-ids = { workspace = true }
 solana-sdk-ids = { workspace = true }
 solana-signature = { workspace = true }
 solana-signature = { workspace = true }
+solana-stake-interface = { workspace = true }
 solana-system-interface = { workspace = true }
 solana-system-interface = { workspace = true }
 solana-sysvar = { workspace = true }
 solana-sysvar = { workspace = true }
 solana-transaction = { workspace = true, features = ["verify"] }
 solana-transaction = { workspace = true, features = ["verify"] }

+ 1 - 1
cli-output/src/cli_output.rs

@@ -26,13 +26,13 @@ use {
     solana_epoch_info::EpochInfo,
     solana_epoch_info::EpochInfo,
     solana_hash::Hash,
     solana_hash::Hash,
     solana_native_token::lamports_to_sol,
     solana_native_token::lamports_to_sol,
-    solana_program::stake::state::{Authorized, Lockup},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_rpc_client_api::response::{
     solana_rpc_client_api::response::{
         RpcAccountBalance, RpcContactInfo, RpcInflationGovernor, RpcInflationRate, RpcKeyedAccount,
         RpcAccountBalance, RpcContactInfo, RpcInflationGovernor, RpcInflationRate, RpcKeyedAccount,
         RpcSupply, RpcVoteAccountInfo,
         RpcSupply, RpcVoteAccountInfo,
     },
     },
     solana_signature::Signature,
     solana_signature::Signature,
+    solana_stake_interface::state::{Authorized, Lockup},
     solana_sysvar::stake_history::StakeHistoryEntry,
     solana_sysvar::stake_history::StakeHistoryEntry,
     solana_transaction::{versioned::VersionedTransaction, Transaction},
     solana_transaction::{versioned::VersionedTransaction, Transaction},
     solana_transaction_error::TransactionError,
     solana_transaction_error::TransactionError,

+ 1 - 1
cli-output/src/display.rs

@@ -11,9 +11,9 @@ use {
     solana_hash::Hash,
     solana_hash::Hash,
     solana_message::{compiled_instruction::CompiledInstruction, v0::MessageAddressTableLookup},
     solana_message::{compiled_instruction::CompiledInstruction, v0::MessageAddressTableLookup},
     solana_native_token::lamports_to_sol,
     solana_native_token::lamports_to_sol,
-    solana_program::stake,
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_signature::Signature,
     solana_signature::Signature,
+    solana_stake_interface as stake,
     solana_transaction::versioned::{TransactionVersion, VersionedTransaction},
     solana_transaction::versioned::{TransactionVersion, VersionedTransaction},
     solana_transaction_error::TransactionError,
     solana_transaction_error::TransactionError,
     solana_transaction_status::{
     solana_transaction_status::{

+ 1 - 1
cli/Cargo.toml

@@ -31,6 +31,7 @@ serde_derive = { workspace = true }
 serde_json = { workspace = true }
 serde_json = { workspace = true }
 solana-account = "=2.2.1"
 solana-account = "=2.2.1"
 solana-account-decoder = { workspace = true }
 solana-account-decoder = { workspace = true }
+solana-address-lookup-table-interface = { workspace = true }
 solana-borsh = "=2.2.1"
 solana-borsh = "=2.2.1"
 solana-bpf-loader-program = { workspace = true }
 solana-bpf-loader-program = { workspace = true }
 solana-clap-utils = { workspace = true }
 solana-clap-utils = { workspace = true }
@@ -61,7 +62,6 @@ solana-native-token = "=2.2.2"
 solana-nonce = "=2.2.1"
 solana-nonce = "=2.2.1"
 solana-offchain-message = { version = "=2.2.1", features = ["verify"] }
 solana-offchain-message = { version = "=2.2.1", features = ["verify"] }
 solana-packet = "=2.2.1"
 solana-packet = "=2.2.1"
-solana-program = { version = "=2.2.1", default-features = false }
 solana-program-runtime = { workspace = true }
 solana-program-runtime = { workspace = true }
 solana-pubkey = { version = "=2.4.0", default-features = false }
 solana-pubkey = { version = "=2.4.0", default-features = false }
 solana-pubsub-client = { workspace = true }
 solana-pubsub-client = { workspace = true }

+ 7 - 7
cli/src/address_lookup_table.rs

@@ -2,19 +2,19 @@ use {
     crate::cli::{CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult},
     crate::cli::{CliCommand, CliCommandInfo, CliConfig, CliError, ProcessResult},
     clap::{App, AppSettings, Arg, ArgMatches, SubCommand},
     clap::{App, AppSettings, Arg, ArgMatches, SubCommand},
     solana_account::from_account,
     solana_account::from_account,
-    solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*},
-    solana_cli_output::{CliAddressLookupTable, CliAddressLookupTableCreated, CliSignature},
-    solana_clock::Clock,
-    solana_commitment_config::CommitmentConfig,
-    solana_message::Message,
-    solana_program::address_lookup_table::{
-        self,
+    solana_address_lookup_table_interface::{
+        self as address_lookup_table,
         instruction::{
         instruction::{
             close_lookup_table, create_lookup_table, deactivate_lookup_table, extend_lookup_table,
             close_lookup_table, create_lookup_table, deactivate_lookup_table, extend_lookup_table,
             freeze_lookup_table,
             freeze_lookup_table,
         },
         },
         state::AddressLookupTable,
         state::AddressLookupTable,
     },
     },
+    solana_clap_utils::{self, input_parsers::*, input_validators::*, keypair::*},
+    solana_cli_output::{CliAddressLookupTable, CliAddressLookupTableCreated, CliSignature},
+    solana_clock::Clock,
+    solana_commitment_config::CommitmentConfig,
+    solana_message::Message,
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_rpc_client::rpc_client::RpcClient,
     solana_rpc_client::rpc_client::RpcClient,

+ 1 - 1
cli/src/cli.rs

@@ -20,7 +20,6 @@ use {
     solana_instruction::error::InstructionError,
     solana_instruction::error::InstructionError,
     solana_keypair::{read_keypair_file, Keypair},
     solana_keypair::{read_keypair_file, Keypair},
     solana_offchain_message::OffchainMessage,
     solana_offchain_message::OffchainMessage,
-    solana_program::stake::{instruction::LockupArgs, state::Lockup},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_rpc_client::rpc_client::RpcClient,
     solana_rpc_client::rpc_client::RpcClient,
@@ -31,6 +30,7 @@ use {
     solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_rpc_client_nonce_utils::blockhash_query::BlockhashQuery,
     solana_signature::Signature,
     solana_signature::Signature,
     solana_signer::{Signer, SignerError},
     solana_signer::{Signer, SignerError},
+    solana_stake_interface::{instruction::LockupArgs, state::Lockup},
     solana_tps_client::{utils::create_connection_cache, TpsClient},
     solana_tps_client::{utils::create_connection_cache, TpsClient},
     solana_tpu_client::tpu_client::{
     solana_tpu_client::tpu_client::{
         TpuClient, TpuClientConfig, DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_ENABLE_UDP,
         TpuClient, TpuClientConfig, DEFAULT_TPU_CONNECTION_POOL_SIZE, DEFAULT_TPU_ENABLE_UDP,

+ 1 - 1
cli/src/cluster_query.rs

@@ -33,7 +33,6 @@ use {
     solana_message::Message,
     solana_message::Message,
     solana_native_token::lamports_to_sol,
     solana_native_token::lamports_to_sol,
     solana_nonce::state::State as NonceState,
     solana_nonce::state::State as NonceState,
-    solana_program::stake::{self, state::StakeStateV2},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_pubsub_client::pubsub_client::PubsubClient,
     solana_pubsub_client::pubsub_client::PubsubClient,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
@@ -53,6 +52,7 @@ use {
     solana_sdk_ids::sysvar::{self, stake_history},
     solana_sdk_ids::sysvar::{self, stake_history},
     solana_signature::Signature,
     solana_signature::Signature,
     solana_slot_history::{self as slot_history, SlotHistory},
     solana_slot_history::{self as slot_history, SlotHistory},
+    solana_stake_interface::{self as stake, state::StakeStateV2},
     solana_system_interface::{instruction as system_instruction, MAX_PERMITTED_DATA_LENGTH},
     solana_system_interface::{instruction as system_instruction, MAX_PERMITTED_DATA_LENGTH},
     solana_tps_client::TpsClient,
     solana_tps_client::TpsClient,
     solana_transaction::Transaction,
     solana_transaction::Transaction,

+ 7 - 6
cli/src/stake.rs

@@ -37,12 +37,6 @@ use {
     solana_epoch_schedule::EpochSchedule,
     solana_epoch_schedule::EpochSchedule,
     solana_message::Message,
     solana_message::Message,
     solana_native_token::Sol,
     solana_native_token::Sol,
-    solana_program::stake::{
-        self,
-        instruction::{self as stake_instruction, LockupArgs, StakeError},
-        state::{Authorized, Lockup, Meta, StakeActivationStatus, StakeAuthorize, StakeStateV2},
-        tools::{acceptable_reference_epoch_credits, eligible_for_deactivate_delinquent},
-    },
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_remote_wallet::remote_wallet::RemoteWalletManager,
     solana_rpc_client::rpc_client::RpcClient,
     solana_rpc_client::rpc_client::RpcClient,
@@ -56,6 +50,13 @@ use {
         system_program,
         system_program,
         sysvar::{clock, stake_history},
         sysvar::{clock, stake_history},
     },
     },
+    solana_stake_interface::{
+        self as stake,
+        error::StakeError,
+        instruction::{self as stake_instruction, LockupArgs},
+        state::{Authorized, Lockup, Meta, StakeActivationStatus, StakeAuthorize, StakeStateV2},
+        tools::{acceptable_reference_epoch_credits, eligible_for_deactivate_delinquent},
+    },
     solana_system_interface::{error::SystemError, instruction as system_instruction},
     solana_system_interface::{error::SystemError, instruction as system_instruction},
     solana_sysvar::stake_history::StakeHistory,
     solana_sysvar::stake_history::StakeHistory,
     solana_transaction::Transaction,
     solana_transaction::Transaction,

+ 1 - 1
compute-budget-instruction/Cargo.toml

@@ -36,8 +36,8 @@ solana-builtins-default-costs = { workspace = true, features = ["dev-context-onl
 solana-hash = { workspace = true }
 solana-hash = { workspace = true }
 solana-keypair = { workspace = true }
 solana-keypair = { workspace = true }
 solana-message = { workspace = true }
 solana-message = { workspace = true }
-solana-program = { workspace = true }
 solana-signer = { workspace = true }
 solana-signer = { workspace = true }
+solana-stake-interface = { workspace = true }
 solana-system-interface = { workspace = true }
 solana-system-interface = { workspace = true }
 solana-transaction = { workspace = true, features = ["blake3"] }
 solana-transaction = { workspace = true, features = ["blake3"] }
 
 

+ 1 - 1
compute-budget-instruction/src/compute_budget_instruction_details.rs

@@ -516,7 +516,7 @@ mod test {
     fn test_builtin_program_migration() {
     fn test_builtin_program_migration() {
         let tx = build_sanitized_transaction(&[
         let tx = build_sanitized_transaction(&[
             Instruction::new_with_bincode(Pubkey::new_unique(), &(), vec![]),
             Instruction::new_with_bincode(Pubkey::new_unique(), &(), vec![]),
-            solana_program::stake::instruction::delegate_stake(
+            solana_stake_interface::instruction::delegate_stake(
                 &Pubkey::new_unique(),
                 &Pubkey::new_unique(),
                 &Pubkey::new_unique(),
                 &Pubkey::new_unique(),
                 &Pubkey::new_unique(),
                 &Pubkey::new_unique(),

+ 1 - 1
program-test/Cargo.toml

@@ -27,7 +27,6 @@ solana-banks-server = { workspace = true }
 solana-clock = { workspace = true }
 solana-clock = { workspace = true }
 solana-commitment-config = { workspace = true }
 solana-commitment-config = { workspace = true }
 solana-compute-budget = { workspace = true }
 solana-compute-budget = { workspace = true }
-solana-cpi = { workspace = true }
 solana-epoch-rewards = { workspace = true }
 solana-epoch-rewards = { workspace = true }
 solana-epoch-schedule = { workspace = true }
 solana-epoch-schedule = { workspace = true }
 solana-fee-calculator = { workspace = true }
 solana-fee-calculator = { workspace = true }
@@ -67,6 +66,7 @@ thiserror = { workspace = true }
 tokio = { workspace = true, features = ["full"] }
 tokio = { workspace = true, features = ["full"] }
 
 
 [dev-dependencies]
 [dev-dependencies]
+solana-cpi = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
 solana-stake-program = { workspace = true }
 solana-stake-program = { workspace = true }
 test-case = { workspace = true }
 test-case = { workspace = true }

+ 1 - 2
program-test/tests/cpi.rs

@@ -1,10 +1,9 @@
 use {
 use {
     solana_account_info::{next_account_info, AccountInfo},
     solana_account_info::{next_account_info, AccountInfo},
-    solana_cpi::invoke,
     solana_instruction::{AccountMeta, Instruction},
     solana_instruction::{AccountMeta, Instruction},
     solana_keypair::Keypair,
     solana_keypair::Keypair,
     solana_msg::msg,
     solana_msg::msg,
-    solana_program::instruction::get_stack_height,
+    solana_program::{instruction::get_stack_height, program::invoke},
     solana_program_entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
     solana_program_entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
     solana_program_test::{processor, ProgramTest},
     solana_program_test::{processor, ProgramTest},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,

+ 1 - 1
program-test/tests/realloc.rs

@@ -1,8 +1,8 @@
 use {
 use {
     solana_account_info::{next_account_info, AccountInfo},
     solana_account_info::{next_account_info, AccountInfo},
-    solana_cpi::invoke,
     solana_instruction::{AccountMeta, Instruction},
     solana_instruction::{AccountMeta, Instruction},
     solana_keypair::Keypair,
     solana_keypair::Keypair,
+    solana_program::program::invoke,
     solana_program_error::ProgramResult,
     solana_program_error::ProgramResult,
     solana_program_test::{processor, ProgramTest},
     solana_program_test::{processor, ProgramTest},
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,

+ 3 - 3
programs/bpf_loader/benches/bpf_loader_upgradeable.rs

@@ -3,12 +3,12 @@ use {
     solana_account::{state_traits::StateMut, AccountSharedData},
     solana_account::{state_traits::StateMut, AccountSharedData},
     solana_bpf_loader_program::Entrypoint,
     solana_bpf_loader_program::Entrypoint,
     solana_instruction::AccountMeta,
     solana_instruction::AccountMeta,
-    solana_program::{
-        bpf_loader_upgradeable::{self, UpgradeableLoaderState},
-        loader_upgradeable_instruction::UpgradeableLoaderInstruction,
+    solana_loader_v3_interface::{
+        instruction::UpgradeableLoaderInstruction, state::UpgradeableLoaderState,
     },
     },
     solana_program_runtime::invoke_context::mock_process_instruction,
     solana_program_runtime::invoke_context::mock_process_instruction,
     solana_pubkey::Pubkey,
     solana_pubkey::Pubkey,
+    solana_sdk_ids::bpf_loader_upgradeable,
 };
 };
 
 
 #[derive(Default)]
 #[derive(Default)]

+ 1 - 16
programs/bpf_loader/src/syscalls/cpi.rs

@@ -9,25 +9,10 @@ use {
     solana_transaction_context::BorrowedAccount,
     solana_transaction_context::BorrowedAccount,
     std::{mem, ptr},
     std::{mem, ptr},
 };
 };
-// consts inlined to avoid solana-program dep
+
 const MAX_CPI_INSTRUCTION_DATA_LEN: u64 = 10 * 1024;
 const MAX_CPI_INSTRUCTION_DATA_LEN: u64 = 10 * 1024;
-#[cfg(test)]
-static_assertions::const_assert_eq!(
-    MAX_CPI_INSTRUCTION_DATA_LEN,
-    solana_program::syscalls::MAX_CPI_INSTRUCTION_DATA_LEN
-);
 const MAX_CPI_INSTRUCTION_ACCOUNTS: u8 = u8::MAX;
 const MAX_CPI_INSTRUCTION_ACCOUNTS: u8 = u8::MAX;
-#[cfg(test)]
-static_assertions::const_assert_eq!(
-    MAX_CPI_INSTRUCTION_ACCOUNTS,
-    solana_program::syscalls::MAX_CPI_INSTRUCTION_ACCOUNTS
-);
 const MAX_CPI_ACCOUNT_INFOS: usize = 128;
 const MAX_CPI_ACCOUNT_INFOS: usize = 128;
-#[cfg(test)]
-static_assertions::const_assert_eq!(
-    MAX_CPI_ACCOUNT_INFOS,
-    solana_program::syscalls::MAX_CPI_ACCOUNT_INFOS
-);
 
 
 fn check_account_info_pointer(
 fn check_account_info_pointer(
     invoke_context: &InvokeContext,
     invoke_context: &InvokeContext,

+ 1 - 1
programs/bpf_loader/src/syscalls/mod.rs

@@ -4533,7 +4533,7 @@ mod tests {
 
 
     #[test]
     #[test]
     fn test_create_program_address() {
     fn test_create_program_address() {
-        // These tests duplicate the direct tests in solana_program::pubkey
+        // These tests duplicate the direct tests in solana_pubkey
 
 
         prepare_mockup!(invoke_context, program_id, bpf_loader::id());
         prepare_mockup!(invoke_context, program_id, bpf_loader::id());
         let address = bpf_loader_upgradeable::id();
         let address = bpf_loader_upgradeable::id();

+ 265 - 42
programs/sbf/Cargo.lock

@@ -5494,10 +5494,15 @@ dependencies = [
  "futures 0.3.31",
  "futures 0.3.31",
  "solana-account",
  "solana-account",
  "solana-banks-interface",
  "solana-banks-interface",
+ "solana-clock",
  "solana-commitment-config",
  "solana-commitment-config",
+ "solana-hash",
  "solana-message",
  "solana-message",
- "solana-program",
+ "solana-program-pack",
+ "solana-pubkey",
+ "solana-rent",
  "solana-signature",
  "solana-signature",
+ "solana-sysvar",
  "solana-transaction",
  "solana-transaction",
  "solana-transaction-context",
  "solana-transaction-context",
  "solana-transaction-error",
  "solana-transaction-error",
@@ -5791,11 +5796,11 @@ dependencies = [
  "solana-message",
  "solana-message",
  "solana-native-token",
  "solana-native-token",
  "solana-packet",
  "solana-packet",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-rpc-client-api",
  "solana-rpc-client-api",
  "solana-sdk-ids",
  "solana-sdk-ids",
  "solana-signature",
  "solana-signature",
+ "solana-stake-interface",
  "solana-system-interface",
  "solana-system-interface",
  "solana-sysvar",
  "solana-sysvar",
  "solana-transaction",
  "solana-transaction",
@@ -7315,7 +7320,6 @@ dependencies = [
  "solana-clock",
  "solana-clock",
  "solana-commitment-config",
  "solana-commitment-config",
  "solana-compute-budget",
  "solana-compute-budget",
- "solana-cpi",
  "solana-epoch-rewards",
  "solana-epoch-rewards",
  "solana-epoch-schedule",
  "solana-epoch-schedule",
  "solana-fee-calculator",
  "solana-fee-calculator",
@@ -7641,6 +7645,7 @@ dependencies = [
  "solana-transaction-error",
  "solana-transaction-error",
  "solana-transaction-status-client-types",
  "solana-transaction-status-client-types",
  "solana-version",
  "solana-version",
+ "solana-vote-interface",
  "tokio",
  "tokio",
 ]
 ]
 
 
@@ -7789,7 +7794,6 @@ dependencies = [
  "solana-perf",
  "solana-perf",
  "solana-poh-config",
  "solana-poh-config",
  "solana-precompile-error",
  "solana-precompile-error",
- "solana-program",
  "solana-program-runtime",
  "solana-program-runtime",
  "solana-pubkey",
  "solana-pubkey",
  "solana-rayon-threadlimit",
  "solana-rayon-threadlimit",
@@ -7939,36 +7943,44 @@ dependencies = [
 name = "solana-sbf-rust-128bit"
 name = "solana-sbf-rust-128bit"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-program-entrypoint",
  "solana-sbf-rust-128bit-dep",
  "solana-sbf-rust-128bit-dep",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-128bit-dep"
 name = "solana-sbf-rust-128bit-dep"
 version = "2.3.0"
 version = "2.3.0"
-dependencies = [
- "solana-program",
-]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-account-mem"
 name = "solana-sbf-rust-account-mem"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-account-mem-deprecated"
 name = "solana-sbf-rust-account-mem-deprecated"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
  "solana-program",
  "solana-program",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-alloc"
 name = "solana-sbf-rust-alloc"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7977,7 +7989,8 @@ version = "2.3.0"
 dependencies = [
 dependencies = [
  "array-bytes",
  "array-bytes",
  "solana-bn254",
  "solana-bn254",
- "solana-program",
+ "solana-msg",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7986,7 +7999,8 @@ version = "2.3.0"
 dependencies = [
 dependencies = [
  "array-bytes",
  "array-bytes",
  "solana-bn254",
  "solana-bn254",
- "solana-program",
+ "solana-msg",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -7997,7 +8011,9 @@ dependencies = [
  "serde",
  "serde",
  "serde_derive",
  "serde_derive",
  "serde_json",
  "serde_json",
- "solana-program",
+ "solana-big-mod-exp",
+ "solana-msg",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8005,21 +8021,34 @@ name = "solana-sbf-rust-call-args"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "borsh 1.5.7",
  "borsh 1.5.7",
+ "solana-account-info",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-call-depth"
 name = "solana-sbf-rust-call-depth"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-caller-access"
 name = "solana-sbf-rust-caller-access"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8027,14 +8056,19 @@ name = "solana-sbf-rust-curve25519"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "solana-curve25519",
  "solana-curve25519",
- "solana-program",
+ "solana-msg",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-custom-heap"
 name = "solana-sbf-rust-custom-heap"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8042,30 +8076,46 @@ name = "solana-sbf-rust-dep-crate"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "byteorder 1.5.0",
  "byteorder 1.5.0",
- "solana-program",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-deprecated-loader"
 name = "solana-sbf-rust-deprecated-loader"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
  "solana-sbf-rust-invoke-dep",
  "solana-sbf-rust-invoke-dep",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-dep",
+ "solana-sdk-ids",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-divide-by-zero"
 name = "solana-sbf-rust-divide-by-zero"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-dup-accounts"
 name = "solana-sbf-rust-dup-accounts"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8074,8 +8124,12 @@ version = "2.3.0"
 dependencies = [
 dependencies = [
  "num-derive",
  "num-derive",
  "num-traits",
  "num-traits",
+ "solana-account-info",
  "solana-decode-error",
  "solana-decode-error",
- "solana-program",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
  "thiserror 1.0.69",
  "thiserror 1.0.69",
 ]
 ]
 
 
@@ -8083,59 +8137,105 @@ dependencies = [
 name = "solana-sbf-rust-external-spend"
 name = "solana-sbf-rust-external-spend"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-get-minimum-delegation"
 name = "solana-sbf-rust-get-minimum-delegation"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-stake-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-inner_instruction_alignment_check"
 name = "solana-sbf-rust-inner_instruction_alignment_check"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-instruction-introspection"
 name = "solana-sbf-rust-instruction-introspection"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-invoke"
 name = "solana-sbf-rust-invoke"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
  "solana-sbf-rust-invoke-dep",
  "solana-sbf-rust-invoke-dep",
  "solana-sbf-rust-invoked-dep",
  "solana-sbf-rust-invoked-dep",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-dep",
+ "solana-sdk-ids",
+ "solana-system-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-invoke-and-error"
 name = "solana-sbf-rust-invoke-and-error"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-invoke-and-ok"
 name = "solana-sbf-rust-invoke-and-ok"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-invoke-and-return"
 name = "solana-sbf-rust-invoke-and-return"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8146,15 +8246,24 @@ version = "2.3.0"
 name = "solana-sbf-rust-invoked"
 name = "solana-sbf-rust-invoked"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
  "solana-sbf-rust-invoked-dep",
  "solana-sbf-rust-invoked-dep",
+ "solana-sdk-ids",
+ "solana-system-interface",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-invoked-dep"
 name = "solana-sbf-rust-invoked-dep"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-instruction",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8162,20 +8271,28 @@ name = "solana-sbf-rust-iter"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-log-data"
 name = "solana-sbf-rust-log-data"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-many-args"
 name = "solana-sbf-rust-many-args"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
  "solana-sbf-rust-many-args-dep",
  "solana-sbf-rust-many-args-dep",
 ]
 ]
 
 
@@ -8183,6 +8300,7 @@ dependencies = [
 name = "solana-sbf-rust-many-args-dep"
 name = "solana-sbf-rust-many-args-dep"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-msg",
  "solana-program",
  "solana-program",
 ]
 ]
 
 
@@ -8190,22 +8308,23 @@ dependencies = [
 name = "solana-sbf-rust-mem"
 name = "solana-sbf-rust-mem"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-program-memory",
+ "solana-pubkey",
  "solana-sbf-rust-mem-dep",
  "solana-sbf-rust-mem-dep",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-mem-dep"
 name = "solana-sbf-rust-mem-dep"
 version = "2.3.0"
 version = "2.3.0"
-dependencies = [
- "solana-program",
-]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-membuiltins"
 name = "solana-sbf-rust-membuiltins"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-program-entrypoint",
  "solana-sbf-rust-mem-dep",
  "solana-sbf-rust-mem-dep",
 ]
 ]
 
 
@@ -8213,14 +8332,21 @@ dependencies = [
 name = "solana-sbf-rust-noop"
 name = "solana-sbf-rust-noop"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-panic"
 name = "solana-sbf-rust-panic"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8228,23 +8354,22 @@ name = "solana-sbf-rust-param-passing"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
  "solana-sbf-rust-param-passing-dep",
  "solana-sbf-rust-param-passing-dep",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-param-passing-dep"
 name = "solana-sbf-rust-param-passing-dep"
 version = "2.3.0"
 version = "2.3.0"
-dependencies = [
- "solana-program",
-]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-poseidon"
 name = "solana-sbf-rust-poseidon"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "array-bytes",
  "array-bytes",
+ "solana-msg",
  "solana-poseidon",
  "solana-poseidon",
- "solana-program",
+ "solana-program-entrypoint",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8253,31 +8378,49 @@ version = "2.3.0"
 dependencies = [
 dependencies = [
  "getrandom 0.2.10",
  "getrandom 0.2.10",
  "rand 0.8.5",
  "rand 0.8.5",
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-realloc"
 name = "solana-sbf-rust-realloc"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-dep",
+ "solana-system-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-realloc-dep"
 name = "solana-sbf-rust-realloc-dep"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-instruction",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-realloc-invoke"
 name = "solana-sbf-rust-realloc-invoke"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-dep",
  "solana-sbf-rust-realloc-invoke-dep",
  "solana-sbf-rust-realloc-invoke-dep",
+ "solana-system-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8288,28 +8431,51 @@ version = "2.3.0"
 name = "solana-sbf-rust-remaining-compute-units"
 name = "solana-sbf-rust-remaining-compute-units"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-ro-account_modify"
 name = "solana-sbf-rust-ro-account_modify"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-ro-modify"
 name = "solana-sbf-rust-ro-modify"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-system-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-sanity"
 name = "solana-sbf-rust-sanity"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sdk-ids",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8317,7 +8483,9 @@ name = "solana-sbf-rust-secp256k1-recover"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "libsecp256k1 0.7.0",
  "libsecp256k1 0.7.0",
- "solana-program",
+ "solana-keccak-hasher",
+ "solana-msg",
+ "solana-program-entrypoint",
  "solana-secp256k1-recover",
  "solana-secp256k1-recover",
 ]
 ]
 
 
@@ -8326,42 +8494,73 @@ name = "solana-sbf-rust-sha"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "blake3",
  "blake3",
- "solana-program",
+ "solana-blake3-hasher",
+ "solana-keccak-hasher",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-sha256-hasher",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-sibling-inner-instructions"
 name = "solana-sbf-rust-sibling-inner-instructions"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-sibling-instructions"
 name = "solana-sbf-rust-sibling-instructions"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-simulation"
 name = "solana-sbf-rust-simulation"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-clock",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-spoof1"
 name = "solana-sbf-rust-spoof1"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-instruction",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-system-interface",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-spoof1-system"
 name = "solana-sbf-rust-spoof1-system"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -8369,28 +8568,52 @@ name = "solana-sbf-rust-sysvar"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
  "bincode",
  "bincode",
- "solana-program",
+ "solana-account-info",
+ "solana-define-syscall",
+ "solana-instruction",
+ "solana-instructions-sysvar",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sdk-ids",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-upgradeable"
 name = "solana-sbf-rust-upgradeable"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-rust-upgraded"
 name = "solana-sbf-rust-upgraded"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
- "solana-program",
+ "solana-account-info",
+ "solana-msg",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
+ "solana-sysvar",
 ]
 ]
 
 
 [[package]]
 [[package]]
 name = "solana-sbf-syscall-get-epoch-stake"
 name = "solana-sbf-syscall-get-epoch-stake"
 version = "2.3.0"
 version = "2.3.0"
 dependencies = [
 dependencies = [
+ "solana-account-info",
+ "solana-msg",
  "solana-program",
  "solana-program",
+ "solana-program-entrypoint",
+ "solana-program-error",
+ "solana-pubkey",
 ]
 ]
 
 
 [[package]]
 [[package]]
@@ -9519,13 +9742,13 @@ dependencies = [
  "solana-gossip",
  "solana-gossip",
  "solana-hash",
  "solana-hash",
  "solana-ledger",
  "solana-ledger",
- "solana-program",
  "solana-pubkey",
  "solana-pubkey",
  "solana-runtime",
  "solana-runtime",
  "solana-shred-version",
  "solana-shred-version",
  "solana-time-utils",
  "solana-time-utils",
  "solana-timings",
  "solana-timings",
  "solana-vote",
  "solana-vote",
+ "solana-vote-interface",
  "solana-vote-program",
  "solana-vote-program",
 ]
 ]
 
 

+ 19 - 0
programs/sbf/Cargo.toml

@@ -37,6 +37,7 @@ serde = "1.0.112"
 serde_derive = "1.0.112"                                                                      # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251
 serde_derive = "1.0.112"                                                                      # must match the serde version, see https://github.com/serde-rs/serde/issues/2584#issuecomment-1685252251
 serde_json = "1.0.56"
 serde_json = "1.0.56"
 solana-account-decoder = { path = "../../account-decoder", version = "=2.3.0" }
 solana-account-decoder = { path = "../../account-decoder", version = "=2.3.0" }
+solana-account-info = "=2.2.1"
 solana-accounts-db = { path = "../../accounts-db", version = "=2.3.0" }
 solana-accounts-db = { path = "../../accounts-db", version = "=2.3.0" }
 solana-bn254 = "=2.2.2"
 solana-bn254 = "=2.2.2"
 solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.3.0" }
 solana-bpf-loader-program = { path = "../bpf_loader", version = "=2.3.0" }
@@ -45,14 +46,21 @@ solana-compute-budget = { path = "../../compute-budget", version = "=2.3.0" }
 solana-compute-budget-instruction = { path = "../../compute-budget-instruction", version = "=2.3.0" }
 solana-compute-budget-instruction = { path = "../../compute-budget-instruction", version = "=2.3.0" }
 solana-curve25519 = { path = "../../curves/curve25519", version = "=2.3.0" }
 solana-curve25519 = { path = "../../curves/curve25519", version = "=2.3.0" }
 solana-decode-error = "=2.2.1"
 solana-decode-error = "=2.2.1"
+solana-define-syscall = "=2.3.0"
 solana-fee = { path = "../../fee", version = "=2.3.0" }
 solana-fee = { path = "../../fee", version = "=2.3.0" }
+solana-instruction = "=2.3.0"
 solana-ledger = { path = "../../ledger", version = "=2.3.0" }
 solana-ledger = { path = "../../ledger", version = "=2.3.0" }
 solana-log-collector = { path = "../../log-collector", version = "=2.3.0" }
 solana-log-collector = { path = "../../log-collector", version = "=2.3.0" }
 solana-logger = "=2.3.1"
 solana-logger = "=2.3.1"
 solana-measure = { path = "../../measure", version = "=2.3.0" }
 solana-measure = { path = "../../measure", version = "=2.3.0" }
+solana-msg = "=2.2.1"
 solana-poseidon = { path = "../../poseidon/", version = "=2.3.0" }
 solana-poseidon = { path = "../../poseidon/", version = "=2.3.0" }
 solana-program = "=2.2.1"
 solana-program = "=2.2.1"
+solana-program-entrypoint = "=2.2.1"
+solana-program-error = "=2.2.1"
+solana-program-memory = "=2.2.1"
 solana-program-runtime = { path = "../../program-runtime", version = "=2.3.0" }
 solana-program-runtime = { path = "../../program-runtime", version = "=2.3.0" }
+solana-pubkey = { version = "=2.4.0", default-features = false }
 solana-runtime = { path = "../../runtime", version = "=2.3.0" }
 solana-runtime = { path = "../../runtime", version = "=2.3.0" }
 solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.3.0" }
 solana-runtime-transaction = { path = "../../runtime-transaction", version = "=2.3.0" }
 solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.3.0" }
 solana-sbf-rust-128bit-dep = { path = "rust/128bit_dep", version = "=2.3.0" }
@@ -69,6 +77,7 @@ solana-svm = { path = "../../svm", version = "=2.3.0" }
 solana-svm-callback = { path = "../../svm-callback", version = "=2.3.0" }
 solana-svm-callback = { path = "../../svm-callback", version = "=2.3.0" }
 solana-svm-feature-set = { path = "../../svm-feature-set", version = "=2.3.0" }
 solana-svm-feature-set = { path = "../../svm-feature-set", version = "=2.3.0" }
 solana-svm-transaction = { path = "../../svm-transaction", version = "=2.3.0" }
 solana-svm-transaction = { path = "../../svm-transaction", version = "=2.3.0" }
+solana-sysvar = "=2.2.2"
 solana-timings = { path = "../../timings", version = "=2.3.0" }
 solana-timings = { path = "../../timings", version = "=2.3.0" }
 solana-transaction-context = { path = "../../transaction-context", version = "=2.3.0" }
 solana-transaction-context = { path = "../../transaction-context", version = "=2.3.0" }
 solana-transaction-status = { path = "../../transaction-status", version = "=2.3.0" }
 solana-transaction-status = { path = "../../transaction-status", version = "=2.3.0" }
@@ -78,6 +87,16 @@ solana-vote-program = { path = "../../programs/vote", version = "=2.3.0" }
 agave-validator = { path = "../../validator", version = "=2.3.0" }
 agave-validator = { path = "../../validator", version = "=2.3.0" }
 solana-zk-sdk = "=2.2.1"
 solana-zk-sdk = "=2.2.1"
 thiserror = "1.0"
 thiserror = "1.0"
+solana-stake-interface = { version = "=1.2.1", features = ["bincode"] }
+solana-clock = { version = "=2.2.2", features = ["serde", "sysvar"] }
+solana-system-interface = { version = "=1.0", features = ["bincode"] }
+solana-big-mod-exp = "=2.2.1"
+solana-blake3-hasher = { version = "=2.2.1", features = ["blake3"] }
+solana-hash = { version = "=2.3.0", features = ["bytemuck", "serde", "std"] }
+solana-keccak-hasher = { version = "=2.2.1", features = ["sha3"] }
+solana-sha256-hasher = { version = "=2.2.1", features = ["sha2"] }
+solana-instructions-sysvar = "=2.2.2"
+solana-sdk-ids = "=2.2.1"
 
 
 [package]
 [package]
 name = "solana-sbf-programs"
 name = "solana-sbf-programs"

+ 1 - 1
programs/sbf/rust/128bit/Cargo.toml

@@ -9,7 +9,7 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 solana-sbf-rust-128bit-dep = { workspace = true }
 solana-sbf-rust-128bit-dep = { workspace = true }
 
 
 [lib]
 [lib]

+ 1 - 2
programs/sbf/rust/128bit/src/lib.rs

@@ -2,8 +2,7 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::{custom_heap_default, custom_panic_default, entrypoint::SUCCESS};
+use solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS};
 
 
 #[no_mangle]
 #[no_mangle]
 pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {
 pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

+ 0 - 1
programs/sbf/rust/128bit_dep/Cargo.toml

@@ -9,4 +9,3 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }

+ 0 - 2
programs/sbf/rust/128bit_dep/src/lib.rs

@@ -2,8 +2,6 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-
 pub fn uadd(x: u128, y: u128) -> u128 {
 pub fn uadd(x: u128, y: u128) -> u128 {
     x + y
     x + y
 }
 }

+ 5 - 1
programs/sbf/rust/account_mem/Cargo.toml

@@ -9,7 +9,11 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-program-memory = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 6 - 7
programs/sbf/rust/account_mem/src/lib.rs

@@ -1,14 +1,13 @@
 //! Test mem functions
 //! Test mem functions
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    program_error::ProgramError,
-    program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_program_error::{ProgramError, ProgramResult},
+    solana_program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 pub fn process_instruction(
 pub fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 4 - 0
programs/sbf/rust/account_mem_deprecated/Cargo.toml

@@ -9,7 +9,11 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-error = { workspace = true }
+solana-program-memory = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 5 - 6
programs/sbf/rust/account_mem_deprecated/src/lib.rs

@@ -1,11 +1,10 @@
 //! Test mem functions
 //! Test mem functions
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    program_error::ProgramError,
-    program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_program_error::{ProgramError, ProgramResult},
+    solana_program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
+    solana_pubkey::Pubkey,
 };
 };
 
 
 solana_program::entrypoint_deprecated!(process_instruction);
 solana_program::entrypoint_deprecated!(process_instruction);

+ 3 - 0
programs/sbf/rust/alloc/Cargo.toml

@@ -9,7 +9,10 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-sysvar = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 3 - 3
programs/sbf/rust/alloc/src/lib.rs

@@ -5,9 +5,9 @@
 #[macro_use]
 #[macro_use]
 extern crate alloc;
 extern crate alloc;
 use {
 use {
-    solana_program::{
-        custom_heap_default, custom_panic_default, entrypoint::SUCCESS, log::sol_log_64, msg,
-    },
+    solana_msg::msg,
+    solana_program::log::sol_log_64,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
     std::{alloc::Layout, mem},
     std::{alloc::Layout, mem},
 };
 };
 
 

+ 2 - 1
programs/sbf/rust/alt_bn128/Cargo.toml

@@ -11,7 +11,8 @@ edition = { workspace = true }
 [dependencies]
 [dependencies]
 array-bytes = { workspace = true }
 array-bytes = { workspace = true }
 solana-bn254 = { workspace = true }
 solana-bn254 = { workspace = true }
-solana-program = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 2 - 2
programs/sbf/rust/alt_bn128/src/lib.rs

@@ -1,9 +1,9 @@
 //! Alt_bn128 Syscalls tests
 //! Alt_bn128 Syscalls tests
 
 
-extern crate solana_program;
 use {
 use {
     solana_bn254::prelude::{alt_bn128_addition, alt_bn128_multiplication, alt_bn128_pairing},
     solana_bn254::prelude::{alt_bn128_addition, alt_bn128_multiplication, alt_bn128_pairing},
-    solana_program::{custom_heap_default, custom_panic_default, msg},
+    solana_msg::msg,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default},
 };
 };
 
 
 fn alt_bn128_addition_test() {
 fn alt_bn128_addition_test() {

+ 2 - 1
programs/sbf/rust/alt_bn128_compression/Cargo.toml

@@ -11,7 +11,8 @@ edition = { workspace = true }
 [dependencies]
 [dependencies]
 array-bytes = { workspace = true }
 array-bytes = { workspace = true }
 solana-bn254 = { workspace = true }
 solana-bn254 = { workspace = true }
-solana-program = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 2 - 2
programs/sbf/rust/alt_bn128_compression/src/lib.rs

@@ -1,12 +1,12 @@
 //! Alt_bn128 compression Syscalls tests
 //! Alt_bn128 compression Syscalls tests
 
 
-extern crate solana_program;
 use {
 use {
     solana_bn254::compression::prelude::{
     solana_bn254::compression::prelude::{
         alt_bn128_g1_compress, alt_bn128_g1_decompress, alt_bn128_g2_compress,
         alt_bn128_g1_compress, alt_bn128_g1_decompress, alt_bn128_g2_compress,
         alt_bn128_g2_decompress,
         alt_bn128_g2_decompress,
     },
     },
-    solana_program::{custom_heap_default, custom_panic_default, msg},
+    solana_msg::msg,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default},
 };
 };
 
 
 fn alt_bn128_compression_g1() {
 fn alt_bn128_compression_g1() {

+ 3 - 1
programs/sbf/rust/big_mod_exp/Cargo.toml

@@ -13,7 +13,9 @@ array-bytes = { workspace = true }
 serde = { workspace = true }
 serde = { workspace = true }
 serde_derive = { workspace = true }
 serde_derive = { workspace = true }
 serde_json = { workspace = true }
 serde_json = { workspace = true }
-solana-program = { workspace = true }
+solana-big-mod-exp = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 4 - 2
programs/sbf/rust/big_mod_exp/src/lib.rs

@@ -1,7 +1,9 @@
 //! Big_mod_exp Syscall tests
 //! Big_mod_exp Syscall tests
 
 
-extern crate solana_program;
-use solana_program::{big_mod_exp::big_mod_exp, custom_panic_default, msg};
+use {
+    solana_big_mod_exp::big_mod_exp, solana_msg::msg,
+    solana_program_entrypoint::custom_panic_default,
+};
 
 
 fn big_mod_exp_test() {
 fn big_mod_exp_test() {
     #[derive(serde_derive::Deserialize)]
     #[derive(serde_derive::Deserialize)]

+ 4 - 0
programs/sbf/rust/call_args/Cargo.toml

@@ -10,7 +10,11 @@ edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
 borsh = { workspace = true }
 borsh = { workspace = true }
+solana-account-info = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 5 - 5
programs/sbf/rust/call_args/src/lib.rs

@@ -1,9 +1,9 @@
 use {
 use {
     borsh::{from_slice, to_vec, BorshDeserialize, BorshSerialize},
     borsh::{from_slice, to_vec, BorshDeserialize, BorshSerialize},
-    solana_program::{
-        account_info::AccountInfo, entrypoint::ProgramResult, program::set_return_data,
-        pubkey::Pubkey,
-    },
+    solana_account_info::AccountInfo,
+    solana_program::program::set_return_data,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
 #[derive(BorshSerialize, BorshDeserialize, Clone, Copy)]
 #[derive(BorshSerialize, BorshDeserialize, Clone, Copy)]
@@ -33,7 +33,7 @@ struct OutputData {
     many_args_2: i64,
     many_args_2: i64,
 }
 }
 
 
-solana_program::entrypoint_no_alloc!(entry);
+solana_program_entrypoint::entrypoint_no_alloc!(entry);
 
 
 pub fn entry(_program_id: &Pubkey, _accounts: &[AccountInfo], data: &[u8]) -> ProgramResult {
 pub fn entry(_program_id: &Pubkey, _accounts: &[AccountInfo], data: &[u8]) -> ProgramResult {
     // This code is supposed to occupy stack space. The purpose of this test is to make sure
     // This code is supposed to occupy stack space. The purpose of this test is to make sure

+ 3 - 0
programs/sbf/rust/call_depth/Cargo.toml

@@ -9,7 +9,10 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-sysvar = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 4 - 2
programs/sbf/rust/call_depth/src/lib.rs

@@ -1,7 +1,9 @@
 //! Example Rust-based SBF program that tests call depth and stack usage
 //! Example Rust-based SBF program that tests call depth and stack usage
 
 
-use solana_program::{
-    custom_heap_default, custom_panic_default, entrypoint::SUCCESS, log::sol_log_64, msg,
+use {
+    solana_msg::msg,
+    solana_program::log::sol_log_64,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
 };
 };
 
 
 #[inline(never)]
 #[inline(never)]

+ 6 - 0
programs/sbf/rust/caller_access/Cargo.toml

@@ -9,7 +9,13 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 7 - 9
programs/sbf/rust/caller_access/src/lib.rs

@@ -1,16 +1,14 @@
 use {
 use {
-    solana_program::{
-        account_info::AccountInfo,
-        entrypoint::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        msg,
-        program::invoke,
-        pubkey::Pubkey,
-    },
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program::program::invoke,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
     std::convert::TryInto,
     std::convert::TryInto,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     program_id: &Pubkey,
     program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 2 - 1
programs/sbf/rust/curve25519/Cargo.toml

@@ -10,7 +10,8 @@ edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
 solana-curve25519 = { workspace = true }
 solana-curve25519 = { workspace = true }
-solana-program = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 2 - 2
programs/sbf/rust/curve25519/src/lib.rs

@@ -1,9 +1,9 @@
 //! @brief curve25519 syscall tests
 //! @brief curve25519 syscall tests
 
 
-extern crate solana_program;
 use {
 use {
     solana_curve25519::{edwards, ristretto, scalar},
     solana_curve25519::{edwards, ristretto, scalar},
-    solana_program::{custom_heap_default, custom_panic_default, msg},
+    solana_msg::msg,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default},
 };
 };
 
 
 #[no_mangle]
 #[no_mangle]

+ 5 - 1
programs/sbf/rust/custom_heap/Cargo.toml

@@ -9,7 +9,11 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [features]
 [features]
 default = ["custom-heap"]
 default = ["custom-heap"]

+ 10 - 7
programs/sbf/rust/custom_heap/src/lib.rs

@@ -2,18 +2,21 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-#[cfg(target_os = "solana")]
-use {
-    solana_program::entrypoint::{HEAP_LENGTH, HEAP_START_ADDRESS},
-    std::{mem::size_of, ptr::null_mut},
-};
 use {
 use {
-    solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey},
+    solana_account_info::AccountInfo,
+    solana_msg::msg,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
     std::{
     std::{
         alloc::{alloc, Layout},
         alloc::{alloc, Layout},
         mem::align_of,
         mem::align_of,
     },
     },
 };
 };
+#[cfg(target_os = "solana")]
+use {
+    solana_program_entrypoint::{HEAP_LENGTH, HEAP_START_ADDRESS},
+    std::{mem::size_of, ptr::null_mut},
+};
 
 
 /// Developers can implement their own heap by defining their own
 /// Developers can implement their own heap by defining their own
 /// `#[global_allocator]`.  The following implements a dummy for test purposes
 /// `#[global_allocator]`.  The following implements a dummy for test purposes
@@ -55,7 +58,7 @@ unsafe impl std::alloc::GlobalAlloc for BumpAllocator {
 #[global_allocator]
 #[global_allocator]
 static A: BumpAllocator = BumpAllocator;
 static A: BumpAllocator = BumpAllocator;
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 pub fn process_instruction(
 pub fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 1 - 1
programs/sbf/rust/dep_crate/Cargo.toml

@@ -10,7 +10,7 @@ edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
 byteorder = { workspace = true }
 byteorder = { workspace = true }
-solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 1 - 2
programs/sbf/rust/dep_crate/src/lib.rs

@@ -1,9 +1,8 @@
 //! Example Rust-based SBF program tests dependent crates
 //! Example Rust-based SBF program tests dependent crates
 
 
-extern crate solana_program;
 use {
 use {
     byteorder::{ByteOrder, LittleEndian},
     byteorder::{ByteOrder, LittleEndian},
-    solana_program::entrypoint::SUCCESS,
+    solana_program_entrypoint::SUCCESS,
 };
 };
 
 
 #[no_mangle]
 #[no_mangle]

+ 7 - 0
programs/sbf/rust/deprecated_loader/Cargo.toml

@@ -9,9 +9,16 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 solana-sbf-rust-invoke-dep = { workspace = true }
 solana-sbf-rust-invoke-dep = { workspace = true }
 solana-sbf-rust-realloc-dep = { workspace = true }
 solana-sbf-rust-realloc-dep = { workspace = true }
+solana-sdk-ids = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 9 - 13
programs/sbf/rust/deprecated_loader/src/lib.rs

@@ -3,20 +3,16 @@
 #![allow(unreachable_code)]
 #![allow(unreachable_code)]
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
 use {
 use {
-    solana_program::{
-        account_info::AccountInfo,
-        bpf_loader,
-        entrypoint_deprecated::ProgramResult,
-        instruction::{AccountMeta, Instruction},
-        log::*,
-        msg,
-        program::invoke,
-        pubkey::Pubkey,
-    },
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program::{log::sol_log_params, program::invoke},
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
     solana_sbf_rust_invoke_dep::*,
     solana_sbf_rust_invoke_dep::*,
     solana_sbf_rust_realloc_dep::*,
     solana_sbf_rust_realloc_dep::*,
+    solana_sdk_ids::bpf_loader,
 };
 };
 
 
 #[derive(Debug, PartialEq)]
 #[derive(Debug, PartialEq)]
@@ -135,7 +131,7 @@ fn process_instruction(
             )
             )
             .unwrap();
             .unwrap();
 
 
-            if !solana_program::bpf_loader_deprecated::check_id(realloc_program_owner) {
+            if !solana_sdk_ids::bpf_loader_deprecated::check_id(realloc_program_owner) {
                 assert_eq!(&*account.data.borrow(), &expected);
                 assert_eq!(&*account.data.borrow(), &expected);
             }
             }
         }
         }
@@ -169,7 +165,7 @@ fn process_instruction(
 
 
             // deserialize_parameters_unaligned predates realloc support, and
             // deserialize_parameters_unaligned predates realloc support, and
             // hardcodes the account data length to the original length.
             // hardcodes the account data length to the original length.
-            if !solana_program::bpf_loader_deprecated::check_id(realloc_program_owner) {
+            if !solana_sdk_ids::bpf_loader_deprecated::check_id(realloc_program_owner) {
                 assert_eq!(&*account.data.borrow(), &expected);
                 assert_eq!(&*account.data.borrow(), &expected);
                 assert_eq!(
                 assert_eq!(
                     unsafe {
                     unsafe {

+ 4 - 1
programs/sbf/rust/divide_by_zero/Cargo.toml

@@ -9,7 +9,10 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 2 - 3
programs/sbf/rust/divide_by_zero/src/lib.rs

@@ -2,13 +2,12 @@
 
 
 #![feature(asm_experimental_arch)]
 #![feature(asm_experimental_arch)]
 
 
-extern crate solana_program;
 use {
 use {
-    solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey},
+    solana_account_info::AccountInfo, solana_program_error::ProgramResult, solana_pubkey::Pubkey,
     std::arch::asm,
     std::arch::asm,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 6 - 0
programs/sbf/rust/dup_accounts/Cargo.toml

@@ -9,7 +9,13 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 8 - 10
programs/sbf/rust/dup_accounts/src/lib.rs

@@ -2,18 +2,16 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    msg,
-    program::invoke,
-    program_error::ProgramError,
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program::program::invoke,
+    solana_program_error::{ProgramError, ProgramResult},
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     program_id: &Pubkey,
     program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 5 - 1
programs/sbf/rust/error_handling/Cargo.toml

@@ -11,8 +11,12 @@ edition = { workspace = true }
 [dependencies]
 [dependencies]
 num-derive = { workspace = true }
 num-derive = { workspace = true }
 num-traits = { workspace = true }
 num-traits = { workspace = true }
+solana-account-info = { workspace = true }
 solana-decode-error = { workspace = true }
 solana-decode-error = { workspace = true }
-solana-program = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 thiserror = { workspace = true }
 thiserror = { workspace = true }
 
 
 [lib]
 [lib]

+ 5 - 9
programs/sbf/rust/error_handling/src/lib.rs

@@ -1,17 +1,13 @@
 //! Example Rust-based SBF program that exercises error handling
 //! Example Rust-based SBF program that exercises error handling
 
 
-extern crate solana_program;
 use {
 use {
     num_derive::FromPrimitive,
     num_derive::FromPrimitive,
     num_traits::FromPrimitive,
     num_traits::FromPrimitive,
+    solana_account_info::AccountInfo,
     solana_decode_error::DecodeError,
     solana_decode_error::DecodeError,
-    solana_program::{
-        account_info::AccountInfo,
-        entrypoint::ProgramResult,
-        msg,
-        program_error::{PrintProgramError, ProgramError},
-        pubkey::{Pubkey, PubkeyError},
-    },
+    solana_msg::msg,
+    solana_program_error::{PrintProgramError, ProgramError, ProgramResult},
+    solana_pubkey::{Pubkey, PubkeyError},
     thiserror::Error,
     thiserror::Error,
 };
 };
 
 
@@ -45,7 +41,7 @@ impl PrintProgramError for MyError {
     }
     }
 }
 }
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 4 - 1
programs/sbf/rust/external_spend/Cargo.toml

@@ -9,7 +9,10 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 4 - 3
programs/sbf/rust/external_spend/src/lib.rs

@@ -2,10 +2,11 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
+use {
+    solana_account_info::AccountInfo, solana_program_error::ProgramResult, solana_pubkey::Pubkey,
+};
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 6 - 1
programs/sbf/rust/get_minimum_delegation/Cargo.toml

@@ -9,7 +9,12 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-stake-interface = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 4 - 4
programs/sbf/rust/get_minimum_delegation/src/lib.rs

@@ -2,12 +2,12 @@
 
 
 #![allow(unreachable_code)]
 #![allow(unreachable_code)]
 
 
-extern crate solana_program;
-use solana_program::{
-    account_info::AccountInfo, entrypoint::ProgramResult, msg, pubkey::Pubkey, stake,
+use {
+    solana_account_info::AccountInfo, solana_msg::msg, solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey, solana_stake_interface as stake,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 6 - 0
programs/sbf/rust/inner_instruction_alignment_check/Cargo.toml

@@ -9,7 +9,13 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 8 - 8
programs/sbf/rust/inner_instruction_alignment_check/src/lib.rs

@@ -1,13 +1,13 @@
 //! Example Rust-based SBF noop program
 //! Example Rust-based SBF noop program
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    custom_heap_default,
-    entrypoint_deprecated::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    msg,
-    program::invoke,
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_msg::msg,
+    solana_program::program::invoke,
+    solana_program_entrypoint::custom_heap_default,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
 solana_program::entrypoint_deprecated!(process_instruction);
 solana_program::entrypoint_deprecated!(process_instruction);

+ 8 - 0
programs/sbf/rust/instruction_introspection/Cargo.toml

@@ -9,7 +9,15 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-instructions-sysvar = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-sysvar = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 9 - 11
programs/sbf/rust/instruction_introspection/src/lib.rs

@@ -1,18 +1,16 @@
 //! Example Rust-based SBF program that exercises instruction introspection
 //! Example Rust-based SBF program that exercises instruction introspection
 
 
-extern crate solana_program;
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    msg,
-    program::invoke,
-    program_error::ProgramError,
-    pubkey::Pubkey,
-    sysvar::instructions,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_instructions_sysvar as instructions,
+    solana_msg::msg,
+    solana_program::program::invoke,
+    solana_program_error::{ProgramError, ProgramResult},
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     program_id: &Pubkey,
     program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 9 - 0
programs/sbf/rust/invoke/Cargo.toml

@@ -9,10 +9,19 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-program-memory = { workspace = true }
+solana-pubkey = { workspace = true }
 solana-sbf-rust-invoke-dep = { workspace = true }
 solana-sbf-rust-invoke-dep = { workspace = true }
 solana-sbf-rust-invoked-dep = { workspace = true }
 solana-sbf-rust-invoked-dep = { workspace = true }
 solana-sbf-rust-realloc-dep = { workspace = true }
 solana-sbf-rust-realloc-dep = { workspace = true }
+solana-sdk-ids = { workspace = true }
+solana-system-interface = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 11 - 11
programs/sbf/rust/invoke/src/lib.rs

@@ -4,25 +4,25 @@
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
 #[cfg(target_feature = "dynamic-frames")]
 #[cfg(target_feature = "dynamic-frames")]
-use solana_program::program_memory::sol_memcmp;
+use solana_program_memory::sol_memcmp;
 use {
 use {
+    solana_account_info::AccountInfo,
+    solana_instruction::Instruction,
+    solana_msg::msg,
     solana_program::{
     solana_program::{
-        account_info::AccountInfo,
-        bpf_loader_deprecated,
-        entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
-        instruction::Instruction,
-        msg,
         program::{get_return_data, invoke, invoke_signed, set_return_data},
         program::{get_return_data, invoke, invoke_signed, set_return_data},
-        program_error::ProgramError,
-        pubkey::{Pubkey, PubkeyError},
         syscalls::{
         syscalls::{
             MAX_CPI_ACCOUNT_INFOS, MAX_CPI_INSTRUCTION_ACCOUNTS, MAX_CPI_INSTRUCTION_DATA_LEN,
             MAX_CPI_ACCOUNT_INFOS, MAX_CPI_INSTRUCTION_ACCOUNTS, MAX_CPI_INSTRUCTION_DATA_LEN,
         },
         },
-        system_instruction, system_program,
     },
     },
+    solana_program_entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
+    solana_program_error::ProgramError,
+    solana_pubkey::{Pubkey, PubkeyError},
     solana_sbf_rust_invoke_dep::*,
     solana_sbf_rust_invoke_dep::*,
     solana_sbf_rust_invoked_dep::*,
     solana_sbf_rust_invoked_dep::*,
     solana_sbf_rust_realloc_dep::*,
     solana_sbf_rust_realloc_dep::*,
+    solana_sdk_ids::bpf_loader_deprecated,
+    solana_system_interface::{instruction as system_instruction, program as system_program},
     std::{cell::RefCell, mem, rc::Rc, slice},
     std::{cell::RefCell, mem, rc::Rc, slice},
 };
 };
 
 
@@ -67,7 +67,7 @@ fn do_nested_invokes(num_nested_invokes: u64, accounts: &[AccountInfo]) -> Progr
     Ok(())
     Ok(())
 }
 }
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction<'a>(
 fn process_instruction<'a>(
     program_id: &Pubkey,
     program_id: &Pubkey,
     accounts: &[AccountInfo<'a>],
     accounts: &[AccountInfo<'a>],
@@ -86,7 +86,7 @@ fn process_instruction<'a>(
                 let from_lamports = accounts[FROM_INDEX].lamports();
                 let from_lamports = accounts[FROM_INDEX].lamports();
                 let to_lamports = accounts[DERIVED_KEY1_INDEX].lamports();
                 let to_lamports = accounts[DERIVED_KEY1_INDEX].lamports();
                 assert_eq!(accounts[DERIVED_KEY1_INDEX].data_len(), 0);
                 assert_eq!(accounts[DERIVED_KEY1_INDEX].data_len(), 0);
-                assert!(solana_program::system_program::check_id(
+                assert!(solana_system_interface::program::check_id(
                     accounts[DERIVED_KEY1_INDEX].owner
                     accounts[DERIVED_KEY1_INDEX].owner
                 ));
                 ));
 
 

+ 5 - 0
programs/sbf/rust/invoke_and_error/Cargo.toml

@@ -9,7 +9,12 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 7 - 7
programs/sbf/rust/invoke_and_error/src/lib.rs

@@ -1,15 +1,15 @@
 //! Invokes an instruction and returns an error, the instruction invoked
 //! Invokes an instruction and returns an error, the instruction invoked
 //! uses the instruction data provided and all the accounts
 //! uses the instruction data provided and all the accounts
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    program::invoke,
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_program::program::invoke,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 5 - 0
programs/sbf/rust/invoke_and_ok/Cargo.toml

@@ -9,7 +9,12 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 7 - 7
programs/sbf/rust/invoke_and_ok/src/lib.rs

@@ -1,15 +1,15 @@
 //! Invokes an instruction and return ok no matter what, the instruction invoked
 //! Invokes an instruction and return ok no matter what, the instruction invoked
 //! uses the instruction data provided and all the accounts
 //! uses the instruction data provided and all the accounts
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    program::invoke,
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_program::program::invoke,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 5 - 0
programs/sbf/rust/invoke_and_return/Cargo.toml

@@ -9,7 +9,12 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-instruction = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 7 - 7
programs/sbf/rust/invoke_and_return/src/lib.rs

@@ -1,15 +1,15 @@
 //! Invokes an instruction and returns the invoke result, the instruction invoked
 //! Invokes an instruction and returns the invoke result, the instruction invoked
 //! uses the instruction data provided and all the accounts
 //! uses the instruction data provided and all the accounts
 
 
-use solana_program::{
-    account_info::AccountInfo,
-    entrypoint::ProgramResult,
-    instruction::{AccountMeta, Instruction},
-    program::invoke,
-    pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_instruction::{AccountMeta, Instruction},
+    solana_program::program::invoke,
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     accounts: &[AccountInfo],
     accounts: &[AccountInfo],

+ 8 - 0
programs/sbf/rust/invoked/Cargo.toml

@@ -9,8 +9,16 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 solana-sbf-rust-invoked-dep = { workspace = true }
 solana-sbf-rust-invoked-dep = { workspace = true }
+solana-sdk-ids = { workspace = true }
+solana-system-interface = { workspace = true }
+solana-sysvar = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 8 - 9
programs/sbf/rust/invoked/src/lib.rs

@@ -3,21 +3,20 @@
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
 use {
 use {
+    solana_account_info::{AccountInfo, MAX_PERMITTED_DATA_INCREASE},
+    solana_msg::msg,
     solana_program::{
     solana_program::{
-        account_info::AccountInfo,
-        entrypoint::{ProgramResult, MAX_PERMITTED_DATA_INCREASE},
-        loader_v4,
         log::sol_log_64,
         log::sol_log_64,
-        msg,
         program::{get_return_data, invoke, invoke_signed, set_return_data},
         program::{get_return_data, invoke, invoke_signed, set_return_data},
-        program_error::ProgramError,
-        pubkey::Pubkey,
-        system_instruction,
     },
     },
+    solana_program_error::{ProgramError, ProgramResult},
+    solana_pubkey::Pubkey,
     solana_sbf_rust_invoked_dep::*,
     solana_sbf_rust_invoked_dep::*,
+    solana_sdk_ids::loader_v4,
+    solana_system_interface::instruction as system_instruction,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 #[allow(clippy::cognitive_complexity)]
 #[allow(clippy::cognitive_complexity)]
 fn process_instruction(
 fn process_instruction(
     program_id: &Pubkey,
     program_id: &Pubkey,
@@ -254,7 +253,7 @@ fn process_instruction(
                 let from_lamports = accounts[FROM_INDEX].lamports();
                 let from_lamports = accounts[FROM_INDEX].lamports();
                 let to_lamports = accounts[DERIVED_KEY2_INDEX].lamports();
                 let to_lamports = accounts[DERIVED_KEY2_INDEX].lamports();
                 assert_eq!(accounts[DERIVED_KEY2_INDEX].data_len(), 0);
                 assert_eq!(accounts[DERIVED_KEY2_INDEX].data_len(), 0);
-                assert!(solana_program::system_program::check_id(
+                assert!(solana_system_interface::program::check_id(
                     accounts[DERIVED_KEY2_INDEX].owner
                     accounts[DERIVED_KEY2_INDEX].owner
                 ));
                 ));
 
 

+ 2 - 1
programs/sbf/rust/invoked_dep/Cargo.toml

@@ -9,7 +9,8 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-instruction = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["lib"]
 crate-type = ["lib"]

+ 3 - 3
programs/sbf/rust/invoked_dep/src/lib.rs

@@ -1,8 +1,8 @@
 //! Example Rust-based SBF program that issues a cross-program-invocation
 //! Example Rust-based SBF program that issues a cross-program-invocation
 
 
-use solana_program::{
-    instruction::{AccountMeta, Instruction},
-    pubkey::Pubkey,
+use {
+    solana_instruction::{AccountMeta, Instruction},
+    solana_pubkey::Pubkey,
 };
 };
 
 
 pub const VERIFY_TRANSLATIONS: u8 = 0;
 pub const VERIFY_TRANSLATIONS: u8 = 0;

+ 1 - 0
programs/sbf/rust/iter/Cargo.toml

@@ -10,6 +10,7 @@ edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 3 - 3
programs/sbf/rust/iter/src/lib.rs

@@ -2,9 +2,9 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::{
-    custom_heap_default, custom_panic_default, entrypoint::SUCCESS, log::sol_log_64,
+use {
+    solana_program::log::sol_log_64,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
 };
 };
 
 
 #[no_mangle]
 #[no_mangle]

+ 5 - 0
programs/sbf/rust/log_data/Cargo.toml

@@ -9,7 +9,12 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-account-info = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
+solana-sysvar = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 6 - 4
programs/sbf/rust/log_data/src/lib.rs

@@ -1,11 +1,13 @@
 //! Example Rust-based SBF program that uses sol_log_data syscall
 //! Example Rust-based SBF program that uses sol_log_data syscall
 
 
-use solana_program::{
-    account_info::AccountInfo, entrypoint::ProgramResult, log::sol_log_data,
-    program::set_return_data, pubkey::Pubkey,
+use {
+    solana_account_info::AccountInfo,
+    solana_program::{log::sol_log_data, program::set_return_data},
+    solana_program_error::ProgramResult,
+    solana_pubkey::Pubkey,
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 #[allow(clippy::cognitive_complexity)]
 #[allow(clippy::cognitive_complexity)]
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,

+ 2 - 0
programs/sbf/rust/many_args/Cargo.toml

@@ -9,7 +9,9 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 solana-sbf-rust-many-args-dep = { workspace = true }
 solana-sbf-rust-many-args-dep = { workspace = true }
 
 
 [lib]
 [lib]

+ 1 - 2
programs/sbf/rust/many_args/src/helper.rs

@@ -2,8 +2,7 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::log::*;
+use solana_program::log::{sol_log, sol_log_64};
 
 
 pub fn many_args(
 pub fn many_args(
     arg1: u64,
     arg1: u64,

+ 4 - 2
programs/sbf/rust/many_args/src/lib.rs

@@ -1,8 +1,10 @@
 //! Example Rust-based SBF program tests loop iteration
 //! Example Rust-based SBF program tests loop iteration
 
 
 mod helper;
 mod helper;
-extern crate solana_program;
-use solana_program::{custom_heap_default, custom_panic_default, entrypoint::SUCCESS, msg};
+use {
+    solana_msg::msg,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
+};
 
 
 #[no_mangle]
 #[no_mangle]
 pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {
 pub extern "C" fn entrypoint(_input: *mut u8) -> u64 {

+ 1 - 0
programs/sbf/rust/many_args_dep/Cargo.toml

@@ -9,4 +9,5 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
+solana-msg = { workspace = true }
 solana-program = { workspace = true }
 solana-program = { workspace = true }

+ 1 - 2
programs/sbf/rust/many_args_dep/src/lib.rs

@@ -2,8 +2,7 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-use solana_program::{log::sol_log_64, msg};
+use {solana_msg::msg, solana_program::log::sol_log_64};
 
 
 pub fn many_args(
 pub fn many_args(
     arg1: u64,
     arg1: u64,

+ 5 - 1
programs/sbf/rust/mem/Cargo.toml

@@ -9,7 +9,11 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-program-memory = { workspace = true }
+solana-pubkey = { workspace = true }
 solana-sbf-rust-mem-dep = { workspace = true }
 solana-sbf-rust-mem-dep = { workspace = true }
 
 
 [lib]
 [lib]

+ 5 - 7
programs/sbf/rust/mem/src/lib.rs

@@ -1,16 +1,14 @@
 //! Test mem functions
 //! Test mem functions
 
 
 use {
 use {
-    solana_program::{
-        account_info::AccountInfo,
-        entrypoint::ProgramResult,
-        program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
-        pubkey::Pubkey,
-    },
+    solana_account_info::AccountInfo,
+    solana_program_error::ProgramResult,
+    solana_program_memory::{sol_memcmp, sol_memcpy, sol_memmove, sol_memset},
+    solana_pubkey::Pubkey,
     solana_sbf_rust_mem_dep::{run_mem_tests, MemOps},
     solana_sbf_rust_mem_dep::{run_mem_tests, MemOps},
 };
 };
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 pub fn process_instruction(
 pub fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 0 - 1
programs/sbf/rust/mem_dep/Cargo.toml

@@ -9,7 +9,6 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["lib"]
 crate-type = ["lib"]

+ 1 - 1
programs/sbf/rust/membuiltins/Cargo.toml

@@ -9,7 +9,7 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 solana-sbf-rust-mem-dep = { workspace = true }
 solana-sbf-rust-mem-dep = { workspace = true }
 
 
 [lib]
 [lib]

+ 1 - 1
programs/sbf/rust/membuiltins/src/lib.rs

@@ -5,7 +5,7 @@
 
 
 extern crate compiler_builtins;
 extern crate compiler_builtins;
 use {
 use {
-    solana_program::{custom_heap_default, custom_panic_default, entrypoint::SUCCESS},
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
     solana_sbf_rust_mem_dep::{run_mem_tests, MemOps},
     solana_sbf_rust_mem_dep::{run_mem_tests, MemOps},
 };
 };
 
 

+ 4 - 1
programs/sbf/rust/noop/Cargo.toml

@@ -9,7 +9,10 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [lib]
 [lib]
 crate-type = ["cdylib"]
 crate-type = ["cdylib"]

+ 4 - 3
programs/sbf/rust/noop/src/lib.rs

@@ -1,11 +1,12 @@
 //! Example Rust-based SBF noop program
 //! Example Rust-based SBF noop program
 
 
-extern crate solana_program;
-use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
+use {
+    solana_account_info::AccountInfo, solana_program_error::ProgramResult, solana_pubkey::Pubkey,
+};
 
 
 // This program intentionally uses `entrypoint!` instead of `entrypoint_no_alloc!`
 // This program intentionally uses `entrypoint!` instead of `entrypoint_no_alloc!`
 // to handle any number of accounts.
 // to handle any number of accounts.
-solana_program::entrypoint!(process_instruction);
+solana_program_entrypoint::entrypoint!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 5 - 1
programs/sbf/rust/panic/Cargo.toml

@@ -9,7 +9,11 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }
+solana-account-info = { workspace = true }
+solana-msg = { workspace = true }
+solana-program-entrypoint = { workspace = true }
+solana-program-error = { workspace = true }
+solana-pubkey = { workspace = true }
 
 
 [features]
 [features]
 default = ["custom-panic"]
 default = ["custom-panic"]

+ 6 - 5
programs/sbf/rust/panic/src/lib.rs

@@ -4,14 +4,15 @@
 #[no_mangle]
 #[no_mangle]
 fn custom_panic(info: &core::panic::PanicInfo<'_>) {
 fn custom_panic(info: &core::panic::PanicInfo<'_>) {
     // Note: Full panic reporting is included here for testing purposes
     // Note: Full panic reporting is included here for testing purposes
-    solana_program::msg!("program custom panic enabled");
-    solana_program::msg!(&format!("{info}"));
+    solana_msg::msg!("program custom panic enabled");
+    solana_msg::msg!(&format!("{info}"));
 }
 }
 
 
-extern crate solana_program;
-use solana_program::{account_info::AccountInfo, entrypoint::ProgramResult, pubkey::Pubkey};
+use {
+    solana_account_info::AccountInfo, solana_program_error::ProgramResult, solana_pubkey::Pubkey,
+};
 
 
-solana_program::entrypoint_no_alloc!(process_instruction);
+solana_program_entrypoint::entrypoint_no_alloc!(process_instruction);
 fn process_instruction(
 fn process_instruction(
     _program_id: &Pubkey,
     _program_id: &Pubkey,
     _accounts: &[AccountInfo],
     _accounts: &[AccountInfo],

+ 1 - 0
programs/sbf/rust/param_passing/Cargo.toml

@@ -10,6 +10,7 @@ edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
 solana-program = { workspace = true }
 solana-program = { workspace = true }
+solana-program-entrypoint = { workspace = true }
 solana-sbf-rust-param-passing-dep = { workspace = true }
 solana-sbf-rust-param-passing-dep = { workspace = true }
 
 
 [lib]
 [lib]

+ 2 - 4
programs/sbf/rust/param_passing/src/lib.rs

@@ -1,10 +1,8 @@
 //! Example Rust-based SBF program tests loop iteration
 //! Example Rust-based SBF program tests loop iteration
 
 
-extern crate solana_program;
 use {
 use {
-    solana_program::{
-        custom_heap_default, custom_panic_default, entrypoint::SUCCESS, log::sol_log_64,
-    },
+    solana_program::log::sol_log_64,
+    solana_program_entrypoint::{custom_heap_default, custom_panic_default, SUCCESS},
     solana_sbf_rust_param_passing_dep::{Data, TestDep},
     solana_sbf_rust_param_passing_dep::{Data, TestDep},
 };
 };
 
 

+ 0 - 1
programs/sbf/rust/param_passing_dep/Cargo.toml

@@ -9,4 +9,3 @@ license = { workspace = true }
 edition = { workspace = true }
 edition = { workspace = true }
 
 
 [dependencies]
 [dependencies]
-solana-program = { workspace = true }

+ 0 - 2
programs/sbf/rust/param_passing_dep/src/lib.rs

@@ -2,8 +2,6 @@
 
 
 #![allow(clippy::arithmetic_side_effects)]
 #![allow(clippy::arithmetic_side_effects)]
 
 
-extern crate solana_program;
-
 #[derive(Debug)]
 #[derive(Debug)]
 pub struct Data<'a> {
 pub struct Data<'a> {
     pub twentyone: u64,
     pub twentyone: u64,

Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно