Skip to content

Release: transaction v1 client, Agave 4.2 dependency line, crate version bumps - #1

Open
ananas-block wants to merge 2 commits into
mainfrom
feat/agave-4.2-tx-v1
Open

Release: transaction v1 client, Agave 4.2 dependency line, crate version bumps#1
ananas-block wants to merge 2 commits into
mainfrom
feat/agave-4.2-tx-v1

Conversation

@ananas-block

Copy link
Copy Markdown
Contributor

Summary

Two commits:

  1. feat(client): support transaction v1 (Agave 4.2, SIMD-0385): moves light-client to the stable Agave 4.2 client crates and adds transaction v1 support (messages up to 4096 bytes, build_v1_transaction, create_and_send_v1_transaction, max_supported_transaction_version: 1 on getTransaction).
  2. Release: bump Solana deps to the Agave 4.2 line and bump affected crates: bumps the remaining Solana dependencies to the newest release the Agave 4.2 line allows and bumps every crate whose manifest changed.

Crate version bumps

Crate Before After
light-client 0.24.1 0.25.0
light-hasher 6.0.1 7.0.0
light-concurrent-merkle-tree 6.0.0 7.0.0
light-indexed-merkle-tree 6.0.0 7.0.0
light-merkle-tree-reference 5.0.0 6.0.0
light-prover-client 9.0.0 10.0.0
light-account-checks 0.9.0 0.10.0
light-sdk-types 0.24.0 0.25.0
light-sdk-macros 0.24.0 0.25.0
light-sdk 0.24.0 0.25.0
light-merkle-tree-metadata 0.12.0 0.13.0
light-event 0.24.0 0.25.0
light-indexed-array 0.4.0 0.5.0

Unchanged and not republished: light-macros 3.0.0, light-zero-copy 0.7.0, light-zero-copy-derive 0.7.0. Their manifests did not move.

Rule applied: a crate whose dependency requirements move gets a minor bump if it is 0.x and a major bump if it is at 1.0 or above. light-hasher changes for solana-define-syscall and nearly every crate depends on it, so the bump cascades.

Dependency bumps

Dependency Before After
solana-rpc-client, -api, account-decoder-client-types, transaction-status-client-types, banks-client 4.0.0-rc.0 4.2
solana-message 3.1 4.4
solana-transaction 3.1 4.1
solana-account 3.4 4.3
solana-sysvar 4.0 4.1
solana-clock 3.0 3.1
solana-transaction-error 3.0 3.3
solana-hash 4.3 4.5
solana-define-syscall 5.1 5.2
spl-token-2022-interface 2.0 3.1
anchor-lang 1.0.2 1.2.0
litesvm 0.12 0.16
solana-address-lookup-table-interface 2.2.1 3.1

Not bumped, on purpose: litesvm 0.16 pins clock, instruction, sysvar, hash, signature, transaction-error and compute-budget-interface with tilde ranges to the Agave 4.2 line. solana-program 4.1, solana-pubkey 4.3, solana-instruction 3.5 and the new 4.0 majors of instruction, clock and transaction-error require the next line and fail resolution against litesvm. They move together once a litesvm for Agave 4.3 exists.

Publish script

scripts/publish.sh now reads the crates.io sparse index and skips crate versions that are already published, so a partial release publishes only the bumped crates. The dry run selects exactly the 13 crates above.

Verification

  • Workspace builds. light-client tests pass with all features, including four litesvm transaction v1 tests (a 30-transfer v1 transaction above 1232 bytes executes, config lands in the message, defaults, signing failure).
  • 13 test targets fail to compile (zero-copy lib tests, event, merkle-tree-metadata, prover-client integration tests, and others). They fail identically on main, verified by building an untouched checkout with the same command. Not addressed here.
  • All twelve Lightprotocol/program-examples workspaces on the 0.24 stack pass cargo check --all-targets against this branch with light-sdk 0.25.0 and light-hasher 7.0.0.

