NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #2212 by repository stars
Last release 1 years ago
29 Jun 2025
Release timing varies
gaps range from 2 weeks to 2.3 years
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
50 releases · first in 2018
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Note that while we'll tag this with v0.7.0, that's only for the gokv root module - not for the other modules, which come later. Check tag 'release/v0.
Note that while we'll tag this with v0.7.0,
that's only for the gokv root module - not
for the other modules, which come later.
Check tag 'release/v0.7.0' for the commit
where the entire repo is at v0.7.0.
After a very long time since the last release (v0.6.0) we're finally releasing v0.7.0! There's a new store implementation (noop), a new codec (protobuf) and various improvements, updates and fixes in the store implementations. We moved from Travis CI to GitHub Actions, introduced the use of Mage (a Makefile alternative in Go) and improved the test automation and CI process in general.
This would not have been possible without the help of the new and existing contributors - thank you so much! I'm also thankful for the people who asked me about the project maintenance/activity after it has been dormant for a while, or pushed for a new release. Knowing that people make use of, like and care about the project means a lot!
Note: For now we're doing one centralized release across the repository, while also tagging all separate modules individually as required by Go modules. In the future we might update and release the modules more independently.
Note 2: Tag
v0.7.0points to v0.7.0 of the rootgokvmodule, but the other modules in this repo are then updated and thus tagged separately (as required for Go modules). Check tagrelease/v0.7.0for the commit at which the entire repo represents v0.7.0. See docs/releasing.md for details.
proto (for protocol buffers) (PR #127 by @glimchb)
noop (PR #126 by @peczenyj)datastore store implementation (PR #133 by @glimchb)redis store implementation (PR #130 by @glimchb)Library:
BigCache dependency
dyanamodb tests are now independent of any AWS config/credential file (PR #108)Hazelcast dependency to v1.3.0 (PR #112 by @yuce)redis dependency from v6.15.9 to v9.2.1 (PR #130 by @glimchb)any instead of interface{} (PR #150)MongoDB dependency, from unmaintained github.com/globalsign/mgo to official go.mongodb.org/mongo-driver (PR #165)Tests / CI:
build/test.sh) now starts all required services instead of relying on Travis CI for some (PR #108)build/update-deps.sh/build/update-deps.ps1) were changed to only update direct dependencies (PR #108)mage test redis. For testing all modules there's mage test all.Replace target in Magefile (PR #174)gomap data race (PR #90 by @tdakkota)
redis store now has a default timeout of 2 seconds (previously no timeout). You can customize/remove the timeout via the store's config. (PR #130 by @glimchb)datastore store: Update of direct dependencies lead to indirect dependency update of google.golang.org/grpc from v1.46.0 to v1.59.0, which is incompatible with Go 1.18 due atomic.Int64 being used, which was introduced in Go 1.19.interface{} to any change makes gokv incompatible with Go version 1.17 and older. Please open an issue if you're stuck on an old Go version and would like us to revert this change.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Fixed: Compile error in badgerdb after a breaking change in BadgerDB 1.6.0
gokv.Store implementations are now separate Go modulesgokv.Store implementations:
badgerdb after a breaking change in BadgerDB 1.6.0Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Added: Package encoding - An abstraction and wrapper for the core functionality of packages like encoding/json and encoding/gob (issue #47)
encoding - An abstraction and wrapper for the core functionality of packages like encoding/json and encoding/gob (issue #47)sql - It contains shared code for SQL implementations. mysql and postgres already use it and if you want to create your own SQL implementation you can use it as well. (Useful for issue #57.)gokv.Store implementations:
s3 - A gokv.Store implementation for Amazon S3 (issue #37)
tablestorage - A gokv.Store implementation for Azure Table Storage (issue #42)datastore - A gokv.Store implementation for Google Cloud Datastore (issue #51)tablestore - A gokv.Store implementation for Alibaba Cloud Table Store (issue #70)leveldb - A gokv.Store implementation for LevelDB (issue #48)file - A gokv.Store implementation for storing key-value pairs as files (issue #52)zookeeper - A gokv.Store implementation for Apache ZooKeeper (issue #66)postgresql - A gokv.Store implementation for PostgreSQL (issue #57)cockroachdb - A gokv.Store implementation for CockroachDB (issue #62)ignite - A gokv.Store implementation for Apache Ignite (issue #64)freecache - A gokv.Store implementation for FreeCache (issue #44)bigcache - A gokv.Store implementation for BigCache (issue #45)MarshalFormat enums were removed from all packages that contained gokv.Store implementations. Instead the shared package encoding was introduced (required for issue #47)Added: Method Close() error (issue #36)
Close() error (issue #36)gokv.Store implementations:
redis.NewClient() now checks if the connection to the Redis server works and otherwise returns an error.test package now has the function func TestConcurrentInteractions(t *testing.T, goroutineCount int, store gokv.Store) that you can use to test your gokv.Store implementation with concurrent interactions.etcd.Client timeout implementation was improved.Get() method of the bbolt store ignored errors if they occurred during the retrieval of the valueClose() error method (see above) means that previous implementations of gokv.Store are not compatible with the interface anymore.bolt package to bbolt to reflect the fact that the maintained fork is used. Also changed all other occurrences of "bolt" (e.g. in GoDoc comments etc.).func NewClient(options Options) Client to func NewClient(options Options) (Client, error).Added: Method Delete(string) error (issue #8)
Delete(string) error (issue #8)gokv.Store implementations in this package now also support gob as marshal format as alternative to JSON (issue #22)
Options structs, called MarshalFormat, as well as the related MarshalFormat enum (custom type + related const values) in each implementation packagegokv.Store implementations:
Delete(string) error method (see above) means that previous implementations of gokv.Store are not compatible with the interface anymore.NewStore() function in gomap and syncmap now has an Option parameter. Required for issue #22.Set(), Get() or Delete() now results in an errornil as value parameter to Set() or as pointer to Get() now results in an error. This change leads to a consistent behaviour across the different marshal formats (otherwise for example encoding/json marshals nil to null while encoding/gob returns an error).Added gokv.Store implementation:
gokv.Store implementation:
gomap - A gokv.Store implementation for a plain Go map with a sync.RWMutex for concurrent access (issue #11)gokv.Store implementation resides in its own package now, so when downloading the package of an implementation, for example with go get github.com/philippgille/gokv/redis, only the actually required dependencies are downloaded and compiled, making the process much faster. This is especially useful for example when creating Docker images, where in many cases (depending on the Dockerfile) the download and compilation are repeated for each build. (Issue #2)bolt.Store should be higher, because unnecessary manual locking was removed. (Issue #1)gokv.Store implementation for bbolt / Bolt DB used data from within a Bolt transaction outside of it, without copying the value, which can lead to errors (see here) (issue #13)gokv.Store implementations were moved into their own packages and the structs that implement the interface were renamed to avoid unidiomatic "stuttering".Initial release with code from philippgille/ln-paywall:78fd1dfbf10f549a22f4f30ac7f68c2a2735e989 with only a few changes like a different default path
Initial release with code from philippgille/ln-paywall:78fd1dfbf10f549a22f4f30ac7f68c2a2735e989 with only a few changes like a different default path and a bucket name as additional option for the Bolt DB implementation.
Features:
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →