Skip to content

Releases: Lythaeon/sof

v0.18.2

10 Apr 22:34
f75fd2d

Choose a tag to compare

Additions

  • Added the new internal sof-support crate to centralize shared timing, parsing, retry, and bound-check helpers reused across runtime, provider, and transaction paths.
  • Added vendored helius-laserstream integration and shared transport helper plumbing so the provider-grpc feature set remains buildable and controlled on the 0.18.2 line.
  • Added follow-up regression and CI coverage for extension validation, derived-state persistence bounds, websocket replay/ack handling, publishable archive verification, and the fuzz-smoke matrix.

Improvements

  • Improved extension-host startup safety by rejecting impossible observer-ingress/shared/dead subscription combinations, invalid websocket resource URLs, zero or oversized read buffers, and zero startup or shutdown timeouts before runtime.
  • Improved derived-state persistence correctness by bounding checkpoint loads and writes plus replay-record writes so oversized persisted artifacts fail early instead of poisoning recovery.
  • Improved websocket, gRPC, and transaction transport robustness with non-zero timeout clamping, bounded request and response bodies, redirect rejection on hardened HTTP paths, bounded connect and subscription-ack waits, and reconnect-loop protection.
  • Improved internal runtime, ingest, repair, relay, verify, shred, and provider paths by reducing clone/setup churn, consolidating helper logic, and tightening invariants without changing the public feature surface.
  • Improved release verification by fixing publishable archive validation to include sof-support and keeping the fuzz-smoke matrix green after the FEC packet ownership change.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, sof-solana-compat, and sof-support to 0.18.2.
  • Refreshed the root workspace lockfile for the 0.18.2 release line.
  • Updated observer and sof-tx README dependency snippets plus affected install/docs references for 0.18.2.
  • Updated the architecture/runtime-extension docs touched by the hardening work.

Notes

  • v0.18.2 is a patch release on top of v0.18.1 focused on production hardening, invariant tightening, internal cleanup, and release readiness rather than new user-facing features.
  • Compared with v0.18.1, this release introduces exactly:
    • startup-time validation for invalid extension and resource configs that previously failed late or silently dropped work
    • bounded derived-state persistence and replay edges
    • stricter websocket, gRPC, and HTTP transport timeout, body-limit, and redirect handling
    • shared internal support helpers plus provider transport cleanup through the new sof-support crate and vendored LaserStream integration
    • follow-up release verification fixes for publishable archives and fuzz-smoke CI
  • Important behavior callouts in this release:
    • this release does not add new public SOF runtime APIs or new feature families
    • invalid extension or provider configs that were previously accepted may now fail immediately at startup
    • zero-valued timeout configs across hardened paths are clamped to safe non-zero behavior instead of being allowed to stall or spin
    • remaining cargo audit findings are still upstream in the Solana/Agave dependency chain and were not introduced by this release
  • Validation across the released work included:
    • cargo make ci
    • bash scripts/verify-publishable-archives.sh
    • cargo make fuzz-smoke
    • cargo audit --quiet

v0.18.1

30 Mar 16:46
76ff41b

Choose a tag to compare

Additions

  • Added support for the latest stable Solana/Agave 3.1.x patch line by uplifting the workspace dependency set from 3.1.8 to 3.1.11.
  • Added the next maintained vendored gossip fork release as sof-solana-gossip@3.1.11-sof.9, carrying the SOF-specific fork forward on top of the upstream 3.1.11 line instead of dropping local patches.

Improvements

  • Improved dependency alignment across sof, sof-tx, and the vendored gossip backend so the workspace now builds against the current stable 3.1.11 Solana/Agave line.
  • Improved release consistency by refreshing both workspace lockfiles for the 3.1.11 uplift.
  • Improved release-facing docs and install guidance so dependency snippets and stable-line references now reflect 0.18.1 and the 3.1.11 patch line.
  • Improved confidence in the dependency uplift by running the full cargo make ci matrix after the upgrade, including format, architecture checks, clippy, and both nextest matrices.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat from 0.18.0 to 0.18.1.
  • Refreshed the root workspace lockfile and the vendored gossip lockfile for the 0.18.1 release line.
  • Updated observer and sof-tx README dependency snippets for 0.18.1.
  • Updated GitBook crate/install/common-question docs to reflect the 0.18.1 release and Solana 3.1.11 stable line.

Notes

  • v0.18.1 is a patch release on top of v0.18.0 focused on the stable Solana/Agave dependency uplift and release prep.
  • Compared with v0.18.0, this release introduces exactly:
    • the workspace-wide Solana/Agave uplift from 3.1.8 to 3.1.11
    • the vendored gossip fork carry-forward to 3.1.11-sof.9
    • the 0.18.1 crate version bump and lockfile refresh
    • the follow-up README and GitBook updates for the new stable line
  • Important behavior callouts in this release:
    • this release does not introduce new SOF runtime APIs or new derived-state/event families
    • the vendored gossip fork remains in place and was not replaced with upstream solana-gossip
    • the 4.x beta Solana line is intentionally deferred to a later branch
  • Validation across the released work included:
    • cargo check -p sof --all-features
    • cargo check -p sof-tx --all-features
    • cargo make ci
    • cargo make ci passed end-to-end, including cargo fmt --check --all, scripts/arch-check.sh, workspace clippy with --all-features, workspace clippy with --no-default-features, workspace nextest default matrix, and workspace nextest all-features matrix

v0.18.0

30 Mar 09:02
ae5e9b3

Choose a tag to compare

Additions

  • Added replayable rooted provider-account derived-state support through RootedAccountObserved for finalized account updates.
  • Added replayable finalized epoch-transition support through EpochBoundaryObserved, derived from finalized slot progression.
  • Added public re-exports for the new derived-state event surface so downstream sof-tx integrations can consume the new feed families directly.
  • Added targeted regression coverage for rooted-account routing, provider default commitments, finalized-slot conflict tracking, and restart replay ordering.

Improvements

  • Improved rooted-authoritative derived-state behavior by preserving current runtime watermarks on rooted account events instead of backdating tip/process watermarks to account write slots.
  • Improved built-in provider defaults so websocket account/program subscriptions and Yellowstone / LaserStream account feeds now default to finalized commitment unless explicitly overridden.
  • Improved control-plane conflict detection by counting finalized-slot regressions, not just finalized-epoch regressions.
  • Improved restart/replay coverage by retaining and asserting exact replay order for rooted-account and epoch-boundary events across restart recovery.
  • Improved docs around provider ingest and derived-state boundaries by documenting the new feed families, finalized-default account-feed behavior, and the updated ingest surface matrix.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.18.0.
  • Refreshed the root workspace lockfile for the 0.18.0 release line.
  • Updated observer and sof-tx README dependency snippets and release-facing guidance for 0.18.0.
  • Updated GitBook crate pages, install docs, and the derived-state feed contract doc to reflect the new rooted/event surface.

Notes

  • v0.18.0 is a feature release for rooted provider-backed derived state and finalized epoch-boundary replay.
  • Compared with v0.17.3, this release introduces exactly:
    • replayable rooted provider-account observations
    • replayable finalized epoch-boundary notifications
    • safer built-in account-feed defaults for rooted-authoritative consumers
    • the follow-up audit fixes for watermarks, control-plane conflict detection, replay ordering, and strict-policy/default-config alignment
    • the 0.18.0 release prep and docs refresh
  • Important behavior callouts in this release:
    • built-in websocket account/program and Yellowstone / LaserStream account feeds now default to finalized commitment
    • explicit processed or confirmed account-feed configs still work when callers set commitment deliberately
    • RootedAccountObserved only emits from finalized account updates
    • EpochBoundaryObserved is derived from finalized slot progression, not from vote/stake-derived schedule authority
  • Local validation across the released work included:
    • cargo fmt --all
    • cargo test -p sof yellowstone_account_stream_defaults_to_finalized_commitment --features provider-grpc --quiet
    • cargo test -p sof yellowstone_account_stream_preserves_explicit_processed_commitment --features provider-grpc --quiet
    • cargo test -p sof laserstream_account_stream_defaults_to_finalized_commitment --features provider-grpc --quiet
    • cargo test -p sof laserstream_account_stream_preserves_explicit_processed_commitment --features provider-grpc --quiet
    • cargo test -p sof provider_stream_strict_policy_allows_transaction_status_block_meta_and_rooted_account_derived_state --features provider-websocket,provider-grpc --quiet
    • cargo test -p sof derived_state_runtime_restart_replays_retained_tail_from_disk --features kernel-bypass --quiet
    • cargo test -p sof-tx --features sof-adapters --quiet
    • cargo clippy -p sof --tests -- -D warnings -D clippy::wildcard_enum_match_arm
    • local Agave 3.1.10 + Yellowstone 12.2.0+solana.3.1.10 validation for provider connectivity and SOF Yellowstone example startup

