github cosmos/cosmos-sdk store/v2.0.0

latest releases: enterprise/group/v1.0.0, enterprise/poa/v1.0.0, client/v2.11.0...
8 hours ago

API Breaking

  • #25470 Refactor store interfaces to support generic value types (object stores):
    • Replace BasicKVStore, KVStore, and Iterator interfaces/types with generic GBasicKVStore[V], GKVStore[V], and GIterator[V]. The old names are retained as type aliases (e.g. KVStore = GKVStore[[]byte]).
    • Remove Iterator as a direct alias to dbm.Iterator. It is now GIterator[[]byte], a distinct interface defined in the store package. Code that type-asserts to dbm.Iterator will break.
    • Remove CacheWrap() and CacheWrapWithTrace() method declarations from the CacheWrap interface. CacheWrap now embeds CacheWrapper to obtain CacheWrap().
    • Add GetObjKVStore(StoreKey) ObjKVStore to the MultiStore interface.
    • Add generic store variants across cachekv, gaskv, prefix, transient, and mem packages (GStore[V], NewGStore, NewObjStore).
  • #26037 Remove GetCommitStore and GetCommitKVStore from the CommitMultiStore interface. Remove top-level store.CommitStore and store.CommitKVStore type aliases from store/reexport.go.
  • #26060 Remove non-functional StoreMetrics. This metric interface never worked, so this simply removes dead code.
  • #26061 Remove tracing from store interfaces and implementations:
    • Remove SetTracer, SetTracingContext, and TracingEnabled from MultiStore interface.
    • Remove CacheWrapWithTrace from CacheWrapper interface.
    • Remove traceWriter and traceContext parameters from cachemulti.NewStore, cachemulti.NewFromKVStore, and cachemulti.NewFromParent.
    • Remove store/tracekv package entirely.
    • Remove TraceContext type store/types.

Features

  • #25470 Add object KV stores and refactor the base store to be generic across the value parameter:
    • Add object store types: ObjKVStore, ObjBasicKVStore, ObjIterator, ObjectStoreKey, StoreTypeObject.
    • Add generic store types: GBasicKVStore[V], GKVStore[V], GIterator[V].
    • Add cachemulti.NewFromParent constructor for lazy cache multistore construction from a parent store function.
  • #25647 Add EarliestVersion() int64 to the CommitMultiStore interface and GetEarliestVersion(db) helper.

Bug Fixes

  • #20425 Fix nil pointer panic when querying historical state where a new store does not exist.
  • #24583 Fix pruning height calculation to correctly handle in-flight snapshots. Adds SnapshotAnnouncer interface and AnnounceSnapshotHeight to track snapshots in progress and prevent premature pruning of their heights.

Don't miss a new cosmos-sdk release

NewReleases is sending notifications on new releases.