Follow-ups after merge

  • scripts/publish.sh --execute, then tag each crate <crate>-v<version>.
  • program-examples: bump light-sdk to 0.25.0 and light-hasher to 7.0.0 in the twelve manifests, run cargo update (the locked solana-define-syscall 5.1.0 blocks resolution otherwise), and drop the [patch.crates-io] sections on branch feat/light-client-0.25-tx-v1.

Bump the Solana client stack off the 4.0.0-rc.0 pre-release to stable 4.2
crates so light-client can build, send and decode transaction v1 messages
of up to 4096 bytes.

- solana-rpc-client, solana-rpc-client-api, solana-account-decoder-client-types,
  solana-transaction-status-client-types, solana-banks-client: 4.0.0-rc.0 -> 4.2
- solana-message 3.1 -> 4.2, solana-transaction 3.1 -> 4.1, solana-account 3.4 -> 4.3
- litesvm 0.12 -> 0.16, solana-address-lookup-table-interface 2.2.1 -> 3.1
- request max_supported_transaction_version 1 on every getTransaction call
- add rpc::tx_v1 with build_v1_transaction and TransactionConfig defaults;
  a v1 message treats an unset compute unit limit and loaded-accounts limit
  as zero, so the client fills in 1_000_000 CU and 64 MiB when unset
- add Rpc::create_and_send_v1_transaction, process_versioned_transaction_with_context
  and v1 event-returning variants; legacy and v0 paths unchanged
- replace bare account-key indexing in event parsing with checked lookups
- add litesvm tests: a 30-transfer v1 transaction above 1232 bytes executes,
  config lands in the message, defaults, signing failure
- light-client 0.24.1 -> 0.25.0
Move every Solana dependency to the newest release that the Agave 4.2
line allows. litesvm 0.16 pins clock, instruction, sysvar, hash,
signature, transaction-error and compute-budget-interface with tilde
ranges, so solana-program 4.1, solana-pubkey 4.3, solana-instruction 3.5
and the new 4.0 majors of instruction, clock and transaction-error stay
out until a litesvm for Agave 4.3 exists.

  solana-sysvar             4.0   -> 4.1
  solana-clock              3.0   -> 3.1
  solana-message            4.2   -> 4.4
  solana-transaction-error  3.0   -> 3.3
  solana-hash               4.3   -> 4.5
  solana-define-syscall     5.1   -> 5.2
  spl-token-2022-interface  2.0   -> 3.1
  anchor-lang               1.0.2 -> 1.2.0

Every crate whose manifest changes gets a version bump so integrating
projects do not resolve an old published manifest next to the new one:
minor for 0.x crates, major for crates at 1.0 or above. light-hasher
changes for solana-define-syscall and nearly every crate depends on it,
so the bump cascades to all crates except light-macros, light-zero-copy
and light-zero-copy-derive.

  light-account-checks         0.9.0  -> 0.10.0
  light-hasher                 6.0.1  -> 7.0.0
  light-sdk-types              0.24.0 -> 0.25.0
  light-sdk-macros             0.24.0 -> 0.25.0
  light-sdk                    0.24.0 -> 0.25.0
  light-merkle-tree-metadata   0.12.0 -> 0.13.0
  light-event                  0.24.0 -> 0.25.0
  light-indexed-array          0.4.0  -> 0.5.0
  light-merkle-tree-reference  5.0.0  -> 6.0.0
  light-concurrent-merkle-tree 6.0.0  -> 7.0.0
  light-indexed-merkle-tree    6.0.0  -> 7.0.0
  light-prover-client          9.0.0  -> 10.0.0
  light-client                 0.25.0 (bumped in the previous commit)

Update [workspace.dependencies] version requirements to match.

scripts/publish.sh now reads the crates.io sparse index and skips crate
versions that are already published, so a partial release publishes only
the bumped crates. The dry run selects the 13 crates above.

Verified: the workspace builds; light-client tests pass with all
features; the 13 test targets that fail to compile fail identically on
the parent commit. All twelve Lightprotocol/program-examples workspaces
on the 0.24 stack pass cargo check --all-targets against this tree with
light-sdk 0.25.0 and light-hasher 7.0.0. Their lockfiles need a cargo
update because the locked solana-define-syscall 5.1.0 blocks resolution.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant