Skip to content

Releases: cloudwego/kitex

v0.10.3

26 Jul 06:52
d4e163a
Compare
Choose a tag to compare

Hotfix

[#1453] hotfix: issue of cannot handle conflicting methods correctly when registering a fallback service before another service

v0.10.2

25 Jul 07:35
eb99c3f
Compare
Choose a tag to compare

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

24 Jun 11:15
906aeee
Compare
Choose a tag to compare

Hotfix:

  • [#1412] fix(kitex tool): import unused protection when -module is not set
  • [#1410] fix(codec): add option to enable span cache and disable it by default

v0.10.0

12 Jun 06:16
22991e2
Compare
Choose a tag to compare

Feature:

  1. [#1370] feat(loadbalance): do not cache all the keys for Consistent Hash
  2. [#1359] feat:(generic) jsonpb using dynamicgo support parse IDL from memory
  3. [#1353] feat(retry): add ctx param for customized result retry funcs
  4. [#1352] feat: add option to specify ip version for default HTTPResolver
  5. [#1316] feat(kitex tool): support dependencies compatibility checking
  6. [#1346] feat(generic): set dynamicgo parse mode
  7. [#1336] feat(tool): fast-codec supports Thrift Fieldmask
  8. [#1313, #1378] feat(thrift codec): implement skipDecoder to enable Frugal and FastCodec for standard Thrift Buffer Protocol
  9. [#1257] feat: CBSuite custom GetErrorType func

Optimize:

  1. [#1349] optimize(gRPC): gRPC onError uses CtxErrorf to print log with information in ctx
  2. [#1326] optimize(tool): remove thrift processor for less codegen

Perf:

  1. [#1369] perf(thrift): optimized skip decoder
  2. [#1314] perf: use dirtmake to reduce memclr cost
  3. [#1322] perf(codec): support fast write nocopy when using netpoll link buffer
  4. [#1276] perf: linear allocator for fast codec ReadString/ReadBinary
  5. [#1320] perf(codec): fast codec use batch alloc

Fix:

  1. [#1379] fix: fix a bug "unknown service xxx" when using generic client by not writing IDLServiceName when it's generic service
  2. [#1368] fix(remote): modify the error message thrown when no target service is found
  3. [#1374] fix: init default values when using liner allocator
  4. [#1361] fix: span cache re-cap bytes when using Make
  5. [#1362] fix(payloadCodec): replace the registered PayloadCodec if the type is same when using WithPayloadCodec for server-side
  6. [#1364] fix: fix grpc compressor mcache free panic when data is empty
  7. [#1328] fix(gRPC): release connection in DoFinish for grpc streaming to close the short connection
  8. [#1307] fix(connpool): kitex long pool reset idleList element to nil to prevent conn leak
  9. [#1294] fix(netpollmux): fix a bug that disables multi-service by assigning the first svcInfo to targetSvcInfo
  10. [#1308] fix(generic): not write generic method name for binary generic exception to align with method names of services not using binary generic

Refactor:

  1. [#1344] refactor(tool): export thriftgo template definition in kitextool

Chore:

  1. [#1385] chore: update dynamicgo to v0.2.8
  2. [#1383] chore: upgrade netpoll to v0.6.1
  3. [#1376] chore: integration test use go 1.20 to solve the compatibility issue of offical gRPC in kitex-tests repo
  4. [#1355] chore: upgrade netpoll to v0.6.1 pre-release version
  5. [#1338] chore: correct the comment of FreezeRPCInfo
  6. [#1347] chore: use runtimex to replace choleraehyq/pid
  7. [#1342] chore: update sonic/loader to v0.1.1
  8. [#1334] chore: update dynamicgo to v0.2.3
  9. [#1324] chore: update dynamicgo and sonic version
  10. [#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

18 Mar 08:35
8526b3a
Compare
Choose a tag to compare

Feature:

  1. [#1278] feat: service inline adapt v0.9.0
  2. [#1265] feat:(generic) support set fields for empty struct
  3. [#1293] feat(generic): PB DynamicGo support importDirs
  4. [#1287] feat(generic): compatible with lossless conversion for int8-64
  5. [#1282] feat(metahandler): custom MetaHandler for only the needed functions

Optimize:

  1. [#1291] optimize(tool): add auto install for thriftgo

Fix:

  1. [#1283] fix(streaming): not reporting BizStatusError to tracer
  2. [#1286] fix(grpc): identify kitex errors before conv in convertStatus
  3. [#1280] fix: code_gen client stream should import WithDoFinish
  4. [#1279] fix(grpc): client stream recv returning io.EOF is not error
  5. [#1272] fix: OnError call twice in svrTransHandler.OnRead
  6. [#1264] fix(grpc): set service/method name into rpcinfo before OnReadStream

Chore:

  1. [#1298] chore: add String function for gRPC codes
  2. [#1289] perf(utils/json): use sonic to implement Map2JSONStr and JSONStr2Map
  3. [#1277] chore: update readme description, blog and img

v0.9.0

04 Mar 08:19
92f0cb7
Compare
Choose a tag to compare

Feature:

  1. [#1208, #1251, #1230, #1226] feat: support thrift streaming (replacing the protobuf payload of GRPC/HTTP2 with thrift binary)
  2. [#1217] feat: support thrift and pb multi service
  3. [#1268] feat(thrift): support frugal fallback for arm
  4. [#951] feat(bizerr): support returning biz status error for json/map generic server
  5. [#1199] feat(loadbalance): add loadbalancer using Alias Method (#1184)
  6. [#1244] feat(timeout): add option server.WithEnableContextTimeout to enable server timeout
  7. [#1228] feat(streaming): Adding Recv/End events to streaming requests to improve trace information
  8. [#1062] feat(generic): supports JSON and Map generic call for the KitexProtobuf protocol
  9. [#1225] feat(timeout): support timeout transparent transmission by default when using TTHeader transport protocol
  10. [#1211] feat(hessian2): support nested struct for hessian2 customized Exception

Optimize:

  1. [#1222] optimize(frugal): enable frugal by default when the generated code is using slim template
  2. [#1209] optimize: split encoder interface to customize meta and payload encoding implementation
  3. [#1206] optimize(tool): add IsDir judge in readTemplate and add template register func
  4. [#1198] optimize(kitexutil): add util api for getting real request and response
  5. [#1197] optimize(kitexutil): add GetCallerIP util method in kitexutil to fetch Caller IP
  6. [#1195] optimize(error): more specific instruction when panic in server handler
  7. [#1235] optimize(tool): add IDLName field in PackageInfo for cwgo tool rendering
  8. [#1238] optmize(bizerr): support biz status error for streaming mode

Fix:

  1. [#1236] fix(hessian2): correct code-ref behavior when thrift file is not in project dir
  2. [#1234] fix(hessian2): still perform replacement on handler.go when -service is not specified for hessian2
  3. [#1232] fix(gRPC): append "h2" to next proto in gRPC tlsConfig to enable protocol negotiation in TLS
  4. [#1215] fix: bugfix for hessian2 tpl codegen
  5. [#1203, #1205] fix: fix the issue where disabling rpcinfo reuse on the server side does not take effect
  6. [#1227] fix: idl-ref overwritten when using hessian2
  7. [#1194] fix(retry): always set RespOp && preventive panic to avoid dead loop

Chore & Tests

  1. [#1273] chore: upgrade netpoll to v0.6.0
  2. [#1263] chore: update sonic to v1.11.1
  3. [#1255] chore: upgrade netpoll to v0.6.0 pre-release version
  4. [#1252] chore: upgrade golang.org/x/net
  5. [#1254] chore: upgrade sonic to v1.11.0 to support go1.22
  6. [#1231] chore: frugal support go1.22
  7. [#1220] test: correct the cachekey in the benchmark test of balancer
  8. [#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

12 Dec 06:01
fe52f9d
Compare
Choose a tag to compare

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

29 Nov 11:00
50d46f3
Compare
Choose a tag to compare

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

18 Oct 11:53
d2e6e99
Compare
Choose a tag to compare

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

27 Sep 12:17
3dfe149
Compare
Choose a tag to compare

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