From ba560280f66ae3bc6d255302bec7e373fccd1699 Mon Sep 17 00:00:00 2001 From: Lucas Ste <38472950+LucasSte@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:24:43 -0300 Subject: [PATCH] Add Shuttle multithreading test infrastructure (#1634) --- Cargo.lock | 847 +++++++++++++++++------- Cargo.toml | 3 + ledger-tool/Cargo.toml | 1 + program-runtime/Cargo.toml | 2 + program-runtime/src/invoke_context.rs | 4 +- program-runtime/src/loaded_programs.rs | 17 +- program-runtime/src/sysvar_cache.rs | 2 +- programs/bpf_loader/Cargo.toml | 4 + programs/bpf_loader/src/lib.rs | 10 +- programs/bpf_loader/src/syscalls/mod.rs | 2 +- programs/loader-v4/Cargo.toml | 4 + programs/loader-v4/src/lib.rs | 7 +- programs/sbf/Cargo.lock | 16 + programs/sbf/Cargo.toml | 2 + programs/stake/Cargo.toml | 1 + programs/system/Cargo.toml | 1 + svm/Cargo.toml | 7 + svm/src/message_processor.rs | 2 +- svm/src/program_loader.rs | 2 +- svm/src/transaction_processor.rs | 23 +- type-overrides/Cargo.toml | 18 + type-overrides/src/lib.rs | 48 ++ 22 files changed, 749 insertions(+), 274 deletions(-) create mode 100644 type-overrides/Cargo.toml create mode 100644 type-overrides/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index edfa669dc72a24..fbd643ea44d380 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -154,7 +154,7 @@ name = "agave-ledger-tool" version = "2.0.0" dependencies = [ "assert_cmd", - "bs58", + "bs58 0.5.1", "bytecount", "chrono", "clap 2.34.0", @@ -194,6 +194,7 @@ dependencies = [ "solana-storage-bigtable", "solana-streamer", "solana-transaction-status", + "solana-type-overrides", "solana-unified-scheduler-pool", "solana-version", "solana-vote-program", @@ -626,6 +627,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" +[[package]] +name = "assoc" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfdc70193dadb9d7287fa4b633f15f90c876915b31f6af17da307fc59c9859a8" + [[package]] name = "async-channel" version = "1.9.0" @@ -679,18 +686,18 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] name = "async-trait" -version = "0.1.80" +version = "0.1.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" +checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -843,7 +850,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -885,6 +892,18 @@ dependencies = [ "typenum", ] +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blake3" version = "1.5.1" @@ -924,6 +943,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" +[[package]] +name = "borsh" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15bf3650200d8bffa99015595e10f1fbd17de07abbc25bb067da79e769939bfa" +dependencies = [ + "borsh-derive 0.9.3", + "hashbrown 0.11.2", +] + [[package]] name = "borsh" version = "0.10.3" @@ -944,14 +973,27 @@ dependencies = [ "cfg_aliases 0.2.1", ] +[[package]] +name = "borsh-derive" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6441c552f230375d18e3cc377677914d2ca2b0d36e52129fe15450a2dce46775" +dependencies = [ + "borsh-derive-internal 0.9.3", + "borsh-schema-derive-internal 0.9.3", + "proc-macro-crate 0.1.5", + "proc-macro2", + "syn 1.0.109", +] + [[package]] name = "borsh-derive" version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0754613691538d51f329cce9af41d7b7ca150bc973056f1156611489475f54f7" dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", + "borsh-derive-internal 0.10.3", + "borsh-schema-derive-internal 0.10.3", "proc-macro-crate 0.1.5", "proc-macro2", "syn 1.0.109", @@ -967,10 +1009,21 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", "syn_derive", ] +[[package]] +name = "borsh-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5449c28a7b352f2d1e592a8a28bf139bc71afb0764a14f3c02500935d8c44065" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-derive-internal" version = "0.10.3" @@ -982,6 +1035,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "borsh-schema-derive-internal" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdbd5696d8bfa21d53d9fe39a714a18538bad11492a42d066dbbc395fb1951c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "borsh-schema-derive-internal" version = "0.10.3" @@ -1014,6 +1078,12 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "bs58" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" + [[package]] name = "bs58" version = "0.5.1" @@ -1083,7 +1153,7 @@ checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1094,9 +1164,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" [[package]] name = "bytesize" @@ -1184,13 +1254,12 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.0.99" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "324c74f2155653c90b04f25b2a47a8a631360cb908f92a772695f430c7e31052" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -1238,7 +1307,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1332,18 +1401,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.7" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942" dependencies = [ "anstyle", "clap_lex 0.7.1", @@ -1519,7 +1588,7 @@ dependencies = [ "anes", "cast 0.3.0", "ciborium", - "clap 4.5.7", + "clap 4.5.9", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -1675,9 +1744,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -1685,27 +1754,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1776,7 +1845,7 @@ checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1789,7 +1858,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1868,7 +1937,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1891,7 +1960,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -1997,7 +2066,7 @@ checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -2010,7 +2079,7 @@ dependencies = [ "num-traits", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -2192,6 +2261,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.1.31" @@ -2255,7 +2330,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -2328,6 +2403,20 @@ dependencies = [ "regex", ] +[[package]] +name = "generator" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "186014d53bc231d0090ef8d6f03e0920c54d85a5ed22f4f2f74315ec56cf83fb" +dependencies = [ + "cc", + "cfg-if 1.0.0", + "libc", + "log", + "rustversion", + "windows", +] + [[package]] name = "generic-array" version = "0.14.7" @@ -2468,6 +2557,15 @@ dependencies = [ "byteorder", ] +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +dependencies = [ + "ahash 0.7.8", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -2647,9 +2745,9 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -2737,7 +2835,7 @@ dependencies = [ "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -2819,9 +2917,9 @@ dependencies = [ [[package]] name = "index_list" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70891286cb8e844fdfcf1178b47569699f9e20b5ecc4b45a6240a64771444638" +checksum = "2cb725b6505e51229de32027e0cfcd9db29da4d89156f9747b0a5195643fa3e1" [[package]] name = "indexmap" @@ -3128,7 +3226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e310b3a6b5907f99202fcdb4960ff45b93735d7c7d96b760fcff8db2dc0e103d" dependencies = [ "cfg-if 1.0.0", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3342,9 +3440,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -3552,7 +3650,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -3625,7 +3723,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -3636,9 +3734,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.36.0" +version = "0.36.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "576dfe1fc8f9df304abb159d767a29d0476f7750fbf8aa7ad07816004a207434" +checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce" dependencies = [ "memchr", ] @@ -3660,9 +3758,9 @@ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "oorandom" -version = "11.1.3" +version = "11.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" [[package]] name = "opaque-debug" @@ -3693,7 +3791,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -3749,6 +3847,12 @@ version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "parity-tokio-ipc" version = "0.9.0" @@ -3806,9 +3910,9 @@ checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if 1.0.0", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.5.3", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -3867,9 +3971,9 @@ dependencies = [ [[package]] name = "pest" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560131c633294438da9f7c4b08189194b20946c8274c6b9e38881a7874dc8ee8" +checksum = "cd53dff83f26735fdc1ca837098ccf133605d794cdae66acfc2bfac3ec809d95" dependencies = [ "memchr", "thiserror", @@ -3878,9 +3982,9 @@ dependencies = [ [[package]] name = "pest_derive" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26293c9193fbca7b1a3bf9b79dc1e388e927e6cacaa78b4a3ab705a1d3d41459" +checksum = "2a548d2beca6773b1c244554d36fcf8548a8a58e74156968211567250e48e49a" dependencies = [ "pest", "pest_generator", @@ -3888,22 +3992,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ec22af7d3fb470a85dd2ca96b7c577a1eb4ef6f1683a9fe9a8c16e136c04687" +checksum = "3c93a82e8d145725dcbaf44e5ea887c8a869efdcc28706df2d08c69e17077183" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] name = "pest_meta" -version = "2.7.10" +version = "2.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a240022f37c361ec1878d646fc5b7d7c4d28d5946e1a80ad5a7a4f4ca0bdcd" +checksum = "a941429fea7e08bedec25e4f6785b6ffaacc6b755da98df5ef3e7dcf4a124c4f" dependencies = [ "once_cell", "pest", @@ -3947,7 +4051,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -4254,7 +4358,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -4320,6 +4424,12 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.4.6" @@ -4419,6 +4529,15 @@ dependencies = [ "rand_core 0.5.1", ] +[[package]] +name = "rand_pcg" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59cad018caf63deb318e5a4586d99a24424a364f40f1e5778c29aca23f4fc73e" +dependencies = [ + "rand_core 0.6.4", +] + [[package]] name = "rand_xorshift" version = "0.3.0" @@ -4490,9 +4609,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ "bitflags 2.6.0", ] @@ -4812,6 +4931,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -4835,7 +4960,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -4850,9 +4975,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", "core-foundation", @@ -4863,9 +4988,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "75da29fe9b9b08fe9d6b22b5b4bcbc75d8db3aa31e639aa56bb62e9d46bfceaf" dependencies = [ "core-foundation-sys", "libc", @@ -4891,9 +5016,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] @@ -4909,20 +5034,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] name = "serde_json" -version = "1.0.118" +version = "1.0.120" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d947f6b3163d8857ea16c4fa0dd4840d52f3041039a85decd46867eb1abef2e4" +checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5" dependencies = [ "itoa", "ryu", @@ -4969,7 +5094,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -5019,7 +5144,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -5113,6 +5238,25 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" +[[package]] +name = "shuttle" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d9a8db61a44e2b663f169a08206a789bcbd22ba32011e14951562848e7b9c98" +dependencies = [ + "assoc", + "bitvec", + "generator", + "hex", + "owo-colors", + "rand 0.8.5", + "rand_core 0.6.4", + "rand_pcg", + "scoped-tls", + "smallvec", + "tracing", +] + [[package]] name = "signal-hook" version = "0.3.17" @@ -5234,7 +5378,7 @@ dependencies = [ "assert_matches", "base64 0.22.1", "bincode", - "bs58", + "bs58 0.5.1", "bv", "lazy_static", "serde", @@ -5331,8 +5475,8 @@ dependencies = [ "smallvec", "solana-accounts-db", "solana-bucket-map", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-inline-spl", "solana-logger", "solana-measure", @@ -5360,7 +5504,7 @@ dependencies = [ "num-derive", "num-traits", "rustc_version", - "solana-program", + "solana-program 2.0.0", "solana-program-runtime", "solana-sdk", "thiserror", @@ -5409,7 +5553,7 @@ dependencies = [ "futures 0.3.30", "solana-banks-interface", "solana-banks-server", - "solana-program", + "solana-program 2.0.0", "solana-runtime", "solana-sdk", "tarpc", @@ -5515,8 +5659,8 @@ dependencies = [ "rustc_version", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-sdk", ] @@ -5537,6 +5681,7 @@ dependencies = [ "solana-poseidon", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana-vote", "solana-zk-token-sdk", "solana_rbpf", @@ -5660,7 +5805,7 @@ version = "2.0.0" dependencies = [ "assert_matches", "bincode", - "bs58", + "bs58 0.5.1", "clap 2.34.0", "console", "const_format", @@ -5821,7 +5966,7 @@ name = "solana-compute-budget" version = "2.0.0" dependencies = [ "rustc_version", - "solana-frozen-abi", + "solana-frozen-abi 2.0.0", "solana-sdk", ] @@ -5877,7 +6022,7 @@ dependencies = [ "assert_matches", "base64 0.22.1", "bincode", - "bs58", + "bs58 0.5.1", "bytes", "chrono", "crossbeam-channel", @@ -5913,8 +6058,8 @@ dependencies = [ "solana-core", "solana-cost-model", "solana-entry", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-geyser-plugin-manager", "solana-gossip", "solana-ledger", @@ -5970,8 +6115,8 @@ dependencies = [ "solana-compute-budget", "solana-compute-budget-program", "solana-config-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-loader-v4-program", "solana-logger", "solana-sdk", @@ -6081,12 +6226,37 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-frozen-abi" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f498a2b290abca1cf77feacef01b904be725fd46a7aea5ba121cce8c1269dcf" +dependencies = [ + "block-buffer 0.10.4", + "bs58 0.4.0", + "bv", + "either", + "generic-array", + "im", + "lazy_static", + "log", + "memmap2", + "rustc_version", + "serde", + "serde_bytes", + "serde_derive", + "sha2 0.10.8", + "solana-frozen-abi-macro 1.18.18", + "subtle", + "thiserror", +] + [[package]] name = "solana-frozen-abi" version = "2.0.0" dependencies = [ "bitflags 2.6.0", - "bs58", + "bs58 0.5.1", "bv", "generic-array", "im", @@ -6097,11 +6267,23 @@ dependencies = [ "serde_bytes", "serde_derive", "sha2 0.10.8", - "solana-frozen-abi-macro", + "solana-frozen-abi-macro 2.0.0", "solana-logger", "thiserror", ] +[[package]] +name = "solana-frozen-abi-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4ab48d1be18021f5c13f94671e766699511044f81aab3376313f6a2392f8fab" +dependencies = [ + "proc-macro2", + "quote", + "rustc_version", + "syn 2.0.71", +] + [[package]] name = "solana-frozen-abi-macro" version = "2.0.0" @@ -6109,7 +6291,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -6153,7 +6335,7 @@ name = "solana-geyser-plugin-manager" version = "2.0.0" dependencies = [ "agave-geyser-plugin-interface", - "bs58", + "bs58 0.5.1", "crossbeam-channel", "json5", "jsonrpc-core", @@ -6203,8 +6385,8 @@ dependencies = [ "solana-client", "solana-connection-cache", "solana-entry", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-ledger", "solana-logger", "solana-measure", @@ -6237,7 +6419,7 @@ dependencies = [ name = "solana-keygen" version = "2.0.0" dependencies = [ - "bs58", + "bs58 0.5.1", "clap 3.2.25", "dirs-next", "num_cpus", @@ -6257,7 +6439,7 @@ dependencies = [ "assert_matches", "bincode", "bitflags 2.6.0", - "bs58", + "bs58 0.5.1", "byteorder", "chrono", "chrono-humanize", @@ -6291,8 +6473,8 @@ dependencies = [ "solana-bpf-loader-program", "solana-cost-model", "solana-entry", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", "solana-measure", "solana-metrics", @@ -6332,6 +6514,7 @@ dependencies = [ "solana-measure", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana_rbpf", ] @@ -6427,7 +6610,7 @@ version = "2.0.0" dependencies = [ "fast-math", "hex", - "solana-program", + "solana-program 2.0.0", ] [[package]] @@ -6501,7 +6684,7 @@ version = "2.0.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", "toml 0.8.14", ] @@ -6526,8 +6709,8 @@ dependencies = [ "rayon", "rustc_version", "serde", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", "solana-rayon-threadlimit", "solana-sdk", @@ -6582,6 +6765,61 @@ dependencies = [ "thiserror", ] +[[package]] +name = "solana-program" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d97cec6d3d60ef58168c8b3e97fd88e8903fa059eff6635361427c61c946ec1e" +dependencies = [ + "ark-bn254", + "ark-ec", + "ark-ff", + "ark-serialize", + "base64 0.21.7", + "bincode", + "bitflags 2.6.0", + "blake3", + "borsh 0.10.3", + "borsh 0.9.3", + "borsh 1.5.1", + "bs58 0.4.0", + "bv", + "bytemuck", + "cc", + "console_error_panic_hook", + "console_log", + "curve25519-dalek", + "getrandom 0.2.15", + "itertools 0.10.5", + "js-sys", + "lazy_static", + "libc", + "libsecp256k1", + "light-poseidon", + "log", + "memoffset", + "num-bigint 0.4.6", + "num-derive", + "num-traits", + "parking_lot 0.12.3", + "rand 0.8.5", + "rustc_version", + "rustversion", + "serde", + "serde_bytes", + "serde_derive", + "serde_json", + "sha2 0.10.8", + "sha3 0.10.8", + "solana-frozen-abi 1.18.18", + "solana-frozen-abi-macro 1.18.18", + "solana-sdk-macro 1.18.18", + "thiserror", + "tiny-bip39", + "wasm-bindgen", + "zeroize", +] + [[package]] name = "solana-program" version = "2.0.0" @@ -6600,7 +6838,7 @@ dependencies = [ "blake3", "borsh 0.10.3", "borsh 1.5.1", - "bs58", + "bs58 0.5.1", "bv", "bytemuck", "console_error_panic_hook", @@ -6626,10 +6864,10 @@ dependencies = [ "serde_json", "sha2 0.10.8", "sha3 0.10.8", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", - "solana-sdk-macro", + "solana-sdk-macro 2.0.0", "static_assertions", "thiserror", "wasm-bindgen", @@ -6654,11 +6892,12 @@ dependencies = [ "rustc_version", "serde", "solana-compute-budget", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", "solana-measure", "solana-sdk", + "solana-type-overrides", "solana-vote", "solana_rbpf", "test-case", @@ -6781,7 +7020,7 @@ version = "2.0.0" dependencies = [ "base64 0.22.1", "bincode", - "bs58", + "bs58 0.5.1", "crossbeam-channel", "dashmap", "itertools 0.12.1", @@ -6844,7 +7083,7 @@ dependencies = [ "async-trait", "base64 0.22.1", "bincode", - "bs58", + "bs58 0.5.1", "crossbeam-channel", "futures 0.3.30", "indicatif", @@ -6872,7 +7111,7 @@ version = "2.0.0" dependencies = [ "anyhow", "base64 0.22.1", - "bs58", + "bs58 0.5.1", "jsonrpc-core", "reqwest", "reqwest-middleware", @@ -6910,7 +7149,7 @@ name = "solana-rpc-test" version = "2.0.0" dependencies = [ "bincode", - "bs58", + "bs58 0.5.1", "crossbeam-channel", "futures-util", "log", @@ -6984,8 +7223,8 @@ dependencies = [ "solana-compute-budget-program", "solana-config-program", "solana-cost-model", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-inline-spl", "solana-loader-v4-program", "solana-logger", @@ -7020,7 +7259,7 @@ dependencies = [ "rand 0.8.5", "rustc_version", "solana-compute-budget", - "solana-program", + "solana-program 2.0.0", "solana-sdk", "thiserror", ] @@ -7034,7 +7273,7 @@ dependencies = [ "bincode", "bitflags 2.6.0", "borsh 1.5.1", - "bs58", + "bs58 0.5.1", "bytemuck", "byteorder", "chrono", @@ -7069,12 +7308,12 @@ dependencies = [ "sha2 0.10.8", "sha3 0.10.8", "siphasher", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", - "solana-program", + "solana-program 2.0.0", "solana-sdk", - "solana-sdk-macro", + "solana-sdk-macro 2.0.0", "static_assertions", "thiserror", "tiny-bip39", @@ -7082,15 +7321,28 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "solana-sdk-macro" +version = "1.18.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ba67050b90454a8638913a7d5775703c0557157def04ddcc8b59c964cda8535" +dependencies = [ + "bs58 0.4.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.71", +] + [[package]] name = "solana-sdk-macro" version = "2.0.0" dependencies = [ - "bs58", + "bs58 0.5.1", "proc-macro2", "quote", "rustversion", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -7144,6 +7396,7 @@ dependencies = [ "solana-logger", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana-vote-program", "test-case", ] @@ -7185,7 +7438,7 @@ name = "solana-storage-proto" version = "2.0.0" dependencies = [ "bincode", - "bs58", + "bs58 0.5.1", "enum-iterator", "prost", "protobuf-src", @@ -7251,8 +7504,8 @@ dependencies = [ "solana-bpf-loader-program", "solana-compute-budget", "solana-compute-budget-program", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-loader-v4-program", "solana-logger", "solana-measure", @@ -7260,6 +7513,7 @@ dependencies = [ "solana-sdk", "solana-svm", "solana-system-program", + "solana-type-overrides", "solana-vote", ] @@ -7276,6 +7530,7 @@ dependencies = [ "solana-logger", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", ] [[package]] @@ -7448,7 +7703,7 @@ dependencies = [ "base64 0.22.1", "bincode", "borsh 1.5.1", - "bs58", + "bs58 0.5.1", "lazy_static", "log", "serde", @@ -7502,6 +7757,16 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-type-overrides" +version = "2.0.0" +dependencies = [ + "futures 0.3.30", + "lazy_static", + "rand 0.8.5", + "shuttle", +] + [[package]] name = "solana-udp-client" version = "2.0.0" @@ -7562,8 +7827,8 @@ dependencies = [ "semver", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-sdk", ] @@ -7578,8 +7843,8 @@ dependencies = [ "rustc_version", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-sdk", "thiserror", ] @@ -7596,10 +7861,10 @@ dependencies = [ "rustc_version", "serde", "serde_derive", - "solana-frozen-abi", - "solana-frozen-abi-macro", + "solana-frozen-abi 2.0.0", + "solana-frozen-abi-macro 2.0.0", "solana-logger", - "solana-program", + "solana-program 2.0.0", "solana-program-runtime", "solana-sdk", "test-case", @@ -7626,7 +7891,7 @@ dependencies = [ "solana-gossip", "solana-ledger", "solana-logger", - "solana-program", + "solana-program 2.0.0", "solana-program-runtime", "solana-runtime", "solana-sdk", @@ -7651,7 +7916,7 @@ dependencies = [ name = "solana-zk-keygen" version = "2.0.0" dependencies = [ - "bs58", + "bs58 0.5.1", "clap 3.2.25", "dirs-next", "num_cpus", @@ -7685,7 +7950,7 @@ dependencies = [ "serde_derive", "serde_json", "sha3 0.9.1", - "solana-program", + "solana-program 2.0.0", "solana-sdk", "subtle", "thiserror", @@ -7740,7 +8005,7 @@ dependencies = [ "serde_derive", "serde_json", "sha3 0.9.1", - "solana-program", + "solana-program 2.0.0", "solana-sdk", "subtle", "thiserror", @@ -7790,7 +8055,7 @@ dependencies = [ "borsh 1.5.1", "num-derive", "num-traits", - "solana-program", + "solana-program 2.0.0", "spl-token", "spl-token-2022", "thiserror", @@ -7798,13 +8063,35 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.2.2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" +dependencies = [ + "bytemuck", + "solana-program 1.18.18", + "spl-discriminator-derive 0.1.2", +] + +[[package]] +name = "spl-discriminator" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34d1814406e98b08c5cd02c1126f83fd407ad084adce0b05fda5730677822eac" +checksum = "210101376962bb22bb13be6daea34656ea1cbc248fce2164b146e39203b55e03" dependencies = [ "bytemuck", - "solana-program", - "spl-discriminator-derive", + "solana-program 1.18.18", + "spl-discriminator-derive 0.2.0", +] + +[[package]] +name = "spl-discriminator-derive" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" +dependencies = [ + "quote", + "spl-discriminator-syn 0.1.2", + "syn 2.0.71", ] [[package]] @@ -7814,8 +8101,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9e8418ea6269dcfb01c712f0444d2c75542c04448b480e87de59d2865edc750" dependencies = [ "quote", - "spl-discriminator-syn", - "syn 2.0.68", + "spl-discriminator-syn 0.2.0", + "syn 2.0.71", +] + +[[package]] +name = "spl-discriminator-syn" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18fea7be851bd98d10721782ea958097c03a0c2a07d8d4997041d0ece6319a63" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", + "thiserror", ] [[package]] @@ -7827,18 +8127,18 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.71", "thiserror", ] [[package]] name = "spl-instruction-padding" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be3f0c53b6eb2dfccb77b5710bddb04548da338a3f56bed214177f6a577d1ca6" +checksum = "aae60fafda18fec1a473b1284be020733e0633f1679449bfce33318c750c28b8" dependencies = [ "num_enum", - "solana-program", + "solana-program 1.18.18", ] [[package]] @@ -7847,7 +8147,7 @@ version = "4.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58e9bae02de3405079a057fe244c867a08f92d48327d231fc60da831f94caf0a" dependencies = [ - "solana-program", + "solana-program 2.0.0", ] [[package]] @@ -7858,24 +8158,49 @@ checksum = "046ce669f48cf2eca1ec518916d8725596bfb655beb1c74374cf71dc6cb773c9" dependencies = [ "borsh 1.5.1", "bytemuck", - "solana-program", + "solana-program 2.0.0", "solana-zk-token-sdk", - "spl-program-error", + "spl-program-error 0.4.4", ] [[package]] name = "spl-program-error" -version = "0.4.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49065093ea91f57b9b2bd81493ff705e2ad4e64507a07dbc02b085778e02770e" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" dependencies = [ "num-derive", "num-traits", - "solana-program", - "spl-program-error-derive", + "solana-program 1.18.18", + "spl-program-error-derive 0.3.2", + "thiserror", +] + +[[package]] +name = "spl-program-error" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e45a49acb925db68aa501b926096b2164adbdcade7a0c24152af9f0742d0a602" +dependencies = [ + "num-derive", + "num-traits", + "solana-program 1.18.18", + "spl-program-error-derive 0.4.1", "thiserror", ] +[[package]] +name = "spl-program-error-derive" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1845dfe71fd68f70382232742e758557afe973ae19e6c06807b2c30f5d5cb474" +dependencies = [ + "proc-macro2", + "quote", + "sha2 0.10.8", + "syn 2.0.71", +] + [[package]] name = "spl-program-error-derive" version = "0.4.1" @@ -7885,20 +8210,20 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] name = "spl-tlv-account-resolution" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cace91ba08984a41556efe49cbf2edca4db2f577b649da7827d3621161784bf8" +checksum = "aab8f93d60e42045afd340d9086a8fa8273ea4c6abffa688752af4808c9a6eeb" dependencies = [ "bytemuck", - "solana-program", - "spl-discriminator", + "solana-program 2.0.0", + "spl-discriminator 0.2.5", "spl-pod", - "spl-program-error", + "spl-program-error 0.4.4", "spl-type-length-value", ] @@ -7913,7 +8238,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program", + "solana-program 2.0.0", "thiserror", ] @@ -7928,7 +8253,7 @@ dependencies = [ "num-derive", "num-traits", "num_enum", - "solana-program", + "solana-program 2.0.0", "solana-security-txt", "solana-zk-token-sdk", "spl-memo", @@ -7948,10 +8273,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d419b5cfa3ee8e0f2386fd7e02a33b3ec8a7db4a9c7064a2ea24849dc4a273b6" dependencies = [ "bytemuck", - "solana-program", - "spl-discriminator", + "solana-program 2.0.0", + "spl-discriminator 0.2.5", "spl-pod", - "spl-program-error", + "spl-program-error 0.4.4", ] [[package]] @@ -7961,40 +8286,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30179c47e93625680dabb620c6e7931bd12d62af390f447bc7beb4a3a9b5feee" dependencies = [ "borsh 1.5.1", - "solana-program", - "spl-discriminator", + "solana-program 2.0.0", + "spl-discriminator 0.2.5", "spl-pod", - "spl-program-error", + "spl-program-error 0.4.4", "spl-type-length-value", ] [[package]] name = "spl-transfer-hook-interface" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a98359769cd988f7b35c02558daa56d496a7e3bd8626e61f90a7c757eedb9b" +checksum = "e9a2522d12c43cc65a3b1ac3fe8ef01fe668014a964fb994bea6479766912b42" dependencies = [ "arrayref", "bytemuck", - "solana-program", - "spl-discriminator", + "solana-program 2.0.0", + "spl-discriminator 0.2.5", "spl-pod", - "spl-program-error", + "spl-program-error 0.4.4", "spl-tlv-account-resolution", "spl-type-length-value", ] [[package]] name = "spl-type-length-value" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "422ce13429dbd41d2cee8a73931c05fda0b0c8ca156a8b0c19445642550bb61a" +checksum = "930e020ab8fc107861b715bbd07c7022c0b22dc3fa7f920f1f2c6fb28ad1866d" dependencies = [ "bytemuck", - "solana-program", - "spl-discriminator", + "solana-program 1.18.18", + "spl-discriminator 0.1.0", "spl-pod", - "spl-program-error", + "spl-program-error 0.3.0", ] [[package]] @@ -8079,9 +8404,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462" dependencies = [ "proc-macro2", "quote", @@ -8097,7 +8422,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -8176,6 +8501,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "tar" version = "0.4.41" @@ -8276,7 +8607,7 @@ dependencies = [ "cfg-if 1.0.0", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -8287,7 +8618,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", "test-case-core", ] @@ -8308,22 +8639,22 @@ checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "f2675633b1499176c2dff06b0856a27976a8f9d436737b4cf4f312d4d91d8bbb" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.62" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "d20468752b09f49e909e55a5d338caa8bedf615594e9d80bc4c565d30faf798c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -8425,9 +8756,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c55115c6fbe2d2bef26eb09ad74bde02d8255476fc0c7b515ef09fbb35742d82" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -8474,7 +8805,7 @@ source = "git+https://github.com/anza-xyz/solana-tokio.git?rev=7cf47705faacf7bf0 dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -8586,7 +8917,7 @@ dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.15", ] [[package]] @@ -8611,9 +8942,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "d59a3a72298453f564e2b111fa896f8d07fabb36f51f06d7e875fc5e0b5a3ef1" dependencies = [ "indexmap 2.2.6", "serde", @@ -8718,7 +9049,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -9026,7 +9357,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", "wasm-bindgen-shared", ] @@ -9060,7 +9391,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -9151,13 +9482,42 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" +dependencies = [ + "windows-core 0.54.0", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -9175,7 +9535,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -9195,18 +9555,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -9217,9 +9577,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -9229,9 +9589,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -9241,15 +9601,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -9259,9 +9619,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -9271,9 +9631,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -9283,9 +9643,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -9295,9 +9655,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -9327,6 +9687,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "x509-parser" version = "0.14.0" @@ -9367,22 +9736,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -9402,7 +9771,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.71", ] [[package]] @@ -9426,9 +9795,9 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.12+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 96eef113e26164..50347b0958ea7b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -116,6 +116,7 @@ members = [ "transaction-metrics-tracker", "transaction-status", "turbine", + "type-overrides", "udp-client", "unified-scheduler-logic", "unified-scheduler-pool", @@ -309,6 +310,7 @@ serde_yaml = "0.9.34" serial_test = "2.0.0" sha2 = "0.10.8" sha3 = "0.10.8" +shuttle = "0.7.1" signal-hook = "0.3.17" siphasher = "0.3.11" smallvec = "1.13.2" @@ -394,6 +396,7 @@ solana-tpu-client = { path = "tpu-client", version = "=2.0.0", default-features solana-transaction-status = { path = "transaction-status", version = "=2.0.0" } solana-transaction-metrics-tracker = { path = "transaction-metrics-tracker", version = "=2.0.0" } solana-turbine = { path = "turbine", version = "=2.0.0" } +solana-type-overrides = { path = "type-overrides", version = "=2.0.0" } solana-udp-client = { path = "udp-client", version = "=2.0.0" } solana-version = { path = "version", version = "=2.0.0" } solana-vote = { path = "vote", version = "=2.0.0" } diff --git a/ledger-tool/Cargo.toml b/ledger-tool/Cargo.toml index 351aa44462cf1e..d9e55d9771b36c 100644 --- a/ledger-tool/Cargo.toml +++ b/ledger-tool/Cargo.toml @@ -48,6 +48,7 @@ solana-stake-program = { workspace = true } solana-storage-bigtable = { workspace = true } solana-streamer = { workspace = true } solana-transaction-status = { workspace = true } +solana-type-overrides = { workspace = true } solana-unified-scheduler-pool = { workspace = true } solana-version = { workspace = true } solana-vote-program = { workspace = true } diff --git a/program-runtime/Cargo.toml b/program-runtime/Cargo.toml index d84114e90213f3..8c8a1010051105 100644 --- a/program-runtime/Cargo.toml +++ b/program-runtime/Cargo.toml @@ -28,6 +28,7 @@ solana-frozen-abi-macro = { workspace = true, optional = true } solana-measure = { workspace = true } # solana-metrics = { workspace = true } solana-sdk = { workspace = true } +solana-type-overrides = { workspace = true } solana-vote = { workspace = true } solana_rbpf = { workspace = true } thiserror = { workspace = true } @@ -55,3 +56,4 @@ frozen-abi = [ "solana-compute-budget/frozen-abi", "solana-sdk/frozen-abi", ] +shuttle-test = ["solana-type-overrides/shuttle-test"] diff --git a/program-runtime/src/invoke_context.rs b/program-runtime/src/invoke_context.rs index a60d08b18cbfe2..393098b61b154e 100644 --- a/program-runtime/src/invoke_context.rs +++ b/program-runtime/src/invoke_context.rs @@ -36,13 +36,13 @@ use { IndexOfAccount, InstructionAccount, TransactionAccount, TransactionContext, }, }, + solana_type_overrides::sync::{atomic::Ordering, Arc}, solana_vote::vote_account::VoteAccountsHashMap, std::{ alloc::Layout, cell::RefCell, fmt::{self, Debug}, rc::Rc, - sync::{atomic::Ordering, Arc}, }, }; @@ -681,7 +681,7 @@ macro_rules! with_mock_invoke_context { account::ReadableAccount, feature_set::FeatureSet, hash::Hash, sysvar::rent::Rent, transaction_context::TransactionContext, }, - std::sync::Arc, + solana_type_overrides::sync::Arc, $crate::{ invoke_context::{EnvironmentConfig, InvokeContext}, loaded_programs::ProgramCacheForTxBatch, diff --git a/program-runtime/src/loaded_programs.rs b/program-runtime/src/loaded_programs.rs index 1403a09f1f7089..79c60dd639c335 100644 --- a/program-runtime/src/loaded_programs.rs +++ b/program-runtime/src/loaded_programs.rs @@ -5,7 +5,6 @@ use { }, log::{debug, error, log_enabled, trace}, percentage::PercentageInteger, - rand::{thread_rng, Rng}, solana_measure::measure::Measure, solana_rbpf::{ elf::Executable, @@ -20,13 +19,17 @@ use { pubkey::Pubkey, saturating_add_assign, }, - std::{ - collections::{hash_map::Entry, HashMap}, - fmt::{Debug, Formatter}, + solana_type_overrides::{ + rand::{thread_rng, Rng}, sync::{ atomic::{AtomicU64, Ordering}, Arc, Condvar, Mutex, RwLock, }, + thread, + }, + std::{ + collections::{hash_map::Entry, HashMap}, + fmt::{Debug, Formatter}, }, }; @@ -598,7 +601,7 @@ enum IndexImplementation { /// It is possible that multiple TX batches from different slots need different versions of a /// program. The deployment slot of a program is only known after load tho, /// so all loads for a given program key are serialized. - loading_entries: Mutex>, + loading_entries: Mutex>, }, } @@ -1122,7 +1125,7 @@ impl ProgramCache { if let Entry::Vacant(entry) = entry { entry.insert(( loaded_programs_for_tx_batch.slot, - std::thread::current().id(), + thread::current().id(), )); cooperative_loading_task = Some((*key, *usage_count)); } @@ -1156,7 +1159,7 @@ impl ProgramCache { loading_entries, .. } => { let loading_thread = loading_entries.get_mut().unwrap().remove(&key); - debug_assert_eq!(loading_thread, Some((slot, std::thread::current().id()))); + debug_assert_eq!(loading_thread, Some((slot, thread::current().id()))); // Check that it will be visible to our own fork once inserted if loaded_program.deployment_slot > self.latest_root_slot && !matches!( diff --git a/program-runtime/src/sysvar_cache.rs b/program-runtime/src/sysvar_cache.rs index 313faec6e11b02..1a270484410531 100644 --- a/program-runtime/src/sysvar_cache.rs +++ b/program-runtime/src/sysvar_cache.rs @@ -13,7 +13,7 @@ use { }, transaction_context::{IndexOfAccount, InstructionContext, TransactionContext}, }, - std::sync::Arc, + solana_type_overrides::sync::Arc, }; #[cfg(all(RUSTC_WITH_SPECIALIZATION, feature = "frozen-abi"))] diff --git a/programs/bpf_loader/Cargo.toml b/programs/bpf_loader/Cargo.toml index aac0f10e7cd57e..bf1f6315729972 100644 --- a/programs/bpf_loader/Cargo.toml +++ b/programs/bpf_loader/Cargo.toml @@ -20,6 +20,7 @@ solana-measure = { workspace = true } solana-poseidon = { workspace = true } solana-program-runtime = { workspace = true } solana-sdk = { workspace = true } +solana-type-overrides = { workspace = true } solana-zk-token-sdk = { workspace = true } solana_rbpf = { workspace = true } thiserror = { workspace = true } @@ -38,3 +39,6 @@ name = "solana_bpf_loader_program" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] + +[features] +shuttle-test = ["solana-type-overrides/shuttle-test", "solana-program-runtime/shuttle-test"] diff --git a/programs/bpf_loader/src/lib.rs b/programs/bpf_loader/src/lib.rs index dd8aa542213621..016fcf7ecd30d1 100644 --- a/programs/bpf_loader/src/lib.rs +++ b/programs/bpf_loader/src/lib.rs @@ -46,12 +46,8 @@ use { system_instruction::{self, MAX_PERMITTED_DATA_LENGTH}, transaction_context::{IndexOfAccount, InstructionContext, TransactionContext}, }, - std::{ - cell::RefCell, - mem, - rc::Rc, - sync::{atomic::Ordering, Arc}, - }, + solana_type_overrides::sync::{atomic::Ordering, Arc}, + std::{cell::RefCell, mem, rc::Rc}, syscalls::{create_program_runtime_environment_v1, morph_into_deployment_environment_v1}, }; @@ -324,7 +320,7 @@ macro_rules! create_vm { #[macro_export] macro_rules! mock_create_vm { ($vm:ident, $additional_regions:expr, $accounts_metadata:expr, $invoke_context:expr $(,)?) => { - let loader = std::sync::Arc::new(BuiltinProgram::new_mock()); + let loader = solana_type_overrides::sync::Arc::new(BuiltinProgram::new_mock()); let function_registry = solana_rbpf::program::FunctionRegistry::default(); let executable = solana_rbpf::elf::Executable::::from_text_bytes( &[0x95, 0, 0, 0, 0, 0, 0, 0], diff --git a/programs/bpf_loader/src/syscalls/mod.rs b/programs/bpf_loader/src/syscalls/mod.rs index ddf655f48d4225..c70bd29542aa09 100644 --- a/programs/bpf_loader/src/syscalls/mod.rs +++ b/programs/bpf_loader/src/syscalls/mod.rs @@ -58,12 +58,12 @@ use { sysvar::{Sysvar, SysvarId}, transaction_context::{IndexOfAccount, InstructionAccount}, }, + solana_type_overrides::sync::Arc, std::{ alloc::Layout, mem::{align_of, size_of}, slice::from_raw_parts_mut, str::{from_utf8, Utf8Error}, - sync::Arc, }, thiserror::Error as ThisError, }; diff --git a/programs/loader-v4/Cargo.toml b/programs/loader-v4/Cargo.toml index da7d5c10c72a51..79c078f29785b5 100644 --- a/programs/loader-v4/Cargo.toml +++ b/programs/loader-v4/Cargo.toml @@ -14,6 +14,7 @@ solana-compute-budget = { workspace = true } solana-measure = { workspace = true } solana-program-runtime = { workspace = true } solana-sdk = { workspace = true } +solana-type-overrides = { workspace = true } solana_rbpf = { workspace = true } [dev-dependencies] @@ -25,3 +26,6 @@ name = "solana_loader_v4_program" [package.metadata.docs.rs] targets = ["x86_64-unknown-linux-gnu"] + +[features] +shuttle-test = ["solana-type-overrides/shuttle-test", "solana-program-runtime/shuttle-test"] diff --git a/programs/loader-v4/src/lib.rs b/programs/loader-v4/src/lib.rs index acf0255579d74e..161f72a478cc07 100644 --- a/programs/loader-v4/src/lib.rs +++ b/programs/loader-v4/src/lib.rs @@ -30,11 +30,8 @@ use { saturating_add_assign, transaction_context::{BorrowedAccount, InstructionContext}, }, - std::{ - cell::RefCell, - rc::Rc, - sync::{atomic::Ordering, Arc}, - }, + solana_type_overrides::sync::{atomic::Ordering, Arc}, + std::{cell::RefCell, rc::Rc}, }; pub const DEFAULT_COMPUTE_UNITS: u64 = 2_000; diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 6aa73425abdd92..7a3c0934750fa4 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -4797,6 +4797,7 @@ dependencies = [ "solana-poseidon", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana-zk-token-sdk", "solana_rbpf", "thiserror", @@ -5266,6 +5267,7 @@ dependencies = [ "solana-measure", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana_rbpf", ] @@ -5449,6 +5451,7 @@ dependencies = [ "solana-measure", "solana-metrics", "solana-sdk", + "solana-type-overrides", "solana-vote", "solana_rbpf", "thiserror", @@ -5782,6 +5785,7 @@ dependencies = [ "solana-sdk", "solana-svm", "solana-transaction-status", + "solana-type-overrides", "solana_rbpf", "walkdir", ] @@ -6297,6 +6301,7 @@ dependencies = [ "solana-config-program", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", "solana-vote-program", ] @@ -6399,6 +6404,7 @@ dependencies = [ "solana-program-runtime", "solana-sdk", "solana-system-program", + "solana-type-overrides", "solana-vote", ] @@ -6412,6 +6418,7 @@ dependencies = [ "serde_derive", "solana-program-runtime", "solana-sdk", + "solana-type-overrides", ] [[package]] @@ -6552,6 +6559,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "solana-type-overrides" +version = "2.0.0" +dependencies = [ + "futures 0.3.30", + "lazy_static", + "rand 0.8.5", +] + [[package]] name = "solana-udp-client" version = "2.0.0" diff --git a/programs/sbf/Cargo.toml b/programs/sbf/Cargo.toml index 6e8f54a427a986..defd20f4716402 100644 --- a/programs/sbf/Cargo.toml +++ b/programs/sbf/Cargo.toml @@ -55,6 +55,7 @@ solana-sbf-rust-sysvar = { path = "rust/sysvar", version = "=2.0.0" } solana-sdk = { path = "../../sdk", version = "=2.0.0" } solana-svm = { path = "../../svm", version = "=2.0.0" } solana-transaction-status = { path = "../../transaction-status", version = "=2.0.0" } +solana-type-overrides = { path = "../../type-overrides", version = "=2.0.0" } agave-validator = { path = "../../validator", version = "=2.0.0" } solana-zk-token-sdk = { path = "../../zk-token-sdk", version = "=2.0.0" } solana_rbpf = "=0.8.1" @@ -113,6 +114,7 @@ solana-sbf-rust-sysvar = { workspace = true } solana-sdk = { workspace = true, features = ["dev-context-only-utils"] } solana-svm = { workspace = true } solana-transaction-status = { workspace = true } +solana-type-overrides = { workspace = true } solana_rbpf = { workspace = true } [[bench]] diff --git a/programs/stake/Cargo.toml b/programs/stake/Cargo.toml index 1ccd2e857c7521..b55c904b4b17a6 100644 --- a/programs/stake/Cargo.toml +++ b/programs/stake/Cargo.toml @@ -15,6 +15,7 @@ log = { workspace = true } solana-config-program = { workspace = true } solana-program-runtime = { workspace = true } solana-sdk = { workspace = true } +solana-type-overrides = { workspace = true } solana-vote-program = { workspace = true } [dev-dependencies] diff --git a/programs/system/Cargo.toml b/programs/system/Cargo.toml index a3366d5c8f3f4f..1e5643587c8f88 100644 --- a/programs/system/Cargo.toml +++ b/programs/system/Cargo.toml @@ -16,6 +16,7 @@ serde = { workspace = true } serde_derive = { workspace = true } solana-program-runtime = { workspace = true } solana-sdk = { workspace = true } +solana-type-overrides = { workspace = true } [dev-dependencies] assert_matches = { workspace = true } diff --git a/svm/Cargo.toml b/svm/Cargo.toml index c6ae6db41f13fb..41918ca261f013 100644 --- a/svm/Cargo.toml +++ b/svm/Cargo.toml @@ -26,6 +26,7 @@ solana-measure = { workspace = true } solana-program-runtime = { workspace = true } solana-sdk = { workspace = true } solana-system-program = { workspace = true } +solana-type-overrides = { workspace = true } solana-vote = { workspace = true } [lib] @@ -62,3 +63,9 @@ frozen-abi = [ "solana-program-runtime/frozen-abi", "solana-sdk/frozen-abi", ] +shuttle-test = [ + "solana-type-overrides/shuttle-test", + "solana-program-runtime/shuttle-test", + "solana-bpf-loader-program/shuttle-test", + "solana-loader-v4-program/shuttle-test", +] diff --git a/svm/src/message_processor.rs b/svm/src/message_processor.rs index 20161d401de858..95e5223b3ce53c 100644 --- a/svm/src/message_processor.rs +++ b/svm/src/message_processor.rs @@ -657,7 +657,7 @@ mod tests { // copies the `random` implementation at: // https://docs.rs/libsecp256k1/latest/src/libsecp256k1/lib.rs.html#430 let secret_key = { - use rand::RngCore; + use solana_type_overrides::rand::RngCore; let mut rng = rand::thread_rng(); loop { let mut ret = [0u8; libsecp256k1::util::SECRET_KEY_SIZE]; diff --git a/svm/src/program_loader.rs b/svm/src/program_loader.rs index b6d7b7d9c28186..ce790b004173af 100644 --- a/svm/src/program_loader.rs +++ b/svm/src/program_loader.rs @@ -17,7 +17,7 @@ use { loader_v4::{self, LoaderV4State, LoaderV4Status}, pubkey::Pubkey, }, - std::sync::Arc, + solana_type_overrides::sync::Arc, }; #[derive(Debug)] diff --git a/svm/src/transaction_processor.rs b/svm/src/transaction_processor.rs index 06174fdf6bac10..a1946061ec8b25 100644 --- a/svm/src/transaction_processor.rs +++ b/svm/src/transaction_processor.rs @@ -53,16 +53,13 @@ use { transaction::{self, SanitizedTransaction, TransactionError}, transaction_context::{ExecutionRecord, TransactionContext}, }, + solana_type_overrides::sync::{atomic::Ordering, Arc, RwLock}, solana_vote::vote_account::VoteAccountsHashMap, std::{ cell::RefCell, collections::{hash_map::Entry, HashMap, HashSet}, fmt::{Debug, Formatter}, rc::Rc, - sync::{ - atomic::Ordering::{self, Relaxed}, - Arc, RwLock, - }, }, }; @@ -649,12 +646,18 @@ impl TransactionBatchProcessor { self.slot, false, ) { - recompiled - .tx_usage_counter - .fetch_add(program_to_recompile.tx_usage_counter.load(Relaxed), Relaxed); - recompiled - .ix_usage_counter - .fetch_add(program_to_recompile.ix_usage_counter.load(Relaxed), Relaxed); + recompiled.tx_usage_counter.fetch_add( + program_to_recompile + .tx_usage_counter + .load(Ordering::Relaxed), + Ordering::Relaxed, + ); + recompiled.ix_usage_counter.fetch_add( + program_to_recompile + .ix_usage_counter + .load(Ordering::Relaxed), + Ordering::Relaxed, + ); let mut program_cache = self.program_cache.write().unwrap(); program_cache.assign_program(key, recompiled); } diff --git a/type-overrides/Cargo.toml b/type-overrides/Cargo.toml new file mode 100644 index 00000000000000..28c49f198e73e0 --- /dev/null +++ b/type-overrides/Cargo.toml @@ -0,0 +1,18 @@ +[package] +name = "solana-type-overrides" +description = "Type overrides for specialized testing" +version = { workspace = true } +authors = { workspace = true } +repository = { workspace = true } +homepage = { workspace = true } +license = { workspace = true } +edition = { workspace = true } + +[dependencies] +futures = { workspace = true } +lazy_static = { workspace = true } +rand = { workspace = true } +shuttle = { workspace = true, optional = true } + +[features] +shuttle-test = ["dep:shuttle"] diff --git a/type-overrides/src/lib.rs b/type-overrides/src/lib.rs new file mode 100644 index 00000000000000..d48cfadffa1eec --- /dev/null +++ b/type-overrides/src/lib.rs @@ -0,0 +1,48 @@ +/// +/// This lib contains both standard imports and imports shuttle. +/// Shuttle is a Rust crate that facilitates multithreaded testing. It has its own scheduler +/// and can efficiently detect bugs in concurrent code. The downside is that we need to replace +/// all imports by those from Shuttle. +/// +/// Instead of importing from std, rand, and so on, import the following from solana-type-override, +/// and include the 'shuttle-test' feature in your crate to use shuttle. +pub mod executor { + #[cfg(not(feature = "shuttle-test"))] + pub use futures::executor::*; + #[cfg(feature = "shuttle-test")] + pub use shuttle::future::*; +} + +pub mod hint { + #[cfg(feature = "shuttle-test")] + pub use shuttle::hint::*; + #[cfg(not(feature = "shuttle-test"))] + pub use std::hint::*; +} + +pub mod lazy_static { + #[cfg(not(feature = "shuttle-test"))] + pub use lazy_static::*; + #[cfg(feature = "shuttle-test")] + pub use shuttle::lazy_static::*; +} + +pub mod rand { + pub use rand::*; + #[cfg(feature = "shuttle-test")] + pub use shuttle::rand::{thread_rng, Rng, RngCore}; +} + +pub mod sync { + #[cfg(feature = "shuttle-test")] + pub use shuttle::sync::*; + #[cfg(not(feature = "shuttle-test"))] + pub use std::sync::*; +} + +pub mod thread { + #[cfg(feature = "shuttle-test")] + pub use shuttle::thread::*; + #[cfg(not(feature = "shuttle-test"))] + pub use std::thread::*; +}