Releases: cloudwego/kitex
v0.12.1
v0.12.0
Feature:
[#1541] feat(streamv2): support ttheader streaming
[#1623] feat(gRPC): optimize gRPC error prompt
[#1556] feat(gRPC): support gRPC graceful shutdown
[#1467] feat(generic): support thrift streaming for json generic client
[#1607] feat(tool): kitex tool support gen frugal codec for certain struct
[#1599] feat(tool): call FastWriteNocopy in FastWrite
[#1526] feat(generic): support an option to remove go.tag annotation
[#1536] feat(generic): support an option to set ParseMode for each client
[#1510] feat: register service with service level middleware
Optimize:
[#1635] optimize: add two function for binary protocol to get bufiox reader and writer
[#1630] optimize(tool): implement no recursive generate to support incremental update
[#1617] optimize(retry): optimize UpdatePolicy and add test cases to check invalid retry policy
[#1614] optimize: add ttheader codec api back to keep compatibility
[#1606] optimize(tool): use embedded thriftgo as default option
[#1595] optimize(tool): optimize pb tool code
Fix:
[#1636] fix(tool): fix tool hint
[#1633] fix(ttstream): call DoFinish with exception closing stream
[#1628] fix(client): rpctimeout would cause ctx panic
[#1622] fix(generic): use jsoniter instead of sonic
[#1562] fix: deep copy nil string
[#1602] fix(gRPC): check if the type assertion succeed in ProtocolMatch to avoid panic
[#1598] fix(retry): fix mixed retry update logic
[#1590] fix(generic): set default values for optional fields of primitive types with generic with dynamicgo
[#1580] fix(netpoll): timeout when calling Next
[#1574] fix(trace): stream event handler ignore io.EOF event
[#1572] fix(generic): fix a bug where default values are not set with dynamicgo
[#1563] fix(generic): fix a service search problem with CombineServices parse mode
[#1568] fix(wpool): no allocation and correct ctx
[#1558] fix(bthrift): convert unknown type recursively
[#1555] fix(generic): compatible with legacy code
Refactor:
[#1615] refactor: get rid of apache thrift in go.mod
[#1611] refactor: move ttheader codec logic to gopkg
[#1553] refactor(codec/thrift): unified typecodec & new file layout
Tests:
[#1593] test(server): speed up test time
[#1560] tests(limiter): fix unstable TestConnectionLimiter
[#1561] test: fix gRPC TestClientMix data race
Chore:
[#1634] chore: upgrade frugal
[#1632] chore: update cloudwego dependency versions
[#1581] perf(client): new rpctimeout impl
[#1627] chore(generic): expose generic streaming over gRPC
[#1619] chore(generic): restore proto Message back
[#1616] chore(generic): remove deprecated apis/interfaces/variables
[#1564] perf(circuitbreak): no allocation for MW
[#1567] perf(retry): minimum obj alloc for context
[#1573] chore: update localsession to v0.1.1
[#1557] perf(rpcinfo): rm lock for rpcStats
[#1559] ci: optimized run env and remove unused ci
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