Kitex Release v0.8.0

Introduction to Key Changes

Features

1. gRPC Multi-Service Support

Implemented multi-service registration for Kitex gRPC, please refer to Multiple Services.

2. Acquire Kitex RPCInfo

Added methods for easy retrieval of RPC information from RPCInfo, please refer to Acquire RPC information.

Optimizations

1. Map Generic Call

Map generic call supports returning []byte for binary fields via SetBinaryWithByteSlice option.

2. RPCInfo asynchronous use

Added an option to disable reusing RPCInfo, facilitating asynchronous usage, please refer to please refer to Acquire RPC information.

Others

Upgraded frugal to v0.1.12, fixing some concurrency issues when compiling types, especially the issue when registering new modules which may conflict with sonic.
It’s STRONGLY SUGGESTED updating both frugal and sonic to the latest version by

  go get github.com/cloudwego/frugal@latest
  go get github.com/bytedance/sonic@latest

Full Release Log

Feature:

[#1051] feat(grpc): support gRPC multi-service on a server
[#1189] feat(rpcinfo): add kitexutil methods for the convenience to fetch rpc information from RPCInfo
[#1176] feat(tool): add an environment variable to make it easier to debug kitex tool
[#1173] feat(rpcinfo): allow disable rpcinfo reuse for async reference
[#1172] feat(retry): client.WithSpecifiedResultRetry should have higher priority
[#1150] feat(proxy): add an interface to customize proxy middleware to replace the default implementation
[#1159] feat(generic): support returning []byte for binary fields in map generic
[#1153] feat(retry): add Extra for retry.FailurePolicy for better extension

Optimize:

[#1187] optimize(tool): add an option to keep resp for kitex tool
[#1183] optimize(meshheader): retrieve rip from meshheader and write it to TransInfo
[#1178] optimize(bizErr): recurse to obtain BizErr to avoid additional Error encapsulation in the middle, resulting in unwrap results that are not BizErr

Fix:

[#1126] fix(generic): the issue of structs cache of generic call has dirty data under multiple services scene
[#1168] fix(tool): remove the pointer to java.Object in generated file for CodecDubbo
[#1169] fix(tool): empty struct generate wrong struct
[#1166] fix(generic): issue of deep copy function generation when map key type is binary
[#1155] fix(tool): add import package ‘context’ for gRPC client.go

Tests:

[#1177] test: avoid port conflict

Chore:

[#1190] chore: update thriftgo version to v0.3.3
[#1186] chore: update readme with examples and new blogs
[#1185] chore: add ci for windows
[#1182] chore: update dynamicgo to v0.1.6
[#1152] chore: update dynamicgo and sonic version
[#1164] chore: update frugal to v0.1.12 and allow disable frugal by build tag
[#1161] chore: update frugal to v0.1.10
[#1157] chore: update frugal to v0.1.9
[#1151] chore(test): upgrade mockey to latest to compatible with Go1.21