Releases: cloudwego/kitex
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
v0.7.1
What's Changed
- chore: Merge back v0.7.0 by @HeyJavaBean in #1077
- feat: add heartbeat MessageType and processing logic for svrTransHandler by @DMwangnima in #1069
- fix(gRPC): client send END_STREAM flag in unary call by @ppzqh in #1066
- fix(generic): activate api.js_conv by default for json generic with dynamicgo to be consistent with original json generic by @Marina-Sakai in #1084
- feat(limit): support updating config for rate limit dynamically by @whalecold in #1083
- optimize(timeout): add more log info in case of 'timeout by business' by @felix021 in #1088
- fix: unmarshal return non-nil response when buf is nil by @jayantxie in #1086
- feat: provide an api for getting deserialized unknown fields from generated struct. by @jayantxie in #1087
- fix(generic): support conversion from string to int and float for json generic to be consistent with the original json generic by @Marina-Sakai in #1090
- fix(generic): support string for fields of type void in json generic using dynamicgo to be consistent with the original json generic by @Marina-Sakai in #1089
- Revert "fix(gRPC): client send END_STREAM flag in unary call" by @ppzqh in #1092
- chore: release v0.7.1 by @alice-yyds in #1093
New Contributors
- @DMwangnima made their first contribution in #1069
Full Changelog: v0.7.0...v0.7.1
v0.7.0
Feature:
[#1053] feat(retry): support to distinguish local retry request
[#1058] feat(retry): support delete retry policy dynamically
[#1000] feat(grpc): support grpc compress
[#1018] feat: use local-session to backup request context in case of missing
[#1045] feat(generic): support base64 codec for map generic
[#1035] feat(config): provide the ability to dynamically configure the rpctimeout config on the method hierarchy
[#825] feat(generic): integrate dynamicgo into kitex generic call
[#1019] feat(lb): interleaved weighted round-robin load balancer
Optimize:
[#1064] optimize: check header max size when ttheader encode
[#1017] optimize: implement unknown field function without serialization
[#1036] optimize(protobuf): ignore err when (un)marshal empty req/resp
[#1056] optimize(tool): optimize struct ref
[#1043] optimize: add method info to the error message of the server handler panic for easy troubleshooting
[#1025] optimize: use Tags of ServerBasicInfo as default Tags of RegistryInfo
[#1020] optimize: add nil check for MethodInfo which get from ServiceInfo in client.Call to ignore panic
Fix:
[#1073] fix: fix failure retryer dump panic
[#1067] fix: slim template with deepcopy
[#1055] fix: ignore SIGHUP when run with nohup
[#1048] fix(retry): keep the behavior of retry policy consistent between initing and updating
[#1047] fix(tool): cli warning for unknown suffix
[#1038] fix(config): correct the function signature of the rpcinfo.TimeoutProvider implementation
[#1034] fix(generic): add case int16 into buildinTypeIntoString
[#1023] fix(generic): avoid dead-loop when marshal self-referenced struct
[#1028] fix:modify .licenserc.yaml
[#1012] fix: skip frugal on go 1.21
[#992] fix(grpc): use mcache to fix memory leak caused by grpc codec buffer to reuse memory incorrectly
[#994] fix(tool): fix kitex tool git repo pulling logic
Chore:
[#1074] chore: update thriftgo to v0.3.0
[#1031] chore: remove wechat group in readme
[#1008] chore: update dynamicgo to v0.1.1
[#1006] chore: remove unecessary replace for frugal
[#1007] chore: upgrade netpoll to v0.4.1