Note
This release was brought to you by the Shipyard team.
What's Changed
Added
ipld/merkledag/traverse: added theVisitedinterface andOptions.Visitedfield, so callers can plug in their own set for skipping duplicates whenSkipDuplicatesis on.*go-cid.Setalready works as one; a bounded or disk-backed set keeps memory low on very large DAGs.
Changed
- upgrade to
go-ipld-primev0.24.0 - upgrade to
polydawn/refmtv0.90.0 - upgrade to
go-car/v2v2.17.0 - upgrade to
go.opentelemetry.ioto v1.44.0(includes v1.43.0)
Fixed
routing/http/server:GET /routing/v1/ipns/{name}no longer gives a cache a window that outlasts the record. It capsmax-ageto the record's remaining validity and sizes the stale window (stale-while-revalidate/stale-if-error) to the time left after it, so the two never cross the record's EOL. An expired record, or one whoseValidityTypeis not EOL (unknown expiration), returnsCache-Control: no-store, and a negative TTL no longer yields a negativemax-age. #1166gateway: serving a raw IPNS record (GET /ipns/{name}?format=ipns-record) now capsmax-ageto the record's remaining validity and never lets it go negative, so a cache cannot reuse the record past its EOL. #1166namesys: the IPNS resolver now floors a negative record TTL at zero, so a malformed record can no longer surface a negative TTL throughResult.TTL. #1166namesys: a cache hit now reports the TTL remaining in the cache entry rather than the record's original TTL, so a late hit near a record's EOL can no longer advertise a freshness lifetime that outlives the record. #1166ipns:NewRecordfloors a negative TTL at zero andValidaterejects records carrying one. #1166bitswap/network/bsnet: stop marking a peer unresponsive on a single failed send attempt.send()is retried bymultiAttempt(), which already marks the peer once all retries are exhausted; marking on the first failure could permanently sideline a peer that had just reconnected (the disconnect notification being suppressed), hanging fetches from it until it fully disconnected. #1164
Security
tracing: bumped OpenTelemetry OTLP exporters to v1.43.0, which caps the HTTP exporter's response body at 4 MiB. A hostile or man-in-the-middle collector could otherwise exhaust its memory (CVE-2026-39882). The gRPC exporter is unaffected.
Full Changelog: v0.40.0...v0.41.0
