Bump version to 26.1.1 - #1941
Conversation
There was a problem hiding this comment.
Pull request overview
Note
Copilot could not run the full agentic suite for this review because it was automatically requested on a bot-authored pull request. Request a review from Copilot under Reviewers to retry with the full agentic suite. Improved support for bot-authored pull requests is coming soon.
This PR updates Soroban SDK/spec shaking behavior and tests, including deprecating export = ... under experimental_spec_shaking_v2, improving #[contracttrait] cfg-handling diagnostics, and expanding coverage for new reachable SDK auth/executable types.
Changes:
- Make
export = ...a no-op underexperimental_spec_shaking_v2(with deprecation warnings) and update docs accordingly. - Add/adjust macro support and diagnostics around
cfg/cfg_attrusage in#[contracttrait]defaults and overrides, plus compile-fail tests. - Expand spec-shaking v1/v2 tests and update many wasm-driven snapshots; update CI workflows to better patch transitive SDK crates.
Reviewed changes
Copilot reviewed 56 out of 64 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/udt/test_snapshots/test_with_wasm/test_recursive_enum.1.json | Snapshot updated for new wasm/hash output. |
| tests/udt/test_snapshots/test_with_wasm/test_recursive.1.json | Snapshot updated for new wasm/hash output. |
| tests/udt/test_snapshots/test_with_wasm/test_add.1.json | Snapshot updated for new wasm/hash output. |
| tests/tuples/test_snapshots/test/test_wasm_void.1.json | Snapshot updated for new wasm/hash output. |
| tests/tuples/test_snapshots/test/test_wasm_tuple2.1.json | Snapshot updated for new wasm/hash output. |
| tests/tuples/test_snapshots/test/test_wasm_tuple1.1.json | Snapshot updated for new wasm/hash output. |
| tests/spec_shaking_v2/src/test.rs | Extends expected reachable functions/types under v2. |
| tests/spec_shaking_v2/src/lib.rs | Adds new contract fns/types to exercise v2 shaking, auth/executable, and export=false no-op. |
| tests/spec_shaking_v1/src/test.rs | Updates v1 expectations to include export=false types in the “not exported” set. |
| tests/attributes/test_snapshots/test/test_contracttrait_cfg_override_and_default.1.json | New snapshot for new attributes-focused test crate. |
| tests/attributes/test_snapshots/test/test_cfg_methods.1.json | New snapshot for cfg-gated method inclusion. |
| tests/attributes/test_snapshots/test/test_cfg_items.1.json | New snapshot validating cfg-gated items + event emission. |
| tests/attributes/src/lib.rs | New test crate covering cfg-gated items/methods and contracttrait overrides/defaults. |
| tests/attributes/Cargo.toml | New crate manifest enabling v2 feature for attributes tests. |
| tests/associated_type_contracttrait/test_snapshots/test_with_wasm/test_exec.1.json | Snapshot updated for new wasm/hash output. |
| tests-expanded/test_errors_wasm32v1-none.rs | Updates expanded output (removes generated persisted args builder). |
| tests-expanded/test_errors_tests.rs | Updates expanded ctor symbol due to hashing/registration changes. |
| tests-expanded/test_contracttrait_trait_wasm32v1-none.rs | Adds generated doc comments in expanded args helpers. |
| tests-expanded/test_contracttrait_trait_tests.rs | Adds generated doc comments in expanded args helpers/tests. |
| tests-expanded/test_contracttrait_path_global_wasm32v1-none.rs | Adds generated doc comments in expanded args helpers. |
| tests-expanded/test_contracttrait_path_global_tests.rs | Adds generated doc comments in expanded args helpers/tests. |
| tests-expanded/test_contracttrait_impl_partial_wasm32v1-none.rs | Adds generated doc comments in expanded args helpers. |
| tests-expanded/test_contracttrait_impl_partial_tests.rs | Adds generated doc comments in expanded args helpers/tests. |
| tests-expanded/test_contracttrait_impl_full_wasm32v1-none.rs | Adds generated doc comments in expanded args helpers. |
| tests-expanded/test_contracttrait_impl_full_tests.rs | Adds generated doc comments in expanded args helpers/tests. |
| tests-expanded/test_auth_tests.rs | Adjusts generated attributes on __check_auth args builder. |
| tests-expanded/test_attributes_wasm32v1-none.rs | New expanded output snapshot for attributes test contract. |
| tests-expanded/test_account_wasm32v1-none.rs | Adjusts generated attributes on __check_auth args builder. |
| tests-expanded/test_account_tests.rs | Adjusts generated attributes on __check_auth args builder. |
| soroban-spec-rust/src/lib.rs | Adds auth/executable-related contract types (but currently duplicates definitions). |
| soroban-sdk/tests/compile_fails/contracttrait_cfg_errors.stderr | New compile-fail expected diagnostics for cfg/cfg_attr restrictions. |
| soroban-sdk/tests/compile_fails/contracttrait_cfg_errors.rs | New compile-fail test covering cfg/cfg_attr restrictions. |
| soroban-sdk/tests/compile_fails.rs | Adds trybuild runner for compile-fail tests. |
| soroban-sdk/test_snapshots/tests/crypto_bls12_381/test_invoke_contract.1.json | Snapshot updated for new wasm/hash output. |
| soroban-sdk/src/spec_shaking.rs | Removes manual markers for auth types (now handled via contracttype under v2). |
| soroban-sdk/src/lib.rs | Updates docs: v2 behavior, export deprecation, and contracttrait cfg guidance. |
| soroban-sdk/src/auth.rs | Makes auth types use export=false only when v2 is not enabled. |
| soroban-sdk/src/address.rs | Makes Executable use export=false only when v2 is not enabled. |
| soroban-sdk/src/_features.rs | Updates feature docs to describe export no-op + reachability model under v2. |
| soroban-sdk/docs/contracttrait.md | Documents cfg/cfg_attr restrictions and the generated helper macro rationale. |
| soroban-sdk/Cargo.toml | Adds trybuild dependency. |
| soroban-sdk-macros/src/lib.rs | Adds export-arg deprecation emitter + adjusts contracttype/contracterror export logic under v2. |
| soroban-sdk-macros/src/derive_fn.rs | Improves function-registration ctor hashing & supports cfg-gated registrations. |
| soroban-sdk-macros/src/derive_event.rs | Adds export-arg deprecation for events; changes export logic under v2. |
| soroban-sdk-macros/src/derive_contractimpl_trait_macro.rs | Rejects cfg/cfg_attr in unsupported places; improves error surfacing while preserving macro/trait availability. |
| soroban-sdk-macros/src/derive_contractimpl_trait_default_fns_not_overridden.rs | Adds cfg-aware default-vs-override selection and emits defaults under inverse cfg. |
| soroban-sdk-macros/src/derive_args.rs | Passes through cfg/doc/allow/deny attrs to generated args-builder fns. |
| soroban-sdk-macros/src/attribute.rs | Adds helpers to detect cfg/cfg_attr and reject unsupported items with combined errors. |
| Cargo.toml | Bumps workspace crate versions to 26.1.1. |
| .github/workflows/test-with-soroban-examples.yml | Improves patching logic for transitive crates.io SDK deps to avoid duplicate lang items. |
| .github/workflows/test-with-openzeppelin-stellar-contracts.yml | Same: patch transitive crates.io SDK deps + reuse crate list collection. |
Comments suppressed due to low confidence (1)
soroban-sdk-macros/src/derive_fn.rs:1
- The ctor symbol hash now depends on
TokenStream::to_string()for#[cfg(...)]attributes.to_string()output is not a stable, canonical representation across proc-macro tooling versions and can change with formatting, causing unnecessary churn in generated symbol names and snapshots without a semantic change. Prefer hashing a normalized representation (e.g., parse each#[cfg]'sMeta/token args and re-emit a canonical form, or hash the structuredsynAST) to make the result resilient to token formatting differences.
use crate::{
| pub struct ContractContext { | ||
| pub args: soroban_sdk::Vec<soroban_sdk::Val>, | ||
| pub contract: soroban_sdk::Address, | ||
| pub fn_name: soroban_sdk::Symbol, | ||
| } |
| pub struct ContractContext { | ||
| pub args: soroban_sdk::Vec<soroban_sdk::Val>, | ||
| pub contract: soroban_sdk::Address, | ||
| pub fn_name: soroban_sdk::Symbol, | ||
| } |
| ark-bn254 = { version = "0.5", default-features = false, features = ["curve"] } | ||
| ark-bls12-381 = { version = "0.5", default-features = false, features = ["curve"] } | ||
| ark-ff = { version = "0.5", default-features = false } | ||
| trybuild = "1.0.115" |
| let (idents, wrap_idents, attrs, hash_parts): (Vec<_>, Vec<_>, Vec<_>, Vec<_>) = fns | ||
| .iter() | ||
| .map(|f| { | ||
| let attrs = f | ||
| .attrs | ||
| .iter() | ||
| .filter(|attr| is_attr_cfg(attr)) | ||
| .collect::<Vec<_>>(); | ||
| let ident_str = f.ident.unraw().to_string(); | ||
| let wrap_ident = format_ident!("__{}__{}__invoke_raw_slice", ty_str, ident_str); | ||
| (ident_str, wrap_ident) | ||
| // Prefix the cfg attrs so cfg-gated registrations and their inverse-cfg | ||
| // defaults do not collide on the same internal ctor symbol. The ident | ||
| // is concatenated as a bare string (not interpolated through `quote!`, | ||
| // which would render it as a quoted string literal) so methods without | ||
| // cfg attrs are unchanged. | ||
| let cfg_prefix = quote!(#(#attrs)*).to_string(); | ||
| let hash_part = format!("{cfg_prefix}{ident_str}"); | ||
| (ident_str, wrap_ident, attrs, hash_part) | ||
| }) |
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
What
Bump version to 26.1.1, creating release branch.
Why
Triggered by @leighmcculloch in https://github.com/stellar/rs-soroban-sdk/actions/runs/29779116119.
What is next
See the release instructions for a full rundown on the release process:
https://github.com/stellar/actions/blob/main/README-rust-release.md
Commit any changes to the
release/v26.1.1branch that are needed in this release.If this is a regular release releasing from
main, merge this PR when ready, and after merging, create a release for this version by going to this link: https://github.com/stellar/rs-soroban-sdk/releases/new?tag=v26.1.1&title=26.1.1If this is a backport or patch release of a past version, see the release instructions. When ready to release this branch create a release by going to this link:
https://github.com/stellar/rs-soroban-sdk/releases/new?tag=v26.1.1&title=26.1.1&target=release/v26.1.1