Releases: cloudwego/kitex
v0.10.3
v0.10.2
Feature:
[#1363] feat(retry): support customizing retry policy key, used to adapt to other configuration centers (previously required to use Method), such as Istio.
[#1356] feat(tool): implement kitex tool as sdk
[#1404] feat(generic): support returning biz err for binary generic
Optimize:
[#1392] optimize: supplement the logic of checking if timeout error is business timeout. Identify that the context passed by the user includes timeout which is shorter than RPCTimeout, and judge it as "timeout by business"
Fix:
[#1416] fix(generic): fix payload length check of http generic
[#1438][#1436] fix: support setting PurePayload with new style
[#1402][#1439] refactor: refactoring service and method routing for multi-services to fix "unknown service xxx" error when using CombineService client, and also make code clear
Chore:
[#1433] chore: remove useless reflection api
[#1403] chore: fix bind err when test
[#1382] chore: remove the using of mockey
v0.10.1
v0.10.0
Feature:
- [#1370] feat(loadbalance): do not cache all the keys for Consistent Hash
- [#1359] feat:(generic) jsonpb using dynamicgo support parse IDL from memory
- [#1353] feat(retry): add ctx param for customized result retry funcs
- [#1352] feat: add option to specify ip version for default HTTPResolver
- [#1316] feat(kitex tool): support dependencies compatibility checking
- [#1346] feat(generic): set dynamicgo parse mode
- [#1336] feat(tool): fast-codec supports Thrift Fieldmask
- [#1313, #1378] feat(thrift codec): implement skipDecoder to enable Frugal and FastCodec for standard Thrift Buffer Protocol
- [#1257] feat: CBSuite custom GetErrorType func
Optimize:
- [#1349] optimize(gRPC): gRPC onError uses CtxErrorf to print log with information in ctx
- [#1326] optimize(tool): remove thrift processor for less codegen
Perf:
- [#1369] perf(thrift): optimized skip decoder
- [#1314] perf: use dirtmake to reduce memclr cost
- [#1322] perf(codec): support fast write nocopy when using netpoll link buffer
- [#1276] perf: linear allocator for fast codec ReadString/ReadBinary
- [#1320] perf(codec): fast codec use batch alloc
Fix:
- [#1379] fix: fix a bug "unknown service xxx" when using generic client by not writing IDLServiceName when it's generic service
- [#1368] fix(remote): modify the error message thrown when no target service is found
- [#1374] fix: init default values when using liner allocator
- [#1361] fix: span cache re-cap bytes when using Make
- [#1362] fix(payloadCodec): replace the registered PayloadCodec if the type is same when using WithPayloadCodec for server-side
- [#1364] fix: fix grpc compressor mcache free panic when data is empty
- [#1328] fix(gRPC): release connection in DoFinish for grpc streaming to close the short connection
- [#1307] fix(connpool): kitex long pool reset idleList element to nil to prevent conn leak
- [#1294] fix(netpollmux): fix a bug that disables multi-service by assigning the first svcInfo to targetSvcInfo
- [#1308] fix(generic): not write generic method name for binary generic exception to align with method names of services not using binary generic
Refactor:
- [#1344] refactor(tool): export thriftgo template definition in kitextool
Chore:
- [#1385] chore: update dynamicgo to v0.2.8
- [#1383] chore: upgrade netpoll to v0.6.1
- [#1376] chore: integration test use go 1.20 to solve the compatibility issue of offical gRPC in kitex-tests repo
- [#1355] chore: upgrade netpoll to v0.6.1 pre-release version
- [#1338] chore: correct the comment of FreezeRPCInfo
- [#1347] chore: use runtimex to replace choleraehyq/pid
- [#1342] chore: update sonic/loader to v0.1.1
- [#1334] chore: update dynamicgo to v0.2.3
- [#1324] chore: update dynamicgo and sonic version
- [#1317] chore: frugal v0.1.15 (with migrated iasm)
Thanks a lot to those community contributors who submit some pull requests or share your ideas for this version:
@XiaoYi-byte
v0.9.1
Feature:
- [#1278] feat: service inline adapt v0.9.0
- [#1265] feat:(generic) support set fields for empty struct
- [#1293] feat(generic): PB DynamicGo support importDirs
- [#1287] feat(generic): compatible with lossless conversion for int8-64
- [#1282] feat(metahandler): custom MetaHandler for only the needed functions
Optimize:
- [#1291] optimize(tool): add auto install for thriftgo
Fix:
- [#1283] fix(streaming): not reporting BizStatusError to tracer
- [#1286] fix(grpc): identify kitex errors before conv in convertStatus
- [#1280] fix: code_gen client stream should import WithDoFinish
- [#1279] fix(grpc): client stream recv returning io.EOF is not error
- [#1272] fix: OnError call twice in svrTransHandler.OnRead
- [#1264] fix(grpc): set service/method name into rpcinfo before OnReadStream
Chore:
v0.9.0
Feature:
- [#1208, #1251, #1230, #1226] feat: support thrift streaming (replacing the protobuf payload of GRPC/HTTP2 with thrift binary)
- [#1217] feat: support thrift and pb multi service
- [#1268] feat(thrift): support frugal fallback for arm
- [#951] feat(bizerr): support returning biz status error for json/map generic server
- [#1199] feat(loadbalance): add loadbalancer using Alias Method (#1184)
- [#1244] feat(timeout): add option server.WithEnableContextTimeout to enable server timeout
- [#1228] feat(streaming): Adding Recv/End events to streaming requests to improve trace information
- [#1062] feat(generic): supports JSON and Map generic call for the KitexProtobuf protocol
- [#1225] feat(timeout): support timeout transparent transmission by default when using TTHeader transport protocol
- [#1211] feat(hessian2): support nested struct for hessian2 customized Exception
Optimize:
- [#1222] optimize(frugal): enable frugal by default when the generated code is using slim template
- [#1209] optimize: split encoder interface to customize meta and payload encoding implementation
- [#1206] optimize(tool): add IsDir judge in readTemplate and add template register func
- [#1198] optimize(kitexutil): add util api for getting real request and response
- [#1197] optimize(kitexutil): add GetCallerIP util method in kitexutil to fetch Caller IP
- [#1195] optimize(error): more specific instruction when panic in server handler
- [#1235] optimize(tool): add IDLName field in PackageInfo for cwgo tool rendering
- [#1238] optmize(bizerr): support biz status error for streaming mode
Fix:
- [#1236] fix(hessian2): correct code-ref behavior when thrift file is not in project dir
- [#1234] fix(hessian2): still perform replacement on handler.go when -service is not specified for hessian2
- [#1232] fix(gRPC): append "h2" to next proto in gRPC tlsConfig to enable protocol negotiation in TLS
- [#1215] fix: bugfix for hessian2 tpl codegen
- [#1203, #1205] fix: fix the issue where disabling rpcinfo reuse on the server side does not take effect
- [#1227] fix: idl-ref overwritten when using hessian2
- [#1194] fix(retry): always set RespOp && preventive panic to avoid dead loop
Chore & Tests
- [#1273] chore: upgrade netpoll to v0.6.0
- [#1263] chore: update sonic to v1.11.1
- [#1255] chore: upgrade netpoll to v0.6.0 pre-release version
- [#1252] chore: upgrade golang.org/x/net
- [#1254] chore: upgrade sonic to v1.11.0 to support go1.22
- [#1231] chore: frugal support go1.22
- [#1220] test: correct the cachekey in the benchmark test of balancer
- [#1196] test: add just biz handler message error
Thanks a lot to those community contributors who submit some pull requests or share your ideas for this version:
@DMwangnima @jizhuozhi @NX-Official @jieqiboh @Lvnszn @Skyenought
v0.7.4
Note: this hotfix version is deliberately added after v0.8.0 to solve the deep copy function issue.
Feature:
[#1202] feat: add option to support generate StringDeepCopy function to avoid depending kutil package
Fix:
[#1166] fix(generic): issue of deep copy function generation when map key type is binary
v0.8.0
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
v0.7.3
Feature
[#1144] feat: enable service inline client panic log
[#1076] feature(tool): support scaffold generation for hessian2
Fix
[#1143] fix: fix the data race of client-side ri.From() map write in gRPC
[#1141] fix: no recycle rpcinfo if endpoint return error
[#1146] fix(retry): reset ctx with last ri to trace correctly
Chore
[#1148] chore: upgrade netpoll to v0.5.1
v0.7.2
Feature:
[#1117] feat(retry): support retry percentage limit
Optimize:
[#1033] optimize: no need to check svcInfo twice
[#1115] optimize: rm outdated framed suggestion
[#1095] optimize: add K_METHOD in serviceinline ctx
[#1107] optimize(connpool): set maxIdleGlobal to no limit if not set
Fix:
[#1116] fix: use the last rpcinfo to trace
[#1104] fix: move limiter handler to the last of the inbound handler to get rpcinfo in custom limiter
[#1103] fix: reset all fields of netpoll byte buffer when recycle it
[#1106] fix(grpc): fix grpc streaming tps decreasing and the selection logic of compressor
[#1114] fix(gRPC): client send END_STREAM flag in unary call (#1066)
[#1096] fix(tool): add backquote to handle filepath string invalid syntax under windows os
[#1098] fix(tool): fix import for codegen template when using slim and unknown fields
Tests:
[#1124] test: fix codegen script
[#1122] test: add codegen test
[#1119] test(connpool): modify the idleTimeout
Chore:
[#1133] chore: update version v0.7.2
[#1125] chore: upgrade netpoll to v0.5.0
[#1123] perf: replace concurrent string builder with lock
[#1118] perf: optimize remote addr setter interface to reduce lock cost of Address()
[#1110] chore: upgrade netpoll to v0.4.2 pre-release
[#1061] chore: netpoll pre release v0.4.2
[#1100] chore: enable frugal on go1.21
Full Changelog: v0.7.1...v0.7.2