# Aerospike Go Client Release 5.0.0 (May 11, 2021)

**URL:** <https://discuss.aerospike.com/t/aerospike-go-client-release-5-0-0-may-11-2021/8466>\
**Category:** Releases (Server, Client & Tools)\
**Created:** [May 13, 2021, 3:12am UTC](https://discuss.aerospike.com/t/aerospike-go-client-release-5-0-0-may-11-2021/8466 "2021-05-13T03:12:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![mcoberly](https://sea1.discourse-cdn.com/flex019/user_avatar/discuss.aerospike.com/mcoberly/32/637_2.png) [@mcoberly](https://discuss.aerospike.com/u/mcoberly)\
**Post date:** [May 13, 2021, 3:12am UTC](https://discuss.aerospike.com/t/aerospike-go-client-release-5-0-0-may-11-2021/8466/1 "2021-05-13T03:12:34Z")

</div>

[Aerospike Go client version 5.0.0](http://www.aerospike.com/download/client/go/notes.html#5.0.0)was released on May 11, 2021.

This is a major feature release. It is also a major breaking release. We have adopted Go’s module system as recommended by the Go authors, so the new release moves the active branch to `v5` . As such, the import path changes to `github.com/aerospike/aerospike-client-go/v5`. The master branch remains in place to allow maintenance for the older v4 classic version until most users get the chance to upgrade.

This release also changes the way errors work in the client, and invalidates the old way. This allows the client to support Go’s somewhat new `errors.Is` and `errors.As` API, and properly chain errors together.

Also note that the Go Client now requires Aerospike Server version 4.9+ and will not work properly with older versions.

#### Breaking Changes

- Limits keys to `int` , `string` and `[]byte` types. The old `ListValue` arrays as types are not supported anymore.
- Remove TLS code support for golang v1.8 and before.
- Moves `AerospikeError` from `/types` to the root of the package, and removes all other error type like `NodeError` .
- [CLIENT-1526] - Removes `Policy.Priority` , `ScanPolicy.ScanPercent` and `ScanPolicy.FailOnClusterChange` .
- Removes `Recordset.Read()` and avoids multiplexing of `Records` channel in `Recordset.Results()` , and unexports the `Error` channel.
- Remove legacy client code for old servers. Go client now requires server version 4.9+.
- Remove `Statement.PredExp` , and only use the `Policy.PredExp` to avoid confusion. `PredExp` has been deprecated and replaced by `Expression` .
- Renames type `FilterExpression` to `Expression` .
- `Client.GetBatchXXX()` will return `ErrFilteredOut` if an expression is passed to the API and some records were filtered out, regardless of `BatchPolicy.AllowPartialResults` .
- `Client.CreateRole()` now requires quota information in the param list.
- Removed `Connection.Authenticate()` API.
- Renamed `GetOpForBin()` to `GetBinOp()` .
- Removed `ScanPolicy.ConcurrentNodes` . Now only uses `.MaxConcurrentNodes` to avoid confusion.
- Moves the `RequestInfo()` under `Connection` .

#### New Features

- Adopts module system and changes the import paths to `github.com/aerospike/aerospike-client-go/v5`.
- [CLIENT-1476] - Support new expressions introduced in server version 5.6, including `ExpReadOp` and `ExpWriteOp` .
- [CLIENT-1463] - Support boolean particle type and make it opt-in for reflection API via `UseNativeBoolTypeInReflection` .
- [CLIENT-1522] - Support user quotas and statistics.
- [CLIENT-1492] - Remove ability to use old authentication protocol. This works behind the scenes and doesn’t have any impact on user code.
- [CLIENT-1081] - Adds `Error` interface, changes all API signature to return `Error` .
- Exports `AdminCommand` and its `QueryXXX` API.

#### Improvements

- Implement `GomegaStringer` interface to prevent very long error messages in tests.
- Adds `ResultCode.String()` .