v0.17.3

29 Mar 23:38
48d4ed4

Choose a tag to compare

Additions

  • Added packaged mixed-runtime support for built-in processed provider ingress together with gossip-derived cluster topology.
  • Added topology-only sof-tx adapter support so direct routing can consume gossip topology without falsely requiring leader schedule.
  • Added targeted regression coverage for mixed provider-ingress + gossip topology runtime behavior.

Improvements

  • Improved packaged runtime behavior so built-in websocket / Yellowstone / LaserStream transaction ingress can now coexist with gossip bootstrap for on_cluster_topology consumers.
  • Improved capability validation by keeping packaged mixed mode honest:
    • on_cluster_topology is allowed when gossip supplies topology
    • on_leader_schedule and on_reorg remain rejected in this packaged mixed mode
  • Improved gossip control-plane bootstrap behavior with the follow-up fixes included on this release line:
    • peer-only control-plane bootstrap acceptance without packet ingress
    • early stabilization for control-plane-only mode
    • explicit min-peer override handling in control-plane-only mode
  • Improved docs around mixed sof + sof-tx deployments by clarifying that:
    • built-in processed ingress can pair with gossip topology in the packaged runtime
    • this packaged mixed mode is topology-only, not a full gossip-derived leader-schedule mode
    • provider-stream transactions can keep recent blockhash fresh while gossip remains the topology/control-plane source

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.17.3.
  • Bumped vendored sof-solana-gossip from 3.1.8-sof.7 to 3.1.8-sof.8.
  • Refreshed the root workspace lockfile plus the sof-tx and sof-gossip-tuning fuzz lockfiles for the 0.17.3 release line.
  • Updated top-level, observer, and sof-tx README dependency and control-plane guidance for 0.17.3.
  • Updated GitBook crate pages, control-plane recipes, and install docs to document the packaged provider-ingress + gossip-topology model.

Notes

  • v0.17.3 is a focused patch release for mixed provider-ingress and gossip control-plane topology compatibility.
  • Compared with v0.17.2, this release introduces exactly:
    • packaged built-in provider ingress + gossip topology runtime support
    • topology-only sof-tx adapter behavior for direct routing
    • the follow-up audit fixes needed to keep control-plane-only bootstrap fast, correct, and operator-configurable
    • the 0.17.3 release prep and the sof-solana-gossip bump to 3.1.8-sof.8
  • Important behavior callouts in this release:
    • built-in websocket / Yellowstone / LaserStream transaction ingress can now coexist with gossip-derived on_cluster_topology
    • this packaged mixed mode still does not claim gossip-derived on_leader_schedule
    • if you want richer custom mixed control-plane behavior, ProviderStreamMode::Generic remains the escape hatch
  • Local validation across the released work included:
    • cargo fmt --all
    • cargo test -p sof --lib control_plane_only_bootstrap_accepts_peer_discovery_without_packets --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib control_plane_only_stabilization_returns_on_peer_discovery_without_packets --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib full_gossip_bootstrap_still_requires_packets_for_peer_discovery_fallback --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib control_plane_only_bootstrap_respects_explicit_min_peers_override --features gossip-bootstrap -- --nocapture
    • cargo check -p sof --all-features
    • cargo check --manifest-path crates/sof-tx/fuzz/Cargo.toml
    • cargo check --manifest-path crates/sof-gossip-tuning/fuzz/Cargo.toml
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo make ci

v0.17.2

29 Mar 21:03
2e44048

Choose a tag to compare

