9.9 KiB
9.9 KiB
Releases
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
vNext
- Added support for Go modules (issue #81)
- All
gokv.Storeimplementations are now separate Go modules
- All
- Added
gokv.Storeimplementations: - Fixed: Compile error in
badgerdbafter a breaking change in BadgerDB 1.6.0
v0.5.0 (2019-01-12)
- Added: Package
encoding- An abstraction and wrapper for the core functionality of packages likeencoding/jsonandencoding/gob(issue #47) - Added: Package
sql- It contains shared code for SQL implementations.mysqlandpostgresalready use it and if you want to create your own SQL implementation you can use it as well. (Useful for issue #57.) - Added
gokv.Storeimplementations:- Package
s3- Agokv.Storeimplementation for Amazon S3 (issue #37)- Also works for other S3-compatible cloud services like DigitalOcean Spaces and Scaleway Object Storage, as well as for self-hosted solutions like OpenStack Swift, Ceph and Minio
- Package
tablestorage- Agokv.Storeimplementation for Azure Table Storage (issue #42) - Package
datastore- Agokv.Storeimplementation for Google Cloud Datastore (issue #51) - Package
tablestore- Agokv.Storeimplementation for Alibaba Cloud Table Store (issue #70) - Package
leveldb- Agokv.Storeimplementation for LevelDB (issue #48) - Package
file- Agokv.Storeimplementation for storing key-value pairs as files (issue #52) - Package
zookeeper- Agokv.Storeimplementation for Apache ZooKeeper (issue #66) - Package
postgresql- Agokv.Storeimplementation for PostgreSQL (issue #57) - Package
cockroachdb- Agokv.Storeimplementation for CockroachDB (issue #62) - Package
ignite- Agokv.Storeimplementation for Apache Ignite (issue #64) - Package
freecache- Agokv.Storeimplementation for FreeCache (issue #44) - Package
bigcache- Agokv.Storeimplementation for BigCache (issue #45)
- Package
Breaking changes
- The
MarshalFormatenums were removed from all packages that containedgokv.Storeimplementations. Instead the shared packageencodingwas introduced (required for issue #47)
v0.4.0 (2018-12-02)
- Added: Method
Close() error(issue #36) - Added
gokv.Storeimplementations: - Added: The factory function
redis.NewClient()now checks if the connection to the Redis server works and otherwise returns an error. - Added: The
testpackage now has the functionfunc TestConcurrentInteractions(t *testing.T, goroutineCount int, store gokv.Store)that you can use to test yourgokv.Storeimplementation with concurrent interactions. - Improved: The
etcd.Clienttimeout implementation was improved. - Fixed: The
Get()method of thebboltstore ignored errors if they occurred during the retrieval of the value - Fixed: Spelling in error message when using the etcd implementation and the etcd server is unreachable
Breaking changes
- The added
Close() errormethod (see above) means that previous implementations ofgokv.Storeare not compatible with the interface anymore. - Renamed
boltpackage tobboltto reflect the fact that the maintained fork is used. Also changed all other occurrences of "bolt" (e.g. in GoDoc comments etc.). - Due to the above mentioned addition to the Redis client factory function, the function signature changed from
func NewClient(options Options) Clienttofunc NewClient(options Options) (Client, error).
v0.3.0 (2018-11-17)
- Added: Method
Delete(string) error(issue #8) - Added: All
gokv.Storeimplementations in this package now also support gob as marshal format as alternative to JSON (issue #22)- Part of this addition are a new field in the existing
Optionsstructs, calledMarshalFormat, as well as the relatedMarshalFormatenum (custom type + relatedconstvalues) in each implementation package
- Part of this addition are a new field in the existing
- Added
gokv.Storeimplementations:
Breaking changes
- The added
Delete(string) errormethod (see above) means that previous implementations ofgokv.Storeare not compatible with the interface anymore. - Changed: The
NewStore()function ingomapandsyncmapnow has anOptionparameter. Required for issue #22. - Changed: Passing an empty string as key to
Set(),Get()orDelete()now results in an error - Changed: Passing
nilas value parameter toSet()or as pointer toGet()now results in an error. This change leads to a consistent behaviour across the different marshal formats (otherwise for exampleencoding/jsonmarshalsniltonullwhileencoding/gobreturns an error).
v0.2.0 (2018-11-05)
- Added
gokv.Storeimplementation:- Package
gomap- Agokv.Storeimplementation for a plain Go map with async.RWMutexfor concurrent access (issue #11)
- Package
- Improved: Every
gokv.Storeimplementation resides in its own package now, so when downloading the package of an implementation, for example withgo 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 theDockerfile) the download and compilation are repeated for each build. (Issue #2) - Improved: The performance of
bolt.Storeshould be higher, because unnecessary manual locking was removed. (Issue #1) - Fixed: The
gokv.Storeimplementation 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)
Breaking changes
- All
gokv.Storeimplementations were moved into their own packages and the structs that implement the interface were renamed to avoid unidiomatic "stuttering".
v0.1.0 (2018-10-14)
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: