This is a pre-release for testing only. Do not deploy to mainnet, testnet, or any production host.
https://github.com/anza-xyz/agave/blob/master/CHANGELOG.md#edge-channel
What's Changed
- ledger-tool persist reward epoch delegated stakes account by @davidkleymann in #15871
- Removes snapshot hardlinks mentions by @brooksprumo in #15896
- accounts-db: Refactors fields inside SplitFile by @brooksprumo in #15815
- cli: Increments
solana feature statuspadding by one by @brooksprumo in #15875 - Separates the code paths for startup storage rebuilding from snapshot archives vs local state by @brooksprumo in #15892
- chore(deps): bump solana-vote-interface from 7.1.0 to 7.2.0 in /dev-bins by @dependabot[bot] in #15878
- ci: conformance: disable shred harness by @buffalojoec in #15900
- chore(deps): bump solana-secp256k1-program from 3.0.1 to 3.1.0 in /dev-bins by @dependabot[bot] in #15880
- ci: xtask: resolve repo from GITHUB_REPOSITORY by @buffalojoec in #15904
- Refactor - Move
ComputeMeterfromInvokeContexttoTransactionContextby @Lichtso in #15818 - Parse RPC instructions and accounts with wincode by @kskalski in #15906
- refactor(accounts-lt-hash): simplify async pipeline and adjust its API by @kskalski in #15501
- runtime: tests: sweep program_cache into tests dir by @buffalojoec in #15903
- svm: remove account inspection by @2501babe in #15910
- accounts-db: scan storages through the file activated on the reader by @kskalski in #15916
- quic-vote - deactivate and deprecate the CLI argument by @alexpyattaev in #15915
- votor-transport: add blackhole test by @alexpyattaev in #14353
- BCL: makes
produce_windoweasier to follow by @akhi3030 in #15019 - precompiles: decode secp256k1 signature offsets with wincode by @kskalski in #15905
- BlockFinalizationCert uses BlockId instead of Hash by @akhi3030 in #15843
- rpc: update test for out of order OC / Root under AG by @AshwinSekar in #15888
- refactor(local-cluster): replace fs_extra ledger copies with std::fs by @apfitzge in #15942
- deps: bump quinn-proto to 0.11.19 by @alexpyattaev in #15854
- refactor(ledger): remove unused fs_extra dependency by @apfitzge in #15943
- fix: preserve Alpenglow progress anchors and stop reporting expired estimates by @apfitzge in #15885
- ledger: shredder tests: start test shreds at FEC set boundaries for SIMD504 by @alexpyattaev in #15935
- gossip: move the NodesCursor chunk loop into NodesCursor::collect by @efagerho in #15870
- genesis: fix rent deprecation warnings printed on every run by @latent-9 in #15862
- votor: publish the commitment root after replay applies it by @jstarry in #15836
- shred ingest: exclude retransmitter signature from dedup by @AshwinSekar in #14608
- Removes obsolete accounts/snapshot/ sub directories by @brooksprumo in #15895
- refactor: Remove p-token feature gate by @febo in #15944
- ci: detect changed conformance harness code by @buffalojoec in #15959
- ledger: shredder & sigverify tests: start test shreds at FEC set boundaries by @alexpyattaev in #15950
- ledger: blockstore tests: start test shreds at FEC set boundaries by @alexpyattaev in #15951
- accounts-db: handle missing archive data files explicitly by @satyam455 in #15889
- ci: parse labeled platform-tools version from cargo-build-sbf by @buffalojoec in #15960
- local-cluster: rm tower-specific test_alpenglow_partition_1_1_1 by @alexpyattaev in #15923
- Bank::[set_]block_id() takes BlockId instead of Hash by @akhi3030 in #15865
- perf(poseidon): Update light-poseidon to 0.4.1 by @vadorovsky in #15911
- quinn-udp: bump to 0.5.16 by @alexpyattaev in #15651
- VoteStateHandler: uses wincode for serialization by @akhi3030 in #15972
- cli: program: don't auto-extend for simd-0433 by @buffalojoec in #15899
- Adds stats for how long rewards calculations took by @akhi3030 in #15768
- Revert "retransmit: replace rayon with worker pool (#15585)" by @KirillLykov in #15991
- svm, runtime: use StateMutWincode for account state by @kskalski in #15980
- chore(toolchain): bump rust toolchain to 1.99.0 and nightly=2026-08-15 by @kskalski in #15982
- Bump solana-bls-signatures to 4.0.1 by @samkim-crypto in #15898
- Return XDP startup errors after dropping temporary capabilities by @efagerho in #15840
- conformance: fix shred and block harnesses by @0x0ece in #15946
- svm: load: use rooted access slot by @latent-9 in #15967
- replay: give solReplayStage its own arena by @alessandrod in #16008
- repair RPC: require pubkey to target by @alexpyattaev in #15842
- Refactor - Moves
TransactionAccounts::lamports_deltatoTransactionContext::lamports_deltaby @Lichtso in #15993 - runtime: tests: sweep bpf_loader into tests dir by @buffalojoec in #15902
- accounts-db: read storages with direct I/O when generating the index by @kskalski in #15941
- perf(runtime): Avoid zero-initializing sysvar account data by @vadorovsky in #15809
- runtime: tests: extract program cache utils by @buffalojoec in #16007
- tpu-client-next: disable features we do not use by @alexpyattaev in #16010
- chore: serve_repair tests: start test shreds at a FEC set boundary by @alexpyattaev in #15974
- runtime: tests: simd-0433 integration tests by @buffalojoec in #16014
- Use similar handling for ancestors across conformance tests by @roryharr in #15949
- Pass BankId into store_accounts by @roryharr in #15897
- shred sigverify: remove logic to resign shreds by @alexpyattaev in #15710
- chore: rm test code referencing solana_packet::Packet, use BytesPacket instead by @alexpyattaev in #15992
- Improves performance of [de]serializing
VoteStateVersionsby @akhi3030 in #15986 - bpf_loader: sweep instruction tests into tests dir by @buffalojoec in #15901
- conformance: build feature set once per input by @mjain-jump in #16023
- validator: remove unused dependencies by @efagerho in #15928
- gossip: adjust tests for SIMD504 by @alexpyattaev in #15931
- streamer: make QUIC servers, fetch stage and EvictingSender generic over ChannelSend by @stablebits in #15922
- transaction-context: decode and encode account state with wincode by @kskalski in #16003
- fixed slot and shred indices to allow the recover bench to run by @vkomenda in #15035
- chore(deps): bump rustls from 0.23.45 to 0.23.46 by @yihau in #16040
- chore: update scheduler handshake and shaq dependencies by @apfitzge in #16020
- feature cleanup: SIMD-0431 by @buffalojoec in #16030
- retransmit: replace rayon with worker pool by @KirillLykov in #15995
- localnet: add retry to delegate-stake by @alexpyattaev in #15947
- blockstore: hide pre-UpdateParent transaction history by @alex-lind1 in #14432
- perf(gossip): Batch CRDS contact-info queries by @efagerho in #15985
- chore(deps): bump actions/download-artifact from 8.0.1 to 8.0.2 by @dependabot[bot] in #16052
- chore(deps): bump actions/upload-artifact from 7.0.1 to 7.0.2 by @dependabot[bot] in #16051
- stakes cache: check StakeStateV2 tag in check_and_store() by @2501babe in #16050
- test(zk-elgamal-proof): use v1 for oversized proof transactions by @apfitzge in #16056
- ci: set pending Buildkite status while awaiting ci label approval by @yihau in #15783
- vote, core: decode vote instructions with wincode by @kskalski in #16035
- validator: create the ledger directory at startup, not during parsing by @efagerho in #16011
- bls-cert-verify: specify an optional thread pool by @akhi3030 in #16059
- chore(deps): bump quinn-proto from 0.11.18 to 0.11.19 by @yihau in #16073
- Reduce SIGVERIFY_SHRED_BATCH_SIZE from 1024 to 128 by @KirillLykov in #15994
- chore(deps): bump lru from 0.18.4 to 0.18.5 by @yihau in #16076
- chore(deps): bump xxhash-rust from 0.8.18 to 0.8.19 by @dependabot[bot] in #15808
- conformance: pretty-print failures in ci by @buffalojoec in #16080
- chore(deps): bump hyper-util from 0.1.20 to 0.1.21 by @yihau in #16075
- chore(deps): bump tokio from 1.53.1 to 1.53.2 by @yihau in #16074
- chore(deps): bump libc from 0.2.189 to 0.2.190 by @dependabot[bot] in #16084
- SIMD-0648: unbound loaderv3 instruction deserialize by @2501babe in #15407
- conformance: extract download script from ci by @buffalojoec in #16079
- conformance: add missing setup ffi bindings by @buffalojoec in #16078
- runtime: relax check tx fns to StaticTransactionWithMeta by @2501babe in #16042
- rpc: fix stalled snapshot HTTP test flake by @sam0x17 in #15707
- Plumb bank_id into any raw slot read APIS by @roryharr in #16017
- vote_reward.rs: avoids calloc when creating new AccountSharedData by @akhi3030 in #16101
- perf(runtime): Take an iterator instead of a
Vecin in the entry-transaction processing chain by @vadorovsky in #16046 - bcp: allow tx execution during footer verification by @AshwinSekar in #16048
- chore(deps): bump solana-account from 5.1.0 to 5.1.1 by @dependabot[bot] in #16096
- chore(deps): bump wincode from 0.6.2 to 0.6.3 by @dependabot[bot] in #16083
- ci: fix file change triggers when generating piepline by @yihau in #15962
- changes the blstrs dependency to use the vendored version by @akhi3030 in #15773
- wake-channel: support channels sharing a wake event by @stablebits in #15920
- nit: Bank: removes unused method by @akhi3030 in #16100
- Bump solana-zk-sdk to 8.1.0 by @samkim-crypto in #16110
- geyser: Split the plugin host out of the plugin manager by @sam0x17 in #14905
- chore(deps): bump octocrab from 0.54.2 to 0.54.3 in /ci/xtask by @dependabot[bot] in #16118
- chore(deps): bump solana-cluster-type from 3.2.0 to 3.2.1 by @dependabot[bot] in #16119
- RepairProtocol: uses BlockId instead of Hash by @akhi3030 in #16132
- conformance: encode vote, sysvar and loader states with wincode by @kskalski in #16090
- xdp: add unit test for stale neighbor by @KirillLykov in #15990
- ci: bind remaining dispatch inputs and tag outputs via env by @SashaMIT in #14558
- chore: import Meta and PacketFlags via solana_perf::packet by @alexpyattaev in #16031
- chore: net-utils: propagate ip echo request errors in reachability checks by @alexpyattaev in #16091
- docs(net): fix spelling in streamer, gossip, tpu-client-next by @kutluhaneth46 in #15987
- BlockIdRepairType uses BlockId instead of Hash by @akhi3030 in #16139
- chore: rm gossip restart messages by @alexpyattaev in #14891
- perf(accounts-db): sort in-memory index inserts by bin alone by @kskalski in #16087
- Revert "SIMD-0464: key feature (#15765)" by @buffalojoec in #16141
- perf(ledger): Take an iterator instead of a
Vecinprocess_entriesby @vadorovsky in #16021 - net-utils: pace echo request retries after transient failures by @efagerho in #16152
- refactor: decode config accounts with the solana-account wincode config by @kskalski in #15978
- validator: create account and snapshot directories after parsing by @efagerho in #16049
- feat(validator): add event system with configurable filters by @apfitzge in #16054
- refactor(runtime): remove activated rent threshold gate by @apfitzge in #16128
- feat(runtime-transaction): enforce transaction policy during construction by @apfitzge in #16041
- turbine: tests: stop making shreds with unaligned FEC sets by @alexpyattaev in #15976
- Adds fastboot support for SplitFile by @brooksprumo in #16022
- fix(scheduler): Apply adjusted pacing immediately by @0xEdgar in #16105
- SIMD504: prep for always recovering the FEC sets by @alexpyattaev in #15914
- Remove read retry from read path by @roryharr in #16168
- feat(banking-stage): add worker pool for simulating transactions by @apfitzge in #16126
- fix(banking): reject truncated precompile instructions before scheduling by @apfitzge in #16039
- snapshot minimizer: Disables remove-on-drop before flushing storages by @brooksprumo in #16174
- chore(toolchain): bump rust toolchain to 1.99.1 and nightly=2026-08-16 by @kskalski in #16140
- chore(deps): bump actions/create-github-app-token from 3.2.0 to 3.3.0 by @dependabot[bot] in #16142
- chore(deps): bump smallvec from 1.16.2 to 1.16.3 by @dependabot[bot] in #16160
- chore(deps): bump serde_json from 1.0.151 to 1.0.154 by @dependabot[bot] in #16161
- transaction-context: write state of a shared account without growth headroom by @kskalski in #16111
- clippy(bls-sigverify): fix needless_bool in reward eligibility by @kskalski in #16183
- chore: move struct Meta from solana-packet by @alexpyattaev in #16024
- ledger: merkle.rs start test shreds at FEC set boundaries by @alexpyattaev in #15975
- clippy: fix needless_bool and needless_nonzero_get by @kskalski in #16193
- cli: decode sysvar and stake accounts through StateMutWincode by @kskalski in #16186
- gossip: refactor generate_pull_responses by @alexpyattaev in #16195
- ci: do offline tombi format by @yihau in #16198
- chore(deps): bump proptest from 1.11.0 to 1.12.0 by @yihau in #16181
- deps(dev-bins): drop unused workspace dependency entries by @kskalski in #16184
- fix: Purge transaction history before UpdateParent replay by @alex-lind1 in #16167
- fix(banking-stage): prefer leader bank in internal check workers by @apfitzge in #16179
- test(unified-scheduler): avoid timing-dependent timeout checkpoints by @apfitzge in #16176
- EntryUpdateParentInfo uses BlockId instead of Hash by @akhi3030 in #16138
- BlockComponent: DCOU some method used just for testing by @akhi3030 in #16149
- Introduces Stake and NonZeroStake by @akhi3030 in #16151
- Remove LoadHints by @roryharr in #16177
- Normalize CI env variables also in the command environment by @levsha in #16214
- Rekey write cache with bank_id by @roryharr in #16102
- Updates AccountsDbConfig for tests/benches to use SplitFile by default by @brooksprumo in #16175
- deps: bump webpki crates for RUSTSEC-2026-0381/0382/0383 by @kskalski in #16234
- deps: bump solana-poh-config to 3.1.1 and solana-genesis-config to 5.0.1 by @kskalski in #16148
- accounts-db: drop the on-disk existed count from in-memory index inserts by @kskalski in #16178
- rm flaky tower test test_vote_storage_full_send by @alexpyattaev in #16150
- runtime: load and hash genesis config with wincode by @kskalski in #16236
- chore(bpf_loader): Avoid using
AccountSharedData::newby @vadorovsky in #16153 - startup replay: handle clearing of dead banks properly by @AshwinSekar in #16180
- bpf_loader: log SBPF version when finalize is rejected by @buffalojoec in #16232
- cli: verify program ELF against the deployment environment by @buffalojoec in #16233
- accounts-index: accumulate in-memory index timers in nanoseconds by @kskalski in #16196
- clippy(accounts-db): fix needless_bool and needless_range_loop by @kskalski in #16237
- validator: move sub-config parsing into config modules by @efagerho in #16197
- accounts-db: fix small-to-large interleave in AccountStoragesOrderer by @kskalski in #16229
- chore(deps): bump solana-vote-interface from 7.2.0 to 7.3.0 by @dependabot[bot] in #16200
- program-deploy: migrate send_transaction to VersionedTransaction by @KirillLykov in #16122
- Cleanup runtime read by @roryharr in #16218
- Make From<Vec> in accounts_db DCOU by @roryharr in #16219
- Minimizer purge storage only by @roryharr in #16131
- NotarRewardCertificate uses BlockId instead of Hash by @akhi3030 in #16162
- Create accountsdb readonly cache eviction bench by @dachen0 in #15831
- chore(deps): bump octocrab from 0.54.3 to 0.54.4 in /ci/xtask by @dependabot[bot] in #16245
- svm: filter fee-payer before load by @2501babe in #15917
- fix flaky test_tvu_exit by @alexpyattaev in #16169
- Keep 32 slots in write cache by @roryharr in #16061
- wait for supermajority: use current epoch vote accounts by @mjain-jump in #16001
- snapshot: remove dependency on manifest stake_delegations field by @mjain-jump in #15828
- deps: drop unused dependencies flagged by cargo 1.100 by @kskalski in #16266
- feat(rpc): add innerInstructionsEncoding to simulateTransaction by @amilz in #16165
- chore(deps): bump arbitrary from 1.4.2 to 1.5.0 by @dependabot[bot] in #16114
- deps(programs/sbf): drop unused dependencies flagged by cargo 1.100 by @kskalski in #16268
- validator: fix --incremental-snapshot-archive-path conflict arg name by @efagerho in #16254
- validator: resolve the PoH pinned core once by @efagerho in #16255
- deps(accounts-db): drop the unused solana-rayon-threadlimit dependency by @kskalski in #16265
- AG: block TPU UDP vote ingest by @alexpyattaev in #16274
- PER: update tests to run in AG by @akhi3030 in #16222
- fix and reenable shred conformance tests by @alexpyattaev in #16238
- [solana-syscalls] clean up curve syscall registration (curve25519, SIMD-0388) by @samkim-crypto in #16230
- local-cluster: remove Tower-only setup and tests by @AshwinSekar in #16242
- AG cleanup: rm shred chaining checks by @alexpyattaev in #15971
- chore(deps): bump ur-parse-lib from 1.0.8 to 1.0.9 by @yihau in #16286
- chore(deps): bump shuttle from 0.9.4 to 0.9.7 by @yihau in #16285
- chore(deps): bump tokio from 1.53.2 to 1.53.3 by @yihau in #16284
- validator: deprecate --tpu-max-connections-per-peer by @efagerho in #16256
- validator: move capability handling into its own module by @efagerho in #16187
- block-creation-loop: request reward certs before waiting for the parent by @jstarry in #16258
- rpc: cleanup Tower - voteSubscribe, tpu_vote, AllWithVotes, RpcVote by @AshwinSekar in #16260
- geyser-plugin-manager: do not block shutdown on an idle slot status channel by @latent-9 in #15547
- fix(svm): reject instructions with more than 255 account references by @apfitzge in #15948
- poh: cache start bank fields so pruned banks are freed by @lizhang-jito in #16302
- vote: construct vote accounts with their data by @kskalski in #16275
- Replace Rayon shred sigverify with dedicated workers by @igorbologovv in #14641
- fs: back large io_uring buffers with transparent huge pages by @kskalski in #16137
- snapshot: Adds stable-abi to StoragesList by @brooksprumo in #16288
- snapshot: Adds stable-abi to StartupHints by @brooksprumo in #16289
- chore(deps): bump solana-packet from 4.4.0 to 4.4.1 in /programs/sbf by @dependabot[bot] in #16298
- Revert "deps: bump webpki crates for RUSTSEC-2026-0381/0382/0383 (#16234)" by @cfkelly18 in #16319
- deps: bump rustls-webpki to 0.103.16 for RUSTSEC-2026-0382 by @cfkelly18 in #16320
- svm: remove define_ltds_fee_only_semantics feature by @2501babe in #16305
- cli: bound --experimental-replay-arenas to replay threads + 1 by @alessandrod in #16323
- deps: re-apply webpki crate bumps (#16234) by @cfkelly18 in #16321
- svm, sbf tests: construct accounts with their data by @kskalski in #16318
- ci: run shellcheck from our ci image by @yihau in #16300
- system: encode / decode instructions with wincode by @kskalski in #16326
- vote: decode / encode instructions with wincode by @kskalski in #16185
- validator: validate shrink and zstd level args at parse time by @efagerho in #16257
- ci: request an agent with host kernel for xdp tests by @levsha in #16290
- chore(dep): bump ctutils from 0.4.0 to 0.4.4 by @yihau in #16340
- feature cleanup: SIMD-0490 by @buffalojoec in #16325
- SIMD-0683: Pass ABIv1 input metadata via registers r3–r5 by @febo in #16025
- runtime: enable all features for tests by @2501babe in #16327
- solana-sbpf: 0.25.0 -> 0.26.0 by @nagisa in #16341
- genesis, runtime, ledger-tool, core: construct accounts with their data by @kskalski in #16324
- chore(deps): update solana transaction deps by @yihau in #16291
- Change add Root to use a bank by @roryharr in #16262
- chore(deps): bump agave-event-system from 0.3.0 to 0.3.1 by @dependabot[bot] in #16332
- Converts large append vecs to split files at startup from a snapshot archive by @brooksprumo in #16314
- accounts-db: create_store() may create SplitFile by @brooksprumo in #16353
- gossip/AG: stop propagating
LowestSlotand using to select repair peers by @gregcusack in #16264 - ledger-tool: Deprecates creating minimized snapshots by @brooksprumo in #16253
- transaction-status: Route token account lookups through a checked helper by @gitteri in #14261
- remove cargo-build-sbf installation by @datasalaryman in #15415
- accounts-db: construct test accounts with their data by @kskalski in #16339
- ci: ignore RUSTSEC-2026-0387 (crypto-bigint) by @nbelenkov in #16368
- SIMD504: shred: add ErasureBatch::check_fec_set by @alexpyattaev in #16226
- ledger-tool: remove legacy block production simulator by @AshwinSekar in #16241
- SIMD504: blockstore: split shred recovery into rebuilding, filtering and collecting the FEC set by @alexpyattaev in #16225
- deps: Bump ctutils to 0.4.6 (RUSTSEC-2026-0385) by @kskalski in #16380
- vote_reward: build vote accounts from a padded vote state encoding by @kskalski in #16381
- chore(deps): bump solana-define-syscall from 5.2.0 to 5.3.0 by @dependabot[bot] in #16295
- chore(deps): bump libc from 0.2.190 to 0.2.191 by @dependabot[bot] in #16385
- BlockHeaderV1 uses BlockId instead of Hash by @akhi3030 in #16038
- ci: escape tag values in benchmark upload by @mircea-c in #16352
- chore(dep): bump zstd from 0.14.0 to 0.14.3 by @yihau in #16391
- Bump version to 4.5.0-alpha.3 by @agave-version-bumper[bot] in #16402
- feat(cli): replace mainnet-beta moniker with mainnet by @amilz in #16307
- chore(deps): bump agave-scheduler-bindings and agave-scheduler-handshake by @apfitzge in #16365
- Fix -
dev-depedenciescycle of #15818 by @Lichtso in #16405 - Bump version to 4.5.0-alpha.4 by @agave-version-bumper[bot] in #16409
New Contributors
- @satyam455 made their first contribution in #15889
- @vkomenda made their first contribution in #15035
- @kutluhaneth46 made their first contribution in #15987
- @lizhang-jito made their first contribution in #16302
- @datasalaryman made their first contribution in #15415
Full Changelog: v4.5.0-alpha.2...v4.5.0-alpha.4