Skip to content

Releases: solana-rpc/shipstern

v0.8.0

Choose a tag to compare

@kespinola kespinola released this 25 Aug 10:43
4945b20

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

Choose a tag to compare

@kespinola kespinola released this 26 Jul 05:41

🚀 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_reconnect
  • reconnect_max_retries
  • reconnect_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_version support 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_filter
  • token_accounts
  • cuckoo_account_include
  • Reward::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: bool
  • buffer_window_bytes: Option<u64>

YellowstoneGrpcConfig

New fields:

  • auto_reconnect
  • reconnect_max_retries
  • reconnect_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

Choose a tag to compare

@kespinola kespinola released this 30 Mar 06:05

🚀 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 Processed commitment (#199)

📡 Stream Enhancements

Crate: yellowstone-vixen-stream

Improvements

  • Multiple program subscriptions (#160)
  • Consolidated filters into a single subscription (#192)
  • Added failed field to TransactionPrefilter (#191)

🧬 Proc-Macro + IDL System

Crate: yellowstone-vixen-proc-macro

Enhancements

  • Generated IDLs now support optional Protobuf compatibility via proto feature (#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-source crate (#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_slice for safer parsing (#155)
  • Parse only relevant program accounts (#239)

Fixes

  • Panic fixes in SPL parsing (#171, #175)

⚙️ Pipeline & Concurrency

  • Bounded channels for flow control (#162)
  • Refactor consumption using fume (#178)
  • Deterministic Kafka publishing (#202)

📊 Observability & Errors

  • Added tracing spans (#143)
  • Improved error handling (#215)
  • Suppressed decode warnings (#232)

🌐 Yellowstone gRPC Source

Crate: yellowstone-vixen-yellowstone-grpc-source

Improvements

  • Fixed filter merge semantics to use union behavior (#177)
  • Improved gRPC error propagation (#190)

🛠 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


🔗 Full Changelog

v0.5.0...v0.6.1

v0.5.0

Choose a tag to compare

@kespinola kespinola released this 15 Sep 16:22

Added

Changed

Fixed

v0.4.0

Choose a tag to compare

@kespinola kespinola released this 24 Jul 05:34

Changes

Added

Changed

Fixed

Removed

New Contributors

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@kespinola kespinola released this 06 May 13:07

Added

  • Added Kamino Limit Orders parser (#72)
  • Added new set of pasers: (#70)
    • meteora-amm
    • moonshot
    • orca-whirlpool
    • pump-swaps
    • raydium-amm-v4
    • raydium-clmm
    • raydium-cpmm
  • Jupiter Swaps Parser (#69)
  • Meteora parser (#65)
  • Pump Fun parser (#66)
  • Subscribe to block_meta (#67)

Changed

  • Remove feature orca from yellowstone-vixen-parser moved parser to dedicated crate yellowstone-vixen-orca-whirlpool-parser
  • Update raydium-amm-v4 discriminators strategy (#73)
  • Proto generation with Codama (#68)

v0.2.0

Choose a tag to compare

@kespinola kespinola released this 03 Apr 18:02

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 AccountKeys get method public (#60)