Skip to content

Support fully qualified type names for v30 - #2798

Draft
leighmcculloch wants to merge 20 commits into
mainfrom
qualified-spec-names-for-v30
Draft

leighmcculloch wants to merge 20 commits into
mainfrom
qualified-spec-names-for-v30

Conversation

@leighmcculloch

@leighmcculloch leighmcculloch commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

What

Update the xdr, sdk and env crates for v30 and teach contract build to reduce the fully qualified type and event names in contract specs and to shake specs by the version recorded in the wasm.

Why

Contracts built with soroban-sdk v30 name user-defined types and events by their fully qualified path, which the CLI must read, shorten and shake correctly; this replaces #2751, #2674 and #2720.

Known limitations

The sdk, env and xdr crates are pinned to git revisions until they are released.

@leighmcculloch
leighmcculloch marked this pull request as ready for review October 13, 2026 15:27
@leighmcculloch
leighmcculloch requested a review from a team as a code owner October 13, 2026 15:27
Copilot AI lite review requested due to automatic review settings October 13, 2026 15:27

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Two moderate build-path issues remain unresolved; the warning wording also needs correction.

0 open findings

What changed in this PR

Updates Soroban dependencies and CLI contract builds for v30 fully qualified type/event names.

Changes:

  • Pins v30 SDK, environment, XDR, and related revisions.
  • Adds spec shaking and qualified-name reduction.
  • Updates fixtures, tests, interface generation, and CI workflows.

Review findings:

  • Cargo.toml — moderate: raw fixture builds bypass required v30 post-processing.
  • build.rs — moderate: --image builds bypass the new transformation.
  • build.rs — nit: collision warnings also cover reserved-name renaming.
File Description
deny.toml Allows temporary pinned Git dependencies.
cmd/​soroban-cli/​src/​utils/​contract-workspace-template/​Cargo.toml.removeextension Updates the generated SDK version to v30.
cmd/​soroban-cli/​src/​commands/​contract/​info/​interface.rs Passes SDK version to Rust interface generation.
cmd/​soroban-cli/​src/​commands/​contract/​build.rs Adds version-aware shaking and qualified-name reduction.
cmd/​soroban-cli/​src/​commands/​contract/​arg_parsing.rs Adapts tests to widened XDR names.
cmd/​crates/​soroban-test/​tests/​it/​build.rs Adds qualified-name and shaking integration coverage.
cmd/​crates/​soroban-test/​tests/​fixtures/​workspace-with-qualified-names/​contracts/​names/​src/​lib.rs Defines qualified-name fixture types and events.
cmd/​crates/​soroban-test/​tests/​fixtures/​workspace-with-qualified-names/​contracts/​names/​Cargo.toml Defines fixture contract metadata.
cmd/​crates/​soroban-test/​tests/​fixtures/​workspace-with-qualified-names/​Cargo.toml Defines the fixture workspace.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​token/​Cargo.toml Updates the token fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​token_renamed/​Cargo.toml Updates the renamed-token fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​swap/​Cargo.toml Updates the swap fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​hello_world/​Cargo.toml Updates the hello-world fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​empty_constructor/​Cargo.toml Updates the empty-constructor fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​custom_type/​Cargo.toml Updates the custom-type fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​custom_account/​Cargo.toml Updates the custom-account fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​constructor/​Cargo.toml Updates the constructor fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​test-wasms/​auth/​Cargo.toml Updates the auth fixture to v30.
cmd/​crates/​soroban-test/​tests/​fixtures/​hello/​Cargo.toml Updates the hello fixture.
cmd/​crates/​soroban-test/​tests/​fixtures/​bye/​Cargo.toml Updates the bye fixture.
cmd/​crates/​soroban-spec-tools/​src/​lib.rs Supports widened type and event names.
cmd/​crates/​soroban-spec-tools/​src/​event.rs Updates event-name construction.
cmd/​crates/​soroban-spec-tools/​src/​contract.rs Formats widened contract names.
Cargo.toml Updates workspace dependencies and v30 revisions.
Cargo.lock Locks updated dependency revisions.
.github/​workflows/​rpc-tests.yml Updates the protocol version.
.github/​workflows/​ledger-emulator.yml Updates the protocol version.
.github/​workflows/​bindings-ts.yml Updates the protocol version.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Copilot AI lite review requested due to automatic review settings October 13, 2026 17:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Fixture generation and the contract build --image path do not apply the new spec post-processing.

0 open findings

🧠 Review effort: Lite

Copilot AI lite review requested due to automatic review settings October 13, 2026 19:18

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Pin the generated-project SDK revision and ensure contract build --image applies the same post-processing guarantees.

2 open findings

🧠 Review effort: Lite

Comment thread cmd/soroban-cli/src/commands/contract/build.rs
Copilot AI lite review requested due to automatic review settings October 14, 2026 16:12

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Critical v3 capability and fixture-processing issues remain unresolved.

2 open findings
2 resolved since last review

🧠 Review effort: Lite

Comment thread Cargo.toml Outdated
Comment on lines +67 to +70
[workspace.dependencies.soroban-sdk]
version = "28.0.0"
version = "30.0.0"
git = "https://github.com/stellar/rs-soroban-sdk"
rev = "a2e51be61dc5c179595ba5b26da7da724e253886"
Comment on lines +376 to 381
// optimization. The var says only that this CLI shakes; which
// rules it shakes a given contract by comes from the model that
// contract's meta selects. Current and new SDK versions no
// longer read this var, relying on the CLI version below
// instead, but it must keep being set for past SDK versions that
// require it.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Build-generated and container-produced WASMs do not consistently receive the new spec processing.

2 open findings

🧠 Review effort: Lite

Copilot AI lite review requested due to automatic review settings October 14, 2026 21:40

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

contract build --image does not yet apply the same spec transformation as the local build path.

2 open findings

🧠 Review effort: Lite

Copilot AI lite review requested due to automatic review settings October 15, 2026 04:38

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Critical fixture lockfile mismatches and moderate container-build and generated-workspace issues remain unresolved.

4 open findings

🧠 Review effort: Lite

[package]
name = "stellar-bye"
version = "28.1.0"
version = "30.0.0"
[package]
name = "soroban-hello"
version = "28.1.0"
version = "30.0.0"
Comment thread cmd/soroban-cli/src/commands/contract/info/interface.rs Outdated
Comment thread .github/workflows/bindings-ts.yml
Copilot AI lite review requested due to automatic review settings October 15, 2026 21:07

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved SAC spec-name handling, fixture lockfiles, and v3 SDK capability support block approval.

5 open findings

🧠 Review effort: Lite

Comment thread cmd/soroban-cli/src/commands/contract/info/interface.rs Outdated
@leighmcculloch

Copy link
Copy Markdown
Member Author

@socket-security

socket-security Bot commented Oct 16, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedcargo/​stellar-xdr@​28.0.0 ⏵ 30.0.089 -4100100100100
Updatedcargo/​stellar-strkey@​0.0.16 ⏵ 1.0.089100100100100

View full report

@leighmcculloch
leighmcculloch force-pushed the qualified-spec-names-for-v30 branch from 08c60c7 to de1b884 Compare October 16, 2026 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Backlog (Not Ready)

Development

Successfully merging this pull request may close these issues.

4 participants