Releases: cloudwego/kitex
v0.15.1
What's Changed
- fix(ttstream): use consistent context of stream in ttstream.RecvMsg and fix nil message error of binary generic by @jayantxie in #1866
- fix(gRPC): retrieve status or biz error for non-ServerStreaming by @DMwangnima in #1530
- chore: update version v0.15.1 by @jayantxie in #1867
Full Changelog: v0.15.0...v0.15.1
v0.15.0
What's Changed
Feature
- feat(ttstream): support ctx cancel and detailed canceled error by @DMwangnima in #1821 | #1859 | #1856
特性:TTStream 支持上下文取消及详细的取消错误信息
- feat(generic): support new thrift binary generic call api, server streaming generic call and unknown service or method handler by @jayantxie in #1837 | #1857
特性:支持新的 thrift 二进制泛化调用 api,服务端流式泛化调用和 unknown service or method handler
- feat(grpc): support dump MaxConcurrentStreams of HTTP2 Client by @DMwangnima in #1820
特性:gRPC 支持导出 HTTP2 客户端的 MaxConcurrentStreams 配置
Fix
- fix(retry): shallow copy response to avoid data race by @jayantxie in #1799 | #1814
修复:浅拷贝 response 以避免数据竞争
修复:负载均衡器缓存中创建新均衡器前检查存在性以防止泄漏
- fix(generic): descriptor.HTTPRequest.GetParam nil pointer exception by @jayantxie in #1827
修复:描述符 HTTPRequest.GetParam 的空指针异常
- fix(generic): fix generic write int range check by @HeyJavaBean in #1861
修复:泛化写入整数的范围检查
- fix(rpcinfo): protect bizErr and extra field of ri.Invocation by lock by @jayantxie in #1850
修复:通过锁保护 ri.Invocation 的 bizErr 和 extra 字段
- fix(timeout): remove timer pool to avoid timer race issue by @jayantxie in #1858
修复:移除计时器池以避免计时器竞争问题
- fix(tool): disable fast api for protobuf by @DMwangnima in #1807
修复:工具中为 Protobuf 禁用 Fast API
修复:工具中为 -use 参数跳过 PB 代码生成
Optimize
优化:gRPC 访问 metadata.MD 时不转换为小写
- optimize(ttstream): lazy init cleaning task for ObjectPool to reduce the impact of lots of goroutines caused by creating too many Generic Client by @DMwangnima in #1842
优化:对象池延迟初始化清理任务,减少创建过多泛化客户端导致的大量 goroutine 影响
- optimize(tool): remove string deepcopy because the string type is read-only in Go by @jayantxie in #1832
优化:移除字符串深拷贝,因为 Go 中字符串类型是只读的
Refactor
- refactor(ttstream): remove ttstream provider by @jayantxie in #1805
重构:移除 TTStream provider 接口
- refactor(rpcinfo): move service/method info from message to rpcinfo, remove protocol info from message and update min go version to 1.20 by @jayantxie in #1818 | #1855
重构:将服务/方法信息从消息移至 rpcinfo,从消息中移除协议信息,并更新最低 Go 版本至 1.20
- refactor(server): remove service middleware and SupportedTransportsFunc api by @jayantxie in #1839
重构:移除服务中间件和 SupportedTransportsFunc API
- refactor(server): remove useless TargetSvcInfo field by @jayantxie in #1840
重构:移除无用的 TargetSvcInfo 字段
Chore
- chore: update dependencies of kitex to support go 1.25 and new features by @jayantxie @AsterDY in #1848 | #1834 | #1862 | #1836
chore:更新 kitex 依赖项以支持 go1.25 和新特性
- chore: update version v0.15.0 by @jayantxie in #1864
chore:更新版本至 v0.15.0
- docs: fix broken link to blogs by @scientiacoder in #1813
chore:修复博客的损坏链接
特性:在合并编译场景中支持传递自定义上下文 key 到下游
New Contributors
- @scientiacoder made their first contribution in #1813
- @yangma0 made their first contribution in #1814
Full Changelog: v0.14.1...v0.15.0
v0.14.1
Optimize
[#1798] optimize(tool): remove apache replace in go.mod because apache thrift is not used anymore
Test
[#1800] test: improve gRPC unit tests stability
Chore
[#1797] chore: upgrade prutal
[#1802] chore: add release scripts
[#1804] chore: update version v0.14.1
Full Changelog: v0.14.0...v0.14.1
v0.14.0
Feature
[#1759] feat(tool): add env for using prutal to marshal
[#1782] feat(ttstream): process MetaFrame and reflect to rpcinfo
[#1777] feat(client): report err when create Stream failed
[#1763] feat: support ttheader streaming generic call
[#1771] feat(tool): add thriftgo patcher extension
[#1755] feat: add generic binary pb for streamx
[#1752] feat(generic): support generic pb binary for streaming
Optimize
[#1788] optimize: go net implementation
[#1786] optimize(tool): remove tool fastpb generation
[#1783] optimize(gRPC): parse PayloadCodec in server side
[#1780] optimize(ttstream): log the error thrown by invoking handler
[#1769] optimize: injection of options in ttstream
Fix
[#1792] fix(gRPC): inject current method name to rpcinfo in server-side to fix FROM_METHOD missing
[#1787] fix(ttstream): metrics missing caused by server-side rpcinfo not set correctly
[#1778] fix: enabling json mode of map generic not work
[#1774] fix(server): trans server conn count race issue
[#1742] fix(generic): align dynamicgo's write base behavior with old generic (only for internal logic)
Refactor
[#1770] refactor: refactor generic streaming
Tests:
[#1793] test: add go1.18 to scenario-test
[#1765] test: remove unnecessary server in json generic test
Docs
[#1794] docs: update CONTRIBUTING.md to change PR base branch to main
Chore
[#1795] chore: update dependency
[#1776] chore: remove testify dependency
[#1757] chore: update prutal to v0.1.1
[#1753] ci: disable codecov annotations
v0.13.1
v0.12.4
v0.13.0
Feature
[#1719] feat: prutal for replacing protoc
[#1736] feat(ttstream): support WithRecvTimeout stream call option
[#1702] feat(gRPC): add grpc client conn dump to help debug the conn and stream status
[#1723] feat(codec/thrift): use fastcodec/frugal if apache codec not available
[#1724] feat: add tail option to support for delayed initialization of some client options
Optimize
[#1728] optimize(apache): remove apache codec gen and set default protocol from buffered to framed
[#1732] optimize(rpcinfo): purify the transport protocol of rpcinfo in a single rpc request
[#1711] optimize(tool): disable set validate and deep equal code gen to simplify kitex_gen
[#1717] optimize(gRPC): return more detailed error when received invalid http2 frame
Fix:
[#1734] fix(ttstream): adjust stream state transition and remove all SetFinalizer to avoid memory leak
[#1735] fix(generic): support both relative and absolute check for idl includes parse to make it compatible with generation tool
[#1725] fix: code gen import issue for streamx mode, stream call judgement bug and set ttheader streaming as default
[#1727] fix(tool): fix tool UseStdLib remains unexcepted lib issue.
Refactor
[#1658] refactor: streamx api to adapt both grpc and ttheader streaming protocol and provide more user-friendly interface
[#1729] refactor(tool): move pb tpl code to sep pkg
Chore
[#1743] chore: update dependencies version
[#1740] chore(generic): deprecate NewThriftContentProvider
[#1741] chore(streamx): remove redundant streamx package
[#1738] ci: fix typos & crate-ci/typos
[#1737] chore: update dependency and change go support to 1.19-1.24
[#1720] Revert "fix(ttstream): pingpong method refers to server interface defined in Kitex generation code when streamx is enabled and there are other streaming methods"
v0.12.3
v0.12.2
Feature:
[#1640] feat(mw): MiddlewareBuilder
can return nil
[#1701] feat: update dynamicgo
to remove build constraits
[#1650] feat(gRPC): add monitor closeStreamTask for cancelled gRPC client stream
[#1653] feat: set crrst flag on response header to ensure kitex client won't reuse bad connections
[#1674] feat(tool): use go.mod for -module
[#1673] feat(generic): add an option to specify an IDL service name to be parsed
[#1661] feat(endpoint): MiddlewareBuilder
can return nil
Optimize:
[#1696] optimize(tool): optimize fastcodec->frugal replacement
[#1681] optimize(exit): server graceful shutdown logic to avoid EOF when idle connections receive new requests after being closed
Fix:
[#1706] fix(gRPC): golang CI Linter failure on http2Client
[#1690] fix(kitexutil): check if address is nil when GetCallerAddress to prevent panic
[#1688] fix(tool): refer each ServiceInfo directly when -use and -tpl multiple_services are set
[#1698] fix(ttstream): pingpong method refers to server interface defined in Kitex generation code when streamx is enabled and there are other streaming methods
[#1693] fix(server): log recover result
[#1692] fix(tool): some bugfix for kitex tool
[#1666] fix(generic): fix codec to be updated even if there is an idl update
[#1677] fix(gRPC): ignore triggered actively connection error
[#1675] fix(tool): remove redundant dependency for streamx generation code
[#1672] fix(tool): fix kitex tool bugs
[#1659] fix(serviceinline): fix the issue of missing CtxEventBusKey and CtxEventQueueKey during server initialization in the service inline scenario
[#1655] fix: fix the issue which the server-side did not report failure after panic occurred during request processing
Refactor:
[#1680] refactor(tool): rm thriftgo dep from pkg generator
Tests:
[#1691] test(server): fix address already in use
[#1684] test: fix creating tmp dir in unit test
[#1676] test(streamx): fix streamx Recv timeout unit test
[#1671] test(streamx): fix streaming unit tests
Chore:
[#1704] ci: use flag for codecov
[#1700] Revert "fix(ttstream): pingpong method refers to server interface defined in Kitex generation code when streamx is enabled and there are other streaming methods"
[#1699] ci: uses codecov
[#1694] chore(generic): wait until server starts in tests
[#1683] ci: prepare for Windows X64 hosts
[#1643] perf(thrift): optimized skipdecoder for netpoll
[#1678] chore(tool): clearer log pkg usage
[#1667] chore: update deps and adjust dynamicgo's default option
[#1663] chore(tool): delete tool cmd excess err judgment