Releases: solana-rpc/shipstern
Release list
v0.8.0
Project renamed to Shipstern
This is the first release under the Shipstern name (#279). All crates are now published on crates.io under the shipstern prefix at version 0.8.0:
shipstern, shipstern-core, shipstern-proto, shipstern-proc-macro, shipstern-parser, shipstern-mock, shipstern-stream, shipstern-bpf-loader-parser, shipstern-spl-token-parser, shipstern-spl-token-extensions-parser, shipstern-block-meta-parser, shipstern-slot-parser, shipstern-stake-pool-parser, shipstern-solana-rpc-source, shipstern-yellowstone-grpc-source, shipstern-yellowstone-fumarole-source, shipstern-solana-snapshot-source, shipstern-jetstream-source, shipstern-block-coordinator.
Changes since v0.7.0
- feat(jetstreamer-source): bump jetstreamer 0.5 -> 0.7 and expose reverse (#285)
- fix(jetstreamer-source): populate
Reward::commission_bps(#293) - fix(jetstreamer-source): bound the sequential ripget window so replays cannot hang (#284)
- fix(kafka-sink): dispatch account updates only to their owner parser (#283)
- fix(config): don't crash on startup when buffer omits sources channel size (#282)
- chore(ci): unbreak the advisories gate (#288)
What's Changed
- fix(config): don't crash on startup when [buffer] omits sources-chann… by @senzenn in #282
- fix(kafka-sink): dispatch account updates only to their owner parser by @the-orex in #283
- fix(jetstreamer-source): bound the sequential ripget window so replays cannot hang by @senzenn in #284
- feat(jetstreamer-source): bump jetstreamer 0.5 -> 0.7 and expose reverse by @senzenn in #285
- chore(ci) unbreak the advisories gate by @senzenn in #288
- fix(jetstreamer-source): populate Reward::commission_bps by @senzenn in #293
- Rename to Shipstern by @kespinola in #279
Full Changelog: v0.7.0...v0.8.0
v0.7.0
🚀 Yellowstone Vixen v0.7.0
⭐ Highlights
- Major Jetstreamer upgrade to v0.5 with improved metrics, block rewards, entries, and graceful shutdown
- Automatic Yellowstone gRPC reconnection and replay support enabled by default
- More robust block coordination with better handling of skipped leaders, late slots, and historical backfill
- Migration to codama-rs events with broad parser improvements and expanded program compatibility
- New
InstructionUpdate::direct_log_messages()and flat instruction indexing - Added support for pToken instructions
- Runtime buffer rewritten for improved shutdown behavior and bounded concurrency
- Conditional serde derives via feature flags
📡 More Reliable Data Sources
Jetstreamer Source
The Jetstreamer source has been upgraded to Jetstreamer 0.5, bringing Yellowstone Vixen in line with upstream Anza releases while improving observability and data completeness.
Historical replay now correctly forwards:
- per-account block rewards
- block entries
- shutdown signals
- standardized ingestion statistics via Jetstreamer's
StatsTracking
An issue where a poisoned entry buffer mutex could panic the process has also been fixed and now surfaces as a normal error.
Yellowstone gRPC
Yellowstone gRPC has been upgraded to the latest client libraries, adding built-in reconnect support.
Automatic reconnect is now enabled by default using a production-oriented retry policy with exponential backoff. When paired with servers configured for replay_stored_slots, Vixen can transparently recover from temporary network interruptions without missing streamed data.
New configuration options include:
auto_reconnectreconnect_max_retriesreconnect_slot_retention
🧱 Improved Block Coordination
The block coordinator has been significantly improved to better match real Solana slot behavior.
Enhancements include:
- Correct handling of skipped leader slots during historical replay
- Better buffer draining during backfill
- Support for late-arriving records from previously discarded slots
- Improved memory allocation defaults and scan error handling
These changes make historical synchronization and long-running ingestion pipelines considerably more robust.
⚡ Runtime Improvements
The Vixen runtime buffer has been rewritten to replace the previous Topograph executor with a native crossbeam-channel worker pool.
Benefits include:
- bounded outstanding work
- more predictable concurrency
- cleaner shutdown behavior
- in-flight handlers complete during shutdown (up to 30 seconds)
- queued work is discarded only during signal-triggered shutdown
- permanently stalled handlers no longer block application shutdown indefinitely
The public Buffer API remains unchanged.
🧬 Parser & IDL Improvements
The proc-macro system now uses codama-rs events, bringing a large number of correctness improvements across generated parsers.
Highlights include:
- SPL Governance support
- improved handling of empty event arguments
- duplicated account names
- IDLs without instructions
- alias ordering
- map parsing
- Kafka parser error reporting
- correct program event assignment
- fee payer extraction
- reliable
write_versionsupport for account updates (Laserstream) - updated Rustls dependencies addressing multiple published security advisories
A generated code name conflict involving instruction arguments has also been resolved.
🔍 Parser Updates
This release adds parser support for:
- pToken instructions
⚙️ Core Improvements
Several APIs have been added to simplify downstream processing.
New additions include:
InstructionUpdate::direct_log_messages()for retrieving only the log messages emitted directly by an instruction- a flat instruction index alongside the existing call-tree path, making it easier to build Kafka headers and other downstream integrations
Serde derive traits are now enabled only when the serde feature is active, reducing unnecessary compile-time dependencies.
📦 Protocol Updates
Vixen has been updated to the latest Yellowstone gRPC protocol definitions.
New supported fields include:
cuckoo_accounts_filtertoken_accountscuckoo_account_includeReward::commission_bps
These fields default safely, preserving compatibility with existing configurations.
⚠️ Breaking Changes
Most users will not need to modify configuration files, as all newly added fields provide serde and CLI defaults.
Projects that construct configuration structs directly must update:
JetstreamSourceConfig
New fields:
sequential: boolbuffer_window_bytes: Option<u64>
YellowstoneGrpcConfig
New fields:
auto_reconnectreconnect_max_retriesreconnect_slot_retention
🛠 Miscellaneous
Additional improvements include:
- restored crate dependencies for test crates
- improved unit test coverage
- documentation fixes
- typo corrections
- improved coordinator documentation
Thank you to everyone who contributed fixes, testing, and feedback for this release. Yellowstone Vixen continues to focus on building the most reliable, production-ready Solana data ingestion framework for high-performance indexing and analytics.
v0.6.1
🚀 Yellowstone Vixen v0.6.1 — Release Notes
⭐ Highlights
- Introduced block-coordinator for complete and ordered slot processing
- Added Kafka sink with ordering and delivery guarantees
- Upgraded proc-macro + IDL system with optional proto compatibility
- Expanded stream capabilities and filtering model
- Reworked snapshot ingestion pipeline with backpressure support
- Added BPF loader parser and improved SPL parsing
- Improved observability, error handling, and concurrency
🧱 Block Coordinator
New crate: yellowstone-vixen-block-coordinator
Summary
Combines Yellowstone gRPC stream with block engine data to construct complete blocks and emit fully ordered slot data.
Key Changes
- Transactional slot processing (#230)
- Handling incomplete slots (#233)
- Include failed transactions to avoid pipeline stalls (#200)
- Enforce
Processedcommitment (#199)
📡 Stream Enhancements
Crate: yellowstone-vixen-stream
Improvements
- Multiple program subscriptions (#160)
- Consolidated filters into a single subscription (#192)
- Added
failedfield toTransactionPrefilter(#191)
🧬 Proc-Macro + IDL System
Crate: yellowstone-vixen-proc-macro
Enhancements
- Generated IDLs now support optional Protobuf compatibility via
protofeature (#212) - Proc-macro for generating parsers from Codama IDL (#161)
- Generated IDLs made public (#183)
- Protobuf compatibility for transactions and accounts (#197)
Improvements
- Support for
remaining_accounts(#207) - Support for nested vectors (#241)
- Program event proc-macro (#236)
- Accounts and args made non-optional (#213, #214)
- Improved developer experience (#217)
🧵 Kafka Sink
New crate: yellowstone-vixen-kafka-sink
Features
- Ordered publishing aligned with block-coordinator (#202)
- SASL SCRAM-SHA-256 with TLS support (#225)
- Configurable compression (default: zstd) (#227)
- Public API soft-gated for account builder/parser (#211)
📦 Snapshot Pipeline
Changes
- Reworked snapshot source (#165)
- Introduced bounded channels for backpressure (#162)
- Fixed filter preflight issues (#156)
- Exposed
SolanaSnapshotConfig(#154)
🔌 Data Sources
Jetstream Source
- Added
yellowstone-vixen-jetstream-sourcecrate (#170) - Optimized ingestion pipeline (#237)
- Initial implementation reverted and reintroduced (#163, #166)
🔍 Parsers
Additions
- BPF loader parser (#208)
Improvements
- SPL Token 2022 extensions (#159)
- Use
unpack_from_slicefor safer parsing (#155) - Parse only relevant program accounts (#239)
Fixes
⚙️ Pipeline & Concurrency
- Bounded channels for flow control (#162)
- Refactor consumption using
fume(#178) - Deterministic Kafka publishing (#202)
📊 Observability & Errors
🌐 Yellowstone gRPC Source
Crate: yellowstone-vixen-yellowstone-grpc-source
Improvements
🛠 Build & Tooling
- Workspace dependency unification (#131)
- Standardized Rust edition (#137)
- CI improvements and test execution (#195, #240)
- Nightly toolchain pinning (#206)
- Fixed missing system dependencies (#194)
New Contributors
- @lvboudre made their first contribution in #131
- @Kym0211 made their first contribution in #137
- @nooma-42 made their first contribution in #139
- @raunit-dev made their first contribution in #143
- @CanardMandarin made their first contribution in #147
- @vladdoster made their first contribution in #153
- @senzenn made their first contribution in #163
- @grooviegermanikus made their first contribution in #169
- @RedaRahmani made their first contribution in #177
- @hack-wrench made their first contribution in #183
- @kino-andrew made their first contribution in #190
- @the-orex made their first contribution in #203
🔗 Full Changelog
v0.5.0
Added
- Exposed transaction included and required accounts using
FilterPipeline(#104 by @fernandodeluret) - Added Stake Pool Program parser (#87 by @aoikurokawa)
- Exposed transaction message header to shared data (#121 by @fernandodeluret)
- Added fumarole
Source(#111 by @fernandodeluret) - Added support for all accounts fetching with empty filter (#124 by @fernandodeluret)
- Added block subscriber to Vixen (#126 by @Nagaprasadvr)
- Updated Vixen metrics to receive prometheus register (#118 by @fernandodeluret)
- Documentation and example updates for 0.5 release (#125 by @kespinola)
Changed
- Updated Raydium CPMM and Launchpad to latest program version (#122 by @fernandodeluret)
- Updated the discriminator tracing log to debug formatting (#113 by @fernandodeluret)
- Updated contribution guide (#123 by @moses7054)
Fixed
- Return runtime error on stream error (#112 by @fernandodeluret)
- Fixed import typo in README.md (#117 by @riprsa)
- Fixed various bugs in block subscriber and related features (#126 by @Nagaprasadvr
v0.4.0
Changes
Added
- Added Meteora Pools Program parser by @sonicfromnewyoke in #78
- Added Meteora Dynamic Bonding Curve Program parser by @sonicfromnewyoke in #77
- Added Boop Program parser by @sonicfromnewyoke in #76
- Added Raydium Launchpad Program parser by @sonicfromnewyoke in #75
- Added Virtuals Program parser by @sonicfromnewyoke in #74
- Added supported programs list & missing IDLs in parsers by @sonicfromnewyoke in #80
- Added Meteora Vault Program parser by @sonicfromnewyoke in #82
- Added codama-parser-generation md file by @fernandodeluret in #89
- Added Multiple Sources by @kespinola in #96
Changed
- Removed Localset logic and improved Vixen Runtime docs by @fernandodeluret in #85
- Updated codama-parser-generation.md by @XieJunhua in #93
- Bumped yellowstone and exposed from_slot filter by @fernandodeluret in #91
- Updated parsers with the latest codama features by @fernandodeluret in #88
- Exposed tx_sig & slot to raydium handler by @fernandodeluret in #99
- Updated RaydiumAmmV4 parser to handle optional accounts by @fernandodeluret in #98
- Updated Vixen parsers with last Codama updates by @fernandodeluret in #105
Fixed
- Fixed protobuf vulnerability (RUSTSEC-2024-0437) by @aoikurokawa in #81
- Updated example in README by @quangkeu95 in #79
Removed
- Removed old raydium parser from parser crate by @fernandodeluret in #94
New Contributors
- @quangkeu95 made their first contribution in #79
- @sonicfromnewyoke made their first contribution in #78
- @aoikurokawa made their first contribution in #81
- @XieJunhua made their first contribution in #93
Full Changelog: v0.3.0...v0.4.0
v0.3.0
v0.2.0
Changelog
All notable changes to this project will be documented in this file.
This project follows Keep a Changelog
and adheres to Semantic Versioning.
0.2.0 - 2025-04-03
Added
- Set commitment level on grpc subscription (#58)
Changed
- Make
AccountKeysget method public (#60)