Skip to content

Latest commit

 

History

History
108 lines (83 loc) · 9.92 KB

RELEASES.md

File metadata and controls

108 lines (83 loc) · 9.92 KB

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

v0.6.0 (2019-10-13)

  • Added support for Go modules (issue #81)
    • All gokv.Store implementations are now separate Go modules
  • Added gokv.Store implementations:
    • Package hazelcast - A gokv.Store implementation for Hazelcast (issue #75)
  • Fixed: Compile error in badgerdb after 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 like encoding/json and encoding/gob (issue #47)
  • Added: Package 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.)
  • Added gokv.Store implementations:

Breaking changes

  • The MarshalFormat enums were removed from all packages that contained gokv.Store implementations. Instead the shared package encoding was introduced (required for issue #47)

v0.4.0 (2018-12-02)

  • Added: Method Close() error (issue #36)
  • Added gokv.Store implementations:
    • Package mongodb - A gokv.Store implementation for MongoDB (issue #27)
    • Package dynamodb - A gokv.Store implementation for Amazon DynamoDB (issue #28)
    • Package memcached - A gokv.Store implementation for Memcached (issue #31)
    • Package mysql - A gokv.Store implementation for MySQL (issue #32)
  • Added: The factory function redis.NewClient() now checks if the connection to the Redis server works and otherwise returns an error.
  • Added: The 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.
  • Improved: The etcd.Client timeout implementation was improved.
  • Fixed: The Get() method of the bbolt store 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() error method (see above) means that previous implementations of gokv.Store are not compatible with the interface anymore.
  • Renamed 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.).
  • Due to the above mentioned addition to the Redis client factory function, the function signature changed from func NewClient(options Options) Client to func NewClient(options Options) (Client, error).

v0.3.0 (2018-11-17)

  • Added: Method Delete(string) error (issue #8)
  • Added: All gokv.Store implementations 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 Options structs, called MarshalFormat, as well as the related MarshalFormat enum (custom type + related const values) in each implementation package
  • Added gokv.Store implementations:
    • Package badgerdb - A gokv.Store implementation for BadgerDB (issue #16)
    • Package consul - A gokv.Store implementation for Consul (issue #18)
    • Package etcd - A gokv.Store implementation for etcd (issue #24)

Breaking changes

  • The added Delete(string) error method (see above) means that previous implementations of gokv.Store are not compatible with the interface anymore.
  • Changed: The NewStore() function in gomap and syncmap now has an Option parameter. Required for issue #22.
  • Changed: Passing an empty string as key to Set(), Get() or Delete() now results in an error
  • Changed: Passing nil 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).

v0.2.0 (2018-11-05)

  • Added gokv.Store implementation:
    • Package gomap - A gokv.Store implementation for a plain Go map with a sync.RWMutex for concurrent access (issue #11)
  • Improved: Every 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)
  • Improved: The performance of bolt.Store should be higher, because unnecessary manual locking was removed. (Issue #1)
  • Fixed: The 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)

Breaking changes

  • All gokv.Store implementations 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:

  • Interface with Set(string, interface{}) error and Get(string, interface{}) (bool, error)
  • Implementations for:
    • bbolt (formerly known as Bolt / Bolt DB)
    • Go map (sync.Map)
    • Redis