Additions

  • Added a true gossip runtime posture for control-plane-only deployments:
    • SOF_GOSSIP_RUNTIME_MODE=control_plane_only
    • RuntimeSetup::with_gossip_runtime_mode(GossipRuntimeMode::ControlPlaneOnly)
  • Added typed GossipRuntimeMode support with:
    • Full
    • BootstrapOnly
    • ControlPlaneOnly
  • Added targeted bootstrap/stabilization coverage for the new gossip mode, including:
    • peer-only bootstrap acceptance without packet ingress
    • early control-plane stabilization on peer discovery
    • explicit min-peer override handling in control-plane-only mode

Improvements

  • Improved gossip bootstrap behavior so control-plane-only mode no longer starts gossip-backed shred receivers or repair client state.
  • Improved runtime behavior by disabling gossip-backed shred ingest, relay, repair, and runtime switching in control-plane-only mode.
  • Improved startup behavior so control-plane-only bootstrap can accept peer discovery directly instead of waiting on packet flow that never starts in that mode.
  • Improved operator control by respecting explicit SOF_GOSSIP_BOOTSTRAP_STABILIZE_MIN_PEERS overrides in control-plane-only mode while keeping a low default of 1 when unset.
  • Improved docs around mixed sof + sof-tx setups by clarifying that:
    • provider-stream transactions can already keep recent blockhash fresh
    • gossip full or control_plane_only remains the control-plane source for direct leader routing
    • mixed provider-blockhash + gossip-topology setups are a custom embedding pattern, not yet one packaged built-in mixed-runtime mode
  • Improved docs by clarifying that SOF_LIVE_SHREDS_ENABLED=false is not the same thing as SOF_GOSSIP_RUNTIME_MODE=control_plane_only.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.17.2.
  • Refreshed the root workspace lockfile plus the sof-tx and sof-gossip-tuning fuzz lockfiles for the 0.17.2 release line.
  • Updated top-level, observer, and sof-tx README dependency and operations guidance for 0.17.2.
  • Updated GitBook knob registry, relay/repair traffic docs, crate pages, and common recipes to document the new gossip runtime mode and its control-plane-only semantics.

Notes

  • v0.17.2 is a focused patch release for gossip/runtime control-plane ergonomics and correctness.
  • Compared with v0.17.1, this release introduces exactly:
    • the new control_plane_only gossip runtime mode
    • typed runtime setup support for that mode
    • the follow-up audit fixes needed to make peer-only control-plane bootstrap fast and correct
    • the docs updates describing how gossip control-plane-only works with sof-tx and provider-stream blockhash sourcing
  • Important behavior callouts in this release:
    • control_plane_only keeps gossip-derived topology and leader state without gossip-backed shred ingest
    • relay, repair, and runtime switching are disabled in that mode
    • control-plane-only bootstrap accepts peer discovery without requiring packet ingress
    • explicit SOF_GOSSIP_BOOTSTRAP_STABILIZE_MIN_PEERS overrides are respected in that mode
  • Local validation across the released work included:
    • cargo fmt --all
    • cargo check -p sof --features gossip-bootstrap
    • cargo check --manifest-path crates/sof-tx/fuzz/Cargo.toml
    • cargo check --manifest-path crates/sof-gossip-tuning/fuzz/Cargo.toml
    • cargo test -p sof --lib control_plane_only_stabilization_returns_on_peer_discovery_without_packets --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib control_plane_only_bootstrap_accepts_peer_discovery_without_packets --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib control_plane_only_bootstrap_respects_explicit_min_peers_override --features gossip-bootstrap -- --nocapture
    • cargo test -p sof --lib full_gossip_bootstrap_keeps_workspace_default_min_peers --features gossip-bootstrap -- --nocapture
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo make ci

v0.17.1

29 Mar 19:51
27f7743

Choose a tag to compare

Additions

  • Added a publish-safe canonical all-at-once SOF submission example under sof-solana-compat:
    • crates/sof-solana-compat/examples/submit_all_at_once_with_sof.rs
  • Added explicit install/docs guidance that gossip-bootstrap no longer exact-pins the Solana 3.1.8 patch line, so downstream workspaces can resolve newer compatible 3.1.x releases.

Improvements

  • Improved crates.io publishability by removing the sof-tx <-> sof-solana-compat dev-dependency cycle that blocked the 0.17.0 dry-run/publish flow.
  • Improved gossip-bootstrap dependency behavior by relaxing the vendored sof-solana-gossip crate's exact =3.1.8 Solana/Agave pins to normal semver requirements.
  • Improved downstream compatibility so sof with gossip-bootstrap can now resolve onto newer compatible 3.1.x Solana patch lines instead of being forced onto 3.1.8.
  • Improved the vendored gossip publish line by bumping sof-solana-gossip from 3.1.8-sof.6 to 3.1.8-sof.7 for the non-pinning manifest.
  • Improved docs/example ownership by moving the all-at-once SOF example to the compat layer that actually owns TxBuilder and unsigned submit helpers.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.17.1.
  • Refreshed the root workspace lockfile plus the sof-tx and sof-gossip-tuning fuzz lockfiles for the 0.17.1 release line.
  • Updated top-level, observer, and sof-tx README dependency snippets for 0.17.1.
  • Updated GitBook install, common-questions, and crate pages to 0.17.1 and to reflect the relaxed gossip-bootstrap resolver contract.

Notes

  • v0.17.1 is a patch recovery release for the partially published v0.17.0 line.
  • Compared with v0.17.0, this release introduces exactly:
    • the publish-cycle fix between sof-tx and sof-solana-compat
    • the non-pinning sof-solana-gossip 3.1.8-sof.7 backend
    • the 0.17.1 workspace version bump, lockfile refresh, and docs updates needed for a clean republish
  • Important behavior callouts in this release:
    • enabling gossip-bootstrap no longer exact-pins downstream workspaces to Solana 3.1.8
    • the canonical all-at-once SOF submission example now lives in sof-solana-compat, not sof-tx
    • this release is intended to supersede the incomplete 0.17.0 publish state on crates.io
  • Local validation across the released work included:
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo make ci
    • cargo check --manifest-path crates/sof-tx/fuzz/Cargo.toml
    • cargo check --manifest-path crates/sof-gossip-tuning/fuzz/Cargo.toml
    • cargo check -p sof --features gossip-bootstrap
    • downstream resolver proof showing sof + gossip-bootstrap can resolve onto solana-net-utils v3.1.11 / solana-streamer v3.1.11

v0.17.0

29 Mar 14:53
40f7117

Choose a tag to compare

Additions

  • Added first-class multi-route submission to sof-tx with SubmitPlan, SubmitRoute, and SubmitStrategy, so callers can submit the same signed transaction across any configured combination of Rpc, Direct, and Jito routes instead of being constrained to a single mode enum.
  • Added SubmitPlan::all_at_once(...) and ordered plan support so sof-tx can explicitly express concurrent fanout and ordered route execution across arbitrary configured routes.
  • Added a canonical end-to-end sof-tx example for all-at-once submission with SOF integration:
    • crates/sof-tx/examples/submit_all_at_once_with_sof.rs
  • Added improved multi-route outcome visibility in sof-tx, including richer per-route outcomes and telemetry counters for external reporter pressure/unavailability.

Improvements

  • Improved sof-tx submit hot-path performance by trimming internal orchestration overhead, reusing shared tx buffers across routes, and avoiding unnecessary deserialization/parsing in the common submit paths.
  • Improved all-at-once route semantics so sof-tx now returns on first acceptance instead of waiting for the slowest configured route to finish.
  • Improved ordered direct-first behavior so optional RPC rebroadcast no longer extends direct-success return latency.
  • Improved all-at-once failure semantics so terminal failure selection is deterministic by configured route order when every configured route fails.
  • Improved external outcome reporting so slow or panicking reporters no longer sit on the synchronous submit hot path.
  • Improved reporter isolation by delivering outcomes through bounded per-reporter dispatch rather than letting one reporter or one noisy client interfere with unrelated reporter sinks.
  • Improved built-in telemetry so reporter drops/unavailability are machine-readable and later background accepts remain observable through the authoritative inline telemetry surface.
  • Improved user-facing ergonomics by allowing shared plugin registration from Arc<P> directly, removing the need for explicit Arc<dyn ObserverPlugin> casts in common setup code.
  • Improved sof-tx docs by consolidating duplicated setup prose, documenting all_at_once(...) as the preferred multi-route shape when multiple routes are intentionally configured, and explicitly calling out Jito minimum tip expectations for Jito-backed plans.
  • Improved fuzz compatibility by syncing the sof-gossip-tuning runtime-port fuzz target with the current RuntimeTuningPort trait.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.17.0.
  • Refreshed the root workspace lockfile plus the sof-tx and sof-gossip-tuning fuzz lockfiles for the 0.17.0 release line.
  • Updated top-level, observer, and sof-tx README dependency snippets for 0.17.0.
  • Updated GitBook install and crate pages to 0.17.0.
  • Updated sof-tx README and GitBook crate docs to describe the plan-based submit API, all-at-once usage, late background accept reporting, and reporter best-effort semantics.

Notes

  • v0.17.0 is the release that turns sof-tx from a mode-oriented sender API into a route-plan-oriented sender API while keeping the old mode helpers as compatibility presets.
  • Compared with v0.16.0, this release introduces exactly:
    • first-class sof-tx submit plans across Rpc, Direct, and Jito
    • canonical all-at-once usage and docs for combined route fanout
    • targeted submit hot-path reductions
    • hardening of all-at-once return semantics and late outcome reporting
    • improved shared-plugin registration ergonomics
    • the 0.17.0 workspace version bump, lockfile refresh, and fuzz-target contract sync
  • Important behavior callouts in this release:
    • SubmitPlan::all_at_once(...) returns on first acceptance rather than waiting for all routes to finish
    • later background accepts are intentionally best-effort through the external outcome reporter, while built-in telemetry remains the authoritative always-inline outcome surface
    • Jito-backed plans still need an appropriate tip configuration; the documented minimum floor is not a guarantee of competitiveness during congested periods
  • Local validation across the released work included:
    • cargo check -p sof --all-features
    • cargo check -p sof-tx --all-features
    • cargo check --manifest-path crates/sof-tx/fuzz/Cargo.toml
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo make ci

v0.16.0

29 Mar 01:39
57cb308

Choose a tag to compare

Additions

  • Added processed-provider derived-state support for TransactionStatus and BlockMeta so typed provider ingest can now feed those observed event families into derived-state consumers in addition to plugin hooks.
  • Added new derived-state consumer config knobs for these processed-provider observation feeds: with_transaction_status_observed() and with_block_meta_observed().
  • Added new derived-state feed events for processed-provider observation:
    • TransactionStatusObserved
    • BlockMetaObserved
  • Added runtime forwarding from ProviderStreamUpdate::TransactionStatus and ProviderStreamUpdate::BlockMeta into derived state when consumers opt in.

Improvements

  • Improved serialized-provider transaction accept performance by skipping an unnecessary borrowed SanitizedTransactionView parse when the accept path does not need recent-blockhash extraction or view-prefiltering.
  • Improved derived-state / provider capability validation so strict provider capability checks now also account for the new TransactionStatusObserved and BlockMetaObserved derived-state subscriptions.
  • Improved ingest documentation clarity by replacing repeated prose with a single ingest matrix that shows, per ingest family, which plugin hooks and derived-state events are emitted and which are not.
  • Improved sof-tx fuzz coverage compatibility by aligning the signature_deduper fuzz target with the current SignatureDeduper::check_and_insert(SignatureBytes, ...) API.
  • Improved local release validation hygiene for this branch with full local CI passing after the release bump and fuzz fix.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.16.0.
  • Refreshed the root workspace lockfile and the sof-tx fuzz lockfile for the 0.16.0 release line.
  • Updated top-level, observer, and sof-tx README dependency snippets for 0.16.0.
  • Updated GitBook install and crate pages to 0.16.0.
  • Updated the observer docs and GitBook crate docs to document the ingest matrix explicitly, including the difference between raw shreds, websocket processed-provider ingest, Yellowstone/LaserStream processed-provider ingest, and generic typed provider producers.

Notes

  • v0.16.0 extends the processed-provider derived-state surface rather than widening the raw-shred surface.
  • Compared with v0.15.0, this release introduces exactly:
    • derived-state support for processed-provider TransactionStatus and BlockMeta
    • stricter documentation of which ingest families emit which plugin and derived-state events
    • a targeted serialized-accept hot-path reduction
    • the 0.16.0 workspace version bump, lockfile refresh, and fuzz-target API alignment
  • Important behavior callouts in this release:
    • websocket processed-provider ingest still does not emit TransactionStatusObserved or BlockMetaObserved
    • built-in Yellowstone gRPC, built-in LaserStream, and custom generic typed providers can emit those processed-provider observed event families
    • raw shreds remain the source for the shred-native control-plane/runtime families and are not a substitute for processed-provider TransactionStatus / BlockMeta
  • Local validation across the released work included:
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo check --manifest-path crates/sof-tx/fuzz/Cargo.toml
    • TMPDIR=/home/ac/projects/sof/target/tmp-ci cargo make ci

v0.15.0

28 Mar 18:38
d72d26b

Choose a tag to compare

Additions

  • Added source-priority duplicate arbitration for processed-provider multi-source fan-in so overlapping websocket, Yellowstone gRPC, LaserStream, and generic provider feeds can be merged with explicit per-source policy instead of always emitting every duplicate.
  • Added per-source fan-in policy metadata to the processed-provider surface: ProviderSourceRole, ProviderSourceArbitrationMode, and explicit source priority.
  • Added additive source-policy config knobs across generic producers and built-in processed-provider configs: with_source_role(...), with_source_priority(...), and with_source_arbitration(...).
  • Added documented fastest-wins and promote-on-better-source behavior for same-type fan-in through FirstSeen and FirstSeenThenPromote, while keeping the old EmitAll behavior as the default.

Improvements

  • Improved provider-runtime replay dedupe and arbitration overhead by reusing provider-source Arcs already present on events and removing redundant hash-table probes on the hot path.
  • Improved derived-state transaction index reservation for provider ingest by replacing the concurrent skiplist-based per-slot index tracker with a simpler Mutex<HashMap<u64, u32>> structure that fits the actual usage pattern better.
  • Improved serialized-provider transaction accepts by reusing transaction-kind classification from the borrowed sanitized view instead of classifying the fully deserialized transaction again.
  • Improved the overall processed-provider hot path after the new fan-in/source-priority work with release-fixture validation showing:
    • dispatch: baseline_us=32102 optimized_us=3657
    • serialized accept: baseline_us=414302 optimized_us=347947
  • Improved docs coverage for overlapping multi-source fan-in so the crate docs and GitBook now explain when to use EmitAll, FirstSeen, and FirstSeenThenPromote.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.15.0.
  • Refreshed the root workspace lockfile and the sof-tx fuzz lockfile for the 0.15.0 release line.
  • Updated top-level, observer, and sof-tx README dependency snippets for 0.15.0.
  • Updated GitBook install and crate pages to 0.15.0.

Notes

  • v0.15.0 is the release that turns processed-provider multi-fan-in into a configurable arbitration surface instead of a merge-only surface.
  • Compared with v0.14.0, this release introduces exactly:
    • per-source role / priority / arbitration metadata for processed-provider fan-in
    • explicit duplicate-handling modes for overlapping same-type sources
    • runtime hot-path reductions targeted at the arbitration, derived-state reservation, and serialized-accept paths
    • the 0.15.0 workspace version bump and lockfile/doc refresh
  • Important tradeoffs called out explicitly in this release:
    • default behavior remains EmitAll for backward compatibility
    • FirstSeen is the right setting when you want fastest-source-wins without duplicate plugin dispatch
    • FirstSeenThenPromote keeps the fast path immediate but allows a later higher-priority overlapping source to emit a promotion
  • Local validation across the released work included:
    • cargo clippy -p sof --all-targets --features "provider-grpc provider-websocket" --no-deps -- -D warnings
    • cargo check -p sof --all-features
    • cargo check -p sof-tx --all-features
    • debug provider/runtime fixture reruns for dispatch, serialized ignore, and serialized accept
    • release fixture reruns for dispatch and serialized accept

v0.14.0

28 Mar 13:08
ea68512

Choose a tag to compare

Additions

  • Added multi-source processed-provider fan-in so multiple websocket and gRPC sources can feed one SOF runtime through ProviderStreamMode::Generic while preserving typed event delivery.
  • Added richer built-in processed-provider stream selection for Yellowstone gRPC, LaserStream gRPC, and websocket ingest so configs can target transactions, transaction status, accounts, block meta, slot status, logs, account subscriptions, and program subscriptions where supported.
  • Added new typed plugin/runtime event surfaces for processed-provider ingest: TransactionStatusEvent, AccountUpdateEvent, and BlockMetaEvent, plus the corresponding plugin opt-ins and hooks.
  • Added stable provider-source identity, readiness classing, and source-aware dedupe semantics so overlapping provider feeds can be tracked, combined, and validated cleanly.
  • Added explicit source reservation and fan-in lifecycle management for generic providers, including reserved sender support, bounded cleanup behavior, and duplicate-identity rejection.
  • Added direct multi-source examples and expanded provider examples so websocket, Yellowstone, LaserStream, and mixed-source setups are documented against the current runtime contract.

Improvements

  • Improved the processed-provider contract substantially: built-in configs now extend the existing API instead of replacing it, and the runtime/plugin system can ingest richer upstream data without fragmenting the plugin model.
  • Improved provider correctness with typed protocol/config errors, source-aware replay dedupe, stricter runtime capability checks, healthier readiness semantics, and hardened startup/shutdown/removal behavior across built-in and generic sources.
  • Improved provider observability so per-source health, readiness, removal, and degraded-state behavior remain visible even with multiple sources of the same kind.
  • Improved websocket and provider hot paths with profiling-backed changes only: websocket parse cost, runtime dispatch, Yellowstone conversion, LaserStream conversion, and transaction prefilter/classification all remained net-positive through the feature expansion.
  • Improved docs and examples so README/GitBook/docs.rs-facing guidance now matches the richer processed-provider surface that actually shipped.
  • Improved validation depth beyond the earlier provider work by proving end-to-end local Yellowstone and LaserStream transaction delivery against a rebuilt matching local Yellowstone plugin and real Helius websocket traffic.

Versioning / Docs

  • Bumped sof-gossip-tuning, sof, sof-tx, sof-types, and sof-solana-compat to 0.14.0.
  • Kept the vendored patched sof-solana-gossip crate at 3.1.8-sof.6.
  • Aligned intra-workspace dependency constraints so the published workspace crates consistently point at 0.14.0.
  • Updated top-level, observer, and sof-tx README dependency snippets for 0.14.0.
  • Updated GitBook install and crate pages to 0.14.0.

Notes

  • v0.14.0 is the release that turns the processed-provider surface from a transaction-first add-on into a typed, multi-source ingest model that still feeds the same SOF runtime, plugin host, and derived-state foundation.
  • Compared with v0.13.1, this release introduces exactly:
    • multi-source provider fan-in for mixed websocket / Yellowstone / LaserStream / generic processed-provider ingest
    • richer built-in stream selection across transactions, transaction status, accounts, block meta, slots, logs, and websocket account/program subscriptions
    • new plugin/runtime event surfaces for transaction status, account updates, and block meta
    • source-aware provider identity, readiness, dedupe, lifecycle cleanup, and observability hardening
    • expanded examples and documentation for the new processed-provider contract
    • additional provider/runtime hot-path tuning that remained net-positive on the validated fixtures
  • Important tradeoffs called out explicitly in this release:
    • built-in processed-provider surfaces now cover the high-value typed feeds, while broader custom control-plane composition still belongs to ProviderStreamMode::Generic
    • websocket durability remains best-effort where the upstream protocol has no replay cursor
    • source-aware readiness for generic custom producers still depends on those producers emitting typed provider health updates
  • Local and live validation across the released work included:
    • cargo make ci
    • local validator validation of Yellowstone and LaserStream end-to-end transaction delivery through a rebuilt matching Yellowstone plugin
    • live websocket smoke validation against a Helius endpoint
    • focused release-fixture A/B validation and symbolized profiling on the main provider/runtime hot paths
    • repeated provider/runtime audit passes for capability, replay, health, lifecycle, observability, and multi-source behavior