From 03d38b90bef8df80e0973cd1e13560bd1d8c7d4d Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Tue, 18 Jun 2024 19:49:06 +0400 Subject: [PATCH 1/5] port join from itertools and use it in program_stubs.rs --- sdk/program/src/program_stubs.rs | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/sdk/program/src/program_stubs.rs b/sdk/program/src/program_stubs.rs index 7fd31358090118..4000ab958b99f9 100644 --- a/sdk/program/src/program_stubs.rs +++ b/sdk/program/src/program_stubs.rs @@ -8,8 +8,10 @@ use { program_error::UNSUPPORTED_SYSVAR, pubkey::Pubkey, }, base64::{prelude::BASE64_STANDARD, Engine}, - itertools::Itertools, - std::sync::{Arc, RwLock}, + std::{ + fmt::Write, + sync::{Arc, RwLock}, + }, }; lazy_static::lazy_static! { @@ -22,6 +24,27 @@ pub fn set_syscall_stubs(syscall_stubs: Box) -> Box(itr: &mut I, sep: &str) -> String +where + I: Iterator, + I::Item: std::fmt::Display, +{ + match itr.next() { + None => String::new(), + Some(first_elt) => { + // estimate lower bound of capacity needed + let (lower, _) = itr.size_hint(); + let mut result = String::with_capacity(sep.len() * lower); + write!(&mut result, "{}", first_elt).unwrap(); + itr.for_each(|elt| { + result.push_str(sep); + write!(&mut result, "{}", elt).unwrap(); + }); + result + } + } +} + #[allow(clippy::arithmetic_side_effects)] pub trait SyscallStubs: Sync + Send { fn sol_log(&self, message: &str) { @@ -114,7 +137,7 @@ pub trait SyscallStubs: Sync + Send { fn sol_log_data(&self, fields: &[&[u8]]) { println!( "data: {}", - fields.iter().map(|v| BASE64_STANDARD.encode(v)).join(" ") + join(&mut fields.iter().map(|v| BASE64_STANDARD.encode(v)), " ") ); } fn sol_get_processed_sibling_instruction(&self, _index: usize) -> Option { From 41ee159ac48483a011de4aaabe6e84be5d93e3bf Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Tue, 18 Jun 2024 19:50:44 +0400 Subject: [PATCH 2/5] move itertools to dev-dependencies of solana-program --- programs/sbf/Cargo.lock | 1 - sdk/program/Cargo.toml | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/programs/sbf/Cargo.lock b/programs/sbf/Cargo.lock index 6dadcdaf1a54b7..5dc8cc9069195d 100644 --- a/programs/sbf/Cargo.lock +++ b/programs/sbf/Cargo.lock @@ -5291,7 +5291,6 @@ dependencies = [ "console_log", "curve25519-dalek", "getrandom 0.2.10", - "itertools 0.12.1", "js-sys", "lazy_static", "libsecp256k1 0.6.0", diff --git a/sdk/program/Cargo.toml b/sdk/program/Cargo.toml index e2f5085ac0d0bf..57819881b70d06 100644 --- a/sdk/program/Cargo.toml +++ b/sdk/program/Cargo.toml @@ -19,7 +19,6 @@ borsh0-10 = { package = "borsh", version = "0.10.3", optional = true } bs58 = { workspace = true } bv = { workspace = true, features = ["serde"] } bytemuck = { workspace = true, features = ["derive"] } -itertools = { workspace = true } lazy_static = { workspace = true } log = { workspace = true } memoffset = { workspace = true } @@ -53,7 +52,6 @@ ark-serialize = { workspace = true } base64 = { workspace = true, features = ["alloc", "std"] } bitflags = { workspace = true } curve25519-dalek = { workspace = true } -itertools = { workspace = true } libsecp256k1 = { workspace = true } num-bigint = { workspace = true } rand = { workspace = true } @@ -77,6 +75,7 @@ parking_lot = { workspace = true } anyhow = { workspace = true } array-bytes = { workspace = true } assert_matches = { workspace = true } +itertools = { workspace = true } serde_json = { workspace = true } static_assertions = { workspace = true } From ff85d8b9f74c185221c7a69da8c547c2d08ead5c Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Tue, 18 Jun 2024 19:53:11 +0400 Subject: [PATCH 3/5] add comment to join fn --- sdk/program/src/program_stubs.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdk/program/src/program_stubs.rs b/sdk/program/src/program_stubs.rs index 4000ab958b99f9..727910c5fc8ae0 100644 --- a/sdk/program/src/program_stubs.rs +++ b/sdk/program/src/program_stubs.rs @@ -24,6 +24,8 @@ pub fn set_syscall_stubs(syscall_stubs: Box) -> Box(itr: &mut I, sep: &str) -> String where I: Iterator, From 0d446bd5ba93df40bcd83a1ac34dd39c2ba06efe Mon Sep 17 00:00:00 2001 From: Kevin Heavey Date: Wed, 19 Jun 2024 09:02:43 +0400 Subject: [PATCH 4/5] more concise replacement for join fn Co-authored-by: Jon C --- sdk/program/src/program_stubs.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdk/program/src/program_stubs.rs b/sdk/program/src/program_stubs.rs index 727910c5fc8ae0..f5fbeb2a5c1efc 100644 --- a/sdk/program/src/program_stubs.rs +++ b/sdk/program/src/program_stubs.rs @@ -139,7 +139,7 @@ pub trait SyscallStubs: Sync + Send { fn sol_log_data(&self, fields: &[&[u8]]) { println!( "data: {}", - join(&mut fields.iter().map(|v| BASE64_STANDARD.encode(v)), " ") + fields.iter().map(|v| BASE64_STANDARD.encode(v)).collect::>().join(" ") ); } fn sol_get_processed_sibling_instruction(&self, _index: usize) -> Option { From b6a3441d2bc81ac9e7992d0cab825ad69c84c1dc Mon Sep 17 00:00:00 2001 From: kevinheavey Date: Wed, 19 Jun 2024 09:08:00 +0400 Subject: [PATCH 5/5] remove join fn --- sdk/program/src/program_stubs.rs | 34 ++++++-------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/sdk/program/src/program_stubs.rs b/sdk/program/src/program_stubs.rs index f5fbeb2a5c1efc..e06f6b1d201a42 100644 --- a/sdk/program/src/program_stubs.rs +++ b/sdk/program/src/program_stubs.rs @@ -8,10 +8,7 @@ use { program_error::UNSUPPORTED_SYSVAR, pubkey::Pubkey, }, base64::{prelude::BASE64_STANDARD, Engine}, - std::{ - fmt::Write, - sync::{Arc, RwLock}, - }, + std::sync::{Arc, RwLock}, }; lazy_static::lazy_static! { @@ -24,29 +21,6 @@ pub fn set_syscall_stubs(syscall_stubs: Box) -> Box(itr: &mut I, sep: &str) -> String -where - I: Iterator, - I::Item: std::fmt::Display, -{ - match itr.next() { - None => String::new(), - Some(first_elt) => { - // estimate lower bound of capacity needed - let (lower, _) = itr.size_hint(); - let mut result = String::with_capacity(sep.len() * lower); - write!(&mut result, "{}", first_elt).unwrap(); - itr.for_each(|elt| { - result.push_str(sep); - write!(&mut result, "{}", elt).unwrap(); - }); - result - } - } -} - #[allow(clippy::arithmetic_side_effects)] pub trait SyscallStubs: Sync + Send { fn sol_log(&self, message: &str) { @@ -139,7 +113,11 @@ pub trait SyscallStubs: Sync + Send { fn sol_log_data(&self, fields: &[&[u8]]) { println!( "data: {}", - fields.iter().map(|v| BASE64_STANDARD.encode(v)).collect::>().join(" ") + fields + .iter() + .map(|v| BASE64_STANDARD.encode(v)) + .collect::>() + .join(" ") ); } fn sol_get_processed_sibling_instruction(&self, _index: usize) -> Option {