New Release: Hazelcast Go Client v1.0.0
Published: 2021-07-15 11:18:57

We released [Hazelcast Go Client v1.0.0](https://github.com/hazelcast/hazelcast-go-client/releases/tag/v1.0.0).

This is the first major release of the revamped Go client. Of course the biggest news is, the client is compatible with Hazelcast 4.x and the upcoming Hazelcast 5.x. Here are the features included in this release:

- Distributed Data Structures: [Map](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#Map), [Replicated Map](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#ReplicatedMap), [Queue](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#Queue), [Topic](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#Topic), [List](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#List), [Set](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#Set), [PNCounter](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#PNCounter),
- Map [aggregations](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0/aggregate),
- Improved Map locks,
- [Load balancer](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client/cluster@v1.0.0#hdr-Load_Balancer),
- [External client public address discovery](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0/cluster#hdr-External_Client_Public_Address_Discovery),
- Lifecycle, cluster membership and [distributed object listeners](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#hdr-Listening_for_Distributed_Object_Events),
- Smart routing,
- Ownerless client,
- JSON, Identified Data, Portable and Global [serialization](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0/serialization),
- SSL connections (requires Hazelcast Enterprise),
- Username/password credentials (requires Hazelcast Enterprise),
- [Hazelcast Management Center integration](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#hdr-Management_Center_Integration),
- [Hazelcast Cloud integration](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0/cluster#hdr-Hazelcast_Cloud_Discovery),
- JSON [configuration](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client@v1.0.0#hdr-Configuration).

There are some missing features which exist in Go Client v0.6.0, such as the [Near Cache](https://docs.hazelcast.com/imdg/4.2/performance/near-cache.html), but we will complete them in the coming months, prioritized by the needs of our users.

Apart from Hazelcast 4.x+ compatibility, we aimed to implement conventions and best practices of the Go ecosystem. Here are some of the highlights:

- Go context: Enables Go client to play well with other libraries that support the context package. Any client function call can be canceled manually or after a deadline. This was one of the most wanted features of the new Go client.
- Go modules: Enables depending on a specific release without third party tools.
- Idiomatic errors: The client library returns errors which can be easily unwrapped using the standard errors package.
- Zero value configuration: The zero value of client configuration is the default configuration. Apart from being encouraged in idiomatic Go, it helps us provide a natural way of supporting JSON configuration.
- Package based code layout: The client code is split into logical packages which collect relevant code together, such as cluster, aggregate, serialization, types and others.

Some useful links:

- [Official repository](https://github.com/hazelcast/hazelcast-go-client)
- [Documentation](https://pkg.go.dev/github.com/hazelcast/hazelcast-go-client)
- [Hazelcast main documentation](https://docs.hazelcast.com/home/index.html)

We are looking forward to feedback in order to provide the features our users want. Join us at our [Slack channel at Hazelcast Community](https://hazelcastcommunity.slack.com/channels/go-client)