Skip to content

Commit 16fa068

Browse files
committed
doc: Kitex v0.13.0 release
1 parent 048e436 commit 16fa068

File tree

2 files changed

+150
-0
lines changed

2 files changed

+150
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
---
2+
title: "Kitex Release v0.13.0"
3+
linkTitle: "Release v0.13.0"
4+
projects: ["Kitex"]
5+
date: 2025-04-07
6+
description: >
7+
---
8+
9+
> We recommend upgrading directly to Kitex version v0.13.1, as we have fixed a potential Goroutine leak issue in the gRPC Client in v0.13.0.
10+
11+
## **Introduction to Key Changes**
12+
13+
### **New Features**
14+
1. New streaming interface StreamX supports gRPC, stock Kitex gRPC users can migrate
15+
v0.12.0 released the StreamX interface to optimise the streaming experience, and supported the custom streaming protocol TTHeader Streaming, but did not support gRPC. So stock users could not migrate.
16+
This version supports gRPC for StreamX, users can migrate to StreamX, and the Server side can be compatible with two streaming protocols at the same time. So there is no need to worry about protocol compatibility after interface migration.
17+
In particular, when adapting gRPC with StreamX, we found that there are still some inconvenient problems. In order to bring a better experience of using the interface, we have adjusted the StreamX interface for the second time, which will affect the users who have already been using StreamX. We apologise for that.
18+
User documentation: Kitex StreamX - 基础流编程 | Stream Basic Programming
19+
2. Prutal - Protobuf's non-generated code serialisation library
20+
Prutal is officially open source (https://github.com/cloudwego/prutal), on par with Thrift's Frugal library, and the new version of Kitex integrates Prutal by default.
21+
Advantages:
22+
- Minimized Code Product Size: Generating Only Structures, No Runtime Code
23+
- Leveraging Reflection Optimization Similar to Frugal, Achieving Over 50% Speed Increase
24+
- Generating Code Compatible with Existing Protobuf and Derivative Versions
25+
User documentation: Kitex 集成 Prutal 说明
26+
27+
### **Feature/Experience Optimization**
28+
1. **TTHeader Streaming**: Support interface-level Recv timeout control
29+
In addition to the existing Client level, this release of TTHeader Streaming supports interface-level Recv timeout configuration, making configuration more flexible.
30+
User documentation: Kitex - StreamX 超时控制
31+
2. Default Thrift transport protocol changed from Buffered to Framed
32+
This change can leverage FastCodec for better performance.
33+
34+
### **Others**
35+
1. Code Product Simplification
36+
- Kitex Tool would not generate the repeated verification code for Set data structure and the DeepEqual function for each structure by default.
37+
- If you only want to restore DeepEqual, add -thrift gen_deep_equal=true to the generation command.
38+
- If you want to restore the repeated verification of Set, add -thrift validate_set=true, -thrift gen_deep_equal=true to the generation command.
39+
- Kitex Tool would not generate the Apache Codec related code by default.
40+
- If you want to restore it, add -thrift no_default_serdes=false to the generation command.
41+
42+
2. Go Supported Version Change
43+
Support version Go 1.19~1.24, the lowest supported version becomes Go 1.19.
44+
if Go version is too low, there will be a prompt when compiling: note: module requires Go 1.19.
45+
46+
## **Full Change**
47+
### Feature
48+
[[#1719](https://github.com/cloudwego/kitex/pull/1719)] feat: prutal for replacing protoc
49+
[[#1736](https://github.com/cloudwego/kitex/pull/1736)] feat(ttstream): support WithRecvTimeout stream call option
50+
[[#1702](https://github.com/cloudwego/kitex/pull/1702)] feat(gRPC): add grpc client conn dump to help debug the conn and stream status
51+
[[#1723](https://github.com/cloudwego/kitex/pull/1723)] feat(codec/thrift): use fastcodec/frugal if apache codec not available
52+
[[#1724](https://github.com/cloudwego/kitex/pull/1724)] feat: add tail option to support for delayed initialization of some client options
53+
54+
### Optimize
55+
[[#1728](https://github.com/cloudwego/kitex/pull/1728)] optimize(apache): remove apache codec gen and set default protocol from buffered to framed
56+
[[#1732](https://github.com/cloudwego/kitex/pull/1732)] optimize(rpcinfo): purify the transport protocol of rpcinfo in a single rpc request
57+
[[#1711](https://github.com/cloudwego/kitex/pull/1711)] optimize(tool): disable set validate and deep equal code gen to simplify kitex_gen
58+
[[#1717](https://github.com/cloudwego/kitex/pull/1717)] optimize(gRPC): return more detailed error when received invalid http2 frame
59+
60+
### Fix
61+
[[#1734](https://github.com/cloudwego/kitex/pull/1734)] fix(ttstream): adjust stream state transition and remove all SetFinalizer to avoid memory leak
62+
[[#1735](https://github.com/cloudwego/kitex/pull/1735)] fix(generic): support both relative and absolute check for idl includes parse to make it compatible with generation tool
63+
[[#1725](https://github.com/cloudwego/kitex/pull/1725)] fix: code gen import issue for streamx mode, stream call judgement bug and set ttheader streaming as default
64+
[[#1727](https://github.com/cloudwego/kitex/pull/1727)] fix(tool): fix tool UseStdLib remains unexcepted lib issue.
65+
66+
### Refactor
67+
[[#1658](https://github.com/cloudwego/kitex/pull/1658)] refactor: streamx api to adapt both grpc and ttheader streaming protocol and provide more user-friendly interface
68+
[[#1729](https://github.com/cloudwego/kitex/pull/1729)] refactor(tool): move pb tpl code to sep pkg
69+
70+
### Chore
71+
[[#1743](https://github.com/cloudwego/kitex/pull/1743)] chore: update dependencies version
72+
[[#1740](https://github.com/cloudwego/kitex/pull/1740)] chore(generic): deprecate NewThriftContentProvider
73+
[[#1741](https://github.com/cloudwego/kitex/pull/1741)] chore(streamx): remove redundant streamx package
74+
[[#1738](https://github.com/cloudwego/kitex/pull/1738)] ci: fix typos & crate-ci/typos
75+
[[#1737](https://github.com/cloudwego/kitex/pull/1737)] chore: update depedency and change go support to 1.19-1.24
76+
[[#1720](https://github.com/cloudwego/kitex/pull/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"
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
---
2+
title: "Kitex Release v0.13.0"
3+
linkTitle: "Release v0.13.0"
4+
projects: ["Kitex"]
5+
date: 2025-04-09
6+
description: >
7+
---
8+
9+
> 建议直接升级 Kitex 版本到 v0.13.1,因为我们对 v0.13.0 里 gRPC Client 潜在的 Goroutine 泄漏问题进行了修复
10+
11+
## **重要变更介绍**
12+
13+
### **新特性**
14+
1. 新流式接口 StreamX 支持 gRPC,存量 Kitex gRPC 用户可迁移
15+
v0.12.0 发布了 StreamX 接口优化流式体验,支持了自定义流式协议 TTHeader Streaming,但未支持 gRPC,存量用户无法迁移。
16+
v0.13.0 对 StreamX 支持 gRPC 后,用户可迁移至 StreamX 新接口,Server 端可以同时兼容两个流式协议,无需担心接口迁移后的协议兼容性问题。
17+
特别地,StreamX 在适配 gRPC 时,发现依然有一些不便利的问题,为带来更好的接口使用体验,因此对 StreamX 接口做了二次调整。
18+
已经使用 v0.12.* StreamX 用户会带来影响,在这里表示抱歉。
19+
详见
20+
2. Prutal - Protobuf 的无生成代码序列化库
21+
Prutal 正式开源(https://github.com/cloudwego/prutal),对标 Thrift 的 Frugal 库,新版本 Kitex 默认集成 Prutal。特点:
22+
- 产物体积最小化,只需生成结构体
23+
- 使用与 Frugal 相似的反射优化,性能优于官方 Protobuf
24+
- 兼容官方 Protobuf 及衍生版本的生成代码
25+
详见 Kitex - 集成 Prutal 说明
26+
27+
### **功能/体验优化**
28+
1. TTHeader Streaming 支持配置接口级别 Recv 超时
29+
本版本 TTHeader Streaming 在原有的 Kitex Client 级别基础上,额外支持接口级别的 Recv 超时配置,配置更为灵活。
30+
详见 Kitex - StreamX 超时控制
31+
2. Thrift 默认传输协议由 Buffered 改为 Framed
32+
可以利用 FastCodec 获得更高的编解码性能。
33+
34+
### **其他**
35+
1. 产物简化
36+
- 默认不生成 Set 数据结构的重复校验代码与各结构体的 DeepEqual 函数
37+
- 若只想恢复 DeepEqual,生成命令追加 -thrift gen_deep_equal=true
38+
- 若想恢复 Set 的重复校验,生成命令追加 -thrift validate_set=true, -thrift gen_deep_equal=true
39+
- 默认不生成 Apache Codec 相关代码
40+
- 若想恢复,生成命令追加 -thrift no_default_serdes=false
41+
2. Go 支持版本变化
42+
支持版本 Go 1.19~1.24,最低支持版本变为 Go 1.19,如果 Go 版本过低,编译时会有提示:note: module requires Go 1.19
43+
44+
## **详细变更**
45+
### Feature
46+
[[#1719](https://github.com/cloudwego/kitex/pull/1719)] feat: prutal for replacing protoc
47+
[[#1736](https://github.com/cloudwego/kitex/pull/1736)] feat(ttstream): support WithRecvTimeout stream call option
48+
[[#1702](https://github.com/cloudwego/kitex/pull/1702)] feat(gRPC): add grpc client conn dump to help debug the conn and stream status
49+
[[#1723](https://github.com/cloudwego/kitex/pull/1723)] feat(codec/thrift): use fastcodec/frugal if apache codec not available
50+
[[#1724](https://github.com/cloudwego/kitex/pull/1724)] feat: add tail option to support for delayed initialization of some client options
51+
52+
### Optimize
53+
[[#1728](https://github.com/cloudwego/kitex/pull/1728)] optimize(apache): remove apache codec gen and set default protocol from buffered to framed
54+
[[#1732](https://github.com/cloudwego/kitex/pull/1732)] optimize(rpcinfo): purify the transport protocol of rpcinfo in a single rpc request
55+
[[#1711](https://github.com/cloudwego/kitex/pull/1711)] optimize(tool): disable set validate and deep equal code gen to simplify kitex_gen
56+
[[#1717](https://github.com/cloudwego/kitex/pull/1717)] optimize(gRPC): return more detailed error when received invalid http2 frame
57+
58+
### Fix
59+
[[#1734](https://github.com/cloudwego/kitex/pull/1734)] fix(ttstream): adjust stream state transition and remove all SetFinalizer to avoid memory leak
60+
[[#1735](https://github.com/cloudwego/kitex/pull/1735)] fix(generic): support both relative and absolute check for idl includes parse to make it compatible with generation tool
61+
[[#1725](https://github.com/cloudwego/kitex/pull/1725)] fix: code gen import issue for streamx mode, stream call judgement bug and set ttheader streaming as default
62+
[[#1727](https://github.com/cloudwego/kitex/pull/1727)] fix(tool): fix tool UseStdLib remains unexcepted lib issue.
63+
64+
### Refactor
65+
[[#1658](https://github.com/cloudwego/kitex/pull/1658)] refactor: streamx api to adapt both grpc and ttheader streaming protocol and provide more user-friendly interface
66+
[[#1729](https://github.com/cloudwego/kitex/pull/1729)] refactor(tool): move pb tpl code to sep pkg
67+
68+
### Chore
69+
[[#1743](https://github.com/cloudwego/kitex/pull/1743)] chore: update dependencies version
70+
[[#1740](https://github.com/cloudwego/kitex/pull/1740)] chore(generic): deprecate NewThriftContentProvider
71+
[[#1741](https://github.com/cloudwego/kitex/pull/1741)] chore(streamx): remove redundant streamx package
72+
[[#1738](https://github.com/cloudwego/kitex/pull/1738)] ci: fix typos & crate-ci/typos
73+
[[#1737](https://github.com/cloudwego/kitex/pull/1737)] chore: update depedency and change go support to 1.19-1.24
74+
[[#1720](https://github.com/cloudwego/kitex/pull/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"

0 commit comments

Comments
 (0)