Skip to content

v0.7.0 (2024-01-28)

Latest
Compare
Choose a tag to compare
@philippgille philippgille released this 28 Jan 20:18

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.0 points to v0.7.0 of the root gokv module, but the other modules in this repo are then updated and thus tagged separately (as required for Go modules). Check tag release/v0.7.0 for the commit at which the entire repo represents v0.7.0. See docs/releasing.md for details.

Added

  • New codec: proto (for protocol buffers) (PR #127 by @glimchb)
    • Moved to subdirectory in PR #138
    • Usage example added in PR #144
    • Renamed from proto to protobuf in PR #171
  • New store implementation: noop (PR #126 by @peczenyj)
  • Optional timeout configuration for datastore store implementation (PR #133 by @glimchb)
  • Optional timeout configuration for redis store implementation (PR #130 by @glimchb)

Improved

Library:

  • Updated dependencies of all modules within the same major version (PR #108 + #145 + #166)
    • So except for a few required major version updates, all dependencies are now up-to-date as of 2024-01-07
  • Major update of BigCache dependency
  • dyanamodb tests are now independent of any AWS config/credential file (PR #108)
  • Updated Hazelcast dependency to v1.3.0 (PR #112 by @yuce)
  • Updated redis dependency from v6.15.9 to v9.2.1 (PR #130 by @glimchb)
  • Use any instead of interface{} (PR #150)
  • Block on etcd connection fail (PR #163)
  • Various security updates by @dependabot
  • Switch of used MongoDB dependency, from unmaintained github.com/globalsign/mgo to official go.mongodb.org/mongo-driver (PR #165)

Tests / CI:

  • Test script (build/test.sh) now starts all required services instead of relying on Travis CI for some (PR #108)
  • Dependency update scripts (build/update-deps.sh/build/update-deps.ps1) were changed to only update direct dependencies (PR #108)
  • Migrated CI from Travis CI to GitHub Actions (PR #110)
  • Migrated from Bash and PowerShell build/test scripts to Mage (PR #111)
    • With this comes also the improvement that individual modules can now be tested. Like mage test redis. For testing all modules there's mage test all.
  • Added more Go versions in CI test matrix (PR #134 by @glimchb)
  • Use GitHub action for Mage (PR #135 by @glimchb)
  • Added Windows to CI build matrix (PR #139 by @glimchb)
  • Updated Mage from 1.13 to 1.15 (PR #148)
  • Better error handling in Magefile (PR #151)
  • Added Docker health check to test containers (PR #142 by @glimchb)
  • Use the Docker health checks to reduce wait time for containers in CI (PR #154)
  • Update and improve usage of GitHub Actions dependencies (PR #156)
  • Prefix test container names with gokv (PR #161)
  • Reduce test container wait time (PR #162)
  • Add Docker health checks to Consul and Memcached (PR #168)
  • Skip etcd concurrency test in CI (PR #172)
  • Remove test skipping on connection failure from almost all store implementations (PR #173)
  • Add Replace target in Magefile (PR #174)

Fixes

  • Fixed gomap data race (PR #90 by @tdakkota)
    • Includes a regression test covering most (if not all) storage-specific implementations 👍
  • Fixed double CI builds when maintainer pushed a commit to an open PR (PR #143)
  • Fix concurrency tests (PR #176)

Breaking changes

  • 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.
  • The 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.
  • The switch of the used MongoDB library from an unmaintained 3rd party library to the official one might make it incompatible with old MongoDB servers, or with data that was inserted with a previous version of gokv. This is just a warning - it's not confirmed. (PR #165

New Contributors