v5.24.0
- AI integration updates by @asim in https://github.com/micro/go-micro/pull/2911
- Update logo design, enhance AI integration docs, and simplify navigation by @asim in https://github.com/micro/go-micro/pull/2912
- Update logo, add AI integration docs, and implement ai/flow package by @asim in https://github.com/micro/go-micro/pull/2913
- Update logo, add AI integration docs, and enhance CLI features by @asim in https://github.com/micro/go-micro/pull/2914
- Update logo, add AI integration docs, and enhance CLI features by @asim in https://github.com/micro/go-micro/pull/2915
- Update logo design, add AI integration documentation and blog post by @asim in https://github.com/micro/go-micro/pull/2916
- Refactor tool handling in ai package for simplified usage by @asim in https://github.com/micro/go-micro/pull/2917
- Refactor tool management and add CLI commands for interfaces by @asim in https://github.com/micro/go-micro/pull/2918
- Cli commands by @asim in https://github.com/micro/go-micro/pull/2919
- Refactor AI tool handling and enhance CLI command documentation by @asim in https://github.com/micro/go-micro/pull/2920
Full Changelog: https://github.com/micro/go-micro/compare/v5.23.0...v5.24.0
v10.30.3
- Fix/issue 1550 UUID case insensitive by @leo-jp-edwards in https://github.com/go-playground/validator/pull/1551
- Feat: Add NoneOf Validation by @Carmen-Shannon in https://github.com/go-playground/validator/pull/1554
- Add bcp47_strict_language_tag validator by @bfabio in https://github.com/go-playground/validator/pull/1489
- chore(deps): bump golang.org/x/text from 0.35.0 to 0.36.0 by @dependabot[bot] in https://github.com/go-playground/validator/pull/1558
- chore(deps): bump golang.org/x/crypto from 0.49.0 to 0.50.0 by @dependabot[bot] in https://github.com/go-playground/validator/pull/1559
- Add CLAUDE.md with repo guidance for Claude Code by @deankarn in https://github.com/go-playground/validator/pull/1564
- Reduce build size with dead code elimination by @zemzale in https://github.com/go-playground/validator/pull/1542
- Refactored out detectFileMIMEType, matchesMIMEType logic for reuse. Added standalone isMIMEType validator for flexibility by @dapzthelegend in https://github.com/go-playground/validator/pull/1544
- feat(translations): add timezone support for en and ja locales by @dedyf5 in https://github.com/go-playground/validator/pull/1566
- docs: use errors.As in README and translations example by @eyupcanakman in https://github.com/go-playground/validator/pull/1563
- docs: fix typos by @rymiyamoto in https://github.com/go-playground/validator/pull/1568
- feat: add origin validator for web origin URLs by @ahmedkamalio in https://github.com/go-playground/validator/pull/1565
- fix: reject hostnames with trailing hyphen in RFC 952 validator by @ahmedkamalio in https://github.com/go-playground/validator/pull/1569
- fix(lint): correctly disable govet inline analyzer & deprecated gomodguard by @nodivbyzero in https://github.com/go-playground/validator/pull/1574
- chore(deps): bump golang.org/x/text from 0.36.0 to 0.37.0 by @dependabot[bot] in https://github.com/go-playground/validator/pull/1572
- chore(deps): bump golang.org/x/crypto from 0.50.0 to 0.51.0 by @dependabot[bot] in https://github.com/go-playground/validator/pull/1571
- fix(cron): anchor regex and accept full cron syntax by @ahmedkamalio in https://github.com/go-playground/validator/pull/1577
- chore(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 by @dependabot[bot] in https://github.com/go-playground/validator/pull/1580
- feat: omit blank tag names from namespace by @abemedia in https://github.com/go-playground/validator/pull/1567
- fix(docs): correct ripemd160 tag name in README validation table by @napoleonbot in https://github.com/go-playground/validator/pull/1582
- @leo-jp-edwards made their first contribution in https://github.com/go-playground/validator/pull/1551
- @Carmen-Shannon made their first contribution in https://github.com/go-playground/validator/pull/1554
- @dapzthelegend made their first contribution in https://github.com/go-playground/validator/pull/1544
- @dedyf5 made their first contribution in https://github.com/go-playground/validator/pull/1566
- @eyupcanakman made their first contribution in https://github.com/go-playground/validator/pull/1563
- @rymiyamoto made their first contribution in https://github.com/go-playground/validator/pull/1568
- @abemedia made their first contribution in https://github.com/go-playground/validator/pull/1567
- @napoleonbot made their first contribution in https://github.com/go-playground/validator/pull/1582
Full Changelog: https://github.com/go-playground/validator/compare/v10.30.2...v10.30.3
v5.2.0
lego is an independent, free, and open-source project, if you value it, consider supporting it! ❤️
Everybody thinks that the others will donate, but in the end, nobody does.
So if you think that lego is worth it, please consider donating.
For key updates, see the changelog.
- 3c3716dd1797b42f1f6c120360c421b5b78a753a Add DNS provider for OpusDNS
- 0ec9bf07300034abeaf4a7466bc72119159820d4 Add DNS provider for Poweradmin (#3136)
- e82922ee59ce9c5dc9082efe1fa32214f8230b77 informaniak: support API v2 (#3139)
v5.23.0
- Add ImageModel interface and multi-turn conversation support by @asim in https://github.com/micro/go-micro/pull/2906
- Enhance AI features with ImageModel, History, and website updates by @asim in https://github.com/micro/go-micro/pull/2907
- Add CRUD, pub/sub, and API gateway templates; update AI features by @asim in https://github.com/micro/go-micro/pull/2909
- Revise Anthropic blog post with updated content and visuals by @asim in https://github.com/micro/go-micro/pull/2910
Full Changelog: https://github.com/micro/go-micro/compare/v5.22.0...v5.23.0
v2.11.0
This release contains New features, improvements, and bug fixes.
- US-1492 DOCX: Added support for embedding EMF image file
- US-1490 XLSX: Added "Format as Table" support
v5.22.0
- feat(ai): add ImageModel interface with Atlas Cloud and OpenAI support by @asim in https://github.com/micro/go-micro/pull/2905
Full Changelog: https://github.com/micro/go-micro/compare/v5.21.0...v5.22.0
v5.21.0
- Add AI provider integration guide and Atlas Cloud support by @asim in https://github.com/micro/go-micro/pull/2898
- Claude/fix issue 2893 x3rpd by @asim in https://github.com/micro/go-micro/pull/2899
- Add AI provider integration guide and new providers support by @asim in https://github.com/micro/go-micro/pull/2900
- Claude/fix issue 2893 x3rpd by @asim in https://github.com/micro/go-micro/pull/2901
- docs: add Atlas Cloud sponsorship blog post and integration guide by @asim in https://github.com/micro/go-micro/pull/2902
- Claude/fix issue 2893 x3rpd by @asim in https://github.com/micro/go-micro/pull/2903
Full Changelog: https://github.com/micro/go-micro/compare/v5.20.0...v5.21.0
9.20.0
This release adds support for Redis 8.8. The README's supported-versions list now includes Redis 8.8 alongside 8.0/8.2/8.4, and CI exercises the 8.8 client-libs-test image across the full suite (Makefile, build workflow, doctests, run-tests action, and docker-compose).
Coverage for the new commands that ship in the 8.x line, rounded out in this release:
AR*array data type (#3813) — new array data structure, exposed via theArrayCmdableinterface (see the experimental-features highlight below).INCREX(#3816) — atomic increment with expiration in a single round-trip.XNACK(#3790) — explicit negative-acknowledge of pending stream entries.XAUTOCLAIMPEL deletes (#3798) —XAUTOCLAIM/XAUTOCLAIMJUSTIDnow return the list of deleted message IDs from the pending entries list.TS.RANGEmultiple aggregators (#3791) —TS.RANGE/TS.REVRANGE/TS.MRANGE/TS.MREVRANGEaccept multiple aggregators in a single call.Z(UNION|INTER|DIFF)COUNTaggregator (#3802) —COUNTreducer for sorted-set set operations.JSON.SET FPHA(#3797) — newFPHAargument that specifies the floating-point type for homogeneous FP arrays.
CI image bump (#3814) by @ofekshenawa. Command coverage contributions by @cxljs, @elena-kolevska, @Khukharr, @ndyakov, and @ofekshenawa.
FT.SEARCH, FT.AGGREGATE, FT.INFO, FT.SPELLCHECK, and FT.SYNDUMP now parse RESP3 (map) responses into the same typed result objects as RESP2 — Val() and Result() work uniformly on both protocols, no flag required. Previously, RESP3 search responses required UnstableResp3: true and were returned as opaque maps accessible only via RawResult() / RawVal().
As a result, the UnstableResp3 option is now a no-op across every options struct (Options, ClusterOptions, UniversalOptions, FailoverOptions, RingOptions) and has been marked // Deprecated:. The field is retained for backwards compatibility — existing code that sets UnstableResp3: true will continue to compile and behave identically — but it will be removed in a future release and new code should not set it. RawResult() / RawVal() continue to work for callers that prefer the raw RESP payload.
Adds an experimental ArrayCmdable interface with the AR* command family (ARSet, ARGet, ARGetRange, ARMSet, ARMGet, ARDel, ARDelRange, ARScan, ARSeek, ARNext, ARLastItems, ARGrep, ARGrepWithValues, ARInfo/ARInfoFull, and typed reducers AROpSum/AROpMin/AROpMax/AROpAnd/AROpOr/AROpXor/AROpMatch/AROpUsed) for working with Redis 8.8's new array data type. API is experimental and may change in a future release.
- RESP3 search parser: First-class RESP3 parsing for
FT.SEARCH/FT.AGGREGATE/FT.INFO/FT.SPELLCHECK/FT.SYNDUMPresponses with backwards compatibility for RESP2 (#3741) by @ndyakov - INCREX: New
INCREXcommand support — atomic increment with expiration (#3816) by @ndyakov - XNACK: Client support for the
XNACKstream command for explicitly negative-acknowledging pending entries (#3790) by @elena-kolevska - TS range multiple aggregators:
TS.RANGE/TS.REVRANGE/TS.MRANGE/TS.MREVRANGEnow accept multiple aggregators in a single call (#3791) by @elena-kolevska XAutoClaimdeleted IDs:XAUTOCLAIM/XAUTOCLAIMJUSTIDnow return the list of deleted message IDs from the PEL (#3798) by @KhukharrJSON.SET FPHA:JSON.SETaccepts a newFPHAargument that specifies the floating-point type for homogeneous floating-point arrays (#3797) by @ndyakov- Sorted-set union/intersection COUNT:
ZUNION/ZINTER/ZDIFFaggregator now supportsCOUNT(#3802) by @ofekshenawa FT.HYBRIDvector validation: Validates hybrid-search vector input types and adds proper typed vector parameters (#3756) by @DengY11- Cluster pool wait stats:
ClusterClient.PoolStats()now accumulatesWaitCountandWaitDurationNsacross all node pools (previously always zero) (#3809) by @LINKIWI
- TLS-only Cluster PubSub:
CLUSTER SLOTSport-0 entries now fall back to the origin endpoint's port, fixingdial tcp <ip>:0: connection refusedon TLS-only clusters started with--port 0 --tls-port <port>(fixes #3726) (#3828) by @ndyakov - Sharded PubSub reconnect routing:
PubSub.conn()now passes both regular (c.channels) and sharded (c.schannels) channels into the per-PubSubnewConnclosure. Previously,ClusterClient.SSubscribe-only PubSubs reconnected to a random node (because the routing closure saw an empty channel list), theSSUBSCRIBEwas sent to the wrong shard, and the resultingMOVEDreply was silently dropped (#3829) by @ndyakov - ClusterClient
Watchretry: User errors returned from aWatchcallback are no longer subjected to cluster-retry classification; transient cluster errors still retry, but a callback returning e.g.net.ErrClosedshort-circuits immediately (#3821) by @obiyang - Sentinel concurrent-probe leak:
MasterAddr's concurrent sentinel probe now closes the non-winning sentinel clients instead of leaking them (#3827) by @cxljs - Sentinel rediscovery loop on master-only setups:
replicaAddrsno longer tears down the cached sentinel client when the replica list is empty, eliminating a continuous rediscovery loop on master-only Sentinel deployments that flooded logs and added per-operation latency (#3795) by @shahyash2609 - Pool
CloseConnhooks:Pool.CloseConnnow triggers registered hooks, fixing a memory leak when connections are closed explicitly rather than via the normal removal path (#3818) by @ndyakov - Dial TCP error redirection: Wrapped
dial tcperrors are now correctly classified as redirectable so cluster routing can recover from a single unreachable node (#3810) by @vladisa88 - Pool
Closehealth checks:ConnPool.Closenow only runs health checks against idle connections, avoiding spurious activity on connections still in use (#3805) by @ndyakov - VLinks return type: Fixed the return type of
VLINKS/VLINKSWITHSCORESvector-set replies (#3820) by @romanpovol
- Flaky tests: Stabilized several flaky tests in the sentinel and pool suites (#3815) by @ndyakov
- Sentinel failover metric race: Fixed a data race in the sentinel failover metric test (#3824) by @cxljs
waitForSentinelClusterStablepost-conditions: The sentinel test harness now waits for replicas to be fully connected (not just present in the count) and is robust to randomized spec ordering after failover specs, eliminating an intermittentExpected master to equal slaveflake (#3830) by @ndyakovgovulncheckworkflow: New scheduled GitHub Actions workflow runsgovulncheckon every push, PR, and weekly, surfacing newly disclosed Go vulnerabilities even when no code changes (#3779) by @solardome- CI Redis 8.8-rc1: CI now exercises the 8.8-rc1 Redis image (#3814) by @ofekshenawa
Cmd.Slot()lookup refactor: Caches the per-commandCommandInfoand short-circuits keyless commands before the switch dispatch, removing redundantPeekcalls (#3804) by @retr0-kernel- stdlib
math/rand: Replacedinternal/randwithmath/randfrom the standard library now that the minimum Go version is 1.24 (#3823) by @cxljs - ConnPool queue channel: Removed the unused queue channel from
ConnPool, trimming the pool's footprint (#3826) by @cxljs - Extra packages LICENSE: Added a LICENSE file to each
extra/*package (#3817) by @ndyakov - README & CI image: Documentation refresh and bumped the default CI image tag (#3822) by @ndyakov
We'd like to thank all the contributors who worked on this release!
@cxljs, @DengY11, @elena-kolevska, @Khukharr, @LINKIWI, @ndyakov, @obiyang, @ofekshenawa, @retr0-kernel, @romanpovol, @shahyash2609, @solardome, @vladisa88
Full Changelog: https://github.com/redis/go-redis/compare/v9.19.0...v9.20.0
9.20.0
This release adds support for Redis 8.8. The README's supported-versions list now includes Redis 8.8 alongside 8.0/8.2/8.4, and CI exercises the 8.8 client-libs-test image across the full suite (Makefile, build workflow, doctests, run-tests action, and docker-compose).
Coverage for the new commands that ship in the 8.x line, rounded out in this release:
AR*array data type (#3813) — new array data structure, exposed via theArrayCmdableinterface (see the experimental-features highlight below).INCREX(#3816) — atomic increment with expiration in a single round-trip.XNACK(#3790) — explicit negative-acknowledge of pending stream entries.XAUTOCLAIMPEL deletes (#3798) —XAUTOCLAIM/XAUTOCLAIMJUSTIDnow return the list of deleted message IDs from the pending entries list.TS.RANGEmultiple aggregators (#3791) —TS.RANGE/TS.REVRANGE/TS.MRANGE/TS.MREVRANGEaccept multiple aggregators in a single call.Z(UNION|INTER|DIFF)COUNTaggregator (#3802) —COUNTreducer for sorted-set set operations.JSON.SET FPHA(#3797) — newFPHAargument that specifies the floating-point type for homogeneous FP arrays.
CI image bump (#3814) by @ofekshenawa. Command coverage contributions by @cxljs, @elena-kolevska, @Khukharr, @ndyakov, and @ofekshenawa.
FT.SEARCH, FT.AGGREGATE, FT.INFO, FT.SPELLCHECK, and FT.SYNDUMP now parse RESP3 (map) responses into the same typed result objects as RESP2 — Val() and Result() work uniformly on both protocols, no flag required. Previously, RESP3 search responses required UnstableResp3: true and were returned as opaque maps accessible only via RawResult() / RawVal().
As a result, the UnstableResp3 option is now a no-op across every options struct (Options, ClusterOptions, UniversalOptions, FailoverOptions, RingOptions) and has been marked // Deprecated:. The field is retained for backwards compatibility — existing code that sets UnstableResp3: true will continue to compile and behave identically — but it will be removed in a future release and new code should not set it. RawResult() / RawVal() continue to work for callers that prefer the raw RESP payload.
Adds an experimental ArrayCmdable interface with the AR* command family (ARSet, ARGet, ARGetRange, ARMSet, ARMGet, ARDel, ARDelRange, ARScan, ARSeek, ARNext, ARLastItems, ARGrep, ARGrepWithValues, ARInfo/ARInfoFull, and typed reducers AROpSum/AROpMin/AROpMax/AROpAnd/AROpOr/AROpXor/AROpMatch/AROpUsed) for working with Redis 8.8's new array data type. API is experimental and may change in a future release.
- RESP3 search parser: First-class RESP3 parsing for
FT.SEARCH/FT.AGGREGATE/FT.INFO/FT.SPELLCHECK/FT.SYNDUMPresponses with backwards compatibility for RESP2 (#3741) by @ndyakov - INCREX: New
INCREXcommand support — atomic increment with expiration (#3816) by @ndyakov - XNACK: Client support for the
XNACKstream command for explicitly negative-acknowledging pending entries (#3790) by @elena-kolevska - TS range multiple aggregators:
TS.RANGE/TS.REVRANGE/TS.MRANGE/TS.MREVRANGEnow accept multiple aggregators in a single call (#3791) by @elena-kolevska XAutoClaimdeleted IDs:XAUTOCLAIM/XAUTOCLAIMJUSTIDnow return the list of deleted message IDs from the PEL (#3798) by @KhukharrJSON.SET FPHA:JSON.SETaccepts a newFPHAargument that specifies the floating-point type for homogeneous floating-point arrays (#3797) by @ndyakov- Sorted-set union/intersection COUNT:
ZUNION/ZINTER/ZDIFFaggregator now supportsCOUNT(#3802) by @ofekshenawa FT.HYBRIDvector validation: Validates hybrid-search vector input types and adds proper typed vector parameters (#3756) by @DengY11- Cluster pool wait stats:
ClusterClient.PoolStats()now accumulatesWaitCountandWaitDurationNsacross all node pools (previously always zero) (#3809) by @LINKIWI
- TLS-only Cluster PubSub:
CLUSTER SLOTSport-0 entries now fall back to the origin endpoint's port, fixingdial tcp <ip>:0: connection refusedon TLS-only clusters started with--port 0 --tls-port <port>(fixes #3726) (#3828) by @ndyakov - Sharded PubSub reconnect routing:
PubSub.conn()now passes both regular (c.channels) and sharded (c.schannels) channels into the per-PubSubnewConnclosure. Previously,ClusterClient.SSubscribe-only PubSubs reconnected to a random node (because the routing closure saw an empty channel list), theSSUBSCRIBEwas sent to the wrong shard, and the resultingMOVEDreply was silently dropped (#3829) by @ndyakov - ClusterClient
Watchretry: User errors returned from aWatchcallback are no longer subjected to cluster-retry classification; transient cluster errors still retry, but a callback returning e.g.net.ErrClosedshort-circuits immediately (#3821) by @obiyang - Sentinel concurrent-probe leak:
MasterAddr's concurrent sentinel probe now closes the non-winning sentinel clients instead of leaking them (#3827) by @cxljs - Sentinel rediscovery loop on master-only setups:
replicaAddrsno longer tears down the cached sentinel client when the replica list is empty, eliminating a continuous rediscovery loop on master-only Sentinel deployments that flooded logs and added per-operation latency (#3795) by @shahyash2609 - Pool
CloseConnhooks:Pool.CloseConnnow triggers registered hooks, fixing a memory leak when connections are closed explicitly rather than via the normal removal path (#3818) by @ndyakov - Dial TCP error redirection: Wrapped
dial tcperrors are now correctly classified as redirectable so cluster routing can recover from a single unreachable node (#3810) by @vladisa88 - Pool
Closehealth checks:ConnPool.Closenow only runs health checks against idle connections, avoiding spurious activity on connections still in use (#3805) by @ndyakov - VLinks return type: Fixed the return type of
VLINKS/VLINKSWITHSCORESvector-set replies (#3820) by @romanpovol
- Flaky tests: Stabilized several flaky tests in the sentinel and pool suites (#3815) by @ndyakov
- Sentinel failover metric race: Fixed a data race in the sentinel failover metric test (#3824) by @cxljs
waitForSentinelClusterStablepost-conditions: The sentinel test harness now waits for replicas to be fully connected (not just present in the count) and is robust to randomized spec ordering after failover specs, eliminating an intermittentExpected master to equal slaveflake (#3830) by @ndyakovgovulncheckworkflow: New scheduled GitHub Actions workflow runsgovulncheckon every push, PR, and weekly, surfacing newly disclosed Go vulnerabilities even when no code changes (#3779) by @solardome- CI Redis 8.8-rc1: CI now exercises the 8.8-rc1 Redis image (#3814) by @ofekshenawa
Cmd.Slot()lookup refactor: Caches the per-commandCommandInfoand short-circuits keyless commands before the switch dispatch, removing redundantPeekcalls (#3804) by @retr0-kernel- stdlib
math/rand: Replacedinternal/randwithmath/randfrom the standard library now that the minimum Go version is 1.24 (#3823) by @cxljs - ConnPool queue channel: Removed the unused queue channel from
ConnPool, trimming the pool's footprint (#3826) by @cxljs - Extra packages LICENSE: Added a LICENSE file to each
extra/*package (#3817) by @ndyakov - README & CI image: Documentation refresh and bumped the default CI image tag (#3822) by @ndyakov
We'd like to thank all the contributors who worked on this release!
@cxljs, @DengY11, @elena-kolevska, @Khukharr, @LINKIWI, @ndyakov, @obiyang, @ofekshenawa, @retr0-kernel, @romanpovol, @shahyash2609, @solardome, @vladisa88
Full Changelog: https://github.com/redis/go-redis/compare/v9.19.0...v9.20.0
Version 1.50.1 (2026-05-27)
- fix: correct requiredVersion for V8 JoinGroup and add protocol version placeholders by @dnwe in https://github.com/IBM/sarama/pull/3585
Full Changelog: https://github.com/IBM/sarama/compare/v1.50.0...v1.50.1