From b9c20f3d440faf6ee60245650e8c8250fbe89ce1 Mon Sep 17 00:00:00 2001 From: Michal Rostecki Date: Tue, 25 Jun 2024 12:50:43 +0200 Subject: [PATCH] test: Add unit tests for `light_utils::offset` (#832) * test: Add unit tests for `light_utils::offset` * Reorganize the code to make clear distinction between zero-copy and copy utilities. * Cover the whole module with tests. * fix: Use `ptr::write` instead of `get_mut` on uninitialized fields The former works fine with uninitialized regions. The latter does not. --- Cargo.lock | 1145 +++++++++++------------ merkle-tree/bounded-vec/src/lib.rs | 118 ++- merkle-tree/concurrent/src/copy.rs | 2 +- merkle-tree/concurrent/src/zero_copy.rs | 2 +- merkle-tree/indexed/src/copy.rs | 2 +- merkle-tree/indexed/src/zero_copy.rs | 2 +- utils/Cargo.toml | 4 + utils/src/offset.rs | 125 --- utils/src/offset/copy.rs | 353 +++++++ utils/src/offset/mod.rs | 2 + utils/src/offset/zero_copy.rs | 277 ++++++ 11 files changed, 1326 insertions(+), 706 deletions(-) delete mode 100644 utils/src/offset.rs create mode 100644 utils/src/offset/copy.rs create mode 100644 utils/src/offset/mod.rs create mode 100644 utils/src/offset/zero_copy.rs diff --git a/Cargo.lock b/Cargo.lock index 08485f02be..67878cc997 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -26,7 +26,7 @@ dependencies = [ "light-heap", "light-indexed-merkle-tree", "light-utils", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "solana-sdk", "solana-security-txt", @@ -52,9 +52,9 @@ dependencies = [ "light-utils", "light-verifier", "memoffset 0.9.1", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", - "reqwest 0.11.27", + "reqwest 0.11.26", "serde_json", "solana-cli-output", "solana-program-test", @@ -117,11 +117,11 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.8" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.12", "once_cell", "version_check", ] @@ -133,7 +133,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.12", "once_cell", "version_check", "zerocopy", @@ -141,9 +141,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.3" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" dependencies = [ "memchr", ] @@ -160,7 +160,7 @@ version = "0.2.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -197,7 +197,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f2a3e1df4685f18d12a943a9f2a7456305401af21a07c9fe076ef9ecd6e400" dependencies = [ "anchor-syn", - "bs58 0.5.1", + "bs58 0.5.0", "proc-macro2", "quote", "syn 1.0.109", @@ -304,7 +304,7 @@ dependencies = [ "bincode", "borsh 0.10.3", "bytemuck", - "getrandom 0.2.15", + "getrandom 0.2.12", "solana-program", "thiserror", ] @@ -329,7 +329,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9101b84702fed2ea57bd22992f75065da5648017135b844283a2f6d74f27825" dependencies = [ "anyhow", - "bs58 0.5.1", + "bs58 0.5.0", "heck 0.3.3", "proc-macro2", "quote", @@ -366,48 +366,47 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.14" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418c75fa768af9c03be99d17643f93f79bbba589895012a80e3452a19ddda15b" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", - "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.7" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" [[package]] name = "anstyle-parse" -version = "0.2.4" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03a11a9034d92058ceb6ee011ce58af4a9bf61491aa7e1e59ecd24bd40d22d4" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad186efb764318d35165f1758e7dcef3b10628e26d41a44bc5550652e6804391" +checksum = "a3a318f1f38d2418400f8209655bfd825785afd25aa30bb7ba6cc792e4596748" dependencies = [ "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.3" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61a38449feb7068f52bb06c12759005cf459ee52bb4adc1d5a7c4322d716fb19" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", "windows-sys 0.52.0", @@ -415,9 +414,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" [[package]] name = "aquamarine" @@ -494,7 +493,7 @@ dependencies = [ "derivative", "digest 0.10.7", "itertools", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "paste", "rayon", @@ -518,7 +517,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7abe79b0e4288889c4574159ab790824d0033b9fdcb2a112a3182fac2e514565" dependencies = [ - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "proc-macro2", "quote", @@ -576,7 +575,7 @@ dependencies = [ "ark-serialize-derive", "ark-std", "digest 0.10.7", - "num-bigint 0.4.5", + "num-bigint 0.4.4", ] [[package]] @@ -689,9 +688,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.11" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd066d0b4ef8ecb03a55319dc13aa6910616d0f44008a045bb1835af830abff5" +checksum = "bb42b2197bf15ccb092b62c74515dbd8b86d0effd934795f6687c93b6e679a2c" dependencies = [ "brotli", "flate2", @@ -718,15 +717,9 @@ checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - [[package]] name = "atty" version = "0.2.14" @@ -740,15 +733,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.3.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -779,9 +772,9 @@ checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" -version = "0.22.1" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "9475866fec1451be56a3c2400fd081ff546538961565ccb5b7142cbd22bc7a51" [[package]] name = "base64ct" @@ -844,9 +837,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cca6d3674597c30ddf2c587bf8d9d65c9a84d2326d941cc79c9842dfe0ef52" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", @@ -903,11 +896,11 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "0901fc8eb0aca4c83be0106d6f2db17d86a08dfc2c25f0e84464bf381158add6" dependencies = [ - "borsh-derive 1.5.1", + "borsh-derive 1.4.0", "cfg_aliases", ] @@ -939,15 +932,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "51670c3aa053938b0ee3bd67c3817e471e626151131b934038e83c5bf8de48f5" dependencies = [ "once_cell", "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", "syn_derive", ] @@ -997,9 +990,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1008,9 +1001,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "da74e2b81409b1b743f8f0c62cc6254afefb8b8e50bbfe3735550f7aeefa3448" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1024,18 +1017,18 @@ checksum = "771fe0050b883fcc3ea2359b1a96bcfbc090b7116eae7c3c512c7a083fdf23d3" [[package]] name = "bs58" -version = "0.5.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4" +checksum = "f5353f36341f7451062466f0b755b96ac3a9547e4d7f6b70d603fc721a7d7896" dependencies = [ "tinyvec", ] [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" [[package]] name = "bv" @@ -1049,28 +1042,28 @@ dependencies = [ [[package]] name = "bytecount" -version = "0.6.8" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" +checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" [[package]] name = "bytemuck" -version = "1.16.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b236fc92302c97ed75b38da1f4917b5cdda4984745740f153a5d3059e48d725e" +checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1081,9 +1074,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bzip2" @@ -1118,13 +1111,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.99" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c51067fd44124faa7f870b4b1c969379ad32b2ba805aa959430ceaa384f695" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" dependencies = [ "jobserver", "libc", - "once_cell", ] [[package]] @@ -1135,9 +1127,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" [[package]] name = "chrono" @@ -1151,7 +1143,7 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.5", + "windows-targets 0.52.0", ] [[package]] @@ -1200,14 +1192,14 @@ dependencies = [ "once_cell", "strsim 0.10.0", "termcolor", - "textwrap 0.16.1", + "textwrap 0.16.0", ] [[package]] name = "clap" -version = "4.5.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db83dced34638ad474f39f250d7fea9598bdd239eaced1bdf45d597da0f433f" +checksum = "bfaff671f6b22ca62406885ece523383b9b64022e341e53e009a62ebc47a45f2" dependencies = [ "clap_builder", "clap_derive", @@ -1215,26 +1207,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.7" +version = "4.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e204572485eb3fbf28f871612191521df159bc3e15a9f5064c66dba3a8c05f" +checksum = "a216b506622bb1d316cd51328dce24e07bdff4a6128a47c7e7fad11878d5adbb" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.1", - "strsim 0.11.1", + "clap_lex 0.6.0", + "strsim 0.10.0", ] [[package]] name = "clap_derive" -version = "4.5.5" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c780290ccf4fb26629baa7a1081e68ced113f1d3ec302fa5948f1c381ebf06c6" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ - "heck 0.5.0", + "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1248,9 +1240,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "color-eyre" @@ -1281,9 +1273,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.1" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b6a852b24ab71dffc585bcb46eaf7959d175cb865a7152e35b348d1b2960422" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" [[package]] name = "combine" @@ -1313,9 +1305,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-program-test", "solana-sdk", "spl-token 3.5.0", @@ -1324,9 +1316,9 @@ dependencies = [ [[package]] name = "concurrent-queue" -version = "2.5.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" +checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" dependencies = [ "crossbeam-utils", ] @@ -1347,7 +1339,7 @@ dependencies = [ "rust-ini", "serde", "serde_json", - "toml 0.8.14", + "toml 0.8.12", "yaml-rust", ] @@ -1405,7 +1397,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.12", "once_cell", "tiny-keccak", ] @@ -1427,9 +1419,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" dependencies = [ "core-foundation-sys", "libc", @@ -1437,61 +1429,66 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ + "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.18" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ + "autocfg", + "cfg-if", "crossbeam-utils", + "memoffset 0.9.1", + "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crunchy" @@ -1544,9 +1541,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.9" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83b2eb4d90d12bdda5ed17de686c2acb4c57914f8f921b8da7e112b5a36f3fe1" +checksum = "0209d94da627ab5605dcccf08bb18afa5009cfbef48d8a8b7d7bdbc79be25c5e" dependencies = [ "darling_core", "darling_macro", @@ -1554,27 +1551,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.9" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622687fe0bac72a04e5599029151f5796111b90f1baaa9b544d807a5e31cd120" +checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim 0.11.1", - "syn 2.0.67", + "strsim 0.10.0", + "syn 2.0.48", ] [[package]] name = "darling_macro" -version = "0.20.9" +version = "0.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733cabb43482b1a1b53eee8583c2b9e8684d592215ea83efd305dd31bc2f0178" +checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1584,7 +1581,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.5", + "hashbrown 0.14.1", "lock_api", "once_cell", "parking_lot_core", @@ -1593,9 +1590,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.6.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8566979429cf69b49a5c740c60791108e86440e8be149bbea4fe54d2c32d6e2" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "der" @@ -1615,7 +1612,7 @@ dependencies = [ "asn1-rs", "displaydoc", "nom", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rusticata-macros", ] @@ -1717,13 +1714,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1746,7 +1743,7 @@ checksum = "a6cbae11b3de8fce2a456e8ea3dada226b35fe791f0dc1d360c0941f0bb681f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1793,10 +1790,10 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rand 0.8.5", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-client", "solana-program-test", "solana-sdk", @@ -1860,9 +1857,9 @@ dependencies = [ [[package]] name = "either" -version = "1.12.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -1872,9 +1869,9 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "encoding_rs" -version = "0.8.34" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" dependencies = [ "cfg-if", ] @@ -1890,13 +1887,13 @@ dependencies = [ [[package]] name = "enum-iterator-derive" -version = "1.4.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ab991c1362ac86c61ab6f556cff143daa22e5a15e4e189df818b2fd19fe65b" +checksum = "03cdc46ec28bd728e67540c528013c6a10eb69a02eb31078a1bda695438cbfb8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1905,11 +1902,11 @@ version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -1950,9 +1947,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b35839ba51819680ba087cd351788c9a3c476841207e0b8cee0b04722343b9" +checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d" dependencies = [ "anstream", "anstyle", @@ -1969,9 +1966,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1995,9 +1992,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "feature-probe" @@ -2007,21 +2004,21 @@ checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" [[package]] name = "filetime" -version = "0.2.23" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee447700ac8aa0b2f2bd7bc4462ad686ba06baa6727ac149a2d6277f0d240fd" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", - "windows-sys 0.52.0", + "redox_syscall 0.3.5", + "windows-sys 0.48.0", ] [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" dependencies = [ "crc32fast", "miniz_oxide", @@ -2067,9 +2064,9 @@ dependencies = [ "borsh 0.10.3", "bs58 0.4.0", "chrono", - "clap 4.5.7", + "clap 4.4.11", "config", - "env_logger 0.11.3", + "env_logger 0.11.2", "function_name", "futures", "light-bounded-vec", @@ -2083,11 +2080,11 @@ dependencies = [ "light-system-program", "light-test-utils", "log", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "photon-api", "rand 0.8.5", - "reqwest 0.11.27", + "reqwest 0.11.26", "rstest", "serde", "serde_json", @@ -2100,7 +2097,7 @@ dependencies = [ "time", "tiny-bip39", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.9", ] [[package]] @@ -2189,7 +2186,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -2264,9 +2261,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" dependencies = [ "cfg-if", "js-sys", @@ -2277,9 +2274,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "glob" @@ -2314,39 +2311,39 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.26" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" +checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.12", - "indexmap 2.2.6", + "http 0.2.9", + "indexmap 1.9.3", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.9", "tracing", ] [[package]] name = "h2" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa82e28a107a8cc405f0839610bdc9b15f1e25ec7d696aa5cf173edbcb1486ab" +checksum = "816ec7294445779408f36fe57bc5b7fc1cf59664059096c65f905c1c61f58069" dependencies = [ - "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", + "futures-util", "http 1.1.0", "indexmap 2.2.6", "slab", "tokio", - "tokio-util 0.7.11", + "tokio-util 0.7.9", "tracing", ] @@ -2365,7 +2362,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" dependencies = [ - "ahash 0.7.8", + "ahash 0.7.6", ] [[package]] @@ -2374,7 +2371,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.8", + "ahash 0.7.6", ] [[package]] @@ -2388,9 +2385,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" [[package]] name = "heck" @@ -2407,12 +2404,6 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hermit-abi" version = "0.1.19" @@ -2424,9 +2415,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -2472,9 +2463,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.12" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" dependencies = [ "bytes", "fnv", @@ -2494,12 +2485,12 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.6" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes", - "http 0.2.12", + "http 0.2.9", "pin-project-lite", ] @@ -2515,12 +2506,12 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" dependencies = [ "bytes", - "futures-util", + "futures-core", "http 1.1.0", "http-body 1.0.0", "pin-project-lite", @@ -2528,9 +2519,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.4" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" +checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" @@ -2546,22 +2537,22 @@ checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" [[package]] name = "hyper" -version = "0.14.29" +version = "0.14.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f361cde2f109281a220d4307746cdfd5ee3f410da58a70377762396775634b33" +checksum = "ffb1cfd654a8219eaef89881fdb3bb3b1cdc5fa75ded05d6933b2b382e395468" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", + "h2 0.3.21", + "http 0.2.9", + "http-body 0.4.5", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.4.9", "tokio", "tower-service", "tracing", @@ -2577,7 +2568,7 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.5", + "h2 0.4.4", "http 1.1.0", "http-body 1.0.0", "httparse", @@ -2590,13 +2581,13 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.24.2" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" +checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" dependencies = [ "futures-util", - "http 0.2.12", - "hyper 0.14.29", + "http 0.2.9", + "hyper 0.14.27", "rustls", "tokio", "tokio-rustls", @@ -2609,7 +2600,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" dependencies = [ "bytes", - "hyper 0.14.29", + "hyper 0.14.27", "native-tls", "tokio", "tokio-native-tls", @@ -2633,9 +2624,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.5" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b875924a60b96e5d7b9ae7b066540b1dd1cbd90d1828f54c92e02a283351c56" +checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" dependencies = [ "bytes", "futures-channel", @@ -2644,7 +2635,7 @@ dependencies = [ "http-body 1.0.0", "hyper 1.3.1", "pin-project-lite", - "socket2", + "socket2 0.5.5", "tokio", "tower", "tower-service", @@ -2653,16 +2644,16 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows 0.48.0", ] [[package]] @@ -2708,18 +2699,18 @@ dependencies = [ [[package]] name = "include_dir" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "923d117408f1e49d914f1a379a309cffe4f18c05cf4e3d12e613a15fc81bd0dd" +checksum = "18762faeff7122e89e0857b02f7ce6fcc0d101d5e9ad2ad7846cc01d61b7f19e" dependencies = [ "include_dir_macros", ] [[package]] name = "include_dir_macros" -version = "0.7.4" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cab85a7ed0bd5f0e76d93846e0147172bed2e2d3f859bcc33a8d9699cad1a75" +checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ "proc-macro2", "quote", @@ -2755,14 +2746,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", - "hashbrown 0.14.5", + "hashbrown 0.14.1", ] [[package]] name = "indicatif" -version = "0.17.8" +version = "0.17.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763a5a8f45087d6bcea4222e7b72c291a054edf80e4ef6efd2a4979878c7bea3" +checksum = "fb28741c9db9a713d93deb3bb9515c20788cef5815265bee4980e87bde7e0f25" dependencies = [ "console", "instant", @@ -2773,18 +2764,18 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.13" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", ] [[package]] name = "ipnet" -version = "2.9.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" [[package]] name = "is-terminal" @@ -2792,17 +2783,11 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.3.3", "libc", "windows-sys 0.52.0", ] -[[package]] -name = "is_terminal_polyfill" -version = "1.70.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8478577c03552c21db0e2724ffb8986a5ce7af88107e6be5d2ee6e158c12800" - [[package]] name = "itertools" version = "0.10.5" @@ -2814,15 +2799,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" dependencies = [ "libc", ] @@ -2864,33 +2849,34 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.5" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] [[package]] name = "lazy_static" -version = "1.5.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" [[package]] name = "libredox" -version = "0.1.3" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" dependencies = [ "bitflags 2.5.0", "libc", + "redox_syscall 0.4.1", ] [[package]] @@ -2983,7 +2969,7 @@ dependencies = [ "light-merkle-tree-reference", "light-utils", "memoffset 0.8.0", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rand 0.8.5", "solana-program", @@ -3003,7 +2989,7 @@ dependencies = [ "light-heap", "light-utils", "memoffset 0.9.1", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rand 0.8.5", "solana-program", @@ -3042,7 +3028,7 @@ dependencies = [ "light-merkle-tree-reference", "light-utils", "memoffset 0.9.1", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rand 0.8.5", "solana-program", @@ -3076,7 +3062,7 @@ checksum = "3c9a85a9752c549ceb7578064b4ed891179d20acd85f27318573b64d2d7ee7ee" dependencies = [ "ark-bn254", "ark-ff", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "thiserror", ] @@ -3092,7 +3078,7 @@ dependencies = [ "ark-relations", "ark-serialize", "ark-std", - "borsh 0.10.3", + "borsh 0.9.3", "bytemuck", "color-eyre", "duct", @@ -3103,10 +3089,10 @@ dependencies = [ "light-merkle-tree-reference", "light-utils", "log", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "once_cell", - "reqwest 0.11.27", + "reqwest 0.11.26", "serde", "serde_json", "solana-program", @@ -3154,7 +3140,7 @@ dependencies = [ "light-system-program", "light-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "rand 0.8.5", "reqwest 0.12.4", @@ -3208,11 +3194,11 @@ dependencies = [ "light-verifier", "log", "memoffset 0.9.1", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "photon-api", "rand 0.8.5", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-client", "solana-program-test", "solana-sdk", @@ -3229,8 +3215,10 @@ dependencies = [ "anyhow", "ark-bn254", "ark-ff", + "bytemuck", "light-bounded-vec", - "num-bigint 0.4.5", + "memoffset 0.9.1", + "num-bigint 0.4.4", "rand 0.8.5", "solana-program", "thiserror", @@ -3243,7 +3231,7 @@ dependencies = [ "borsh 0.10.3", "groth16-solana", "light-prover-client", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-program", "thiserror", "tokio", @@ -3260,7 +3248,7 @@ dependencies = [ "hex", "js-sys", "light-poseidon", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "thiserror", "wasm-bindgen", "web-sys", @@ -3274,15 +3262,15 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ "autocfg", "scopeguard", @@ -3290,9 +3278,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru" @@ -3305,9 +3293,9 @@ dependencies = [ [[package]] name = "lz4" -version = "1.25.0" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6eab492fe7f8651add23237ea56dbf11b3c4ff762ab83d40a47f11433421f91" +checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" dependencies = [ "libc", "lz4-sys", @@ -3315,9 +3303,9 @@ dependencies = [ [[package]] name = "lz4-sys" -version = "1.9.5" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9764018d143cc854c9f17f0b907de70f14393b1f502da6375dce70f00514eb3" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" dependencies = [ "cc", "libc", @@ -3325,9 +3313,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" [[package]] name = "memmap2" @@ -3401,18 +3389,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.11" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -3469,10 +3457,11 @@ dependencies = [ [[package]] name = "native-tls" -version = "0.2.12" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" +checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" dependencies = [ + "lazy_static", "libc", "log", "openssl", @@ -3549,10 +3538,11 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ + "autocfg", "num-integer", "num-traits", "rand 0.8.5", @@ -3594,23 +3584,24 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "num-integer" -version = "0.1.46" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" dependencies = [ + "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.45" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" +checksum = "7d03e6c028c5dc5cac6e2dec0efda81fc887605bb3d884578bb6d6bf7514e252" dependencies = [ "autocfg", "num-integer", @@ -3631,9 +3622,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.19" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -3644,7 +3635,7 @@ version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.3.3", "libc", ] @@ -3696,7 +3687,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -3708,7 +3699,7 @@ dependencies = [ "proc-macro-crate 3.1.0", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -3719,9 +3710,9 @@ checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" [[package]] name = "object" -version = "0.32.2" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -3737,21 +3728,21 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "opaque-debug" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openssl" -version = "0.10.64" +version = "0.10.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" +checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" dependencies = [ "bitflags 2.5.0", "cfg-if", @@ -3770,7 +3761,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -3781,9 +3772,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.102" +version = "0.9.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" +checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" dependencies = [ "cc", "libc", @@ -3822,9 +3813,9 @@ dependencies = [ [[package]] name = "os_pipe" -version = "1.2.0" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29d73ba8daf8fac13b0501d1abeddcfe21ba7401ada61a819144b6c2a4f32209" +checksum = "57119c3b893986491ec9aa85056780d3a0f3cf4da7cc09dd3650dbd6c6738fb9" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3832,9 +3823,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.6.1" +version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" +checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" [[package]] name = "ouroboros" @@ -3878,9 +3869,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", "parking_lot_core", @@ -3888,22 +3879,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.2", + "redox_syscall 0.3.5", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.48.5", ] [[package]] name = "paste" -version = "1.0.15" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "pathdiff" @@ -3984,7 +3975,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -4002,7 +3993,7 @@ dependencies = [ name = "photon-api" version = "0.27.0" dependencies = [ - "reqwest 0.11.27", + "reqwest 0.11.26", "serde", "serde_derive", "serde_json", @@ -4013,29 +4004,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -4056,9 +4047,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "plain" @@ -4080,9 +4071,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "31114a898e107c51bb1609ffaf55a0e011cf6a4d7f1170d0015a165082c0338b" [[package]] name = "powerfmt" @@ -4186,9 +4177,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.81" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" dependencies = [ "unicode-ident", ] @@ -4210,7 +4201,7 @@ checksum = "9e2e25ee72f5b24d773cae88422baddefff7714f97aab68d96fe2b6fc4a28fb2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -4256,16 +4247,16 @@ checksum = "055b4e778e8feb9f93c4e439f71dc2156ef13360b432b799e179a8c4cdf0b1d7" dependencies = [ "bytes", "libc", - "socket2", + "socket2 0.5.5", "tracing", "windows-sys 0.48.0", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] @@ -4329,7 +4320,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.12", ] [[package]] @@ -4384,38 +4375,38 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.5.2" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c82cf8cff14456045f55ec4241383baeff27af886adb72ffb2162f99911de0fd" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ - "bitflags 2.5.0", + "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.12", "libredox", "thiserror", ] [[package]] name = "regex" -version = "1.10.5" +version = "1.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" dependencies = [ "aho-corasick", "memchr", @@ -4425,9 +4416,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" +checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" dependencies = [ "aho-corasick", "memchr", @@ -4436,9 +4427,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.4" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" +checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" [[package]] name = "registry-test" @@ -4457,9 +4448,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", - "reqwest 0.11.27", + "reqwest 0.11.26", "serde_json", "solana-cli-output", "solana-program-test", @@ -4476,9 +4467,9 @@ checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" [[package]] name = "reqwest" -version = "0.11.27" +version = "0.11.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" +checksum = "78bf93c4af7a8bb7d879d51cebe797356ff10ae8516ace542b5182d9dcac10b2" dependencies = [ "async-compression", "base64 0.21.7", @@ -4486,10 +4477,10 @@ dependencies = [ "encoding_rs", "futures-core", "futures-util", - "h2 0.3.26", - "http 0.2.12", - "http-body 0.4.6", - "hyper 0.14.29", + "h2 0.3.21", + "http 0.2.9", + "http-body 0.4.5", + "hyper 0.14.27", "hyper-rustls", "hyper-tls 0.5.0", "ipnet", @@ -4502,7 +4493,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "rustls", - "rustls-pemfile 1.0.4", + "rustls-pemfile 1.0.3", "serde", "serde_json", "serde_urlencoded", @@ -4511,13 +4502,13 @@ dependencies = [ "tokio", "tokio-native-tls", "tokio-rustls", - "tokio-util 0.7.11", + "tokio-util 0.7.9", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.25.4", + "webpki-roots 0.25.2", "winreg 0.50.0", ] @@ -4527,12 +4518,12 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" dependencies = [ - "base64 0.22.1", + "base64 0.22.0", "bytes", "encoding_rs", "futures-core", "futures-util", - "h2 0.4.5", + "h2 0.4.4", "http 1.1.0", "http-body 1.0.0", "http-body-util", @@ -4586,7 +4577,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.12", "libc", "spin 0.9.8", "untrusted 0.9.0", @@ -4641,18 +4632,18 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.67", + "syn 2.0.48", "unicode-ident", ] [[package]] name = "rtoolbox" -version = "0.0.2" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c247d24e63230cdb56463ae328478bd5eac8b8faa8c69461a77e8e323afac90e" +checksum = "034e22c514f5c0cb8a10ff341b9b048b5ceb21591f31c8f44c43b960f9b3524a" dependencies = [ "libc", - "windows-sys 0.48.0", + "winapi", ] [[package]] @@ -4667,9 +4658,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" [[package]] name = "rustc-hash" @@ -4697,9 +4688,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "6ea3e1a662af26cd7a3ba09c0297a31af215563ecf42817c98df621387f4e949" dependencies = [ "bitflags 2.5.0", "errno", @@ -4710,9 +4701,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.12" +version = "0.21.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" +checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", "ring 0.17.8", @@ -4727,16 +4718,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9aace74cb666635c918e9c12bc0d348266037aa8eb599b5cba565709a8dff00" dependencies = [ "openssl-probe", - "rustls-pemfile 1.0.4", + "rustls-pemfile 1.0.3", "schannel", "security-framework", ] [[package]] name = "rustls-pemfile" -version = "1.0.4" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" dependencies = [ "base64 0.21.7", ] @@ -4747,15 +4738,15 @@ version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29993a25686778eb88d4189742cd713c9bce943bc54251a33509dc63cbacf73d" dependencies = [ - "base64 0.22.1", + "base64 0.22.0", "rustls-pki-types", ] [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "beb461507cee2c2ff151784c52762cf4d9ff6a61f3e80968600ed24fa837fa54" [[package]] name = "rustls-webpki" @@ -4769,15 +4760,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "same-file" @@ -4790,11 +4781,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.23" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.48.0", ] [[package]] @@ -4820,26 +4811,26 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "sct" -version = "0.7.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" +checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring 0.16.20", + "untrusted 0.7.1", ] [[package]] name = "security-framework" -version = "2.11.0" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ - "bitflags 2.5.0", + "bitflags 1.3.2", "core-foundation", "core-foundation-sys", "libc", @@ -4848,9 +4839,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.11.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -4858,9 +4849,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "92d43fe69e652f3df9bdc2b85b2854a0825b86e4fb76bc44d945137d053639ca" [[package]] name = "seqlock" @@ -4873,9 +4864,9 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.203" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "3fb1c873e1b9b056a4dc4c0c198b24c3ffa059243875552b2bd0933b1aee4ce2" dependencies = [ "serde_derive", ] @@ -4891,20 +4882,20 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.197" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "7eb0b34b42edc17f6b7cac84a52a1c5f0e1bb2227e997ca9011ea3dd34e8610b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "c5f09b1bd632ef549eaa9f60a1f8de742bdbc698e6cee2095fc84dde5f549ae0" dependencies = [ "itoa", "ryu", @@ -4957,14 +4948,14 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "serde_yaml" -version = "0.9.34+deprecated" +version = "0.9.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" +checksum = "b1bf28c79a99f70ee1f1d83d10c875d2e70618417fda01ad1785e027579d9d38" dependencies = [ "indexmap 2.2.6", "itoa", @@ -4995,7 +4986,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -5082,9 +5073,9 @@ checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" dependencies = [ "libc", ] @@ -5128,12 +5119,22 @@ checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" dependencies = [ "libc", - "windows-sys 0.52.0", + "winapi", +] + +[[package]] +name = "socket2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +dependencies = [ + "libc", + "windows-sys 0.48.0", ] [[package]] @@ -5245,7 +5246,7 @@ name = "solana-banks-client" version = "1.18.11" source = "git+https://github.com/Lightprotocol/agave?branch=v1.18.11-enforce-cpi-tracking#a24d3c07e25de696b4922ddde3e69877e8e9fa27" dependencies = [ - "borsh 1.5.1", + "borsh 1.4.0", "futures", "solana-banks-interface", "solana-program", @@ -5507,7 +5508,7 @@ dependencies = [ "proc-macro2", "quote", "rustc_version", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -5550,7 +5551,7 @@ dependencies = [ "gethostname", "lazy_static", "log", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-sdk", "thiserror", ] @@ -5568,7 +5569,7 @@ dependencies = [ "rand 0.8.5", "serde", "serde_derive", - "socket2", + "socket2 0.5.5", "solana-logger", "solana-sdk", "solana-version", @@ -5625,7 +5626,7 @@ dependencies = [ "blake3", "borsh 0.10.3", "borsh 0.9.3", - "borsh 1.5.1", + "borsh 1.4.0", "bs58 0.4.0", "bv", "bytemuck", @@ -5633,7 +5634,7 @@ dependencies = [ "console_error_panic_hook", "console_log", "curve25519-dalek", - "getrandom 0.2.15", + "getrandom 0.2.12", "itertools", "js-sys", "lazy_static", @@ -5642,7 +5643,7 @@ dependencies = [ "light-poseidon", "log", "memoffset 0.9.1", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-derive 0.4.2", "num-traits", "parking_lot", @@ -5728,7 +5729,7 @@ dependencies = [ "crossbeam-channel", "futures-util", "log", - "reqwest 0.11.27", + "reqwest 0.11.26", "semver", "serde", "serde_derive", @@ -5808,7 +5809,7 @@ dependencies = [ "bs58 0.4.0", "indicatif", "log", - "reqwest 0.11.27", + "reqwest 0.11.26", "semver", "serde", "serde_derive", @@ -5830,7 +5831,7 @@ dependencies = [ "base64 0.21.7", "bs58 0.4.0", "jsonrpc-core", - "reqwest 0.11.27", + "reqwest 0.11.26", "semver", "serde", "serde_derive", @@ -5940,7 +5941,7 @@ dependencies = [ "base64 0.21.7", "bincode", "bitflags 2.5.0", - "borsh 1.5.1", + "borsh 1.4.0", "bs58 0.4.0", "bytemuck", "byteorder", @@ -5994,7 +5995,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -6329,9 +6330,9 @@ dependencies = [ [[package]] name = "spl-discriminator" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daa600f2fe56f32e923261719bae640d873edadbc5237681a39b8e37bfd4d263" +checksum = "cce5d563b58ef1bb2cdbbfe0dfb9ffdc24903b10ae6a4df2d8f425ece375033f" dependencies = [ "bytemuck", "solana-program", @@ -6346,7 +6347,7 @@ checksum = "07fd7858fc4ff8fb0e34090e41d7eb06a823e1057945c26d480bfc21d2338a93" dependencies = [ "quote", "spl-discriminator-syn", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -6358,7 +6359,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.67", + "syn 2.0.48", "thiserror", ] @@ -6382,9 +6383,9 @@ dependencies = [ [[package]] name = "spl-pod" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85a5db7e4efb1107b0b8e52a13f035437cdcb36ef99c58f6d467f089d9b2915a" +checksum = "2881dddfca792737c0706fa0175345ab282b1b0879c7d877bad129645737c079" dependencies = [ "borsh 0.10.3", "bytemuck", @@ -6395,9 +6396,9 @@ dependencies = [ [[package]] name = "spl-program-error" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0657b6490196971d9e729520ba934911ff41fbb2cb9004463dbe23cf8b4b4f" +checksum = "249e0318493b6bcf27ae9902600566c689b7dfba9f1bdff5893e92253374e78c" dependencies = [ "num-derive 0.4.2", "num-traits", @@ -6415,7 +6416,7 @@ dependencies = [ "proc-macro2", "quote", "sha2 0.10.8", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -6583,9 +6584,9 @@ dependencies = [ [[package]] name = "spl-type-length-value" -version = "0.3.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f9ebd75d29c5f48de5f6a9c114e08531030b75b8ac2c557600ac7da0b73b1e8" +checksum = "a468e6f6371f9c69aae760186ea9f1a01c2908351b06a5e0026d21cfc4d7ecac" dependencies = [ "bytemuck", "solana-program", @@ -6612,12 +6613,6 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" -[[package]] -name = "strsim" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" - [[package]] name = "strum" version = "0.24.1" @@ -6665,9 +6660,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.67" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff8655ed1d86f3af4ee3fd3263786bc14245ad17c4c7e85ba7187fb3ae028c90" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", @@ -6683,7 +6678,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -6706,9 +6701,9 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.12" +version = "0.30.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +checksum = "4b1a378e48fb3ce3a5cf04359c456c9c98ff689bcf1c1bc6e6a31f247686f275" dependencies = [ "cfg-if", "core-foundation-sys", @@ -6716,7 +6711,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "windows", + "windows 0.52.0", ] [[package]] @@ -6754,9 +6749,9 @@ dependencies = [ "light-system-program", "light-test-utils", "light-utils", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", - "reqwest 0.11.27", + "reqwest 0.11.26", "solana-program-test", "solana-sdk", "spl-token 3.5.0", @@ -6779,9 +6774,9 @@ dependencies = [ "light-test-utils", "light-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", - "reqwest 0.11.27", + "reqwest 0.11.26", "serde_json", "solana-cli-output", "solana-program-test", @@ -6816,9 +6811,9 @@ dependencies = [ [[package]] name = "tar" -version = "0.4.41" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +checksum = "b16afcea1f22891c49a00c751c7b63b2233284064f11a200fc624137c51e2ddb" dependencies = [ "filetime", "libc", @@ -6862,9 +6857,9 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "a365e8cd18e44762ef95d87f284f4b5cd04107fec2ff3052bd6a3e6069669e67" dependencies = [ "cfg-if", "fastrand", @@ -6874,9 +6869,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.4.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" dependencies = [ "winapi-util", ] @@ -6905,7 +6900,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -6916,7 +6911,7 @@ checksum = "5c89e72a01ed4c579669add59014b9a524d609c0c88c6a585ce37485879f6ffb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", "test-case-core", ] @@ -6931,9 +6926,9 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" @@ -6952,14 +6947,14 @@ checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" dependencies = [ "cfg-if", "once_cell", @@ -7053,7 +7048,7 @@ dependencies = [ "light-system-program", "light-test-utils", "light-verifier", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "num-traits", "reqwest 0.12.4", "solana-program-test", @@ -7064,9 +7059,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.38.0" +version = "1.36.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba4f4a02a7a80d6f274636f0aa95c7e383b912d41fe721a31f29e29698585a4a" +checksum = "61285f6515fa018fb2d1e46eb21223fff441ee8db5d0f1435e8ab4f5cdb80931" dependencies = [ "backtrace", "bytes", @@ -7076,20 +7071,20 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2", + "socket2 0.5.5", "tokio-macros", "windows-sys 0.48.0", ] [[package]] name = "tokio-macros" -version = "2.3.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -7130,9 +7125,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.15" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" +checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" dependencies = [ "futures-core", "pin-project-lite", @@ -7151,7 +7146,7 @@ dependencies = [ "tokio", "tokio-rustls", "tungstenite", - "webpki-roots 0.25.4", + "webpki-roots 0.25.2", ] [[package]] @@ -7171,15 +7166,16 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.11" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", + "tracing", ] [[package]] @@ -7193,21 +7189,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.14" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f49eb2ab21d2f26bd6db7bf383edc527a7ebaee412d17af4d40fdccd442f335" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.14", + "toml_edit 0.22.12", ] [[package]] name = "toml_datetime" -version = "0.6.6" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" dependencies = [ "serde", ] @@ -7220,7 +7216,7 @@ checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ "indexmap 2.2.6", "toml_datetime", - "winnow 0.5.40", + "winnow 0.5.16", ] [[package]] @@ -7231,20 +7227,20 @@ checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" dependencies = [ "indexmap 2.2.6", "toml_datetime", - "winnow 0.5.40", + "winnow 0.5.16", ] [[package]] name = "toml_edit" -version = "0.22.14" +version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f21c7aaf97f1bd9ca9d4f9e73b0a6c74bd5afef56f2bc931943a6e1c37e04e38" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.13", + "winnow 0.6.11", ] [[package]] @@ -7260,6 +7256,7 @@ dependencies = [ "tokio", "tower-layer", "tower-service", + "tracing", ] [[package]] @@ -7276,10 +7273,11 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" dependencies = [ + "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -7288,20 +7286,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" dependencies = [ "once_cell", "valuable", @@ -7314,7 +7312,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" dependencies = [ "tracing", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.17", ] [[package]] @@ -7327,7 +7325,7 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-subscriber 0.3.18", + "tracing-subscriber 0.3.17", ] [[package]] @@ -7341,9 +7339,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" dependencies = [ "sharded-slab", "thread_local", @@ -7352,9 +7350,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.5" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" [[package]] name = "tungstenite" @@ -7365,7 +7363,7 @@ dependencies = [ "byteorder", "bytes", "data-encoding", - "http 0.2.12", + "http 0.2.9", "httparse", "log", "rand 0.8.5", @@ -7400,9 +7398,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.15" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-ident" @@ -7412,24 +7410,24 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.23" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -7458,9 +7456,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.11" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "673aac59facbab8a9007c7f6108d11f63b603f7cabff99fabf650fea5c32b861" +checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" [[package]] name = "untrusted" @@ -7486,9 +7484,9 @@ dependencies = [ [[package]] name = "url" -version = "2.5.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -7503,9 +7501,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "utf8parse" -version = "0.2.2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" [[package]] name = "uuid" @@ -7513,7 +7511,7 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.12", "serde", ] @@ -7549,9 +7547,9 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "walkdir" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" dependencies = [ "same-file", "winapi-util", @@ -7599,15 +7597,15 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.42" +version = "0.4.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" +checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" dependencies = [ "cfg-if", "js-sys", @@ -7633,7 +7631,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7646,9 +7644,9 @@ checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "web-sys" -version = "0.3.69" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" +checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" dependencies = [ "js-sys", "wasm-bindgen", @@ -7665,9 +7663,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.25.4" +version = "0.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f20c57d8d7db6d3b86154206ae5d8fba62dd39573114de97c2cb0578251f8e1" +checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "winapi" @@ -7687,11 +7685,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ - "windows-sys 0.52.0", + "winapi", ] [[package]] @@ -7700,6 +7698,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows" version = "0.52.0" @@ -7707,7 +7714,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" dependencies = [ "windows-core", - "windows-targets 0.52.5", + "windows-targets 0.52.0", ] [[package]] @@ -7716,7 +7723,7 @@ 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.0", ] [[package]] @@ -7734,7 +7741,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.0", ] [[package]] @@ -7754,18 +7761,17 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", - "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_aarch64_gnullvm 0.52.0", + "windows_aarch64_msvc 0.52.0", + "windows_i686_gnu 0.52.0", + "windows_i686_msvc 0.52.0", + "windows_x86_64_gnu 0.52.0", + "windows_x86_64_gnullvm 0.52.0", + "windows_x86_64_msvc 0.52.0", ] [[package]] @@ -7776,9 +7782,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" @@ -7788,9 +7794,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" @@ -7800,15 +7806,9 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" - -[[package]] -name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" @@ -7818,9 +7818,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" @@ -7830,9 +7830,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" @@ -7842,9 +7842,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" @@ -7854,24 +7854,24 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "winnow" -version = "0.5.40" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +checksum = "037711d82167854aff2018dfd193aa0fef5370f456732f0d5a0c59b0f1b4b907" dependencies = [ "memchr", ] [[package]] name = "winnow" -version = "0.6.13" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b5e5f6c299a3c7890b876a2a587f3115162487e704907d9b6cd29473052ba1" +checksum = "56c52728401e1dc672a56e81e593e912aa54c78f40246869f78359a2bf24d29d" dependencies = [ "memchr", ] @@ -7916,13 +7916,11 @@ dependencies = [ [[package]] name = "xattr" -version = "1.3.1" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "f4686009f71ff3e5c4dbcf1a282d0a44db3f021ba69350cd42086b3e5f1c6985" dependencies = [ "libc", - "linux-raw-sys", - "rustix", ] [[package]] @@ -7933,14 +7931,14 @@ dependencies = [ "anyhow", "ark-bn254", "ark-ff", - "clap 4.5.7", + "clap 4.4.11", "groth16-solana", "light-concurrent-merkle-tree", "light-hash-set", "light-hasher", "light-indexed-merkle-tree", "light-utils", - "num-bigint 0.4.5", + "num-bigint 0.4.4", "quote", "rand 0.8.5", "sha2 0.10.8", @@ -7968,22 +7966,22 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "74d4d3961e53fa4c9a25a8637fc2bfaf2595b3d3ae34875568a5cf64787716be" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -8003,7 +8001,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.67", + "syn 2.0.48", ] [[package]] @@ -8027,10 +8025,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.11+zstd.1.5.6" +version = "2.0.8+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75652c55c0b6f3e6f12eb786fe1bc960396bf05a1eb3bf1f3691c3610ac2e6d4" +checksum = "5556e6ee25d32df2586c098bbfa278803692a20d0ab9565e049480d52707ec8c" dependencies = [ "cc", + "libc", "pkg-config", ] diff --git a/merkle-tree/bounded-vec/src/lib.rs b/merkle-tree/bounded-vec/src/lib.rs index 66b0e7d139..e1632bad9a 100644 --- a/merkle-tree/bounded-vec/src/lib.rs +++ b/merkle-tree/bounded-vec/src/lib.rs @@ -51,6 +51,10 @@ impl BoundedVecMetadata { } } + pub fn new_with_length(capacity: usize, length: usize) -> Self { + Self { capacity, length } + } + pub fn from_ne_bytes(bytes: [u8; mem::size_of::()]) -> Self { Self { capacity: usize::from_ne_bytes(bytes[span_of!(Self, capacity)].try_into().unwrap()), @@ -92,7 +96,7 @@ where T: Clone, { #[inline] - pub fn with_capacity(capacity: usize) -> Self { + fn metadata_with_capacity(capacity: usize) -> *mut BoundedVecMetadata { let layout = Layout::new::(); let metadata = unsafe { alloc::alloc(layout) as *mut BoundedVecMetadata }; if metadata.is_null() { @@ -105,12 +109,52 @@ where }; } + metadata + } + + #[inline] + fn metadata_from(src_metadata: &BoundedVecMetadata) -> *mut BoundedVecMetadata { + let layout = Layout::new::(); + let metadata = unsafe { alloc::alloc(layout) as *mut BoundedVecMetadata }; + if metadata.is_null() { + handle_alloc_error(layout); + } + unsafe { (*metadata).clone_from(src_metadata) }; + + metadata + } + + #[inline] + fn data_with_capacity(capacity: usize) -> NonNull { let layout = Layout::array::(capacity).unwrap(); let data_ptr = unsafe { alloc::alloc(layout) as *mut T }; if data_ptr.is_null() { handle_alloc_error(layout); } - let data = NonNull::new(data_ptr).unwrap(); + // PANICS: We ensured that the pointer is not NULL. + NonNull::new(data_ptr).unwrap() + } + + #[inline] + pub fn with_capacity(capacity: usize) -> Self { + let metadata = Self::metadata_with_capacity(capacity); + let data = Self::data_with_capacity(capacity); + + Self { metadata, data } + } + + /// Creates a `BoundedVec` with the given `metadata`. + /// + /// # Safety + /// + /// This method is unsafe, as it does not guarantee the correctness of + /// provided parameters (other than `capacity`). The full responisibility + /// is on the caller. + #[inline] + pub unsafe fn with_metadata(metadata: &BoundedVecMetadata) -> Self { + let capacity = metadata.capacity(); + let metadata = Self::metadata_from(metadata); + let data = Self::data_with_capacity(capacity); Self { metadata, data } } @@ -244,6 +288,12 @@ where Some(cell) } + /// Returns a mutable pointer to `BoundedVec`'s buffer. + #[inline(always)] + pub fn as_mut_ptr(&mut self) -> *mut T { + self.data.as_ptr() + } + #[inline] pub fn iter(&self) -> Iter<'_, T> { self.as_slice().iter() @@ -460,6 +510,20 @@ impl CyclicBoundedVecMetadata { } } + pub fn new_with_indices( + capacity: usize, + length: usize, + first_index: usize, + last_index: usize, + ) -> Self { + Self { + capacity, + length, + first_index, + last_index, + } + } + pub fn from_ne_bytes(bytes: [u8; mem::size_of::()]) -> Self { Self { capacity: usize::from_ne_bytes(bytes[span_of!(Self, capacity)].try_into().unwrap()), @@ -509,7 +573,7 @@ where T: Clone, { #[inline] - pub fn with_capacity(capacity: usize) -> Self { + fn metadata_with_capacity(capacity: usize) -> *mut CyclicBoundedVecMetadata { let layout = Layout::new::(); let metadata = unsafe { alloc::alloc(layout) as *mut CyclicBoundedVecMetadata }; if metadata.is_null() { @@ -524,12 +588,52 @@ where }; } + metadata + } + + #[inline] + fn metadata_from(src_metadata: &CyclicBoundedVecMetadata) -> *mut CyclicBoundedVecMetadata { + let layout = Layout::new::(); + let metadata = unsafe { alloc::alloc(layout) as *mut CyclicBoundedVecMetadata }; + if metadata.is_null() { + handle_alloc_error(layout); + } + unsafe { (*metadata).clone_from(src_metadata) }; + + metadata + } + + #[inline] + fn data_with_capacity(capacity: usize) -> NonNull { let layout = Layout::array::(capacity).unwrap(); let data_ptr = unsafe { alloc::alloc(layout) as *mut T }; if data_ptr.is_null() { handle_alloc_error(layout); } - let data = NonNull::new(data_ptr).unwrap(); + // PANICS: We ensured that the pointer is not NULL. + NonNull::new(data_ptr).unwrap() + } + + #[inline] + pub fn with_capacity(capacity: usize) -> Self { + let metadata = Self::metadata_with_capacity(capacity); + let data = Self::data_with_capacity(capacity); + + Self { metadata, data } + } + + /// Creates a `CyclicBoundedVec` with the given `metadata`. + /// + /// # Safety + /// + /// This method is unsafe, as it does not guarantee the correctness of + /// provided parameters (other than `capacity`). The full responisibility + /// is on the caller. + #[inline] + pub unsafe fn with_metadata(metadata: &CyclicBoundedVecMetadata) -> Self { + let capacity = metadata.capacity(); + let metadata = Self::metadata_from(metadata); + let data = Self::data_with_capacity(capacity); Self { metadata, data } } @@ -634,6 +738,12 @@ where Some(cell) } + /// Returns a mutable pointer to `BoundedVec`'s buffer. + #[inline(always)] + pub fn as_mut_ptr(&mut self) -> *mut T { + self.data.as_ptr() + } + #[inline] pub fn iter(&self) -> CyclicBoundedVecIterator<'_, T> { CyclicBoundedVecIterator { diff --git a/merkle-tree/concurrent/src/copy.rs b/merkle-tree/concurrent/src/copy.rs index 1cf4b9d425..9848b352ca 100644 --- a/merkle-tree/concurrent/src/copy.rs +++ b/merkle-tree/concurrent/src/copy.rs @@ -2,7 +2,7 @@ use std::ops::Deref; use light_bounded_vec::{BoundedVecMetadata, CyclicBoundedVecMetadata}; use light_hasher::Hasher; -use light_utils::offset::{read_bounded_vec_at, read_cyclic_bounded_vec_at, read_value_at}; +use light_utils::offset::copy::{read_bounded_vec_at, read_cyclic_bounded_vec_at, read_value_at}; use memoffset::{offset_of, span_of}; use crate::{errors::ConcurrentMerkleTreeError, ConcurrentMerkleTree}; diff --git a/merkle-tree/concurrent/src/zero_copy.rs b/merkle-tree/concurrent/src/zero_copy.rs index 5d43b4e324..43d5e9be99 100644 --- a/merkle-tree/concurrent/src/zero_copy.rs +++ b/merkle-tree/concurrent/src/zero_copy.rs @@ -8,7 +8,7 @@ use light_bounded_vec::{ BoundedVec, BoundedVecMetadata, CyclicBoundedVec, CyclicBoundedVecMetadata, }; use light_hasher::Hasher; -use light_utils::offset::{read_array_like_ptr_at, read_ptr_at, write_at}; +use light_utils::offset::zero_copy::{read_array_like_ptr_at, read_ptr_at, write_at}; use memoffset::{offset_of, span_of}; use crate::{errors::ConcurrentMerkleTreeError, ConcurrentMerkleTree}; diff --git a/merkle-tree/indexed/src/copy.rs b/merkle-tree/indexed/src/copy.rs index 8563e0fb10..b9d4c525e4 100644 --- a/merkle-tree/indexed/src/copy.rs +++ b/merkle-tree/indexed/src/copy.rs @@ -5,7 +5,7 @@ use light_concurrent_merkle_tree::{ copy::ConcurrentMerkleTreeCopy, errors::ConcurrentMerkleTreeError, }; use light_hasher::Hasher; -use light_utils::offset::{read_cyclic_bounded_vec_at, read_value_at}; +use light_utils::offset::copy::{read_cyclic_bounded_vec_at, read_value_at}; use num_traits::{CheckedAdd, CheckedSub, ToBytes, Unsigned}; use crate::{errors::IndexedMerkleTreeError, IndexedMerkleTree}; diff --git a/merkle-tree/indexed/src/zero_copy.rs b/merkle-tree/indexed/src/zero_copy.rs index 2fbcffc09e..3f6b0634bf 100644 --- a/merkle-tree/indexed/src/zero_copy.rs +++ b/merkle-tree/indexed/src/zero_copy.rs @@ -12,7 +12,7 @@ use light_concurrent_merkle_tree::{ ConcurrentMerkleTree, }; use light_hasher::Hasher; -use light_utils::offset::{read_array_like_ptr_at, read_ptr_at, write_at}; +use light_utils::offset::zero_copy::{read_array_like_ptr_at, read_ptr_at, write_at}; use num_traits::{CheckedAdd, CheckedSub, ToBytes, Unsigned}; use crate::{errors::IndexedMerkleTreeError, IndexedMerkleTree}; diff --git a/utils/Cargo.toml b/utils/Cargo.toml index e32b5303f6..9910377db3 100644 --- a/utils/Cargo.toml +++ b/utils/Cargo.toml @@ -15,3 +15,7 @@ thiserror = "1.0" solana-program = { workspace = true } ark-bn254 = "0.4.0" rand = "0.8" + +[dev-dependencies] +bytemuck = "1.16" +memoffset = "0.9" diff --git a/utils/src/offset.rs b/utils/src/offset.rs deleted file mode 100644 index d786ad39c7..0000000000 --- a/utils/src/offset.rs +++ /dev/null @@ -1,125 +0,0 @@ -use std::{mem, ptr}; - -use light_bounded_vec::{ - BoundedVec, BoundedVecMetadata, CyclicBoundedVec, CyclicBoundedVecMetadata, -}; - -/// Casts a part of provided `bytes` buffer with the given `offset` to a -/// mutable pointer to `T`. -/// -/// Should be used for single values. -/// -/// # Safety -/// -/// This is higly unsafe. This function doesn't ensure alignment and -/// correctness of provided buffer. The responsibility of such checks is on -/// the caller. -pub unsafe fn read_ptr_at(bytes: &[u8], offset: &mut usize) -> *mut T { - let size = mem::size_of::(); - let ptr = bytes[*offset..*offset + size].as_ptr() as *mut T; - *offset += size; - ptr -} - -/// Casts a part of provided `bytes` buffer with the given `offset` to a -/// mutable pointer to `T`. -/// -/// Should be used for array-type sequences. -/// -/// # Safety -/// -/// This is higly unsafe. This function doesn't ensure alignment and -/// correctness of provided buffer. The responsibility of such checks is on -/// the caller. -pub unsafe fn read_array_like_ptr_at(bytes: &[u8], offset: &mut usize, len: usize) -> *mut T { - let size = mem::size_of::() * len; - let ptr = bytes[*offset..*offset + size].as_ptr() as *mut T; - *offset += size; - ptr -} - -/// Creates a copy of value of type `T` based on the provided `bytes` buffer. -/// -/// # Safety -/// -/// This is higly unsafe. This function doesn't ensure alignment and -/// correctness of provided buffer. The responsibility of such checks is on -/// the caller. -pub unsafe fn read_value_at(bytes: &[u8], offset: &mut usize) -> T -where - T: Clone, -{ - let size = mem::size_of::(); - let ptr = bytes[*offset..*offset + size].as_ptr() as *const T; - *offset += size; - // (*ptr).clone() - ptr::read(ptr) -} - -/// Creates a `BoundedVec` from the sequence of values provided in `bytes` buffer. -/// -/// # Safety -/// -/// This is higly unsafe. This function doesn't ensure alignment and -/// correctness of provided buffer. The responsibility of such checks is on -/// the caller. -pub unsafe fn read_bounded_vec_at( - bytes: &[u8], - offset: &mut usize, - metadata: &BoundedVecMetadata, -) -> BoundedVec -where - T: Clone, -{ - let size = mem::size_of::() * metadata.capacity(); - let ptr = bytes[*offset..*offset + size].as_ptr() as *const T; - - let mut vec = BoundedVec::with_capacity(metadata.capacity()); - for i in 0..metadata.length() { - let val = ptr::read(ptr.add(i)); - // PANICS: We ensured the bounds. - vec.push(val).unwrap(); - } - - *offset += size; - - vec -} - -/// Creates a `CyclicBoundedVec` from the sequence of values provided in -/// `bytes` buffer. -/// -/// # Safety -/// -/// This is higly unsafe. This function doesn't ensure alignment and -/// correctness of provided buffer. The responsibility of such checks is on -/// the caller. -pub unsafe fn read_cyclic_bounded_vec_at( - bytes: &[u8], - offset: &mut usize, - metadata: &CyclicBoundedVecMetadata, -) -> CyclicBoundedVec -where - T: Clone, -{ - let size = mem::size_of::() * metadata.capacity(); - let ptr = bytes[*offset..*offset + size].as_ptr() as *const T; - - let mut vec = CyclicBoundedVec::with_capacity(metadata.capacity()); - for i in 0..metadata.length() { - let val = ptr::read(ptr.add(i)); - vec.push(val); - } - - *offset += size; - - vec -} - -/// Writes provided `data` into provided `bytes` buffer with the given -/// `offset`. -pub fn write_at(bytes: &mut [u8], data: &[u8], offset: &mut usize) { - let size = mem::size_of::(); - bytes[*offset..*offset + size].copy_from_slice(data); - *offset += size; -} diff --git a/utils/src/offset/copy.rs b/utils/src/offset/copy.rs new file mode 100644 index 0000000000..36454b037c --- /dev/null +++ b/utils/src/offset/copy.rs @@ -0,0 +1,353 @@ +use std::{mem, ptr}; + +use light_bounded_vec::{ + BoundedVec, BoundedVecMetadata, CyclicBoundedVec, CyclicBoundedVecMetadata, +}; + +/// Creates a copy of value of type `T` based on the provided `bytes` buffer. +/// +/// # Safety +/// +/// This is higly unsafe. This function doesn't ensure alignment and +/// correctness of provided buffer. The responsibility of such checks is on +/// the caller. +pub unsafe fn read_value_at(bytes: &[u8], offset: &mut usize) -> T +where + T: Clone, +{ + let size = mem::size_of::(); + let ptr = bytes[*offset..*offset + size].as_ptr() as *const T; + *offset += size; + ptr::read(ptr) +} + +/// Creates a `BoundedVec` from the sequence of values provided in `bytes` buffer. +/// +/// # Safety +/// +/// This is higly unsafe. This function doesn't ensure alignment and +/// correctness of provided buffer. The responsibility of such checks is on +/// the caller. +/// +/// The `T` type needs to be either a primitive or struct consisting of +/// primitives. It cannot contain any nested heap-backed stucture (like vectors, +/// slices etc.). +pub unsafe fn read_bounded_vec_at( + bytes: &[u8], + offset: &mut usize, + metadata: &BoundedVecMetadata, +) -> BoundedVec +where + T: Clone, +{ + let size = mem::size_of::() * metadata.capacity(); + let ptr = bytes[*offset..*offset + size].as_ptr() as *const T; + + let mut vec = BoundedVec::with_metadata(metadata); + let dst_ptr: *mut T = vec.as_mut_ptr(); + + for i in 0..metadata.length() { + let val = ptr::read(ptr.add(i)); + // SAFETY: We ensured the bounds. + unsafe { ptr::write(dst_ptr.add(i), val) }; + } + + *offset += size; + + vec +} + +/// Creates a `CyclicBoundedVec` from the sequence of values provided in +/// `bytes` buffer. +/// +/// # Safety +/// +/// This is higly unsafe. This function doesn't ensure alignment and +/// correctness of provided buffer. The responsibility of such checks is on +/// the caller. +pub unsafe fn read_cyclic_bounded_vec_at( + bytes: &[u8], + offset: &mut usize, + metadata: &CyclicBoundedVecMetadata, +) -> CyclicBoundedVec +where + T: Clone, +{ + let size = mem::size_of::() * metadata.capacity(); + let src_ptr = bytes[*offset..*offset + size].as_ptr() as *const T; + + let mut vec = CyclicBoundedVec::with_metadata(metadata); + let dst_ptr: *mut T = vec.as_mut_ptr(); + + for i in 0..metadata.length() { + let val = ptr::read(src_ptr.add(i)); + // SAFETY: We ensured the bounds. + unsafe { ptr::write(dst_ptr.add(i), val) }; + } + + *offset += size; + + vec +} + +#[cfg(test)] +mod test { + use super::*; + + use bytemuck::{Pod, Zeroable}; + use memoffset::offset_of; + + #[test] + fn test_value_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: isize, + b: usize, + c: i64, + d: u64, + e: i32, + f: u32, + g: i16, + _padding_1: [u8; 2], + h: u16, + _padding_2: [u8; 2], + i: i8, + _padding_3: [i8; 3], + j: u8, + _padding_4: [i8; 3], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + (*s).a = isize::MIN; + (*s).b = usize::MAX; + (*s).c = i64::MIN; + (*s).d = u64::MAX; + (*s).e = i32::MIN; + (*s).f = u32::MAX; + (*s).g = i16::MIN; + (*s).h = u16::MAX; + (*s).i = i8::MIN; + (*s).j = u8::MAX; + + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + assert_eq!(read_value_at::(&buf, &mut offset), isize::MIN); + assert_eq!(offset, 8); + + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 8); + assert_eq!(read_value_at::(&buf, &mut offset), usize::MAX); + assert_eq!(offset, 16); + + let mut offset = offset_of!(TestStruct, c); + assert_eq!(offset, 16); + assert_eq!(read_value_at::(&buf, &mut offset), i64::MIN); + assert_eq!(offset, 24); + + let mut offset = offset_of!(TestStruct, d); + assert_eq!(offset, 24); + assert_eq!(read_value_at::(&buf, &mut offset), u64::MAX); + assert_eq!(offset, 32); + + let mut offset = offset_of!(TestStruct, e); + assert_eq!(offset, 32); + assert_eq!(read_value_at::(&buf, &mut offset), i32::MIN); + assert_eq!(offset, 36); + + let mut offset = offset_of!(TestStruct, f); + assert_eq!(offset, 36); + assert_eq!(read_value_at::(&buf, &mut offset), u32::MAX); + assert_eq!(offset, 40); + + let mut offset = offset_of!(TestStruct, g); + assert_eq!(offset, 40); + assert_eq!(read_value_at::(&buf, &mut offset), i16::MIN); + assert_eq!(offset, 42); + + let mut offset = offset_of!(TestStruct, h); + assert_eq!(offset, 44); + assert_eq!(read_value_at::(&buf, &mut offset), u16::MAX); + assert_eq!(offset, 46); + + let mut offset = offset_of!(TestStruct, i); + assert_eq!(offset, 48); + assert_eq!(read_value_at::(&buf, &mut offset), i8::MIN); + assert_eq!(offset, 49); + + let mut offset = offset_of!(TestStruct, j); + assert_eq!(offset, 52); + assert_eq!(read_value_at::(&buf, &mut offset), u8::MAX); + assert_eq!(offset, 53); + } + } + + #[test] + fn test_read_bounded_vec_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: [i64; 32], + b: [u64; 32], + c: [[u8; 32]; 32], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + for (i, element) in (*s).a.iter_mut().enumerate() { + *element = -(i as i64); + } + for (i, element) in (*s).b.iter_mut().enumerate() { + *element = i as u64; + } + for (i, element) in (*s).c.iter_mut().enumerate() { + *element = [i as u8; 32]; + } + + let metadata = BoundedVecMetadata::new_with_length(32, 32); + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + let vec: BoundedVec = read_bounded_vec_at(&buf, &mut offset, &metadata); + for (i, element) in vec.iter().enumerate() { + assert_eq!(i as i64, -(*element as i64)); + } + assert_eq!(offset, 256); + + let metadata = BoundedVecMetadata::new_with_length(32, 32); + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 256); + let vec: BoundedVec = read_bounded_vec_at(&buf, &mut offset, &metadata); + for (i, element) in vec.iter().enumerate() { + assert_eq!(i as u64, *element as u64); + } + assert_eq!(offset, 512); + + let metadata = BoundedVecMetadata::new_with_length(32, 32); + let mut offset = offset_of!(TestStruct, c); + assert_eq!(offset, 512); + let vec: BoundedVec<[u8; 32]> = read_bounded_vec_at(&buf, &mut offset, &metadata); + for (i, element) in vec.iter().enumerate() { + assert_eq!(&[i as u8; 32], element); + } + assert_eq!(offset, 1536); + } + } + + #[test] + fn test_read_cyclic_bounded_vec_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: [i64; 32], + b: [u64; 32], + c: [[u8; 32]; 32], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + for (i, element) in (*s).a.iter_mut().enumerate() { + *element = -(i as i64); + } + for (i, element) in (*s).b.iter_mut().enumerate() { + *element = i as u64; + } + for (i, element) in (*s).c.iter_mut().enumerate() { + *element = [i as u8; 32]; + } + + // Start the cyclic vecs from the middle. + + let metadata = CyclicBoundedVecMetadata::new_with_indices(32, 32, 14, 13); + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + let vec: CyclicBoundedVec = + read_cyclic_bounded_vec_at(&buf, &mut offset, &metadata); + assert_eq!(vec.capacity(), 32); + assert_eq!(vec.len(), 32); + assert_eq!(vec.first_index(), 14); + assert_eq!(vec.last_index(), 13); + assert_eq!( + vec.iter().collect::>().as_slice(), + &[ + &-14, &-15, &-16, &-17, &-18, &-19, &-20, &-21, &-22, &-23, &-24, &-25, &-26, + &-27, &-28, &-29, &-30, &-31, &-0, &-1, &-2, &-3, &-4, &-5, &-6, &-7, &-8, &-9, + &-10, &-11, &-12, &-13 + ] + ); + assert_eq!(offset, 256); + + let metadata = CyclicBoundedVecMetadata::new_with_indices(32, 32, 14, 13); + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 256); + let vec: CyclicBoundedVec = + read_cyclic_bounded_vec_at(&buf, &mut offset, &metadata); + assert_eq!(vec.capacity(), 32); + assert_eq!(vec.len(), 32); + assert_eq!(vec.first_index(), 14); + assert_eq!(vec.last_index(), 13); + assert_eq!( + vec.iter().collect::>().as_slice(), + &[ + &14, &15, &16, &17, &18, &19, &20, &21, &22, &23, &24, &25, &26, &27, &28, &29, + &30, &31, &0, &1, &2, &3, &4, &5, &6, &7, &8, &9, &10, &11, &12, &13 + ] + ); + assert_eq!(offset, 512); + + let metadata = CyclicBoundedVecMetadata::new_with_indices(32, 32, 14, 13); + let mut offset = offset_of!(TestStruct, c); + assert_eq!(offset, 512); + let vec: CyclicBoundedVec<[u8; 32]> = + read_cyclic_bounded_vec_at(&buf, &mut offset, &metadata); + assert_eq!(vec.capacity(), 32); + assert_eq!(vec.len(), 32); + assert_eq!(vec.first_index(), 14); + assert_eq!(vec.last_index(), 13); + assert_eq!( + vec.iter().collect::>().as_slice(), + &[ + &[14_u8; 32], + &[15_u8; 32], + &[16_u8; 32], + &[17_u8; 32], + &[18_u8; 32], + &[19_u8; 32], + &[20_u8; 32], + &[21_u8; 32], + &[22_u8; 32], + &[23_u8; 32], + &[24_u8; 32], + &[25_u8; 32], + &[26_u8; 32], + &[27_u8; 32], + &[28_u8; 32], + &[29_u8; 32], + &[30_u8; 32], + &[31_u8; 32], + &[0_u8; 32], + &[1_u8; 32], + &[2_u8; 32], + &[3_u8; 32], + &[4_u8; 32], + &[5_u8; 32], + &[6_u8; 32], + &[7_u8; 32], + &[8_u8; 32], + &[9_u8; 32], + &[10_u8; 32], + &[11_u8; 32], + &[12_u8; 32], + &[13_u8; 32], + ] + ); + assert_eq!(offset, 1536); + } + } +} diff --git a/utils/src/offset/mod.rs b/utils/src/offset/mod.rs new file mode 100644 index 0000000000..03452ca062 --- /dev/null +++ b/utils/src/offset/mod.rs @@ -0,0 +1,2 @@ +pub mod copy; +pub mod zero_copy; diff --git a/utils/src/offset/zero_copy.rs b/utils/src/offset/zero_copy.rs new file mode 100644 index 0000000000..45b1d2237c --- /dev/null +++ b/utils/src/offset/zero_copy.rs @@ -0,0 +1,277 @@ +use std::mem; + +/// Casts a part of provided `bytes` buffer with the given `offset` to a +/// mutable pointer to `T`. +/// +/// Should be used for single values. +/// +/// # Safety +/// +/// This is higly unsafe. This function doesn't ensure alignment and +/// correctness of provided buffer. The responsibility of such checks is on +/// the caller. +pub unsafe fn read_ptr_at(bytes: &[u8], offset: &mut usize) -> *mut T { + let size = mem::size_of::(); + let ptr = bytes[*offset..*offset + size].as_ptr() as *mut T; + *offset += size; + ptr +} + +/// Casts a part of provided `bytes` buffer with the given `offset` to a +/// mutable pointer to `T`. +/// +/// Should be used for array-type sequences. +/// +/// # Safety +/// +/// This is higly unsafe. This function doesn't ensure alignment and +/// correctness of provided buffer. The responsibility of such checks is on +/// the caller. +pub unsafe fn read_array_like_ptr_at(bytes: &[u8], offset: &mut usize, len: usize) -> *mut T { + let size = mem::size_of::() * len; + let ptr = bytes[*offset..*offset + size].as_ptr() as *mut T; + *offset += size; + ptr +} + +/// Writes provided `data` into provided `bytes` buffer with the given +/// `offset`. +pub fn write_at(bytes: &mut [u8], data: &[u8], offset: &mut usize) { + let size = mem::size_of::(); + bytes[*offset..*offset + size].copy_from_slice(data); + *offset += size; +} + +#[cfg(test)] +mod test { + use super::*; + + use bytemuck::{Pod, Zeroable}; + use memoffset::offset_of; + + #[test] + fn test_read_ptr_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: isize, + b: usize, + c: i64, + d: u64, + e: i32, + f: u32, + g: i16, + _padding_1: [u8; 2], + h: u16, + _padding_2: [u8; 2], + i: i8, + _padding_3: [i8; 3], + j: u8, + _padding_4: [i8; 3], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + (*s).a = isize::MIN; + (*s).b = usize::MAX; + (*s).c = i64::MIN; + (*s).d = u64::MAX; + (*s).e = i32::MIN; + (*s).f = u32::MAX; + (*s).g = i16::MIN; + (*s).h = u16::MAX; + (*s).i = i8::MIN; + (*s).j = u8::MAX; + + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + assert_eq!(*read_ptr_at::(&buf, &mut offset), isize::MIN); + assert_eq!(offset, 8); + + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 8); + assert_eq!(*read_ptr_at::(&buf, &mut offset), usize::MAX); + assert_eq!(offset, 16); + + let mut offset = offset_of!(TestStruct, c); + assert_eq!(offset, 16); + assert_eq!(*read_ptr_at::(&buf, &mut offset), i64::MIN); + assert_eq!(offset, 24); + + let mut offset = offset_of!(TestStruct, d); + assert_eq!(offset, 24); + assert_eq!(*read_ptr_at::(&buf, &mut offset), u64::MAX); + assert_eq!(offset, 32); + + let mut offset = offset_of!(TestStruct, e); + assert_eq!(offset, 32); + assert_eq!(*read_ptr_at::(&buf, &mut offset), i32::MIN); + assert_eq!(offset, 36); + + let mut offset = offset_of!(TestStruct, f); + assert_eq!(offset, 36); + assert_eq!(*read_ptr_at::(&buf, &mut offset), u32::MAX); + assert_eq!(offset, 40); + + let mut offset = offset_of!(TestStruct, g); + assert_eq!(offset, 40); + assert_eq!(*read_ptr_at::(&buf, &mut offset), i16::MIN); + assert_eq!(offset, 42); + + let mut offset = offset_of!(TestStruct, h); + assert_eq!(offset, 44); + assert_eq!(*read_ptr_at::(&buf, &mut offset), u16::MAX); + assert_eq!(offset, 46); + + let mut offset = offset_of!(TestStruct, i); + assert_eq!(offset, 48); + assert_eq!(*read_ptr_at::(&buf, &mut offset), i8::MIN); + assert_eq!(offset, 49); + + let mut offset = offset_of!(TestStruct, j); + assert_eq!(offset, 52); + assert_eq!(*read_ptr_at::(&buf, &mut offset), u8::MAX); + assert_eq!(offset, 53); + } + } + + #[test] + fn test_read_array_like_ptr_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: [i64; 32], + b: [u64; 32], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + for (i, element) in (*s).a.iter_mut().enumerate() { + *element = -(i as i64); + } + for (i, element) in (*s).b.iter_mut().enumerate() { + *element = i as u64; + } + + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + let ptr: *mut i64 = read_array_like_ptr_at(&buf, &mut offset, 32); + for i in 0..32 { + assert_eq!(*(ptr.add(i)), -(i as i64)); + } + assert_eq!(offset, 256); + + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 256); + let ptr: *mut u64 = read_array_like_ptr_at(&buf, &mut offset, 32); + for i in 0..32 { + assert_eq!(*(ptr.add(i)), i as u64); + } + assert_eq!(offset, 512); + } + } + + #[test] + fn test_write_at() { + #[derive(Clone, Copy, Pod, Zeroable)] + #[repr(C)] + struct TestStruct { + a: isize, + b: usize, + c: i64, + d: u64, + e: i32, + f: u32, + g: i16, + _padding_1: [u8; 2], + h: u16, + _padding_2: [u8; 2], + i: i8, + _padding_3: [i8; 3], + j: u8, + _padding_4: [i8; 3], + } + + let mut buf = vec![0_u8; mem::size_of::()]; + + let a: isize = isize::MIN; + let b: usize = usize::MAX; + let c: i64 = i64::MIN; + let d: u64 = u64::MAX; + let e: i32 = i32::MIN; + let f: u32 = u32::MAX; + let g: i16 = i16::MIN; + let h: u16 = u16::MAX; + let i: i8 = i8::MIN; + let j: u8 = u8::MAX; + + let mut offset = offset_of!(TestStruct, a); + assert_eq!(offset, 0); + write_at::(&mut buf, &a.to_ne_bytes(), &mut offset); + assert_eq!(offset, 8); + + let mut offset = offset_of!(TestStruct, b); + assert_eq!(offset, 8); + write_at::(&mut buf, &b.to_ne_bytes(), &mut offset); + assert_eq!(offset, 16); + + let mut offset = offset_of!(TestStruct, c); + assert_eq!(offset, 16); + write_at::(&mut buf, &c.to_ne_bytes(), &mut offset); + assert_eq!(offset, 24); + + let mut offset = offset_of!(TestStruct, d); + assert_eq!(offset, 24); + write_at::(&mut buf, &d.to_ne_bytes(), &mut offset); + assert_eq!(offset, 32); + + let mut offset = offset_of!(TestStruct, e); + assert_eq!(offset, 32); + write_at::(&mut buf, &e.to_ne_bytes(), &mut offset); + assert_eq!(offset, 36); + + let mut offset = offset_of!(TestStruct, f); + assert_eq!(offset, 36); + write_at::(&mut buf, &f.to_ne_bytes(), &mut offset); + assert_eq!(offset, 40); + + let mut offset = offset_of!(TestStruct, g); + assert_eq!(offset, 40); + write_at::(&mut buf, &g.to_ne_bytes(), &mut offset); + assert_eq!(offset, 42); + + let mut offset = offset_of!(TestStruct, h); + assert_eq!(offset, 44); + write_at::(&mut buf, &h.to_ne_bytes(), &mut offset); + assert_eq!(offset, 46); + + let mut offset = offset_of!(TestStruct, i); + assert_eq!(offset, 48); + write_at::(&mut buf, &i.to_ne_bytes(), &mut offset); + assert_eq!(offset, 49); + + let mut offset = offset_of!(TestStruct, j); + assert_eq!(offset, 52); + write_at::(&mut buf, &j.to_ne_bytes(), &mut offset); + assert_eq!(offset, 53); + + let s = buf.as_mut_ptr() as *mut TestStruct; + + unsafe { + assert_eq!((*s).a, a); + assert_eq!((*s).b, b); + assert_eq!((*s).c, c); + assert_eq!((*s).d, d); + assert_eq!((*s).e, e); + assert_eq!((*s).f, f); + assert_eq!((*s).g, g); + assert_eq!((*s).h, h); + assert_eq!((*s).i, i); + assert_eq!((*s).j, j); + } + } +}