Releases: cloudwego/kitex
v0.11.3 same with v0.11.2
version v0.11.3 is a patch from v0.11.2 for updating version.go to fix version mismatched issue #1542
v0.11.2
v0.11.1
v0.11.0
Feature:
[#1509] feat(retry): support Mixed Retry which integrating Failure Retry and Backup Request
[#1478] feat: customized payload validator
[#1514] feat(grpc): server returns cancel reason
[#1513] feat(tool): support updating import path for PkgInfo
[#1425] feat(tool): support generating multiple handlers for multiple services
[#1491] feat(grpc): add GetTrailerMetadataFromCtx
[#1492] feat: add GetCallee to kitexutil to get the service name of callee
[#1479] feat(tool): embed thriftgo into kitex tool
Optimize:
[#1485] optimize: add cachekey to discovery event for debug
Fix:
[#1525] fix: move json-iterator back to support marshal map[any]any
[#1471] fix(streaming): resolve ctx diverge in server-side streaming
[#1515] fix(gRPC): pass error when client transport is closed
[#1501] fix(generic): judge business error directly
[#1503] fix: return an unknown service/method exception to client correctly under multi_service server scenario
[#1487] fix(generic): fix a generic serviceInfo compatible issue
[#1489] fix(codec): wrap trans error for apache thrift read error
[#1486] fix(trans/netpoll): log when panic in onConnRead
[#1476] fix: fix GetServerConn interface assert for streamWithMiddleware
[#1481] fix(gonet): adjust gonet server read timeout to avoid read error
[#1466] fix: allow HEADERS frame with empty header block fragment
Refactor:
[#1512] refactor: thrift and generic codec uses bufiox interface for encoding and decoding
[#1490] refactor: optimized apache codec without reflection
[#1483] refactor: use github.com/cloudwego/gopkg/protocol/thrift/apache
[#1474] refactor: rm apache thrift in internal/mocks
[#1470] refactor: rm apache thrift in pkg/generic & netpollmux
[#1450] refactor(generic): remove apache thrift.TProtocol from generic
[#1441] refactor: deprecate bthrift, use cloudwego/gopkg
[#1455] refactor(test): perf optimize and log loc correct
Tests:
[#1469] test: replace judgement of mem stats of client finalizer by closed count check
Chore:
[#1532] chore: update dependency
[#1531] chore(generic): move generic APIs back to external package (revert)
[#1528] chore(ci): use blank identifier to fix ci check failure
[#1527] perf(grpc): bdp ping rate limit
[#1522] chore(generic): make generic streaming APIs internal
[#1521] chore: remove json-iterator dependency
[#1519] chore: update dependency again
[#1518] chore: update dependency
[#1517] chore: upgrade go version to solve scenario test issue
[#1511] perf(thrift): encodeBasicThrift write logic didn't use kitex BinaryProtocol
[#1508] chore: update bytedance/gopkg to upgrade go/x/net for security
[#1465] chore(generic): add an external method to create service info for generic streaming client
[#1504] perf(grpc): zero allocation in hot path
[#1497] perf: add option to enable spancache for fastpb
[#1495] perf(thrift): use kitex BinaryProtocol replace apache BinaryProtocol for apache thrift codec
[#1493] chore: update CI and go.mod to support 1.18-1.23
[#1468] build: adapt to go1.23rc2
[#1482] chore(generic): add generic base using gopkg base
[#1477] chore: upgrade gopkg to v0.1.0
[#1475] chore: remove github.com/stretchr/testify direct dependency
[#1451] chore(ci): disable cache for lint and staticchecks
[#1463] chore: fix grpc keepalive test by start server responsiblly
[#1462] chore(test): fix xorshift64 in consist_test.go
[#1461] chore(ci): optimized bench tests. it takes <1m now
[#1454] chore(ci): speed up multiple ci processes 8min -> 1min
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