From 8004951fdc3e6e5a0cb5afa47014aa61e9e7b5b9 Mon Sep 17 00:00:00 2001 From: Gabe Rodriguez Date: Wed, 11 Mar 2026 14:47:40 +0100 Subject: [PATCH] transition spl-discriminator to no-std --- Cargo.lock | 84 +++++++++++++++++++++++++++------------- discriminator/Cargo.toml | 4 +- discriminator/src/lib.rs | 7 ++-- 3 files changed, 64 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 76ec23c7..96ca0cf0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -348,11 +348,20 @@ dependencies = [ "five8_core", ] +[[package]] +name = "five8" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23f76610e969fa1784327ded240f1e28a3fd9520c9cec93b636fcf62dd37f772" +dependencies = [ + "five8_core", +] + [[package]] name = "five8_const" -version = "0.1.3" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b4f62f0f8ca357f93ae90c8c2dd1041a1f665fde2f889ea9b1787903829015" +checksum = "1a0f1728185f277989ca573a402716ae0beaaea3f76a8ff87ef9dd8fb19436c5" dependencies = [ "five8_core", ] @@ -1027,6 +1036,12 @@ dependencies = [ "digest", ] +[[package]] +name = "sha2-const-stable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" + [[package]] name = "sha3" version = "0.10.8" @@ -1065,22 +1080,11 @@ dependencies = [ [[package]] name = "solana-address" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a7a457086457ea9db9a5199d719dc8734dc2d0342fad0d8f77633c31eb62f19" +checksum = "a2ecac8e1b7f74c2baa9e774c42817e3e75b20787134b76cc4d45e8a604488f5" dependencies = [ - "borsh", - "bytemuck", - "bytemuck_derive", - "curve25519-dalek", - "five8", - "five8_const", - "rand 0.8.5", - "solana-atomic-u64", - "solana-define-syscall 3.0.0", - "solana-program-error", - "solana-sanitize", - "solana-sha256-hasher", + "solana-address 2.2.0", ] [[package]] @@ -1092,8 +1096,18 @@ dependencies = [ "borsh", "bytemuck", "bytemuck_derive", + "curve25519-dalek", + "five8 1.0.0", + "five8_const", + "rand 0.9.2", "serde", "serde_derive", + "sha2-const-stable", + "solana-atomic-u64", + "solana-define-syscall 5.0.0", + "solana-program-error", + "solana-sanitize", + "solana-sha256-hasher", "wincode", ] @@ -1152,6 +1166,18 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9697086a4e102d28a156b8d6b521730335d6951bd39a5e766512bbe09007cee" +[[package]] +name = "solana-define-syscall" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57e5b1c0bc1d4a4d10c88a4100499d954c09d3fecfae4912c1a074dff68b1738" + +[[package]] +name = "solana-define-syscall" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03aacdd7a61e2109887a7a7f046caebafce97ddf1150f33722eeac04f9039c73" + [[package]] name = "solana-derivation-path" version = "3.0.0" @@ -1169,7 +1195,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b319a4ed70390af911090c020571f0ff1f4ec432522d05ab89f5c08080381995" dependencies = [ - "solana-hash", + "solana-hash 3.0.0", "solana-sdk-ids", "solana-sdk-macro", "solana-sysvar-id", @@ -1203,11 +1229,17 @@ checksum = "8a063723b9e84c14d8c0d2cdf0268207dc7adecf546e31251f9e07c7b00b566c" dependencies = [ "bytemuck", "bytemuck_derive", - "five8", + "five8 0.2.1", "solana-atomic-u64", "solana-sanitize", ] +[[package]] +name = "solana-hash" +version = "4.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8064ea1d591ec791be95245058ca40f4f5345d390c200069d0f79bbf55bfae55" + [[package]] name = "solana-instruction" version = "3.0.0" @@ -1320,7 +1352,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8909d399deb0851aa524420beeb5646b115fd253ef446e35fe4504c904da3941" dependencies = [ "rand 0.8.5", - "solana-address 1.0.0", + "solana-address 1.1.0", ] [[package]] @@ -1394,13 +1426,13 @@ dependencies = [ [[package]] name = "solana-sha256-hasher" -version = "3.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b912ba6f71cb202c0c3773ec77bf898fa9fe0c78691a2d6859b3b5b8954719" +checksum = "db7dc3011ea4c0334aaaa7e7128cb390ecf546b28d412e9bf2064680f57f588f" dependencies = [ "sha2", - "solana-define-syscall 3.0.0", - "solana-hash", + "solana-define-syscall 4.0.1", + "solana-hash 4.2.0", ] [[package]] @@ -1409,7 +1441,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "19bb713a132fe904caa1f86c331d32846048ae517a3ebf52b068ed07a33070db" dependencies = [ - "five8", + "five8 0.2.1", "solana-sanitize", ] @@ -1430,7 +1462,7 @@ version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "80a293f952293281443c04f4d96afd9d547721923d596e92b4377ed2360f1746" dependencies = [ - "solana-hash", + "solana-hash 3.0.0", "solana-sdk-ids", "solana-sysvar-id", ] @@ -1460,7 +1492,7 @@ dependencies = [ "solana-epoch-rewards", "solana-epoch-schedule", "solana-fee-calculator", - "solana-hash", + "solana-hash 3.0.0", "solana-instruction", "solana-last-restart-slot", "solana-program-entrypoint", diff --git a/discriminator/Cargo.toml b/discriminator/Cargo.toml index 6dfb2318..5c7a9a56 100644 --- a/discriminator/Cargo.toml +++ b/discriminator/Cargo.toml @@ -11,10 +11,10 @@ edition = "2021" borsh = ["dep:borsh"] [dependencies] -borsh = { version = "1", optional = true, features = ["derive"] } +borsh = { version = "1", optional = true, default-features = false, features = ["derive"] } bytemuck = { version = "1.23.2", features = ["derive"] } solana-program-error = "3.0.0" -solana-sha256-hasher = { version = "3.0.0", features = ["sha2"] } +solana-sha256-hasher = { version = "3.1.0", features = ["sha2"] } spl-discriminator-derive = { version = "0.2.0", path = "../discriminator-derive" } [dev-dependencies] diff --git a/discriminator/src/lib.rs b/discriminator/src/lib.rs index 5f7ddc29..866889b4 100644 --- a/discriminator/src/lib.rs +++ b/discriminator/src/lib.rs @@ -2,6 +2,7 @@ //! meant to be unique for instructions or struct types #![deny(missing_docs)] +#![no_std] #![cfg_attr(not(test), forbid(unsafe_code))] extern crate self as spl_discriminator; @@ -22,8 +23,8 @@ mod tests { #[allow(dead_code)] #[derive(SplDiscriminate)] #[discriminator_hash_input("my_first_instruction")] - pub struct MyInstruction1 { - arg1: String, + pub struct MyInstruction1<'a> { + arg1: &'a str, arg2: u8, } @@ -112,7 +113,7 @@ mod tests { build_discriminator("my_runtime_hash_input"), ); - assert_discriminator::("my_first_instruction"); + assert_discriminator::>("my_first_instruction"); assert_discriminator::("global:my_second_instruction"); assert_discriminator::>("global:my_instruction_with_lifetime"); assert_discriminator::>("global:my_instruction_with_one_generic");