Skip to content

@subsquid/ponder 0.17.3-sqd.1

Choose a tag to compare

@dzhelezov dzhelezov released this 30 Jul 11:46
440f950

@subsquid/ponder@0.17.3-sqd.1

ponder@0.17.3 + the SQD Portal backfill layer, drop-in (bin stays ponder). This is an upstream-parity release: 0.17.2 → 0.17.3 is a single upstream memory-retention bugfix, off-seam and grep-proven inert for the fork, so it is passively inherited with no Portal-layer change and no wiring change. It installs by default (--tag latest), superseding 0.17.2-sqd.1 (which now has no dist-tag — installable by exact version, npm i @subsquid/ponder@0.17.2-sqd.1).

Install: npm i @subsquid/ponder, or pin exact: npm i @subsquid/ponder@0.17.3-sqd.1.

What changed upstream — ponder@0.17.2 → 0.17.3

One upstream patch-level bugfix, passively inherited:

  • ponder-sh/ponder#2350 (@kyscott18, commit 80dd936) — fixes realtime sync retaining unfiltered block transactions in memory until finalization (upstream reports >10% live-indexing memory improvement). The entire source delta is one line in src/sync-realtime/index.ts's reconcileBlock async generator (~L1140): the yielded block's transactions array is repointed from the unfiltered set to the already-filtered top-level transactions array, so the unfiltered array is released for garbage collection.

src/sync-realtime/index.ts is one of the 12 wiring files, but the #2350 edit (~L1140) does not overlap the wiring patch's two hunks (the import block and the #23 filtered-logs shouldRequestLogs fallback, ~L308–347), so portal/wiring/0.17.3.patch — a verbatim copy of portal/wiring/0.17.2.patch (sha256-equal, same 12 files; the verbatim lineage now runs 0.17.0 → 0.17.1 → 0.17.2 → 0.17.3) — applies with zero rejects.

Grep-proven inert for the fork. The swap changes what a yielded realtime event's block.transactions contains (unfiltered → filtered), but nothing in the fork reads it: .block.transactions is referenced zero times in the Portal layer (portal/*.ts) and in the wiring patch. Realtime transactions are persisted from the top-level transactions field (filtered, identical logic in 0.17.2 and 0.17.3), and the #27 access_list path maps from the top-level Portal transactions, never from block.transactions. So the change persists and emits no different data on either the RPC or Portal /stream path — it only frees memory. The graft seam (HistoricalSync.syncBlockRangeData / syncBlockData, interval-scoped) is unchanged; 0.17.3 touches only src/sync-realtime/index.ts.

Compatibility

  • Built + tested against ponder@0.17.3: scripts/sync-upstream.sh 0.17.3 --test — patch applies clean (all 12 files "Applied … cleanly"), tsc builds, 408 tests / 23 files green; both-version confirmed (the identical suite is also green on ponder@0.17.2). CI runs the fork-seam(0.17.3) job (in compat.tested).
  • No fresh RPC byte-diff is claimed on 0.17.3 — compatibility rests on seam identity + verbatim patch + the full suite, exactly as for 0.17.2-sqd.1. The §3 / §5 byte-diff and A/B soak evidence remains on the 0.16.6 graft and transfers by seam identity.
  • Seam verified identical across 0.15.170.17.3 (compat.tested in versions.json).